0x001.
今天本来想看看场景应用有什么新功能没,于是乎随便打开了一个场景应用,然后上传了一张图片修改下封面,结果我看到firefox 网络竟然有2个post,不由得勾起我的好奇心,好奇害死猫嘿嘿。(习惯性浏览网页开着firebug)
一般来说图片上传都是一个post解决呢,为何有2个post,经过我一番查看发现整个流程是这么来走的:
Post一张图片到服务器,然后get 到图片在服务器的路径,然后再通过最后的post 更新数据库,估计数据库中单独存在着一张表来保存这玩意。
表结构可能如下:
某表 |
||
字段名 |
类型 |
|
Id |
Int |
|
App_logo |
Varchar (50) |
先看看能不能越权什么的,这里我把id改为我另外一个号的的场景应用的id号15196看看能不能修改。
发现可以修改成功,所以说这个地方存在的越权操作。
再来玩玩sql注入,语句猜测:
update pic set app_logo = '{$src}' where id = {$id};
Id:15196'后面加个单引号,发现不报错,尼玛。
转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="javascript:alert(0);" >
我们传入到数据库来看看,
好吧&被转实体了,没办法了么?
Ok继续变形 js
我们把 "javascript:\u0061\u006c\u0065\u0072\u0074\u0028\u0030\u0029\u003b" 插入。
么么哒,成功绕过。
上xss平台创建一个项目
代码。。插进去。。。
最后img xss 虽然有些过时,但是市面上还是存在部分ie内核浏览器支持,利用这个img xss 配合前面的越权,可以打任意用户cookie 。。。
安全盒子原创文章:转载请注明安全盒子SecBox.cn