网站被攻击拿下—只因为程序员一个文件上传功能没写好
目录
. 文件上传
. 文件类型检测绕过
. 更改请求绕过
. Magic检测绕过
. 后缀绕过
. 系统命名绕过
.user.ini
WAF绕过
竞争上传绕过
攻击技巧
Apache重写GetShell
软链接任意读文件
防护技巧
4.8. 文件上传
4.8.1. 文件类型检测绕过
4.8.1.1. 更改请求绕过
有的站点仅仅在前端检测了文件类型,这种类型的检测可以直接修改网络请求绕过。 同样的,有的站点在后端仅检查了HTTP Header中的信息,比如 Content-Type
等,这种检查同样可以通过修改网络请求绕过。
4.8.1.2. Magic检测绕过
有的站点使用文件头来检测文件类型,这种检查可以在Shell前加入对应的字节以绕过检查。几种常见的文件类型的头字节如下表所示
类型 | 二进制值 |
---|---|
JPG | FF D8 FF E0 00 10 4A 46 49 46 |
GIF | 47 49 46 38 39 61 |
PNG | 89 50 4E 47 |
TIF | 49 49 2A 00 |
BMP | 42 4D |
4.8.1.3. 后缀绕过
部分服务仅根据后缀、上传时的信息或Magic Header来判断文件类型,此时可以绕过。
php由于历史原因,部分解释器可能支持符合正则 /ph(p[2-7]?|t(ml)?)/
的后缀,如 php
/ php5
/ pht
/ phtml
/ shtml
/ pwml
/ phtm
等 可在禁止上传php文件时测试该类型。
jsp引擎则可能会解析 jspx
/ jspf
/ jspa
/ jsw
/ jsv
/ jtml
等后缀,asp支持 asa
/ asax
/ cer
/ cdx
/ aspx
/ ascx
/ ashx
/ asmx
/ asp{80-90}
等后缀。
除了这些绕过,其他的后缀同样可能带来问题,如 vbs
/ asis
/ sh
/ reg
/ cgi
/ exe
/ dll
/ com
/ bat
/ pl
/ cfc
/ cfm
/ ini
等。
4.8.1.4. 系统命名绕过
在Windows系统中,上传 index.php.
会重命名为 .
,可以绕过后缀检查。 也可尝试 index.php%20
, index.php:1.jpg
index.php::$DATA
等。 在Linux系统中,可以尝试上传名为 index.php/.
或 ./aa/../index.php/.
的文件
4.8.1.5. .user.ini
在php执行的过程中,除了主 php.ini
之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。 .user.ini
中可以定义除了PHP_INI_SYSTEM以外的模式的选项,故可以使用 .user.ini
加上非php后缀的文件构造一个shell,比如 auto_prepend_file=01.gif
。
4.8.1.6. WAF绕过
有的waf在编写过程中考虑到性能原因,只处理一部分数据,这时可以通过加入大量垃圾数据来绕过其处理函数。
另外,Waf和Web系统对 boundary
的处理不一致,可以使用错误的 boundary
来完成绕过。
4.8.1.7. 竞争上传绕过
有的服务器采用了先保存,再删除不合法文件的方式,在这种服务器中,可以反复上传一个会生成Web Shell的文件并尝试访问,多次之后即可获得Shell。
4.8.2. 攻击技巧
4.8.2.1. Apache重写GetShell
Apache可根据是否允许重定向考虑上传.htaccess
内容为
AddType application/x-httpd-php .png php_flag engine 1
就可以用png或者其他后缀的文件做php脚本了
4.8.2.2. 软链接任意读文件
上传的压缩包文件会被解压的文件时,可以考虑上传含符号链接的文件 若服务器没有做好防护,可实现任意文件读取的效果
4.8.3. 防护技巧
- 使用白名单限制上传文件的类型
- 使用更严格的文件类型检查方式
- 限制Web Server对上传文件夹的解析
网站被攻击拿下—只因为程序员一个文件上传功能没写好相关推荐
- php利用ajax文件上传,如何在PHP中利用AjaxForm实现一个文件上传功能
如何在PHP中利用AjaxForm实现一个文件上传功能 发布时间:2020-12-18 14:52:38 来源:亿速云 阅读:94 作者:Leah 如何在PHP中利用AjaxForm实现一个文件上传功 ...
- 亿速云服务器 如何上传文件,使用MultipartFile怎么实现一个文件上传功能
使用MultipartFile怎么实现一个文件上传功能 发布时间:2021-01-20 16:43:15 来源:亿速云 阅读:139 作者:Leah 使用MultipartFile怎么实现一个文件上传 ...
- 一个项目的开发流程是怎样的? 原名:「只差程序员」离优秀的产品还有多远?...
http://www.toutiao.com/a4919665444/ ......产品开发的流程问题,这也是个严肃的问题.解决流程问题,就知道技术团队需要什么人,产品开发就成功了一半. 一个项目的开 ...
- 微信小程序从0到上线,程序员一个月开发一款小程序实录
前言:本人从事游戏开发多年,是一名饱受折磨的游戏前端开发人员.游戏这个行业越来越难做,加班越来越严重.正值行业转变之际,听闻微信小程序热火之时,我想偿试一下小程序制作,因此,一个月之后有了这篇文章:微 ...
- python是通用编程语言吗-2020年,编程语言将不再只属于程序员,尤其是这门语言...
原标题:2020年,编程语言将不再只属于程序员,尤其是这门语言 "学python,那不就是去做程序员吗?" 一提到python,许多同学第一反应会觉得,这是要去做程序员才需要学的技 ...
- 生日快乐程序员的浪漫代码_python告白代码,只属于程序员的浪漫
不知何时,不知何因,程序员这个行业成为大家茶余饭后取乐的无辜群体.只要说到程序员,脑海中就浮现出刻板印象,标配穿搭:格子衫,牛仔裤,黑框眼镜.当然秃顶也是必须的,更狠的吐槽还有邋里邋遢,不懂浪漫,不知 ...
- python计算机代码_python告白代码,只属于程序员的浪漫
不知何时,不知何因,程序员这个行业成为大家茶余饭后取乐的无辜群体.只要说到程序员,脑海中就浮现出刻板印象,标配穿搭:格子衫,牛仔裤,黑框眼镜.当然秃顶也是必须的,更狠的吐槽还有邋里邋遢,不懂浪漫,不知 ...
- 停不下来!程序员在GitHub上开源了一个自制表情包项目
世界上本没有表情包,脑洞大的人多了,便有了表情包,如今,大家伙聊天都离不开表情包,但是手头上很多时候表情包根本不够用,所以市面上就有很有App.小程序可以帮助你制作专属你的表情包 而程序员在这方面就有 ...
- 1024| 只为程序员们打Call(多重福利)
1024直达活动地址: http://www.epubit.com.cn/article/1374 亲爱的朋友们! 一年一度的程序员们的狂欢节1024程序员日,异步小编只为程序员打Call,福利不断! ...
最新文章
- Mocha and Diana (Easy Version) 并查集维护两片森林
- [JS]string.substr(start,length)str.slice(begin, end)
- js提取正则中的字符串
- 遍历QListWidget的item
- 排球记分员计分程序(三)————设计文档的编写及构架概要设计
- 制衣软件测试自学,服装检验作业指导书.doc
- GIS开发实习地图符号图式制作
- USB3.0接口定义浅析
- C语言利用switch的简单计算器
- Day002-2021-07-30 String常用API
- Cortex M3 DWT
- oracle临时表经常被锁_linux安装oracle
- linux运行pppd,linux pppd 连接成功 还是 没有网
- 小米、字节跳动、滴滴、英特尔、耐克、捷豹路虎等公司高管变动
- 浅谈微机综合自动化系统在化工企业变电站中应用
- 《指定一个用户只能在特定的时间里不能登陆》『罗斌原创』
- 无效的证书、相同的序列号、SEC_ERROR_REUSED_ISSUER_AND_SERIAL
- 最优控制 3:最优控制理论中的极小值原理与动态规划
- L3-1 千手观音【拓扑排序】
- CPU漏洞补丁修复导致KeServiceDescriptorTable获取变更