【程式碼審計】XIAOCMS_後臺database.php頁面存在SQL注入漏洞
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行:
- public function repairAction() {
- $name = $this
- $this->db->execute("repair table $name");
- $this->show_message('修復成功',1, url('database/index'));
- }
- *
- * 優化表
- */
- 10. public
11. $name = $this->get('name');
12. $this->db->execute("optimize table $name");
13. $this->show_message('優化成功',1, url('database/index'));
- 14. }
- 15.
16. *
17. * 資料表結構
18. */
- 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>';
- 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--,每週原創一篇技術乾貨。