CSRF感觉似乎很不值钱的样子,我前几天审计出了3个后台存储xss+csrf
然后cnvd跟我说不收csrf和后台存储xss,自此后台我从不找xss和csrf
但是毕竟作为目前毕竟出名流行的一个漏洞,还是讲解一下,我会讲的很简单,ojbk
(csrf介绍没啥好说的,我去copy一下)
CSRF的全名为Cross-site request forgery,它的中文名为 跨站请求伪造
CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。
1).CSRF是利用了系统对页面浏览器的信任
2).XSS则利用了系统对用户的信任。
原理:
攻击者盗用了你的身份,以你的名义发送恶意请求
CSRF能够做的事情有:
以你的名义发送邮件、发消息、盗取你的账号,甚至于购买商品,虚拟货币转账
这个cms是我找的,提交cnvd不收,我就拿出来讲QAQ
cms下载地址:点击下载
因为存在csrf和xss,然后刚好想到这里友链有csrf和xss
那我们就直接制作一个poc
copy一下,然后复制到html中,我们再用火狐打开
上面看到了友链是没有链接的,然后我们点击我们的poc
然后发现success成功了,我们去前台刷新,看会不会跳xss弹窗
然后我们再去后台看下是否添加了
没错,添加好了。如果要细节的话可以这样写
https://www.baidu.com
因为后面那串代码会被拼接到站点去执行,所以是看不见的
只会看到baidu的url,这就是出其不意
下面友链简称 a页面
csrf.html(也就是burp生成poc)简称 b页面
a页面需要管理员登录的情况下,然后诱惑管理员点击b页面,这时候因为b页面有我们的恶意代码,他会借用a页面中的管理员,去执行b页面中的恶意payload
为什么会执行b页面的内容呢?
因为a页面管理员登录的情况下,是会有个cookie
然后你再打开一下其他页面,就不需要再次登录,而csrf就是借用管理员的cookie,去执行我们编辑友链的表单,于是乎就打出了csrf
核心代码在这个地方
第一个if 是给变量赋值,然后以POST传参形式的
第二个if 判断 title不能为空
然后就执行第二个if,然后发现getrs不知道是什么函数,去定位一下
发现这里是$conn
就是连接数据库,不用去看也猜得到的
然后是执行mysqli_query
,$conn
连接数据库,然后value就是执行的sql语句
if(getrs("select * from sl_link where L_title='$L_title' and L_del=0","L_id")==""){
这句就是查询数据库,看是否存在,不存在的时候才会执行下一步的,这时候我们再去插入数据库
接下来就是回显内容,回显内容就不说了
从这边可以看见,这边没有token,也没有二次校验
导致可以造成xss,插入数据库的时候也没有对其进行使用htmlspecialchars()去过滤,这时候即存在xss,又存在csrf,本来还想测测是不是存在注入,由于我比较懒,写的文章是关于csrf的,我就不继续测试了
所以就造成了xss+csrf
这边提到xss了,我也提一下。关于xss的审计小知识,应该大佬都知道,我就简单的讲讲。存储型xss是在第二步的时候会进行过滤,如果②没过滤的话,基本就存在xss了
(除非config.php这种配置文件有过滤QAQ)
关于过滤这方面的话百度一下就可以了,我不多废话。可以进行二次校验,或者校验token,或者判断refer头是从哪里来
一些小思考,这个cms可以csrf添加超级管理员
csrf危害有时候也挺大的,比如后台getshell,这时候可以尝试配合csrf,哈哈哈
然后我似乎想不到我还要讲什么了,那就这样的潦草结束吧,等之后想讲什么的时候,再补充
本篇文章讲的简单易懂,如果懂了,那就懂了
如果不懂,那就评论一下下,我为你解答,或者直接加我微信
zym18350405381