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->success('操作成功!');
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--,每周原创一篇技术干货。