zoukankan      html  css  js  c++  java
  • pikachu-SSRF

    概述

    SSRF(Server-Side Request Forgery:服务器端请求伪造)

    其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

    导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

    数据流:攻击者----->服务器---->目标地址

    根据后台使用的函数的不同,对应的影响和利用方法又有不一样

    PHP中下面函数的使用不当会导致SSRF:
    file_get_contents()
    fsockopen()
    curl_exec()
                

    如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤

    SSRF(curl)

    打开pikachu,点击页面a标签,可以看到上传了一个url到后台

    我们直接查看后端代码,可以看到它是用get获取了前端的url请求,curl_init函数会对它进行初始化,然后curl_exec函数会去执行请求,最终又将请求结果返回到前端。

     

    接着我们将上传的url修改为http://www.badiu.com,可以看到页面显示出了百度的数据库 (它的流程和分析的源代码流程是一样的,前端传入参数,后端通过curl_exec去请求百度,最后把请求返回的百度数据返回到前端)

      这样我们可以把 url 中的内容改成内网的其他服务器上地址和端口,探测内网的其他信息,我们也可以通过SSRF漏洞读取服务器的文件

    比如我们读取pikachu/test/hacker.txt文件,我们将url修改为 http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/test/hacker.txt 

     成功获取到文件信息。

    SSRF(file_get_content

    同样点击pikachu上的a标签

     查看后端代码,与前面逻辑大体相同,不同之处是它这里使用file_get_contents函数进行文件的读取执行,而file_get_contents函数可以对本地文件进行读取,也可以对远程文件进行读取。

    同样的我们将上传的参数换成www.badiu.com

     

     与前面相同,我们也可以读取pikachu/test/hacker.txt文件 http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/test/hacker.txt 

     我们也可以制造恶意的payload去获取后台的PHP源码 php://filter/read=convert.base64-encode/resource=ssrf.php 

     可以看到成功获取了转换后php的base64编码,将base64进行解码,获取到了源码

  • 相关阅读:
    29Mybatis_整合ehcache以及应用场景
    28Mybatis_查询缓存-二级缓存-二级缓存测试-
    27Mybatis_一级缓存的实际应用场景
    解析分布式锁之Zookeeper实现(一)
    程序员的十年工作创业血泪史,万字长文,仔细读完,受益匪浅
    2018 Java线程热门面试题,你知道多少?
    看阿里P9架构师如何向你定义架构及架构师
    程序员30 岁之后:如何实现质的突破?
    强者自救,圣者渡人
    干货:通过双十一等项目实战看架构技术
  • 原文地址:https://www.cnblogs.com/DxyG/p/13742430.html
Copyright © 2011-2022 走看看