freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

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

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
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 secist 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
冷兵器
secist LV.9
每个人的心中都有一个梦。。
  • 369 文章数
  • 267 关注者
ATTCK-PenTester-Book:根据ATT&CK知识体系编制的长达400页的渗透手册
2020-02-10
Sniffle: 蓝牙5和4.x LE嗅探器
2019-11-23
利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用
2019-10-25
文章目录