CSRF漏洞

CSRF漏洞

1.如何测试csrf漏洞

对目标站点增删改查的地方进行标记,并观察逻辑,判断请求是否可以伪造

# 手工测试
	若本次操作中存在csrf token参数,或存在验证码等防御行为,则不存在csrf漏洞。若将数据包中的referer字段去掉,或仅仅删除referer字段的值,重新发送得到服务器的正确受理,那么可认为存在csrf漏洞。

2.攻击流程

# 受害者登录了目标网站
# 攻击者向受害者发送恶意链接
# 受害者点击链接, 链接中的js代码执行, 向目标网站发送某个请求
# 由于用户已登录, 请求会被成功执行

3.如何防御csrf漏洞

# 增加Token验证(常用做法)
	对关键操作增加Token参数,token必须随机,每次都不一样

# 关于安全的会话管理(避免会话被利用)
	不要在客户端保存敏感信息(比如身份验证信息)
	退出、关闭浏览器时的会话过期机制
	设置会话过机制,比如15分钟无操作,则自动登录超时

# 访问控制安全管理
	敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
	敏感信息的修改使用POST,而不是GET
	通过HTTP头部中的REFERER来限制原页面

# 增加验证码
	一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

4.如何绕过防御

# 更改请求方法
	如果要伪造的敏感请求是通过POST方法发送的,那么尝试将其转换为GET请求。
	
# 删除token参数或发送空token
	不发送token也可以正常请求数据是因为这种逻辑错误在应用程序中非常常见:应用程序有时会在token存在的时候或者token参数不为空的时候检查token的有效性。
	
# 移除referer字段

# 绕过正则表达式
	如果referer检查是基于白名单的,你可以尝试绕过验证URL的正则表达式。例如,你可以尝试在referer的URL中将受害者域名置于二级域名区域或者URL目录区域。如果一个站点在referer字段检查“bank.com”字段,那么“bank.com.attacker.com"或”attakcer.com/bank.com"可能可以绕过这种检测。
	
# 判断Referer是否存在某关键词
	 referer判断存在不存在google.com这个关键词,在网站新建一个google.com目录 把CSRF存放在google.com目录,即可绕过
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值