一、CSRF介绍
CSRF(Cross-site request forgery)
全称“跨站请求伪造”,也被称为“One Click
Attack”或者“Session
Riding”,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义进行某些非法操作。CSRF能够使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的账户。
二:CSRF原理
受害者–用户在当前已经登录的web应用程序上执行非本意的操作
攻击者–欺骗浏览器,让其以受害者的名义执行自己想要的操作
例如:
当用户打开或登录某个网站时,浏览器与网站所存放的服务器将会产生一个会话,在这个会话没有结束时,用户可以利用自己的权限对网站进行某些操作,如:修改资料、交易支付、删除文件等,当会话结束后,用户再进行某些操作的时候,WEB应用程序便会提示“当前会话已经过期”“请重新登录”等提示。
攻击者构造好一个修改用户密码的请求,通过诱骗已经登陆WEB应用程序的受害者点击,受害者便以自己的身份执行了一个非本意的操作,而修改的密码是攻击者可以控制的,这就导致了受害者的密码被恶意修改。
CSRF攻击是建立在浏览器与WEB服务器的会话之中的,通过欺骗用户访问URL达到攻击目的。
三、漏洞挖掘
1、自动化扫描工具
netspark
AWVS
appscan
一般用上列工具可以扫描到网站是否存在CSRF漏洞。但是在工具中添加登录参数可以大大提高挖掘的成功率
2、半自动检测工具
CSRFTester
下载地址:https://www.owasp.org/index.php/File:CSRFTester-1.0.zip
1.安装CSRFTester
打开run.bat就可以打开工具,但是需要java的环境
消息框出现该消息时,表示工具已经开始监听本地8008这个端口了,这个时候需要配置浏览器的代理
2. 设置浏览器代理(搜狗浏览器为例)
点击工具栏–代理设置–添加新代理,将代理进行添加并启用即可
3. 用户登录
单击“Start Recording”,开启CSRFTester的检测工作,这样以后我们所有访问的URL以及参数都会被记录下来。
4. 通过CSRFTester抓取和伪造请求
当你登录一个网站账号时,CSRF Tester会进行抓取
我们抓取了该请求,在Step属性中添加请求,然后将Form Parameter中的user等表单中参数进行修改,然后单击Generate HTML按钮(可以选择其他格式:Forms、IFrame等)来产生CSRF攻击脚本。
随机生成了一个攻击脚本,将其上传服务器,发送给受害者即可。
CSRF PoC generator
打开burpsuite,在抓取任意一个HTTP请求中点击右键,选择Engagement tools,然后点击Generate CSRF POC即可生成CSRF POC,