SSRF漏洞靶场

​SSRF(Server-Side Request Forgery,服务端请求伪造)是指攻击者向服务端发送包含恶意 URL 链接的请求,借由服务端去访问此 URL ,以获取受保护网络内的资源的一种安全漏洞。SSRF 常被用于探测攻击者无法访问到的网络区域,比如服务器所在的内网,或是受防火墙访问限制的主机。

SSRF 漏洞的产生,主要是因为在服务端的 Web 应用,需要从其他服务器拉取数据资源,比如图片、视频、文件的上传/下载、业务数据处理结果,但其请求地址可被外部用户控制。

请求地址被恶意利用的话,如下图所示,就能够以服务端的身份向任意地址发起请求,如果是一台存在远程代码执行漏洞的内网机器,借助 SSRF 漏洞就可以获取该内网机器的控制权。SSRF漏洞靶场_第1张图片

危害

主机信息收集,内网WEB应用指纹识别 获取服务banner信息。

攻击内网和本地的应用程序。

根据识别出的应用针对性发送payload攻击。  

读取本地文件。

 SSRF漏洞靶场_第2张图片

内网,本地端口扫描 获取开放端口信息。

穿防火墙。

SSRF 常见漏洞代码 将代码黏贴至php文件中

如图

SSRF漏洞靶场_第3张图片

运行代码并添加常见常见的?url=http://www.baidu.com  页面就会跳转到baidu的搜索页

同时获取的资源文件会保存在./Windows中 并以时间戳命名

SSRF漏洞靶场_第4张图片

下面利用pikachu 实现漏洞运用 通过curl 传输

Curl介绍:

1.cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

2.打开pikachu后端源文件代码

3.可以看到它是用get获取了前端的url请求,curl_init函数会对它进行初始化,然后curl_exec函数会去执行请求,最终又将请求结果返回到前端。

SSRF漏洞靶场_第5张图片

4.后端源文件在pika/vul/ssrf下

SSRF漏洞靶场_第6张图片

5.运行pikachu  发现url传递

了?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

SSRF漏洞靶场_第7张图片

6.修改url后面的信息获取本地hosts 前端传递参数,后端通过curl_exec去请求,最后把请求结果返回到前端

?url=file://c:\windows\system32\drivers\etc\hosts

7.可以看到成功获取了本地的hosts信息 并返回到了前端页面

SSRF漏洞靶场_第8张图片

     

SSRF(file_get_content函数)       

1.利用file_get_content函数对本地系统任意文件读取。

和上面一样打开pikachu 点击SSRF file_get_content

SSRF漏洞靶场_第9张图片

2.查看后端代码 跟刚刚一样

SSRF漏洞靶场_第10张图片

3.查看代码发现使用的是file_get_contents,而file_get_contents函数不但可以对本地文件进行读取,还可以对远程文件进行读取。

查看发现是通过get获取了前端的file请求,file函数会对它进行初始化,然后file_get_contents函数会去执行请求,最终又将请求结果返回到前端。

SSRF漏洞靶场_第11张图片

4.试试利用file_get_contents 函数进行传输 将url后面参数修改为baidu.com

                                            SSRF漏洞靶场_第12张图片                                                                                     

5.可以看到页面跳转到了baidu的搜索框

SSRF漏洞靶场_第13张图片              

6.file_get_contents漏洞可以读取本地或者读取远程文件信息    (读取远程修改一下ip即可)

SSRF漏洞靶场_第14张图片                

7. 制造恶意的payload去获取后台的PHP源码并将结果转换为base64:

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

SSRF漏洞靶场_第15张图片

8.将base64进行转换源码就出来了

SSRF漏洞靶场_第16张图片

                            

Curl和file_get_contentslo区别 

Curl支持:http\https\ftp\gopher\dict\file\ldap\get\模拟cookie登录,爬取网页、FTP上传下载\fopen

file_get_contentslo 只支持get方式传输    

防范

禁⽌服务端跳转,防⽌以跳转⽅式绕过HTTP协议限制

对于SSRF,回显是能够成功利⽤的重要条件,所以过滤返回信息,验证远程服务器对请求的响应是⽐较容易的⽅法。如果WEB应⽤

是去获取某⼀种类型的⽂件,那么在把返回结果展⽰给⽤户之前先验证返回的信息是否符合标准。

禁⽤不需要的协议,仅仅允许HTTP和HTTPS请求。可以防⽌类似于file://、gopher://、ftp://等引起的问题

设置URL⽩名单或者限制内⽹IP,避免应⽤被⽤来获取内⽹数据,攻击内⽹

限制请求的端⼝为HTTP常⽤的端⼝,例如80、443、8080、8090

最后就好了,微信关注 “天银安全 ”回复XSS获取视频课程,或者私聊         

今天真是美好的一天,而我却收不到关注                                

你可能感兴趣的:(渗透测试,SSRF,函数,安全,web安全,csrf)