Adobe pdf reader URI利用方式浅析
来源:大能寺
poc有人已经公布了.利用方式基本上清一色的tftp,tftp利用起来有限制,防火墙的因素.那么简单说说另外一种利用方式–捆绑exe生成并执行.
首先这个漏洞可以执行任意命令.我没试过直接在mailto那里直接echo exe.貌似好写很多行&哦.这样太疯狂.
在PDF格式中第一行必须有%PDF-1.7%.这个跟jpg,gif没什么区别.如果没%pdf-1.7%,那么adobe reader提示是无效pdf.
关于PDF的详解情况,可以参见(http://www.adobe.com/devnet/pdf/pdf_reference.html).
这里牵涉到另外一个知识点.copy +b来合并文件.这样子合并一个exe和jpg,exe和jpg都能执行.
好,那写段脚本,vbs的或者js的,这段脚本的作用:把当前pdf拷贝一份到成*.bat,并执行这个bat.把他和pdf合并.脚本在pdf前面.
那么有个问题,后面的pdf内容会导致脚本不能执行.那么就把脚本用微软那玩意加密.
加密后的脚本实际上只有一行,并且以0x00结尾.那么合并的结构就是
第1行:[encoded script]+0x00 +%pdf-1.7%
第2行: [PDF 内容]
既然脚本的作用就是把pdf当bat执行,那么把exe2bat后的bat插入到混合文件中去.就成了这样:
第1行:[encoded script]+0x00 +%pdf-1.7%
第2行到第N行: exe2bat的内容+执行exe2bat后的exe
第n+1行: [PDF 内容]
说一下,exe2bat的插入并不会破坏pdf.在一些版本的pdf reader甚至可以显示正常本来的pdf内容.
那么轮到mailto那里了,打开这个混合pdf后,脚本也不会执行,exe2bat更不会执行.最先执行的是mailto.
所以在mailto那里要找出这个pdf的路径,并且把他当作脚本来执行.这个可以从C:\Documents and Settings\%username%\Recent 里面找到.
首先在mailto那里以时间排序%tmp%../../../Recent/*.pdf.lnk .因为用户才点了这个pdf,那么第一个lnk肯定这个pdf了.然后把pdf.lnk的路径做一些处理准备传给你事先写好的脚本.这个时候用assoc 把pdf变为脚本类型,通过lnk执行一下自身.(用ftype命令查一下就知道,记得在脚本里面把pdf变回来.).这时候混合pdf先运行脚本,然后脚本再运行跟pdf内容相同的bat.之所以把EXE2BAT的内容的弄到第2行,因为PDF本来内容有些乱码,可能导致BAT无法继续运行.而第1行经过测试,不影响整个BAT运行.BAT不会预编译.
这样一个具有捆绑EXE功能的ADOBE READER EXP就好了.
FIREFOX应该也可以这么利用,把在EXE2BAT写到HTML或者JPG里去.