Docem:向docx odt pptx等文件中嵌入XXE或XSS Payload
2019-11-11 16:00:14 Author: www.freebuf.com(查看原文) 阅读量:229 收藏

docem是一个用于向docx,odt,pptx等(任意包含大量xml文件的zip)文件中嵌入XXE/XSS Payload的工具。许多常见的文档格式(例如doc,docx,odt等)都只是一个zip文件,其中包含了一些xml文件。

_|_|_| 

_| _| _|_| _|_|_| _|_| _|_|_| _|_|
_| _| _| _| _| _|_|_|_| _| _| _|
_| _| _| _| _| _| _| _| _| _|_|_| _|_| _|_|_| _|_|_| _| _| _|version 1.3

该工具是ShikariSenpaiansjdnakjdnajkd对文档内部结构进行协作研究的side project。

那为什么不将XXE payloads嵌入其中呢?

这项伟大的研究是由Will Vandevanter (_will_is) 完成的。要创建带有嵌入payloads的文档,我们可以使用一个名为oxml_xxe的工具。

但是,当你需要在不同的位置创建数百个payloads文档时,使用oxml_xxe并不方便。这也是Docem被创建的主要原因之一。

它的工作方式如下:你指定sample文档 – 该文档具有一些magic_symbols(在下图中为፨(在程序中为常量XXCb8bBA9XX)),如果你使用XXE payload,则将其替换为对 payload的引用;或者将被你的XSS payload所替换。

此外,payload_type有三种不同的类型 – 每种类型都决定了如何处理对文档中给定文件的各个magic_symbol。在用法部分对各个payload_type进行了描述。下面是一个小的工作方案:

Payload modes

程序界面

安装

pip3 install -r requirements.txt

使用

python3 docem.py --help

必要参数

xss – XSS – 跨站点脚本

xxe – XXE – 外部XML实体

-s – sample文件或sample目录的路径

-pm – payload模式

可选参数

per_document -默认模式,将payload嵌入所有文件中的所有位置并创建新文档

per_file – 对于各个payload,文档中的各个文件,以及文件中的所有位置嵌入payload并创建新文档

per_place – 对于各个payload,文件中的各个位置嵌入payload并创建新文档

-pt – payload类型

-pf – payload文件

-kt – 不要在tmp中删除临时文件夹

-sx – sample扩展名-当sample是目录时使用

-h – 打印帮助信息

示例:

./docem.py -s samples/xxe/sample_oxml_xxe_mod0/ -pm xss -pf payloads/xss_all.txt -pt per_document -kt -sx docx
./docem.py -s samples/xxe/sample_oxml_xxe_mod1.docx -pm xxe -pf payloads/xxe_special_2.txt -kt -pt per_place
./docem.py -s samples/xss_sample_0.odt -pm xss -pf payloads/xss_tiny.txt -pm per_place
./docem.py -s samples/xxe/sample_oxml_xxe_mod0/ -pm xss -pf payloads/xss_all.txt -pt per_file -kt -sx docx

如何创建自定义 sample?

通过新文件

1.提取你的文档example.docx

2.在要嵌入payload的地方添加magic symbols(魔术符号)- ፨

3.将你的新sample压缩到example_modified0.zip中

4.重命名扩展名 – example_modified0.docx

5.使用新创建的sample

如何添加自定义 payload?

XXE payloads

文件中的字符串

{"vector":"<!DOCTYPE docem [<!ENTITY xxe_canary_0 \"XXE_STRING\">]>","reference":"&xxe_canary_0;"}

vector - 必要关键字 – 用于脚本搜索

<!DOCTYPE docem [<!ENTITY xxe_canary_0 \"XXE_STRING\">]> - payload。警告所有双引号 ” 必须用一个反斜杠转义 \ => \”

reference - 必要关键字 – 用于脚本搜索

&xxe_canary_0; - 将在所有位置添加带有魔术符号的引用

XSS payloads

没有特殊格式。只是一个有字符串的文件。

功能和计划

功能

读取带有payload的文件

XXE自定义payload文件

XSS payload文件

计划

添加可以嵌入解压缩文件的功能

添加标志用以指定要在XXE中使用的自定义网址

添加标志用以指定要在XSS中使用的自定义网址

*参考来源:GitHub,FB小编secist编译,转载请注明来自FreeBuf.COM


文章来源: https://www.freebuf.com/sectool/217539.html
如有侵权请联系:admin#unsafe.sh