【代码审计】eduaskcms_v1.0.7前台存储型XSS漏洞分析

 

0x00 环境准备

eduaskcms官网:https://www.eduaskcms.xin

网站源码版本:eduaskcms-1.0.7

程序源码下载:https://www.eduaskcms.xin/download/show/5.html

默认后台地址:http://127.0.0.1/public/run/user/login.html

默认账号密码:eduask/eduask

测试网站首页:

 

0x01 代码分析

1、        漏洞文件位置:/eduaskcms/app/home/controller/Feedback.php

2、        public function show()  

3、        {  

4、            if ($this->request->isPost() /*&& $this->Form->check_token()*/) {  

5、                  

6、                //if(captcha_check(input('post.captcha'))){  

7、                    $this->Form->data[$this->m]['truename'] = trim($this->Form->data[$this->m]['truename']);  

8、                    $this->Form->data[$this->m]['mobile']   = trim($this->Form->data[$this->m]['mobile']);  

9、                    $this->Form->data[$this->m]['title']    = /*$this->Form->data[$this->m]['title'] ? */trim($this->Form->data[$this->m]['title'])/*:menu($this->args['menu_id'],'title')*/;  

10、                 $this->Form->data[$this->m]['user_id']  = $this->Auth->user('id');  

11、                 $this->Form->data[$this->m]['ip']       = $this->request->ip();  

12、                 $this->Form->data[$this->m]['menu_id']  = intval($this->args['menu_id']);  

13、                   

14、                 $rslt  = $this->mdl->isUpdate(false)->save($this->Form->data[$this->m]);  

15、                 if ($rslt) {  

16、                     return $this->message('success','恭喜你!留言成功!');  

17、                 } else {  

18、                     $this->assign->error = $this->mdl->getError();  

19、                 }  

20、             //}else{  

21、                 $this->assign->error[] = '验证码填写错误';  

22、             //}  

23、         }  

这段函数获取参数后,并未对参数进行任何处理,直接保存到数据库中,导致程序在实现上存在存储型XSS跨站脚本漏洞,攻击者通过该漏洞可在页面中插入恶意js代码,获得用户cookie等信息,导致用户被劫持。

0x02 漏洞利用

1、安装完CMS,首页是空白的,需要自己添加测试数据,我们来添加一个留言页面。

 

2、在首页添加留言,提交xss Payload:

 

3、当管理员查看后台时,触发js脚本。

 

0x03 修复建议

1、建议进行全局防护,对部分单点进行过滤;

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

最后

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

 

猜你喜欢

转载自www.cnblogs.com/xiaozi/p/10053198.html