从漏洞复现到代码审计,深入学习csrf漏洞原理
Posted 安全龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从漏洞复现到代码审计,深入学习csrf漏洞原理相关的知识,希望对你有一定的参考价值。
文本独家广告赞助商:安全龙
xm17与安全龙出品的系列高质量原创技术文章,看文末集合链接!
在开始之前,我们来说一下,什么是csrf漏洞。
简单的说就是一个网站,存在一个修改用户名的操作,然后我们抓取这样的一个数据包,构造成一个连接,发给别人,别人点击后,就修改了自己的网站用户名。
很简单是吧,那么想想,为什么别人点击一下链接就能够控制住别人的操作,难道没有防范么?肯定是有的,简单的讲,1)验证token,2)验证HTTP请求中的Referer,3)验证XMLHttpRequests里的自定义header。等等。
那么是不是这样说,我们只要找到没有验证这些的操作,是不是存在csrf漏洞呢?答案是肯定的。
我们想一下,如果挖代码审计的话,挖一些危害比较严重的漏洞,当然要从后台考虑,比如一个修改配置文件的操作,或者增加一个管理员用户的操作,或者进行各种与文件读写有关的操作等等相关的,我们是不是都会看一下请求包里面有没有包含这种验证,或者说,我们可以通过绕过达到获取权限?所以,我们一般黑盒对这些cms进行测试的话都会有快速定位的效果。
我们简单的来看一下网上公布的一个《某cms后台csrf添加管理员+getshell》
首先,我们本地搭建好环境,这是一个增加管理员的操作,我们填好后,进行burp抓包
可以清楚的看到数据里面我们post过去的参数值,但是这里看起来有referer,无妨,我们用burp自带的csrf构造一个html提交页面
选择这个功能,会弹出来一个窗口,我们直接点击复制一个html或者选择浏览器打开都行,这里我选择第二个
然后本地创建一个csrf.html,选择粘贴这段html进去
可以看到 这是一个html的form表单,通过post将参数及参数值传送到了index.php?r=admin/admin/index这里,可能你会问,这个路径怎么理解,嗯~很简单,这套cms是采用MVC架构开发的单一入口的,类似于thinkPHP。简单的说就是post到了admin模块的admin控制器的index方法。好吧,我们先看看这个html文件怎么用,等下再说代码。
当我们创建好文件后,直接用管理员所在的环境打开
是这个样子
点击一下。
再来看看管理员列表
是不是很简单,所以说只要我们将这个文件发给使用这套程序的人,并且他有管理员权限,当他点击后就会添加这个用户。那么可能会有人问,这怎么搞?是不是太麻烦?那么我们再想想,如果结合xss呢?如果我们有一个前台能提交到后台,让管理员点击的xss漏洞,我们在将xss的链接修改为我们这个文件是不是就可以了。如果你还嫌麻烦,那就找找更直接的,能够修改文件的。
可以看到这里有一个操作模板,并且后缀是php的一个功能,我们抓包试试
同样,将这个包保存为html文件,并且用浏览器打开
可以看到,成功添加。虽然说是后台的操作,但是只要我们能够构造,并且管理员能够点击,危害还是蛮大的。
接下来说代码
可以很直观的看到修改管理员的操作是这个方法完成的,读一读,看一看
作者历史稿件:
文章版权说明:
3、文章如有侵权请与我们微信客服cyj9961联系,并携带版权证明。
联系客服
技术分享自媒体号
安全龙学堂服务号
安全龙,一家专注做网络安全技术教育培训的网站!网址www.anquanlong.com
以上是关于从漏洞复现到代码审计,深入学习csrf漏洞原理的主要内容,如果未能解决你的问题,请参考以下文章