freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Docem:向docx odt pptx等文件中嵌入XXE或XSS Payload
2019-11-11 15:00:14

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


# xss # xxe # docem
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者