CSRF和SSRF(Web漏洞及防御)


CSRF和SSRF(Web漏洞及防御)文章插图
CSRF跨站请求伪造(Cross-Site Request Forgery)
CSRF经常配合XSS一起进行攻击!(同XSS类似 , 都属于跨站攻击 , 不攻击服务器端而攻击正常访问网站的用户!)
XSS利用站点内的信任用户 , CSRF伪造成受信任用户!
CSRF和SSRF(Web漏洞及防御)文章插图
CSRF原理攻击者伪造目标用户的身份 , 以目标用户的名义执行非法操作!
如:发送邮件、发送消息、盗取目标用户的账户进行购买 , 转账等威胁目标用户的财产安全!
注意:具体实例 , 请参考之前的文章!
CSRF的利用之前文章的利用手段截图:
CSRF和SSRF(Web漏洞及防御)文章插图
CSRF和SSRF(Web漏洞及防御)文章插图
CSRF的防御

  1. 使用POST请求代替GET请求
CSRF一般触发的时候 , 都是通过用户点击链接 , 比如美女图片 , 吸引眼球的信息 , 这种请求方式都是GET请求 , 所以使用POST在一定程度上会避免通过GET方式请求CSRF!
  1. HTTP Referer
HTTP头信息中 , 包含Referer字段 , 记录了请求的来源地址(上一个访问地址) , 通过检查此字段 , 可以了解来源是站内还是外部的恶意连接!
  1. 验证码
每次请求 , 都需要填写验证码!(尽管也可以绕过验证码 , 今后讲解业务安全时 , 会提到如果绕过验证码漏洞!)
注意:验证码 , 用户体验不好!
  1. Token(请求令牌!)
CSRF之所以能成功的重要原因是:攻击者能够预知和伪造请求中的关键字段 , 因此 , 如果在请求中放入攻击者不能伪造的信息就能起到防范CSRF的作用!
在HTTP请求中以参数的形式加入一个随机产生的请求令牌(Token) , 并在服务器端进行验证 。 如果请求中没有Token或者Token内容不正确 , 则拒绝该请求!
Cookie Token:Token值放进Cookie中(所有表单都包含同一个伪随机值)
把Token放入HTTP头部自定义的属性中
一次性Token:每一个表单包含一个不同的伪随机值!
SSRFSSRF:Server-Side Request Forgery(服务端请求伪造)
攻击者利用SSRF漏洞通过服务器端发起伪造请求!
一般情况下 , SSRF攻击的目标是外网无法访问的内部系统!
(由于请求是服务器端发起的 , 所以服务器能请求到与自身相连而与外网隔绝的内网!)
SSRF漏洞形成原因服务器提供了从其他服务器应用获取数据的功能 , 并且对目标地址没有做严格的过滤!
SSRF漏洞利用
  1. 通过服务器获取内网主机、本地端口扫描、获取一些服务的banner信息!
banner:会获取到一些敏感信息!banner 信息中 , 可以获取到软件开发商、软件名称、服务类型、版本号等 。 而版本号有时候就会存在公开的 CVE 问题 , 可以直接进行利用 。 banner 信息获取的基础是在和目标建立链接后的 , 只有建立的链接 , 才可以获取到相应的 banner 信息 , 当目标对 banner 信息进行隐藏或者配置了禁止读取时 , 这时的 banner 则获取不到!
  1. 对内网的应用程序进行攻击 , 如Redis , JBoss等!
  2. 对内网的Web应用进行指纹识别 , 识别内部的资产信息
  3. 攻击内网程序 , 造成缓冲区溢出 。
  4. 利用file伪协议读取文件
举例:
端口探测:
://127.0.0.1:3306读取文件:
:///etc/passwd内网的JBoss攻击:
://192.168.1.88:8080://192.168.1.88:8080/jmx-console/// 发现存在jmx控制台未授权访问漏洞通过jboss.deployment接口部署Web木马应用【CSRF和SSRF(Web漏洞及防御)】获取Webshell执行命令SSRF防御
  1. 过滤请求协议 , 只允许http或https的协议
  2. 限制访问的IP地址
  3. 限制访问的端口
  4. 设置统一的错误处理页面 , 防止信息泄漏!