SSRF

SSRF(服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
如果攻击者能够将url参数更改为localhost,这可能允许他们查看服务器上托管的本地资源,从而使其容易受到服务器端请求伪造的攻击。如果攻击者可以控制服务器端请求的目的地,这将开启一系列攻击活动

危害
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息;
2.攻击运行在内网或本地的应用程序(比如溢出);
3.对内网 web 应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的 web 应用,主要是使用 get 参数就可以实现的攻击(比如 struts2,sqli 等);
5.利用 file 协议读取本地文件等。

漏洞成因

SSRF 漏洞形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的 URL 参数,并且未对客户端所传输过来的 URL 参数进行过滤。


漏洞判断

可以发起对外请求,带回数据

参数关键字
share、wap、url、link、src、source、
target、u、3g、display、sourceURl、imageURL、domain
常见的漏洞功能点
能够对外发起网络请求的地方
请求远程服务器资源的地方
数据库内置功能
邮件系统
文件处理
在线处理工具
eg:
在线识图,在线文档翻译,分享,订阅等,这些有的都会发起网络请求。
根据远程URL上传,静态资源图片等,这些会请求远程服务器的资源。
数据库的比如mongodb的copyDatabase函数,这点看猪猪侠讲的吧,没实践过。
邮件系统就是接收邮件服务器地址这些地方。
文件就找ImageMagick,xml这些。
从URL关键字中寻找,比如:source,share,link,src,imageurl,target等

相关函数

1.file_get_contents()

读取文件,并且能够对外发起请求。
file_get_contents默认不支持访问https请求,如果要支持需配置php.ini文件,激活 php_openssl.dll模块


2.fsockopen()

它是打开一个网络连接,linux套接字连接。可以理解的就是肯定会对外发起一个请求,然后你会看到它的参数,第1个host name,肯定是一个IP或者就是主机名,port就是个端口号。


3.curl_exec()

调用curl利用会有一些不同的地方,它支持协议非常多,也就意味着调动时刻能够发起请求,而且能控制协议的话能做的事情将会变得非常多,将会极大的去扩展攻击面。


相关协议

利用协议收集信息及反弹shell。

1.Gopher协议

简介:是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。
gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样便可以解决漏洞点不在GET参数的问题了。
可以先截获get请求包和post请求包,再构成符合gopher协议的请求,POST包中要注意Content-length,注意url编码的次数。gopher协议是ssrf利用中最强大的协议。
gopher是一个互联网上使用过的分布型的文件搜索获取网络协议。
使用格式
    基本协议格式:URL:gopher://<host>:<port>/<gopher-path> 。</gopher-path></port></host>
    gopher://xxxxxx:port/主体 主体部分需要进行url编码。
协议利用
 万能协议(利用Gopher攻击Redis、攻击Fastcgi 等)。
是对目标发起攻击的主要协议:
*   利用此协议可以攻击内网的 `FTP、Telnet、Redis、Memcache`,也可以进行 `GET、POST` 请求。这无疑极大拓宽了 SSRF 的攻击面。
*   内网中的redis存在未授权访问漏洞,当Redis服务以root 权限运行时,利用 Gopher 协议攻击内网中的 Redis,通过写入定时任务可以实现反弹shell。
*   通过GOPHER我们在一个URL参数中构造Post或者Get请求,从而达到攻击内网应用的目的。
*   利用`Gopher` 协议还可以攻击 `FastCGI`,攻击内网 `Vulnerability Web`。
 通过gopher协议可以反弹shell。
*   利用gopher连接redis,执行redis命令,将反弹shell的语句写入cron,使得受害者主机主动向你的主机弹shell。(注:用gopher进行发送的时候要对原语句进行url编码)。
 [利用 Gopher 协议拓展攻击面](https://blog.chaitin.cn/gopher-attack-surfaces/)。有案例。
有发送POST包的案例。
通过gopher攻击内网数据库案例。

2.dict协议

dict协议是一个字典服务器协议,A Dictionary Server Protocol,通常用于让客户端使用过程中能够访问更多的字典源,但是在SSRF中如果可以使用dict协议那么就可以轻易的获取目标服务器端口上运行的服务版本等信息。
该协议约定服务器端侦听端口号:2628。

使用格式:?url=dict://

协议利用
    除了泄露安装软件版本信息,还可以查看端口,操作内网redis服务等
        利用dict协议,dict://127.0.0.1:6379/info可获取本地redis服务配置信息;
        利用dict://127.0.0.1:6379/KEYS *获取 redis 存储的内容。
    探测端口操作,以及版本信息 diet: //xxxx:port/info;
    例:
    http://xxx.com/ssrf.php?url=dict://127.0.0.1:22。
    使用dict://协议进行端口扫描(扫描内网的机器的端口);
    ?url=dict://ip:port;
        当访问未开放端口,脚本会显示空白或者报错;
        当访问开放端口时,脚本会显示banner 信息。
    协议也能攻击redis不过不能换行,一次只能执行一条命令。

3.FTP协议

只能探测是否存在ftp,不能进行暴力破解

使用格式
?url=ftp://

4.HTTP协议

用来探测是否存在SSRF

使用格式
http://

协议利用
    访问内网资源;
    http://share.xxx.com/index.php?url=http://127.0.0.1;
    http://image.xxx.com/image.php?image=http://127.0.0.1。
    用来探测是否存在ssrf。

5.File协议

用来进行任意文件读取

使用格式
file://

协议利用
    通过file协议可以读取主机内任意文件。
        读取用户密码、读取配置文件和源代码。
    http://xxx.com/ssrf.php?url=file:///etc/passwd。
        请求 http://192.168.163.150/test.php?url=file:///etc/passwd便可以获取敏感文件的信息;

6.SFTP

即SSH,在计算机领域,SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一数据流连接,提供文件访问、传输和管理功能的网络传输协议。

使用格式
sftp://

7.TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

使用格式
tftp://

8.ldap

LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。

对于不同语言实现的web系统可以使用的协议也存在不同的差异,其中:

php:
http、https、file、gopher、phar、dict、ftp、ssh、telnet...
java:
http、https、file、ftp、jar、netdoc、mailto...
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容