zwj611

5、SSRF请求伪造漏洞

请求伪造漏洞:SSRF(服务器端请求伪造)、CSRF(跨站请求伪造)

一、SSRF漏洞概念:

 攻击者构造形成由服务器端发起请求的一个安全漏洞,攻击目标是从外网无法访问的内部系统,可以对内外网或者本地进行端口扫描,某些情况下端口的Banner会回显出来(比如3306),使用file:///协议读取本地文件。

  首先,我们要对目标网站的架构了解,脑子了要有一个架构图。比如 : A网站,是一个所有人都可以访问的外网网站,B网站是一个他们内部的OA网站,我们普通用户只可以访问a网站,不能访问b网站。但是我们可以同过a网站做中间人,访问b网站,从而达到攻击b网站需求

二、SSRF漏洞出现原因:

  很多web都会提供从其他服务器上获取数据的功能,使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等,这个功能如果被恶意使用,可以利用存在去缺陷的web应用作为代理攻击远程和本地的服务器。当攻击者提供的是一个企业私网ip时,服务器可能会访问对应网址把结果返回。

  如果应用程序对用户提供的URL和远端服务器返回的信息没有进行合适的验证和过滤,就可能存在服务器请求伪造的缺陷。攻击者利用SSRF可以实现的攻击主要为绕过网络限制攻击企业内网

  SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。

三、攻击方式

信息收集:可对内外,本地端口进行扫描,获取一些服务的banner信息

信息收集:对内网web应用进行指纹识别,通过访问默认文件实现

执行指令:攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts,sql等)

执行指令(溢出):攻击运行在内网或本地的应用程序(比如溢出)

信息收集:利用file协议读取本地文件等。

四、SSRF漏洞监测方法

  PHP:检测是否有file_get_contens()、fsockopen()、curl_exec()这三个函数使用不当会造成SSRF漏洞

  JSP:以下集中引用不当会造成SSRF,需要进行检测Request类,URL类的openStream,HttpClient类,URLConnection和HttpURLConnection类,

五、SSRF漏洞检测方法

  (一)绕过方法(需要检测)

  (二)添加端口号,短网址绕过,指向任意IP的域名xip.io;ip限制绕过;

    10.0.0.1.xip.io  resolves to 10.0.0.1

    www.10.0.01.xip.io  resolves to 10.0.0.1

    mysite.10.0.0.1.xip.io  resolves to 10.0.0.1

   (三) 十进制转换,八进制转换,十六进制转换,不同进制组合转换;

  对于这种过滤我们可以采用改编IP的写法的方式进行绕过,例如192.168.0.1这个IP地址我们可以改写成:

  (1)、8进制格式:0300.0250.0.1    64*3.64*2+8*5.0.1

  (2)、16进制格式:0xC0.0xA8.0.1

  (3)、10进制整数格式:3232235521

  (4)、16进制整数格式:0xC0A80001

  还有一种特殊的省略模式,例如10.0.0.1这个IP可以写成10.1

  (四)协议限制绕过,比如:在某些情况下,后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤。这时候可能会出现对URL参数解析不当,导致可以绕过过滤。

http://www.oldboyedu.com@192.168.0.1/

当后端程序通过不正确的正则表达式(比如将http之后到com为止的字符内容,也就是www.oldboyedu.com,认为是访问请求的host地址时)对上述URL的内容进行解析的时候,很有可能会认为访问URL的host为www.oldboyedu.com,而实际上这个URL所请求的内容都是192.168.0.1上的内容。

 

六、SSRF漏洞修复方法

  过滤返回信息,验证远程服务器对请求的响应是比较容易的方法

  如果web应用是获取某一种类的文件,那么把返回结果展示给用户之前先验证返回的信息是否符合标准。限制请求的端口为常用HTTP端口,比如80,443、8080、8090,黑名单内网IP,避免应用被用来获取内网数据,攻击内网。

禁用不需要的协议,仅仅允许http和https请求。

七、SSRF的防御方法(黑名单)

 

(1)过滤10.0.0.0/8 、172.16.0.0/12、192.168.0.0/16、localhost私有地址​、IPv6地址

 

(2)过滤file:///、dict://、gopher://、ftp:// 危险schema

 

(3)​对返回的内容进行识别

 

(4)内网服务开启鉴权​(Memcached, Redis, Elasticsearch and MongoDB)

最佳防护:

(1)使用地址白名单

(2)对返回内容进行识别

(3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用 CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致

 

posted on   yaphetss  阅读(96)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示