前言
今天跟大家分享的是csrf 跨站请求伪造的一些知识点,欢迎各位观众老爷在评论区进行讨论。
由来万夫勇,挟此生雄风。笑尽一杯酒,杀人都市中。剑术已成君把去,有蛟龙处斩蛟龙。潇洒不潇洒?风流不风流?当然!--《剑来》
1. 什么是CSRF?
CSRF跨站请求伪造
漏洞描述
CSRF(跨站请求伪造)CSRF是攻击者通过伪造用户浏览器的请求,欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品、修改密码)。
由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。
一句话理解:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求
原理
简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。
1. 用户打开浏览器,登录信任网站A,输入账号密码请求登录网站A。
2. 用户信息通过验证后,网站A产生Cookie信息返回给用户浏览器。
3. 用户在未退出网站A之前,在 同一浏览器 又打开了一个网站B。
4. 网站B 接收到用户的访问请求后,网站B将包含向网站A请求的恶意的代码返回给浏览器,用户浏览器渲染执行,触发恶意请求。
5. 该条请求发送后,可信网站会以存储在浏览器中用户的Cookie处理该请求,导致用户执行恶意操作。
(网站A根据请求中的Cookie信息进行处理,那么最终执行恶意操作就是用户)
检测漏洞
1.用户修改密码,信息,添加账号,发布文章等一些敏感操作位置,若没有二次效验,类似(图像验证码,短信验证码,原密码)那么就可以尝试检测。
2. 检测CSRF漏洞是一个特别简单的工作,简单的方式就是抓取一个正常的请求包,去掉referer字段再重新提交,如果提交是有效的,那么基本上就是存在CSRF漏洞
3.工具检测:CSEFTester,CSRF RE quest builder
github.com CSRF测试
2. 怎么检测CSRF?
靶场测试
点击修改 -> 抓包点击提交 -> 制作POC -> 修改提交内容 -> 访问POC
先是进入靶场修改提交的时候用burp抓包
抓到包以后选择Engegement tools -> Gennerate CSRF Poc -> 随便修改提交表单内容信息 -> 点击Test in browser
随便修改一块内容(用来验证是否修改成功我们指定的数据)
Copy在,同一浏览器打开,并且点击按钮发送请求。
在同一浏览器访问POC URL -> 刷新靶机页面查看信息是否被修改成功(成功及存在)
CSRF防御
1. token
2. 验证Referer来源
3. 添加二次校验
什么是Token
Token就是令牌,最大的特点就是随机性,不可预测。
Token的作用,他是一个随机的值,是服务器端前一个请求给的,是一次性的,可以防止csrf这种恶意的携带自己站点的信息发请求或者提交数据(这个动作一般需要获取你的前一个请求的响应返回的token值,加大了难度,并不能完全杜绝)。
PS:写到cookie中,因为浏览器在发出恶意csrf请求时,是自动带着你的cookie的
3. CSRF与XSS的区别?
1. CSRF是跨站请求伪造; XSS是跨站脚本攻击。
2. CSRF需要用户先登录网站A,获取cookie; XSS不需要登录。
3. CSRF是利用网站A本身的漏洞,去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。(XSS利用的站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。)
你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。
4. CSRF+XSS怎么利用?
环境:DVWA靶场+LOW等级+CSRF+XSS
具体操作 ,没有截图,也不是很理解
5.信息收集
端口扫描
nmap -sV 192.168.4.218
目录扫描
dirsearch -u "http://192.168.4.218:8080/"
漏洞测试
目录遍历漏洞