什么是SSRF
SSRF(服务端请求伪造漏洞) 由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。
一般情况下,SSRF针对的都是一些外网无法访问的内网,所以需要SSRF使目标后端去访问内网,进而达到我们攻击内网的目的。
通过SSRF,我们可以访问目标内网的redis服务,mysql服务,smpt服务,fastcgi服务等
造成漏洞的一些函数
file_get_contents():将整个文件或一个url所指向的文件读入一个字符串中。
readfile():输出一个文件的内容。
fsockopen():打开一个网络连接或者一个Unix 套接字连接。
curl_exec():初始化一个新的会话,返回一个cURL句柄,供curl_setopt(),curl_exec()和curl_close() 函数使用。
fopen():打开一个文件文件或者 URL。
【网络安全相关技术文档】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
file_get_contents()/readfile()
<?php
$url = $_GET['url'];;
echo file_get_contents($url);
?>
fsockopen()
fsockopen( h o s t n a m e , hostname, hostname,port, e r r n o , errno, errno,errstr,$timeout)用于打开一个网络连接或者一个Unix 套接字连接,初始化一个套接字连接到指定主机(hostname),实现对用户指定url数据的获取。该函数会使用socket跟服务器建立tcp连接,进行传输原始数据。 fsockopen()将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets(),fgetss(),fwrite(),fclose()还有feof())。如果调用失败,将返回false
<?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);
}
?>
curl_exec()
<?php
$url=$_POST['url'];
$ch=curl_init($url); //创造一个curl资源
curl_setopt($ch, CURLOPT_HEADER, 0); //设置url和相应的选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER,

本文详细介绍了SSRF(服务端请求伪造)漏洞,包括其定义、常见利用方式,如访问内网服务、探测内网主机和端口。讨论了涉及的协议,如http、dict、file、gopher,以及如何利用它们进行攻击。此外,还探讨了常见的绕过策略,如URL bypass、数字IP bypass和302跳转 bypass。最后,文章提醒读者,理解SSRF不仅可以帮助解决CTF挑战,还能启发实际渗透测试中的攻击思路。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



