SSRF服务器端请求伪造
凡是发起网络请求的地方,就有可能涉及ssrf
1.SSRF漏洞定义:
SSRF(Server-side RequestForge )服务器端请求伪造,由于服务端提供了从其他服务器应用获取数据的功能,但没有对地址和协议等做过滤和限制。使得攻击者可以利用存在缺陷的web应用作为代理,攻击其远程和本地的服务器。正是因为它是由服务端发起的,所以它能绕过防火墙去访问内网里的数据,请求到与它相连而与外网隔离的内部系统
C/S 客户端和服务端
2.漏洞产生原因
大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
3.漏洞利用:
引发SSRF漏洞的几个函数
file_get_contents() 获取本地或者远程文件内容
fsockopen() 获得套接字信息
curl_exec 随意攻击内网中所有应用
fopen() 打开文件或者URL
readfile() 输入一个文件
2.fsockopen(
功能:获得套接字信息
开启:编辑 PHPini中allow_url_fopen 选项allow_url_fopen = On
参数:
hostname:如果安装了0penSSL,那么你也许应该在你的主机名地址前面添加访问协议sst://或者是tls://,从而可以使用基于TCP/IP协议的SSL或者TLS的客户端连接到远程主机。
port:端口号。如果对该参数传一个-1,则表示不使用端口,例如unix://。
errno:如果errno的返回值为0,而且这个函数的返回值为 FALSE,那么这表明该错误发生在套接字连接(connect0))调用之前,导致连接失败的原因最大的可能是初始化套接字的时候发生了错误。
errstr:错误信息将以字符串的信息返回,
timeout:设置连接的时限,单位为秒,
3.curl_exec()
功能:执行一个CURL会话,这个函数应该在初始化一个CURL会话并且全部的选项都被设置后被调用。
语法:mixed curl_exec(resource $ch )
参数:ch 由curl_imit0 返回的 CURL句柄。
5.漏洞危害:
具体危害取决于,内网和本机涉及哪些漏洞有什么功能1.对目标服务器所在的内网进行IP存活性扫描和端口扫描2.利用扫描的指纹信息判断开放的服务,从而对内网的主机进行攻击3.识别内网WEB应用指纹,判断应用类型进行攻击4.使用特定协议攻击应用(gopher、dict、file、FTP/ SFTP等)
5.扫描内网开放的端口
6.读取主机任意文件
7.攻击内网应用,如redis,mysql等
8.可以向内部任意主机的任意端口发送精心构造的数据包payload
6.漏洞挖掘思路:
白盒:找到能够发起请求的函数
黑河:进行模糊测试
7.漏洞防范!
1.通过正则表达式编写不允许访问本机和内网
2.用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤3.限制协议只为HTTP、HTTPS,减少其他如fie://、gopher://和ftp://等可能引起的问题协议
4.禁止3xx跳转,重定向
5.设置URL白名单或者限制内网IP
8. 危险函数
标签:请求,SSRF,伪造,漏洞,地址,内网,服务器端 From: https://www.cnblogs.com/aidy/p/18054694