云来储存型XSS漏洞+越权修改应用封面

0x001.

今天本来想看看场景应用有什么新功能没,于是乎随便打开了一个场景应用,然后上传了一张图片修改下封面,结果我看到firefox 网络竟然有2post,不由得勾起我的好奇心,好奇害死猫嘿嘿。(习惯性浏览网页开着firebug

   

一般来说图片上传都是一个post解决呢,为何有2post,经过我一番查看发现整个流程是这么来走的:

Post一张图片到服务器,然后get 到图片在服务器的路径,然后再通过最后的post 更新数据库,估计数据库中单独存在着一张表来保存这玩意。

表结构可能如下:

                                  某表

字段名

类型

  

Id

Int

  

App_logo

Varchar (50)

  

先看看能不能越权什么的,这里我把id改为我另外一个号的的场景应用的id15196看看能不能修改。

   

发现可以修改成功,所以说这个地方存在的越权操作。

   

   

再来玩玩sql注入,语句猜测:

update pic set app_logo = '{$src}' where id = {$id};

   

Id15196'后面加个单引号,发现不报错,尼玛。

   

16进制 0x3136393535 塞进去,提示案例不存在 摆明了。Id被引号给包起来了。

   

测试发现 id后面加字母什么的不报错但是在之前加就报错,好吧,》被转成整形了。

   

   

Id不做想法了。来看看app_logo 字段。

单引号被插入了数据库。

这里先来了解下:

<img src =" " >  src 处可以导入一个js的脚本文件或者执行相关的js代码,或者通过src的可控性闭合img标签,再导入js代码来xss不同的浏览器处理不同。<img src="javascript:alert(/xss/)">这种语句已经不能在IE7.0以上和火狐运行,而旧版的遨游和其他的一些IE内核浏览器还可以,估计是被开发人员故意封掉的。随着浏览器的更新换代,这种语句的成功率越来越低。

由于json格式数据的标准是用双引号引起来。这个页面的源码是<img id="app-log" src="">

估计是没法插入双引号进行闭合,哪位基友有思路求科普。

   

我们这里直接插入js代码试一下:

Tengine 这玩意web服务器给禁止了,我们来绕过他一下

   

   

由于html的属性支持ASCII码特性,

<img src="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x30;&#x29;&#x3b;" >

我们传入到数据库来看看,

好吧&被转实体了,没办法了么?

Ok继续变形 js

我们把 "javascript:u0061u006cu0065u0072u0074u0028u0030u0029u003b" 插入。

么么哒,成功绕过。

xss平台创建一个项目 代码。。插进去。。。

   

最后img xss 虽然有些过时,但是市面上还是存在部分ie内核浏览器支持,利用这个img xss 配合前面的越权,可以打任意用户cookie 。。。

安全盒子原创文章:转载请注明安全盒子SecBox.cn

原文地址:https://www.cnblogs.com/h4ck0ne/p/5154664.html