环境

下载地址:https://download.vulnhub.com/dc/DC-5.zip

开始打靶

常规操作存活IP扫描
arp-scan -l
image-20230706151759773
端口开放扫描nmap -A -p- 192.168.75.138得全端口扫描不然后面那个扫不出来
image-20230706152121358
页面的框框测了一下没啥东西,在我来回跳转的时候看到如下位置会发生变化
image-20230706152129436
猜测可能存在文件包含,dirsearch扫描一下目录
image-20230706152137505
访问footer.php刷新发现年份变化,
image-20230706152148309
而thankyou.php页面刷新也存在变化,确认这里存在文件包含fuzz一下参数本来想用wfuzz来fuzz参数的但是不知道为什么一直404无奈只能掏出我珍藏多年的字典了
image-20230706152313122
得到参数为file,从插件中得到服务为nginx那么可以尝试利用日志写马,访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。
通过fuzz得到日志路径如下,当然这里是默认的直接访问就行

1
2
3
/var/log/nginx/access.log

/var/log/nginx/error.log

通过nginx日志写入webshell

然后尝试写入点东西image-20230706152333451发现写入成功image-20230706152340900

那么直接写马进去,这里一开始死活写不上后面重新下载了一下靶机才写上奇奇怪怪image-20230706155159016

这样就写入成功了,然后再去包含一下日志即可看到,下图第一个是我直接用hackbar发包写的,可以看到在日志上直接显示了马,但是那个被转义了实测连不上,后面一个是我用bp发包写的虽然看不到马但是实际上已经写进去了
image-20230706152416061
然后蚁剑连接
image-20230706152425898
为www-data权限,那么接下来就是提权了

screen提权

执行如下命令查看哪些命令具有suid权限

1
find / -perm -u=s -type f 2>/dev/null

image-20230706152437869
有个exim在dc-4中不就是用这个提权的吗不知道这里可不可以,不过这里先不管待会儿再看,这里先看screen-4.5.0在msf上搜一下相关漏洞,找到之后执行如下操作把exp拷下来
image-20230706152458317
然后根据exp提示将如下代码单独保存为libhax.c
image-20230706152507960
然后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防止乱码
image-20230706152533941
然后用vim编辑它,使用:set ff=unix来保存
image-20230706152547920
然后把这三个文件上传到靶机的tmp目录
image-20230706152608276
dc5.sh赋执行权限后执行,这里由于我出了问题所以最后弹了shell执行的run.sh当然这里文件名不重要随便就行
image-20230706152624999
这里报错了,一直没有看报错的习惯找了半天博客似乎都没师傅遇到过这个问题,其实这里就是glibc版本问题,我kali默认使用了2.34这个版本,而靶机根本没有这个版本
image-20230706152807259
所以一直报错,后面把rootshell.c放到靶机上面编译然后再执行run.sh成功提权,遇到问题还是要先分析一下报错啊
image-20230706152818770
上面的exim我试了4.84.3这个版本但是失败了,靶机是4.84.2但是msf没有exp最终失败了