CSRF -- 跨站请求伪造,很好理解,就是盗用别人的身份伪造请求发送给服务器,在未授权的情况下执行权限保护之内的操作,因为请求的一切流程都是正常操作,这也是一般不会被检测到的漏洞行为。
小黑子们,撸起袖子加油干!!!
目录
CSRF -理解
判断是否有CSRF漏洞的简单依据
案例一(DVWA-low):
burpsuite快速生成CSRF poc
复制poc,然后将文本改成html格式
测试原理:
小结 :
案例二 (medium):
绕过方式一:
绕过方式二:
案例三(HIge级别):
第一种绕过方式:
第二种绕过方式:
CSRF -理解
如当你在某浏览器登录了QQ或者QQ登录权限的其它网址,在登录状态浏览不良网站,从网站上点击了不良链接,攻击者就可以利用已存在的cookie信息,盗取你的QQ信息,更改QQ密码、以你的名义发送短信、邮件、空间.....【咳咳咳....不过一般修改账密是会被看到的,所以后面收集信息之类的一套操作必须做到迅速】
思路拓展:伪造跨站请求可以做收集用户信息的一种方式,比如点击链接后自动收集用户的账户密码而不是去修改它等.... csrf是可以绕过防火墙的,因为它本身不包含恶意的代码或者敏感的字符,只是盗取了被攻击者的权限做一些合规范围内的操作。
判断是否有CSRF漏洞的简单依据
1、抓取一个正常数据的请求包,如登录页面的请求或其它有用户操作权限的请求包,如果没有referer字段,那么极有可能存在CSRF漏洞。
2、如果有Referer字段,如果去掉referer字段提交还是有效,基本上可以确定为存在CSRF
3、利用工具探测是否存在CSRF
案例一(DVWA-low):
burpsuite快速生成CSRF poc
通过第一关的low级别抓包,生成csrf的poc脚本
复制poc,然后将文本改成html格式
测试原理:
low级别没有任何防护措施,只是验证了账密是否相同就会修改密码,将脚本在同一个浏览器中打开即可,点击链接后执行跳转修改账密操作。(缺点:用户必须使用同一个浏览器打开链接,否则没有效果)。
这里的原理是csrf通过挂马的方式将链接挂载到网页上,用户通过点击该链接就会自动跳转,然后执行csrf的poc脚本内容。
小结 :
csrf攻击很容易被发现,要在不知情的情况下完成
1、利用短链接隐藏要跳转修改的URL,站长之家--短链接生成工具https://tool.chinaz.com/tools/dwz.aspx(缺点:但是会出现密码被修改的页面)
2、钓鱼网站,在公网上上传一个诱捕网(但默认链接打开的如果不是同一个浏览器,那么也盗取不了)
3、结合储存型xss,在xss注入点中写入CSRF代码,实现网页挂马状态
案例二:
DVWA(medium):
将筛选验证http包头的referer参数必须包含主机名,原来的生成的html文件不能用
绕过方式一:
将生成的poc文件命名为主机名IP.html(被攻击者服务器地址)上传到攻击者服务器的某个路径下。
格式为,http://攻击者服务器地址/xxx/被攻击者html文件【思路,在被攻击者的网站跳转到攻击者的服务器,访问html文件达到攻击目的】
绕过方式二:
通过发现URL提交账户密码方式不会存在referer字段,那从这我们可以随意更改referer字段,达到攻击的目的,其实这应该也算是逻辑漏洞。
通过抓取URL包,发现没有Referer字段,那我们可以自定义referer字段,但是必须要和host头部是一样的才可以。原账户是123456,修改后为admin【从这里可以思考,该怎么利用? 一般账密都不会get提交,就算是get提交后端做数据校验也没办法修改账密....】
案例三(HIge级别):
第一种绕过方式:
做了token验证,服务器会随机返回一个token,优先检查token才会处理客户端的请求,在这里会结合储存型xss漏洞,将token抓取到,才可以形成csrf修改用户账户密码【当xss注入到修改页面中,用户访问修改页面则会触发xss,截取到服务器发送的token值,然后再利用csrf去进行密码修改】
csrf结合xss储存型漏洞,通过xss得到token值, 然后记录到csrf脚本中,执行修改当前页面的账密,不过首先得找到一个xss存在的漏洞点,然后就是需要构造储存型xss的时候需要找到需要拦截的csrf的漏洞点路径。
xss_s(high级别):txtName=<iframe src="../CSRF" οnlοad=alert(frames[0].document.getElementsByName('user_token')[0].value)>(有限制input输入长度,可以通过burpsuite抓包绕过)
第二种绕过方式:
burpsuite插件绕过:
第一步找到插件,通过burpsuite的CSRF Token Tracker插件自动识别token值。
第二步设定hostIP值,还有token的字段
第三步:抓包放包,dvwa验证token值,只能放包一次,就会重新验证令牌了
CSRF-Token Tracker打开后会自动验证tongken值