【vulnhub】DC-1

前言

这是第一次尝试完整的渗透测试流程,希望能够从这份经历中学到更多的东西。

渗透测试从DC-1开始吧,据说适合新手入门,慢慢做,做不上来就跟着wp往下走。

网络设置

同时开了kali和DC-1靶机,两个虚拟机都是桥接模式。

渗透过程

信息搜集

打开机器,首先停在了登陆界面:

需要正确的账户才能登录,先信息搜集一波:

扫描同网段活跃主机(arp-scan)

arp-scan -l

发现有三台主机,经过排查,发现192.168.43.130是DC的ip。

扫描主机开放端口以及服务(nmap)

nmap -sV -p- 192.168.43.130

其中-sV表示版本探测,-p后面接端口,这里-p-表示所有端口(0-65536)。

发现开放了22,80,111,34874四个端口,还获得了操作系统和运行中的服务的信息。

探测服务器和中间件信息(whatweb)

whatweb 192.168.43.130:80

还可以详细回显:

whatweb -v 192.168.43.130:80

获取了操作系统(Debian Linux)、中间件(Apache)、前端JS库(JQuery)、CMF(Drupal)、服务器语言及版本(PHP 5.4.45-0+deb7u14)、密码字段名(pass)等信息。

扫描后台目录和文件(dirsearch)

在robots.txt中又找到好多扫不到的文件:

看来文件是有的看了,把这些目录和文件都过一遍,看看有什么东西吧。

将一些txt以及license文件保存了下来,在网上查到xmlrpc.php可能会引入漏洞,这个先码住。

漏洞利用

flag1

我们看到网站采用了Drupal,在metasploit里寻找Drupal相关漏洞:

这里我们选择Rank为excellent且比较新的漏洞,比如编号为1的注入漏洞。

利用这个漏洞:

查看选项:

看到RHOSTS需要指定但现在为空,指定RHOSTS参数:

开始利用:

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。

输入shell:

执行命令:

看到了flag1.txt,打开:

拿到了第一个flag,并且提示我们查看配置文件。

flag1: Every good CMS needs a config file - and so do you. 

flag2

Drupal的配置文件在 根目录/sites/default/settings.php,打开之后拿到flag2:

flag2: Brute forceand dictionary attacks aren't the only ways to gain access (and you WILL need access). What can you do with these credentials? 

flag3

flag2提示我们想要进入并不只有爆破一种手段,能用这些凭据做什么呢?

在刚刚的配置文件里我们拿到了数据库的信息,包括数据库名(drupaldb)、用户名(dbuster)以及密码(R0ck3t)等。

试一下能不能在这个shell里连接mysql:(勘误:图里报这个错是因为用户名打错了,但确实要升级shell)

发现不行,权限不够,看来这个shell不行,需要实现shell的升级。(因为没有tty)

具体方法看这篇:https://www.cnblogs.com/chrysanthemum/p/15134933.html

使用python将得到的webshell升级为交互式shell:

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

python的-c参数将后面的字符串作为要执行的code来执行。

可以看到已经获取了交互式shell,可以执行命令了,执行刚刚没能成功的数据库连接:

成功登录,可以操作数据库了,一顿操作之后获得了admin的密码:

这个密码被加密了,我们可以伪造一份密码,把它替换掉。但在此之前,我们需要知道是如何加密的。

查到drupal的密码加密脚本是script/password-hash.sh,利用方式为:

php script/password-hash.sh <要改的密码>

这里我们选择新密码为admin,执行脚本,修改成功。

结果因为错误次数太多被暂时冻结账户了,只好采取另一种方式——新增一个有admin权限的账户。

添加账户:

exploitdb中有一个drupal添加admin权限用户的漏洞,用searchsploit搜一下:

searchsploit drupal

查看drupal版本:

cat includes/bootstrap.inc | grep VERSION

版本是7.24,可以利用漏洞:

python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.0.100 -u admin1 -p admin1

登录成功。左上角find content拿到flag3:

flag3: Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.

flag4

解1:/etc/passwd

拿到flag3提示我们去访问敏感文件/etc/passwd或/etc/shadow(没权限),发现里面有个flag4的账户:

发现/home/flag4文件夹,flag4.txt就在里面。

这样拿了flag4。

解2:hydra爆破

linux登录用的是ssh协议,我们在最开始已经扫描到开启22端口,所以可以用hydra爆破密码。(已知用户名为flag4)

hydra -l flag4 -P rockyou.txt.gz 192.168.43.130 ssh

-l后接用户名,-P后接密码字典,然后指定ip和协议。爆出名为orange,然后登录即可。

flag4: Can you use this same method to find or access the flag in root? Probably. But perhaps it's not that easy.  Or maybe it is

flag5(the final one)

flag4提示我们下一个flag在root文件夹里,但没有权限,再结合flag3中"perm"、"-exec"、"find"等字段,判断需要提权,而且是利用find命令的suid提权。

suid提权是因为某些程序在运行时需要获得root权限,比如ping命令(socket运行需要root)。

寻找suid文件:

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

可以看到find命令具有SUID权限,如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。find命令自带-exec参数,可以执行命令,若find有suid权限,那么使用exec相当于直接提权到root。

find / -exec "/bin/sh" \;

通过find执行sh,反斜杠用于转义:

现在可以去root看看了:

the final flag:

Well done!!!!

Hopefully you've enjoyed this and learned some new skills.

You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7

总结

这次DC-1主要是为了了解渗透测试的基本过程,并学习一些工具和命令的使用。希望接下来能够精进技艺吧。

posted @   Cr4zysong11  阅读(78)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示