什么是CSRF
CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
一个典型的CSRF攻击有着如下的流程:
- 受害者登录a.com,并保留了登录凭证(Cookie)。
- 攻击者引诱受害者访问了b.com。
- b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
- a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
- a.com以受害者的名义执行了act=xx。
- 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。
CSRF和XSS区别:
CSRF 和 XSS 可以理解为两个不同维度上的分类。XSS 是实现 CSRF 的其中一种方式。通常习惯把通过 XSS 来实现的 CSRF 称为 XSRF。
解释:
通俗易懂的说法就是利用伪造链接诱导小A点击,在小A点击之前如果恰好登录过某网站,网站上存有小A的cookie信息,在信息还未过期的情况下小A点击你发过去的网站
利用小A账号进行操作,实现从csrf攻击,以受害者的身份像服务器发起请求,从而实现非法攻击(改密)。
CSRF的攻击过程两个条件:
1、目标用户已经登录了网站,能够执行网站的功能.
2、目标用户访问了攻击者构造的URL。
CSRF安全问题黑盒怎么判断:
1、看验证来源不-修复
2
看凭据有无tqken--修复
3、看关键操作有无验证-修复
CSRF安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看\
low:
通过GET方式获取两次密码,两次密码输入一致的话,就可以直接带入数据中修改密码
#输入自己的网页 <img src="http://127.0.0.3/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/> #404网页构造 <h1>404<h1> <h2>file not found.<h2>
在 C:\phpstudy_pro\WWW 文件夹中建立一个 1.html ,里面写入
medium:
Medium级别的代码检查了保留变量 HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,及要访问的主机名,这里是127.0.0.3),希望通过这种机制抵御CSRF攻击。
漏洞复现
其实意思是这个referer中只要出现Host就可以正常操作
恶意网站中是这样的,显然是不成立的
Host 127.0.0.3
Referer http://127.0.0.1/
如果是这样的呢
Host 127.0.0.3
Referer http://127.0.0.1/127.0.0.3.html
这样就可以绕过,从而实现改密的操作了。
High:
(1)利用XSS获取cookie
<script>alert(document.cookie)</script>
拿到cookie
security=low; PHPSESSID=7lj6tnrk14bv6a20ethtnq0hs6
再用抓包工具进行修改
标签:XSS,127.0,受害者,SSRF,网站,自用,CSRF,com From: https://www.cnblogs.com/user321/p/18071338