最近玩xss挑战玩到第14关,玩不下去了,因为第14关中的一个URL失效了。后面百度了一下,发现第14关是玩的是图片exif信息中xss,于是决定自己复现一下。
1,什么是exif
可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。可使用鼠标右键进入属性页面查看部分信息。
2,怎么修改exif信息
linux系统使用exiftool工具,进行修改。windows系统直接使用鼠标右键进入属性页面直接修改。
linux系统系统
安装exiftool工具:sudo apt install exiftool
在图片作者栏中写入payload: exiftoll -artist='"<img src=1 onerrror=alert(/shy/)>' exif.jpg
上传到可以读取图片exif信息的网站,出现弹窗,复现成功。
windows操作系统
鼠标右键进入属性页面
双击直接填写payload
上传弹窗
3,exif xss漏洞原理
有些网站有读取图片exif信息的功能,当网站读取到的恶意的exif信息就会触发这个payload,上面已经演示过了。
有些谷歌浏览器安装了EXIF Vewer插件,而chrome Exif Viewer插件获取图片exif信息的时候没有过滤,导致了XSS代码的执行。
演示:
1,按照上传方法在图片exif信息中写入xss payload
2,下载Exif Viewer插件
a,在网上好不容易找了一个下载地址:https://chromecj.com/downloadstart.html#56发现还需要关注公众号,输入验证码
b,查看页面源代码,发现javascript脚本
<script type="text/javascript">function checkcode() {
var code = $('#txtcode').val();
var id = document.location.hash.replace('#', '');
if (code.length != 6) {
$('#tip').html('请输入6位数字验证码!').css('color', 'red');
return;
} else {
$.get('https://chromecj.com/Home/DownCheck?aid=' + id + '&code=' + code, function(r) {
if (r == '') {
$('#tip').html('验证失败,请重试!').css('color', 'red');
return;
} else {
var result = JSON.parse(r);
if (result != '') {
var status = result.status;
var file = result.file;
if (status == 0) {
$('#tip').html('验证码已失效,请在公众号重新获取,五分钟有效!').css('color', 'red');
return;
} else {
$('#tip').html('验证通过,下载马上开始!').css('color', 'green');
setTimeout("down()", 2000);
}
}
}
});
}
}
function getlink(link, key) {
var code = '';
if(key != ''){
code = '提取码:'+ key;
}
return '<b style="color:red;">本站使用百度云分流,请点击链接前往百度云下载:<a target="_blank" rel="nofollow" href="' + link + '">' + link + '</a> '+ code +'</b>';
}
function down() {
var id = document.location.hash.replace('#', '');
var html = document.getElementById('downdesc');
if (id == 60) {
html.innerHTML = getlink('https://pan.baidu.com/s/1miyYjig', '');
} else if (id == 177) {
html.innerHTML = getlink('https://pan.baidu.com/s/1mi7fFIw', '');
} else if (id == 391) {
html.innerHTML = getlink('https://pan.baidu.com/s/1Wis3ahkav7L21p3NmRFmQw', '64ui');
} else if (id == 24) {
html.innerHTML = getlink('https://pan.baidu.com/s/1nvxAq1b', '');
} else {
window.location = 'https://chromecj.com/Handler/Download/' + id;
}
}</script>
c,根据上述信息,构造下载url:https://chromecj.com/Handler/Download/56,成功下载到绕过验证,下载到该插件。
3,安装chrome插件Exif Viewer
a,直接拖入chrome浏览器扩展程序页面,提示程序包无效
b,将插件的.crx后缀名修改为.rar后缀名,然后进行解压
c,打开chrome浏览器的开发者模式
d,选择加载已解压的扩展程序进行插件安装,安装成功,如下图。
4,将图片上传到vps,使用chrome浏览器进行访问,复现成功。