pikachu——SSRF

 


漏洞概述

SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成并由服务端发起恶意请求的一个安全漏洞。正是因为恶意请求由服务端发起,而服务端能够请求到与自身相连而与外网隔绝的内部网络系统,所以一般情况下,SSRF的攻击目标是攻击者无法直接访问的内网系统。

SSRF漏洞的形成大多是由于服务端提供了从其他服务器应用获取数据的功能而没有对目标地址做过滤和限制。 例如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片,下载等,利用的就是服务端请求伪造,SSRF漏洞可以利用存在缺陷的WEB应用作为代理攻击远程和本地的服务器。

SSRF(curl)

漏洞产生的地方

复制代码
//payload:
//file:///etc/passwd  读取文件
//http://192.168.1.15:22 根据banner返回,错误提示,时间延迟扫描端口

if(isset($_GET['url']) && $_GET['url'] != null){

    //接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
    $URL = $_GET['url'];
    $CH = curl_init($URL);    //创建新的cURL资源
    curl_setopt($CH, CURLOPT_HEADER, FALSE);    //设置URL和相应的选项
    curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);    
    $RES = curl_exec($CH);    //抓取URL,并把它传给浏览器
    curl_close($CH) ;    //关闭cURL资源,并且释放系统资源
//ssrf的问是:前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。
//除了http/https外,curl还支持一些其他的协议curl --version 可以查看其支持的协议,telnet
//curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP
    echo $RES;

}
复制代码

 

服务器没有对传进来的URL参数进行过滤,并且把服务器请求的结果输出到了前端。

漏洞利用

读取本地文件

利用file协议读取本地文件

payload:http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file://D:\testr.txt

 

 

 利用file协议读取php文件

 

 

 探测内网主机存活(http/s协议)

一般是先想办法得到目标主机的网络配置信息,如读取/etc/hosts、/proc/net/arp、/proc/net/fib_trie等文件,从而获得目标主机的内网网段并进行爆破。

我们可以借助burp中的爆破模块进行存活主机探测

 

 

 

 

 

 

 

 

 通过截图可以看到172.168.116.129主机存活

扫描内网端口(http/s和dict协议)

 

 

 

说明主机开放了80端口

 

 

 开启了21端口

如果没没有相应就说明该端口处于关闭状态。

base64编码读取同目录下的源代码

payload:127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

 

SSRF(file_get_content)

漏洞分析

file_get_content()函数使用不当导致SSRF漏洞

利用方式和上面的相同

posted @   学安全的小白  阅读(846)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示