【程式碼審計】大米CMS_V5.5.3 後臺多處儲存型XSS漏洞分析
0x00 環境準備
大米CMS官網:http://www.damicms.com
網站原始碼版本:大米CMS_V5.5.3試用版(更新時間:2017-04-15)
程式原始碼下載:http://www.damicms.com/downes/dami.rar
測試網站首頁:
0x01 程式碼分析
1、漏洞檔案位置:/Admin/Lib/Action/keyAction.class.php 第34-59行中:
2、 public function add()
3、 {
4、 $this->display('add');
5、 }
6、
7、 public function doadd()
8、 {
9、 $key = M('key');
10、 $key->create();
11、 if($key->add())
12、 {
13、 $this->assign("jumpUrl",U('Key/index'));
14、 $this
15、 }
16、 $this->error('操作失敗!');
17、 }
在這段函式中,當新增內容的時候,首頁使用M函式用於例項化,然後進行增加,未經任何處理將內容直接寫入資料庫,輸入輸出都沒有做任何處理,導致程式在實現上存在儲存型XSS跨站指令碼漏洞,允許攻擊者可在頁面中插入惡意js程式碼,獲得使用者cookie等資訊,導致使用者被劫持。
2、全域性搜尋這個函式,發現多個檔案存在相同的程式碼描述,均存在儲存型XSS跨站指令碼漏洞,具體在漏洞利用環節進行展示:
0x02 漏洞利用
1、登入後臺,網站後臺--文章內鏈--新增關鍵字—填寫XSS Payload:
123<script>alert(`xss`)</script>
2、網站後臺--幻燈管理--新增幻燈--XSS payload:
123<script>alert(`xss`)</script>
3、網站後臺--單頁標籤--新增標籤--XSS Paylod:
123<script>alert(`xss`)</script>
4、網站後臺--廣告管理--新增廣告--XSS Paylod:
123<script>alert(`xss`)</script>
0x03 修復建議
1、對引數做html轉義過濾(要過濾的字元包括:單引號、雙引號、大於號、小於號,&符號),防止指令碼執行。在變數輸出時進行HTML ENCODE處理。 PHP應用:可以使用htmlspecialchars對使用者引數進行編碼 。
安全程式碼示例:
- <?php
- $aa=$_GET['dd'];
- echo htmlspecialchars($aa)."123";
- ?>
最後
歡迎關注個人微信公眾號:Bypass--,每週原創一篇技術乾貨。