ssrf漏洞(上) · Farmsec Open Source(2)
时间:2022-12-04 19:15 来源:网络整理 作者:采集插件 点击:次
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。 <?php $url = $_GET['url'];; echo file_get_contents($url); ?>如果函数在调用期间,攻击者可任意控制传递进来的参数,则会造成危害 fsockopen() 参考:https://www.php.net/manual/zh/function.fsockopen.php fsockopen() 函数打开一个网络连接或者一个Unix套接字连接 <?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() curl_exec() 执行一个 curl 会话 参考:https://www.php.net/manual/en/function.curl-exec.php <?php if (isset($_GET['url'])){ $link = $_GET['url']; $curlobj = curl_init(); // 创建新的 cURL 资源 curl_setopt($curlobj, CURLOPT_POST, 0); curl_setopt($curlobj,CURLOPT_URL,$link); curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1); // 设置 URL 和相应的选项 $result=curl_exec($curlobj); // 抓取 URL 并把它传递给浏览器 curl_close($curlobj); // 关闭 cURL 资源,并且释放系统资源 // $filename = './curled/'.rand().'.txt'; // file_put_contents($filename, $result); echo $result; } ?>如果函数在调用期间,攻击者可任意控制传递进来的参数,则会造成危害 SoapClient() SoapClient() 类为SOAP 1.1,SOAP 1.2服务器提供客户端。它可以在 WSDL 或非 WSDL 模式下使用。 参考:https://www.php.net/manual/en/class.soapclient.php // ssrf.php <?php $a = new SoapClient(null,array('uri'=>':2333', 'location'=>':2333/aaa')); $b = serialize($a); echo $b; $c = unserialize($b); $c->a(); // 随便调用对象中不存在的方法, 触发__call方法进行ssrf ?> 6.SSRF漏洞的验证:1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞。 2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 ?image=(地址)的就可能存在SSRF漏洞 7. ssrf漏洞利用 (责任编辑:admin) |