CSRF:(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。
CSRF是借用用户的权限完成攻击,攻击者没有拿到受害者权限
受害者必须在登录状态下,并且点击了连接
如果受害者不在登陆状态,或者没有点击,则攻击不成功
(1)一般出现在对重要信息的修改(修改密码等),
(2)
测试环境DVWA,pikachu
一般是攻击者自己在网站创建账号,修改要修改的信息,抓包,得到url
referer是什么东西呢???
Referer 是 HTTP 请求header
的一部分,当浏览器(或者模拟浏览器行为)向web
服务器发送请求的时候,头信息里有包含 Referer 。比如我在www.google.com 里有一个www.baidu.com
链接,那么点击这个www.baidu.com
,它的header
信息里就有:
Referer=http://www.google.com
由此可以看出来吧。它就是表示一个来源。
(2)http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=admin741&password_conf=admin741&Change=Change#
攻击者 只要把这个URL,内容修改一下,发给受害者,受害者点击后,就会把密码修改了,
post需要借助自己的站点,与XSS post类似
抓包post参数后,放到自己服务器站点的URL中,让受害者点击自己搭建的URL,自己的服务器,在向正常的服务器提交带有csrf payload的post请求,实现攻击
if($_GET[‘sex‘]!=null && $_GET[‘phonenum‘]!=null && $_GET[‘add‘]!=null && $_GET[‘email‘]!=null && $_GET[‘token‘]==$_SESSION[‘token‘])
在每次提交的时候,都会生成一个一定长度并且随机的数跟在URL中,每次点击修改的时候会话中也会有Token,两个比较
CSRF漏洞,攻击成功条件比较多,所以很多人也不是很重视。看起来与XSS比较相似,但是存在本质差别,CSRF不需要获得用户权限,还有其他防御措施:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
原文:https://www.cnblogs.com/liqik/p/11160806.html