Vulnhub-DC-5
环境
下载地址:https://download.vulnhub.com/dc/DC-5.zip
开始打靶
常规操作存活IP扫描arp-scan -l
端口开放扫描nmap -A -p- 192.168.75.138
得全端口扫描不然后面那个扫不出来
页面的框框测了一下没啥东西,在我来回跳转的时候看到如下位置会发生变化
猜测可能存在文件包含,dirsearch扫描一下目录
访问footer.php刷新发现年份变化,
而thankyou.php页面刷新也存在变化,确认这里存在文件包含fuzz一下参数本来想用wfuzz来fuzz参数的但是不知道为什么一直404无奈只能掏出我珍藏多年的字典了
得到参数为file,从插件中得到服务为nginx那么可以尝试利用日志写马,访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。
通过fuzz得到日志路径如下,当然这里是默认的直接访问就行
1 | /var/log/nginx/access.log |
通过nginx日志写入webshell
然后尝试写入点东西发现写入成功
那么直接写马进去,这里一开始死活写不上后面重新下载了一下靶机才写上奇奇怪怪
这样就写入成功了,然后再去包含一下日志即可看到,下图第一个是我直接用hackbar发包写的,可以看到在日志上直接显示了马,但是那个被转义了实测连不上,后面一个是我用bp发包写的虽然看不到马但是实际上已经写进去了
然后蚁剑连接
为www-data权限,那么接下来就是提权了
screen提权
执行如下命令查看哪些命令具有suid权限
1 | find / -perm -u=s -type f 2>/dev/null |
有个exim在dc-4中不就是用这个提权的吗不知道这里可不可以,不过这里先不管待会儿再看,这里先看screen-4.5.0
在msf上搜一下相关漏洞,找到之后执行如下操作把exp拷下来
然后根据exp提示将如下代码单独保存为libhax.c
然后gcc编译它得到so文件
1 | gcc -fPIC -shared -ldl -o libhax.so libhax.c |
然后再将如下代码保存为rootshell.c
然后也是gcc编译得到rootshell,这里一定要注意自己攻击机的glibc的版本不然后面会报错
1 | gcc -o rootshell rootshell.c |
然后将剩下的命令部分保存为dc5.sh
头部加上#!/bin/bash防止乱码
然后用vim编辑它,使用:set ff=unix
来保存
然后把这三个文件上传到靶机的tmp目录
给dc5.sh
赋执行权限后执行,这里由于我出了问题所以最后弹了shell执行的run.sh
当然这里文件名不重要随便就行
这里报错了,一直没有看报错的习惯找了半天博客似乎都没师傅遇到过这个问题,其实这里就是glibc版本问题,我kali默认使用了2.34这个版本,而靶机根本没有这个版本
所以一直报错,后面把rootshell.c
放到靶机上面编译然后再执行run.sh成功提权,遇到问题还是要先分析一下报错啊
上面的exim我试了4.84.3
这个版本但是失败了,靶机是4.84.2
但是msf没有exp最终失败了