SSRF

一、SSRF是什么?

SSRF是由一种攻击者构造请求,由服务器端发起请求的安全漏洞。一般情况下SSRF的攻击目标是外网无法访问到的内部系统。(正因为请求是由服务器发起的,所以服务器端能请求到与自身相连而与外网隔离的内部系统。)

二、SSRF是怎样形成的?

SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

三、SSRF主要攻击方式

(1)对外网,服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
(2)攻击运行在内网或本地的应用程序。
(3)对内网web应用进行指纹识别,识别企业内部的资产信息。
(4)攻击内外网的应用程序,主要是使用HTTP GET请求就可以实现的攻击。例如struts2、SQli等。
(5)利用file协议读取本地文件等。

四、pikachu实例演示

<1>curl()函数
首先我们大概了解一下在PHP中curl函数是用来干什么的。curl是一个库,能让你通过URL和许多不同种的服务器进行交流,并且还支持许多协议。curl可以支持https认证、http post、ftp上传、代理、cookies、简单口令认证等等功能。接下来我们先看一下curl函数源码:
在这里插入图片描述
可以看到对前端传入的URL不做过滤,那我们就可以curl_exec()函数去执行一些恶意操作 。
(1)这里我们可以看到是直接通过URL直接获取资源,所以我们可以更改URL去跳转其他网站或者是对内网(IP)进行探测,这里我们就以我的kali机作演示。
首先我们在kali上用python开启一个监听8080端口的服务器,然后我们访问kali上的wu.txt文件,成功读取,同时在kali可以看到回显。
在这里插入图片描述
在这里插入图片描述
(2)探测本机是否开放某些端口服务,例如:3306、8081(这里是我burp的代理监听端口)。其实这里有些服务是没有回显的,所以我们可以根据回显的速度来判断某个端口是否开放。
在这里插入图片描述
在这里插入图片描述
(3)利用file协议读取本地文件,例如:file:///C:\Windows\win.ini。
在这里插入图片描述
<2>file_get_content()函数
file_get_content()函数的功能是对本地和远程的文件进行读取。
(1)读取本地或者远程文件,读取本地文件时可以不用file协议,直接加路径即可;远程的需要加上域名。
(2)获取源码,这里我们获取网站根目录下的ws.php的源码,这里是用base64编码的,我们可以用解码工具进行解码。
在这里插入图片描述
在这里插入图片描述
PS:php://filter简单理解
php://filter 是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取;根据名字,filter,可以很容易想到这个协议可以用来过滤一些东西。使用不同的参数可以达到不同的目的和效果:
在这里插入图片描述
另外用read的解释:

<?php /* 这会以大写字母输出 www.example.com 的全部内容 */ 
readfile("php://filter/read=string.toupper/resource=http://www.examp
le.com"); /* 这会和以上所做的一样,但还会用 ROT13 加密。 */ 
readfile("php://filter/read=string.toupper|string.rot13/resource=htt
p://www.example.com"); ?>

上例中我们应用了read参数和resource参数,当然还可以用write参数,这时我们可以通过指定写的方式来对文件进行一些改变。

五、防御方法

1、过滤返回的信息,如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

2、统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。

3、限制请求的端口,比如80,443,8080,8090。

4、禁止不常用的协议,仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp://等引起的问题。

5、使用DNS缓存或者Host白名单的方式。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值