0x00 环境准备

大米CMS官网:http://www.damicms.com

网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15)

程序源码下载:http://www.damicms.com/downes/dami.rar

测试网站首页:

 

【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析_漏洞利用

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->success('操作成功!');  
15、     }  
16、     $this->error('操作失败!');  
17、    }


在这段函数中,当添加内容的时候首页使用M函数用于实例化,然后进行增加,未经任何处理将内容直接写入数据库,输入输出都没有做任何处理,导致程序在实现上存在存储型XSS跨站脚本漏洞,允许攻击者可在页面中插入恶意js代码,获得用户cookie等信息,导致用户被劫持。

2、全局搜索这个函数,发现多个文件存在相同的代码描述,均存在存储型XSS跨站脚本漏洞,具体在漏洞利用环节进行展示:

 

0x02 漏洞利用

1、登录后台,网站后台--文章内链--添加关键字—填写XSS Payload:

123<script>alert(`xss`)</script>

 

【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析_漏洞利用_02

2、网站后台--幻灯管理--添加幻灯--XSS payload:

123<script>alert(`xss`)</script>

 

【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析_html_03

3、网站后台--单页标签--添加标签--XSS Paylod:

123<script>alert(`xss`)</script>

 

【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析_网站后台_04

4、网站后台--广告管理--添加广告--XSS Paylod:

123<script>alert(`xss`)</script>

 

【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析_网站后台_05

0x03 修复建议

1、对参数做html转义过滤(要过滤的字符包括:单引号、双引号、大于号、小于号,&符号),防止脚本执行。在变量输出时进行HTML ENCODE处理。 PHP应用:可以使用htmlspecialchars对用户参数进行编码 。

安全代码示例:


1. <?php  
2.      $aa=$_GET['dd'];  
3.      echo htmlspecialchars($aa)."123";  
4.  ?>

 

最后

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

【代码审计】大米CMS_V5.5.3 后台多处存储型XSS漏洞分析_网站后台_06