在下方公众号后台回复:【网络安全】,可获取给你准备的最新网安教程全家桶
1、什么是CSRF?
CSRF(Cross-site request forgery,跨站请求伪造),通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来很像跨站脚本(XSS),但它与XSS非常不同:
XSS是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行和难以防范,所以被认为比XSS更具危险性。
一般来说,CSRF是攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。
说的不太通俗易懂,那就举个例子来说明吧~
1)首先,用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A。
2)其次,在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A。
3)然后,用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B。
4)网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;浏览器在接收到这些攻击性代码后。
5)根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理理该请求,导致来自网站B的恶意代码被执行。
2、如何验证
看到这里你是不是也跃跃欲试想验证 一下,那就——先抓个包咯!这里,我用的抓包工具是Burp Suite(BP网上详细的使用教程蛮多,这里就不赘述啦)。
第一步:设浏览器代理
在chrome和火狐都有相应的插件来设置代理,以火狐为例,可以在“添加组件”模块搜索找到foxyproxy,添加即可。
添加成功后,浏览器上就有一个“小狐狸”标志。
设置代理地址为127.0.0.1,并设置端口为8080。
【tips】127.0.0.1所有电脑的本地服务器都默认为127.0.0.1。
【tips】8080这个代理端口不能随意改动,因为其它端口可能被占用。可以改为没有被占用的端口,范围为1~65535。
第二步:下载BP,并配置浏览器相同
打开BP后,与浏览器配置相同的IP和端口信息,保存即可。
【tips】现在大多数网站为了数据传输的安全性,强制使用 HTTPS 进行通信。这时我们在使用 Burp 代理后去访问将会出现证书错误的警告,那要咋办呢?莫慌莫慌,浏览器打开127.0.0.1:8080,找到CA证书并下载后,在“证书机构”模块导入证书就好啦。
第三步:抓包验证是否存在CSRF漏洞
1)打开待验证的网站,注册用户(原始密码为123456a),并在页面修改密码(123456b)。BP抓到相应的POST包:
2)构造请求
右键选择Engagement tools中的Generate CSRFPoC,修改POST包中的原始密码为页面修改的密码(123456b),修改当前密码为一个新密码(123456c)。
修改提交的参数,生成CSRF的HTML,在浏览器中测试。
点击copy后,在浏览器中打开,点击“Submitrequest”提交请求。
3)检查是否提交成功
提交后,页面返回“密码修改成功”。BP抓包也显示密码被修改,则说明可以成功伪造请求进行操作,该网站的确存在CSRF漏洞。
3、写在结尾
对于入坑小白,可以从最感兴趣的漏洞下手,了解这个漏洞类型的基本原理,以及相关技术和工具。一开始可能会花很多时间却收获甚少,最头秃的是有时候找到几篇相关的博客,却不知如何下手。不过别担心,慢慢积累,多多总结,漏洞喂多了,总有一天会从一名入坑小白进阶为入(an)坑(quan)大(da)白(niu)。
- End -
近期课程上新:
Windows服务安全 | 以太网交换与路由技术 | Linux安全运维 | Web安全 | 灰帽编程 | 渗透测试 | 安全化概述与虚拟化 | 跨站脚本攻击