zoukankan      html  css  js  c++  java
  • ssrf漏洞分析

    ssrf漏洞分析

    关于ssrf

    • 首先简单的说一下我理解的ssrf,大概就是服务器会响应用户的url请求,但是没有做好过滤和限制,导致可以攻击内网。

    ssrf常见漏洞代码

    • 首先有三个常见的容易造成ssrf漏洞的函数需要注意
    
        fsockopen()
        file_get_contents()
        curl_exec()
    
    
    • 下面是本地搭建环境测试
    1. fsockopen()
    
    <?php
    $host=$_GET['url'];
    $fp = fsockopen("$host", 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />
    ";
    } else {
        $out = "GET / HTTP/1.1
    ";
        $out .= "Host: $host
    ";
        $out .= "Connection: Close
    
    ";
        fwrite($fp, $out);
        while (!feof($fp)) {
            echo fgets($fp, 128);
        }
        fclose($fp);
    }
    ?>
    
    
    • fsockopen本身就是打开一个网络连接或者Unix套接字连接。

    1. file_get_contents()
    
    <?php
    if(isset($_POST['url']))
    {
    	$content=file_get_contents($_POST['url']);
    	$filename='./images/'.rand().'.img';
    	file_put_contents($filename,$content);
    	echo $_POST['url'];
    	$img="<img src="".$filename.""/>";
    	
    }
    echo $img;
    ?>
    
    
    • file_get_contents是把文件写入字符串,当把url是内网文件的时候,他会先去把这个文件的内容读出来再写入,导致了文件读取。

    1. curl_exec()
    
    <?php
    if(isset($_GET['url']))
    {
    	$link=$_GET['url'];
    	//$filename='./'.rand().'.txt';
    	$curlobj=curl_init($link);
    	curl_setopt($curlobj,CURLOPT_FILE,$link);
    	curl_setopt($curlobj,CURLOPT_HEADER,0);
    	$result=curl_exec($curlobj);
    	curl_exec($curlobj);
    	curl_close($curlobj);
    	//fclose($link);
    	//file_put_contents($filename, $result); 
    	echo $result;
    }
    
    ?>
    
    

    • 这应该是大家最熟悉的一个函数了,因为利用方式很多最常见的是通过file dict gopher这三个协议来进行渗透。

    • 上面是通过file协议读取文件,下面这张图是通过dict协议探测端口

    • 然后是gopher协议

    • gopher协议和ssrf组合能达成很多功能具体用法还要深入研究。

  • 相关阅读:
    hdu 2089 不要62(数位dp)
    hdu 3555 Bomb(数位dp)
    hdu 4544 湫湫系列故事——消灭兔子(优先队列)
    STL Algorithms 之 unique
    hdu 1075 What Are You Talking About(map)
    hdu 4268 Alice and Bob(贪心+multiset)
    hdu 4302 Holedox Eating(优先队列/线段树)
    9-16Jenkins-4节点
    9-16Jenkins-3可用的环境变量、参数化构建和依赖
    9-16Jenkins-2定时任务
  • 原文地址:https://www.cnblogs.com/wangshuwin/p/7642693.html
Copyright © 2011-2022 走看看