重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联-专业网站定制、快速模板网站建设、高性价比龙游网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙游网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙游地区。费用合理售后完善,十载实体公司更值得信赖。
下面我要向大家分享一个小技巧,即使用本地DTD文件来利用XXE漏洞从而实现任意结果的输出。
想象一下你有一个支持外部实体的XXE,但服务器的响应始终为空。在这种情况下,你有两种选择:基于错误和带外利用。
以下是基于错误的示例:
Request
%ext; ]>
ext.dtd 中的内容
"> %eval; %error;
看到了吗?你正在使用外部服务器进行payload的传递。如果你和目标服务器之间有防火墙,你可以做什么?答案是什么都做不了!
那么,如果我们将外部DTD文件的内容直接放到DOCTYPE标签内又会是什么结果?会一直出现一些错误。
Request
">%eval; %error; ]>
外部DTD允许我们在第二个实体中包含一个实体,但它在内部DTD中被禁止。
要想在内部DTD子集中使用外部DTD语法,你可以在目标主机上强制执行本地dtd文件,并在其中重新定义一些参数实体引用:
Request
">%eval; %error; %local_dtd; ]>any text
sip-app_1_0.dtd 中的内容
… …
它起作用是因为所有XML实体都是常量,如果定义两个具有相同名称的实体则仅使用第一个实体。
通过枚举来查找文件和目录应该是最简单的方法了,以下是一些成功应用此技巧的例子:
%local_dtd;
Your DTD code %local_dtd;
感谢来自Positive Technologies的@Mike_n1分享的这条始终存在的Windows DTD文件路径。
Your DTD code %local_dtd;
Your DTD code %local_dtd;
多平台 IBM WebSphere 应用
%local_dtd;
关于怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。