10-3ssrf漏洞原理和案例实验演示

10-3ssrf漏洞原理和案例实验演示

SSRF(Server-Side Request Forgery:服务器端请求伪造)

形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对前端传进来的目标地址做严格过滤与限制,导致攻击者可以通过前端,传进来任意的地址,然后让我们的服务器对其发起请求,把请求的数据,又返回给攻击者,攻击者实际上是以存在SSRF漏洞的服务器,为跳板,然后,通过这个跳板服务器的功能,对其它服务器进行攻击

数据流:攻击者——>服务器——>目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
这些函数的共同特点是,他们可以通过一些网络协议,去访问目标服务器上的资源,然后对资源进行处理

如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤和控制

我们选择ssrf_curl这个案例看一下,点一下a标签

在这里插入图片描述

他传了一个url到后台

我们看一下源码,看一下,他是怎么形成这个问题的

在这里插入图片描述

直接获取通过前端传进来的url,通过curl_init去做了一个初始化,最终通过curl_exec做一个请求,然后把请求回来的数据,又返回到了前端

我们传一个百度的地址,进来试一下

http://www.baidu.com

在这里插入图片描述

他就直接把百度的数据给显示出来了,这个流程,不是我们浏览器直接去请求百度,而是我们的浏览器把这个参数传到了后端,后端的服务器通过curl_exec,这么个方法去请求的百度,然后把百度返回的数据又返回到了前端

这意味着,我们可以通过ssrf漏洞,对这个后端服务器,同一个网络里面的其它服务器,去进行相关的探测,通过http://192.168.1.15:22这样的一个访问,去测试一下,1.15这台机子的22号端口是不是开着

在这里插入图片描述

他就把banner信息给返回回来了,我们可以通过这个漏洞,对同一个内网的服务器,进行扫描和探测,获取更多的内网资源,从而进行更进一步的攻击,这个就是我们会用SSRF来打内网的原因

//ssrf的问题是:前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。
//除了http/https外,curl还支持一些其他的协议curl --version 可以查看其支持的协议
//curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP

如果后台不恰当的使用了这些方法,通过这些协议对内网的资源进行探测,获取更多的信息,进行更近一步的攻击

我们来看一下,ssrf_fgc的一个案例

在这里插入图片描述

我们来看一下后端,file_get_contents这个函数可以对本地的文件进行读取,也可以对远程的文件,进行读取,它支持很多的相关网络协议

在这里插入图片描述

http://www.baidu.com

在这里插入图片描述

同样的,它会通过http,把百度资源,通过后端服务器请求之后,返回到前端,我们可以通过后端支持的网络协议,对内网进行相关的探测

//读取PHP文件的源码:php://filter/read=convert.base64-encode/resource=ssrf.php
//内网请求:http://x.x.x.x/xx.index

通过php内置的方法,来读取源码,php://filter,通过前端看到的都是前端的代码,但是我们看不到后端php的逻辑的

如果说,这个地方使用了file_get_contents,我们可以使用内置的php方法

对指定下的目标路径,进行读取,然后再把它转成base64的编码

php://filter/read=convert.base64-encode/resource=ssrf.php

在这里插入图片描述

把我们这个文件的base64的编码,返回到了前端,我们把这段base64编码拿去解码,就会知道这段php源码所对应的源码文件是什么,然后就能拿到php文件,对应的后端所有源代码,ssrf漏洞运用的途径和方法是很多的,但是取决于后台,用的是那个函数,然后我们要去研究这些函数,到底支持那些网络含义,我们可以通过这些含义,去构造相关的方法

                       

点击阅读全文

上一篇 2023年 6月 9日 pm9:15
下一篇 2023年 6月 9日 pm9:16