刷排名seo软件,深圳设计优化公司,唐山做网站汉狮网络,做mip网站必须备案吗一、SSRF漏洞的基本概念#xff1a;
SSRF--全名#xff1a;Server-Side Request Forgery#xff0c;汉译#xff1a;服务端请求伪造#xff0c;漏洞别名“借刀杀人”。
想象以下#xff0c;现存在一个 Web应用#xff0c;这个Web应用可以帮助我们能爬取互联网上的其他…一、SSRF漏洞的基本概念
SSRF--全名Server-Side Request Forgery汉译服务端请求伪造漏洞别名“借刀杀人”。
想象以下现存在一个 Web应用这个Web应用可以帮助我们能爬取互联网上的其他内容如将别处网站的照片爬取过来等等这时我们尝试构造一个恶意的URL让它去访问比如让它去访问 127.0.0.1也就是本机或者是内网里的一个地址Web应用如果按照我们的要求去访问并且把访问结果返回的话那么此处就存在SSRF漏洞。
图示流程如下
1若不存在SSRF漏洞流程图如下 2若存在SSRF漏洞流程图如下 更详细的关于SSRF漏洞类型、协议等内容请参考下面一片文章
SSRF漏洞原理攻击与防御(超详细总结) 二、靶场漏洞复现(pikachu靶场)
1、SSRFcurl
1curl函数造成漏洞原理
curl 是常用的命令行工具可以用来请求 Web 服务器。同时也支持其他协议如FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和 RTSPcurl中也包含了用于程序开发的libcurl。
造成SSRF漏洞的根本原因是服务端提供了从其他服务器获取数据的功能而没有对目标地址进行限制和过滤导致产生SSRF漏洞。
2curl函数实现源码
?php
function curl($url){$chcurl_init(); // 初始化cURL会话curl_setopt($ch,CURLOPT_URL,$url); // 设置要访问的URLcurl_setopt($ch,CURLOPT_HEADER, 0); // 不返回HTTP头部信息curl_exec($ch); // 执行cURL会话发送请求并获取响应curl_close($ch); // 关闭cURL会话
}
$url$_GET[url]; // 从GET请求中获取参数url的值
curl($url); // 调用curl函数传入URL参数
?
3漏洞复现
进入靶场页面如下图所示 发现一句话可点击点击进入页面显示如下图所示 出现一段文字同时我们发现URL中多出了一个参数url分析后端代码 通过分析后端代码我们得知url参数被赋值给$URL并且使用curl()函数进行请求访问最后 echo $RES 将响应结果返回给了前端显示在用户的页面中这就是典型的SSRF漏洞。
我们可以对URL中的url参数进行修改来复现SSRF漏洞
1、http协议访问本地文件 2、file协议读取C盘下的配置文件 3、利用curl函数打开百度 除以上功能外利用SSRF(curl)漏洞还可以利用dic协议扫描内网各个端口的开放情况。 2、SSRF(file_get_content)
1file_get_content 后端源码 代码大体意思为将指定URL的文件读入为一个字符串并返回前端。
2file_get_content()函数造成漏洞的原理
file_get_contents函数本身是一个强大的工具它能够读取文件或URL的内容到字符串中。然而当这个函数与用户输入相结合时如果未对用户输入进行适当的验证和限制就可能允许攻击者构造特定的URL使服务器发起对内网或互联网上其他服务器的请求。
3漏洞复现 2、file协议读取C盘下的配置文件 3、http协议读取根目录下文件 4curl() 函数 和 file_get_content() 的区别
1、curl_exec 支持更多协议有http、https、ftp、gopher、telnet、dict、file、ldap模拟 Cookie 登录爬取网页FTP 上传下载。
2、file_get_contents 只能使用 GET 方式获取数据。