zoukankan      html  css  js  c++  java
  • ssrf漏洞学习(PHP)

    自己最近原本是想深入的学习一下关于xss、csrf的东西的,可是感觉这些东西需要有很好的js的基础来进行学习。。还有感觉自己感觉也差不多该要学习内网渗透了。。正好ssrf在内网这一块也是比较有用的。于是现在学习一下。

    我这里面是以php里面的curl为例子来学习的。

    漏洞代码如下

    <?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $_GET['url']);
    #curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    #curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
    curl_exec($ch);
    curl_close($ch);
    ?>//这段代码直接将get请求中的url直接放在里面,并且没有屏蔽回显。
    

    一般这种请求都需要使用libcurl库。

    我们看一下curl支持地协议(curl -V).

      

                                                                                                                                                  

     我们看到确实支持很多的协议,首先我们看一下file协议,他是一个读取任意文件的协议,又因为这里面没有关闭回显,所以我们直接在浏览器中访问  http://xxxx/ssrf.php?url=file:///etc/passwd

                                                       

    我这边已经成功地读取到了,相应的只要你有其他的文件的路径,当然也可以读取(当然如何屏蔽了回显,就没多大的用处了)。

    接下来就是很多前辈一直说的gopher协议了,因为这个协议可以伪造各种http请求,所以经常被用于ssrf中(访问一些内网中脆弱的web应用等等)。

    这个协议利用起来也是比较麻烦的QAQ。。一般是需要抓取流量包,然后再根据流量包来进行exp的构造。

    这个的话我推荐二篇博客吧:https://joychou.org/web/phpssrf.html          https://www.cnblogs.com/p0pl4r/p/10336501.html

    大佬们都已经讲的很好了,我就不瞎掺和了2333

    dict协议,这个协议是一个字典服务器协议,通常用于让客户端使用过程中能够访问更多的字典源,但是在SSRF中如果可以使用dict协议那么就可以轻易的获取目标服务器端口上运行的服务版本等信息。

    例如访问:http://xxxx/ssrf.php?url=dict://10.0.0.9:22(ssh端口)/info     就可以获取到ssh相关的信息

                                                  

    同理的,关于其他的端口信息,我们都可以通过这种方式来进行收集。

    当然对于ssrf  in PHP来说还是不只curl这一个能引起漏洞,其他的例如 file_get_contents和fsockopen等等

  • 相关阅读:
    Sort
    RAID
    LeetCode总结 -- 一维动态规划篇
    Count and Say
    Dynamic Programming Introduction
    Mongodb与Redis应用指标对比
    精通有状态vs无状态(Stateful vs Stateless)—Immutable模式之姐妹篇
    Windows 安装 pytorch3d
    GitHub 图片无法显示 或 gist 无法访问
    LaTeX符号表,数学公式速查必备
  • 原文地址:https://www.cnblogs.com/Mikasa-Ackerman/p/11155779.html
Copyright © 2011-2022 走看看