post攻击 xxs_[BUGCASE]CI框架的post方法对url做了防xss攻击的处理引发的文件编码错误...

博客分析了CI框架在处理POST请求时,为防止XSS攻击而进行的字符串处理导致的一个错误案例。当用户上传包含特定字符的文件名时,由于框架的_xss_clean()函数匹配了文件名中的字符串,错误地将其处理,造成文件下载链接失效。
摘要由CSDN通过智能技术生成

一、问题描述

d4342f392fa09dd1e5de73fd98bd9843.png

页面报错,没法下载

8d2095b7994383f1b2d0f3f361fc6e76.png

二、问题分析

1.初步分析

通过查看相关代码可以了解到文件下载的过程如下:

取到下载链接中的mid参数

对mid先后进行url解码和base64解码

将解码后的字符串按"|"进行分隔

判断得到的数组是否存在第二个元素,不存在会返回404,存在则会利用分隔得到的两个值进行下载

其中分隔得到的两个值分别是mid和filename

报错下载链接:

http://adm.apply.wechat.com/admin/index.php/updown/download_file/?mid=YjBhNDZlNDVhMjk+MGY1ZTFjYTE4ZjI0MDYwNDMyMWN80JjQn1%2FQlNCy0L7RgNC90LjQul%2FQ

mid:

YjBhNDZlNDVhMjk+MGY1ZTFjYTE4ZjI0MDYwNDMyMWN80JjQn1%2FQlNCy0L7RgNC90LjQul%2FQ

对报错链接进行上述步骤,发现解码后的字符是一堆乱码,并不包含"|":

url解码:

YjBhNDZlNDVhMjk MGY1ZTFjYTE4ZjI0MDYwNDMyMWN80JjQn1/QlNCy0L7RgNC90LjQul/Q

base64解码:

b0a46e45a29YLX،N

̌Xߴ&4'״%4,/`4/t.4.

因此报错,无法下载

为什么其他用户上传的文件可以下载,这个却不能下载?

这是一个什么文件?下载链接中的mid为什么会错?

2.报错的文件是什么

要找到用户上传的文件,需要收集一些信息

OA注册邮箱:XXX@gmail.com

申请时间:2017-10-11

注册IP:XX.XX.XX.XX

查看2017.10.11的日志发现用户上传的文件目录:

"\/data\/XXX\/upload_files\/\u0418\u041f_\u0414\u0432\u043e\u0440\u043d\u0438\u043a_\u0420\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u044b.docx"

文件名经过unicode编码,转码之后:

ИП_Дворник_Реквизиты.docx

还有一个是一样的文件:

ИП_Дворник_Реквизиты1.docx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值