厂商 | ![]() |
产品 | Piwigo |
受影响的版本 | 2.9.0及以前版本 |
测试版本 | 2.9.0 |
漏洞发现日期 | 2017-5-29 |
厂商通知日期 | 2017-5-29 |
预警公告日期 | 2017-6-2【无技术细节】 |
厂商确认日期 | 2017-6-16 |
厂商修复日期 | 2017-6-14 |
公开披露日期 | 2017-6-15 |
最新修正日期 | 2017-6-15 |
CVE ID | CVE-2017-9463 |
产品描述 | Piwigo是一个功能齐全的开源照片库,由用户和开发人员的活跃社区构建和支持,只需几秒钟就能轻松快捷地部署照片库。 |
发现者 | Eric Castañeda, 安全研究员和渗透测试员 @zteaude group |
漏洞描述
SQL注入漏洞 | |||
严重程度: 中 | CVSS 分数: 4.7 | CWE-ID: CWE-89 | 状态: 修复 |
漏洞详情 | |||
Piwigo 2.9.0及 之前版本的受到SQL注入漏洞的影响。这些漏洞可能允许通过身份验证的远程攻击者能获取用户从数据库检索数据信息。 | |||
CVSS基准分 | |||
攻击媒介 | 网络 | 范围 | 变化 |
攻击复杂度 | 低 | 保密性影响 | 低 |
所需特权 | 高 | 一致性影响 | 低 |
用户互动 | 需要 | 可用性影响 | 低 |
详情
由于用户列表页面上缺少的输入验证,Piwigo有一个基于Blind time的SQL注入漏洞,可以通过附加到iDisplayStart参数的SQL语句来检索用户名和数据库名称等信息。
Example #1 SQL injection
要复制此问题,需要管理员级用户。 在Piwigo应用程序中,我们可以访问用户列表菜单并检索一些用户,这将显示包含用户名,电子邮件地址和级别权限的用户列表。通过此功能可以从数据库中检索到一些信息。
影响URL是 http://localhost/piwigo/admin/user_list_backend.php,并且以下数据通过POST请求发送到上述URL:
sEcho=1&iColumns=7&sColumns=,,,,,,&iDisplayStart=0&iDisplayLength=10&mDataProp_0=0&sSearch_0=&bRegex_0=false&bSearchable_0=true&bSortable_0=true&mDataProp_1=1&sSearch_1=&bRegex_1=false&bSearchable_1=true&bSortable_1=true&mDataProp_2=2&sSearch_2=&bRegex_2=false&bSearchable_2=true&bSortable_2=true&mDataProp_3=3&sSearch_3=&bRegex_3=false&bSearchable_3=true&bSortable_3=true&mDataProp_4=4&sSearch_4=&bRegex_4=false&bSearchable_4=true&bSortable_4=true&mDataProp_5=5&sSearch_5=&bRegex_5=false&bSearchable_5=true&bSortable_5=true&mDataProp_6=6&sSearch_6=&bRegex_6=false&bSearchable_6=true&bSortable_6=true&sSearch=&bRegex=false&iSortCol_0=0&sSortDir_0=&iSortingCols=1
一些参数不是强制性的,所以可以使用另一种发布数据代替
sEcho=1&iColumns=7&sColumns=,,,,,,&iDisplayStart=0&iDisplayLength=10&sSearch=&iSortCol_0=0&iSortingCols=0
内容是从 http://localhost/piwigo/admin/user_list_backend.php 检索的,这是一个通过JSON返回信息的Web服务
下图显示了正常的请求和响应
如果单引号是作为iDisplayStart参数值传递给MySQL,则会显示语法错误。
以下屏幕截图显示了通过SQLmap自动利用SQL注入来检索数据库的名称: