SuperAPI AI 工具集

xmlrpc-exploitation

安全与审计

查看项目

更新于 10-16 03:33

技能介绍

XMLRPC Exploitation 是一个针对 WordPress XMLRPC 端点的五阶段利用技能,来源标注为 uphiago/recon-skills。其定位是安全测试与弱点验证工具,使用时需在获得授权的目标上运行。

用途与适用场景 该技能用于探测和利用 WordPress 的 xmlrpc.php 接口。资料指出,XMLRPC 在通过 wp-mass-recon 发现的约 52% 的 WordPress 目标上开放。典型使用时机包括:wp-mass-recon 检测到 POST 请求返回 HTTP 200;目标 WordPress 存在开放注册(可形成上传→webshell→RCE 链条);需要针对 WordPress 凭据的暴力破解放大手段;以及需要通过 pingback.ping 探测内网 SSRF(如云元数据端点)。

前置条件与使用方式 需要带 curl 的终端;目标已确认 XMLRPC 端点(/xmlrpc.php 对 demo.sayHello 的 POST 返回 200);RCE 链条要求目标具备开放注册或其他文件上传路径;SSRF 链条需要 Collaborator/Burp Collaborator 端点或内部目标 IP。

主要能力(按阶段) 第一阶段为批量检测:遍历域名列表,通过 POST demo.sayHello 并检查返回码或响应中的 Hello 来识别开放端点。 第二阶段为深度方法枚举:调用 system.listMethods,提取可用方法名,重点关注 system.multicall、pingback.ping、wp.uploadFile、wp.getUsers、wp.getOptions。 第三阶段为 SSRF:通过 pingback.ping 让服务器发起出站请求,使用自控回调验证;随后探测内部服务(如 AWS IMDS)。资料给出 IMDSv1 探测与 IAM 角色猜测的 14 个角色名示例,并说明 faultCode 0 表示请求到达目标,faultCode 17 或 32 表示被阻断或不可达。 第三阶段b为盲 SSRF 计时侧信道:当 pingback.ping 返回 faultCode 0 但无法看到响应内容时,利用读取响应耗时与响应大小相关的特性,逐字符或枚举 IAM 角色;资料强调网络抖动可能导致 ±50ms 波动,建议重复测试取中位数,基线波动超过 20% 时该技术不可靠。 第四阶段为放大的暴力破解:利用 system.multicall 在单个 HTTP 请求中批量执行 wp.getUsers,资料称可达约 1000 倍放大。 第五阶段为通过开放注册与 wp.uploadFile 实现 RCE:资料说明 WordPress 6.x 默认将新注册用户登记为 SUBSCRIBER,订阅者无法通过 XMLRPC 上传文件,因此需先用 wp.getProfile 验证角色,若为订阅者则需先提权(暴力破解管理员、插件 CVE 或应用密码)。

限制与注意事项 资料列出多项限制:pingback 返回 faultCode 0 并不等于确认 SSRF,需用自控 Collaborator 回调验证;system.multicall 可能在 system.listMethods 中可见但实际调用返回 faultCode;重定向跟随(-L)会掩盖 XMLRPC POST 响应;LiteSpeed 对超过 50kb 的 multicall 负载返回 HTTP 500,但方法可能仍成功,需检查响应体,并建议将批次降至每请求 50 个密码;LiteSpeed 即使用户未发送 Accept-Encoding 也会以 gzip 压缩响应,故需添加 Accept-Encoding: identity 或经 Python 解压;部分环境仅提供 BusyBox grep(不支持 -P),需改用 grep -oE 或 Python;pingback SSRF 对所有内部 IP 均返回 faultCode 0,无法区分端口开放与否,端口扫描需依赖计时差异但同样不可靠;IMDSv2 需要 X-aws-ec2-metadata-token 头,而 pingback 无法设置该头,因此仅 IMDSv1 是攻击面;wp.uploadFile 需要认证,即使有合法凭据也需先确认角色;另提及 Mailinator 密码重置流程需从邮件 URL 提取 key、获取 wp-resetpass-* cookie 再提交新密码;旧版 PHP/libxml2 可能启用外部实体,可用 <!ENTITY xxe SYSTEM "file:///etc/passwd"> 作为额外向量探测。

验证标准 资料要求:demo.sayHello 必须在响应体中返回 Hello!;pingback.ping SSRF 必须在自控服务器上产生回调(而不只是 faultCode 0);system.multicall 必须对每个内嵌方法返回不同响应;RCE 链条必须从上传的 webshell 获得 id 或 whoami 输出;IMDS 角色猜测中若无 Collaborator 回调的 faultCode 0 视为未确认,标记为“SSRF 可能但需带外验证”。