SSRF漏洞
Web渗透_SSRF漏洞
一、介绍SSRF漏洞
SSRF (Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统)。
SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
二、SSRF漏洞基本利用原理解析
正常用户进行百度查询或者智能识图功能时,一般都是通过关键字的形式进行搜索;但是,百度识图可以带入协议(https)进行查询。
百度识图:https://graph.baidu.com/pcpage/index?tpl_from=pc
图片地址:https://pic.netbian.com/uploads/allimg/220717/112252-1658028172d9d4.jpg
原理分析:
扫描内网ip,利用 http:// + 私有地址 ----> 进行内网信息收集
三、SSRF漏洞利用方式
方式一:利用相关的危险函数(file_get_contents、fsockopen、curl _exec)
方式二:利用相关协议(dict、file、Gopher)
四、PHP中有关SSRF的危险函数
①file_get_contents()
<?php if(isset($_GET['url'])); { $content=file_get_contents($_GET['url']); echo $content; $filename='./images/'.rand().'.img';\ file_put_contents($filename,$content); $img="<img src=\"".$filename."\"/>"; } echo $img; ?>
1、可搜索图片(读取网络文件)
2、可读取到本地磁盘文件
②fsockopen()
<?php $host=$_GET['url']; $fp=fsockopen("$host",80,$errno,$errstr,30); if(!$fp) { echo "$errstr ($errno)<br />\n"; }else{ $out = "GET / HTTP/1.1\r\n"; $out .= "Host: $host\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp,$out); while (!feof($fp)){ echo fgets($fp,128); } fclose($fp); } ?>
1、?url=www.baidu.com
//显示连接百度页面,并读取到当前页面(套娃)
2、?url=127.0.0.1
3、 ?url=127.0.0.1:3306 //端口探测
4、?url=127.0.0.1:80 //端口探测
③curl _exec()
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <form action="" method="GET"> 请输入图片地址:<input type='text' name='url'> <input type='submit' value="提交"> </form> <?php $_GET['url']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $_GET['url']); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch); ?>
1、?url=www.baidu.com
//显示连接百度页面
2、file://c:\Windows\Win.ini
3、?url=DICT://127.0.0.1:3306 //端口探测
4、?url=DICT://127.0.0.1:3389
5、?url=DICT://127.0.0.1:443
6、?url=DICT://127.0.0.1:445
7、?url=DICT://127.0.0.1:902
8、?url=DICT://127.0.0.1:912
9、SSRF的自动化内网端口探测?
五、SSRF的防御方式
1、对用户的输入进行私有地址过滤。
2、限制用户访问的端口,只能访问 80 和 443 端口。
3、禁用不必要的协议 file dict 等。
六、提问
1、如何判断服务器操作系统类型?
法一:大小写文件目录判断
法二:当已经知道存在ssrf漏洞时,可以访问相应的测试文件
测试漏洞访问的文件:
windows --> c:\Windows\win.ini
linux ---> /etc/passwd or /etc/shadow
2、Gopher协议
题目
NSS:[NISACTF 2022]easyssrf
BUU:[第二章 web进阶]SSRF Training
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了