目录

. 文件上传

. 文件类型检测绕过

. 更改请求绕过

. 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%20index.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对上传文件夹的解析

网站被攻击拿下—只因为程序员一个文件上传功能没写好相关推荐

  1. php利用ajax文件上传,如何在PHP中利用AjaxForm实现一个文件上传功能

    如何在PHP中利用AjaxForm实现一个文件上传功能 发布时间:2020-12-18 14:52:38 来源:亿速云 阅读:94 作者:Leah 如何在PHP中利用AjaxForm实现一个文件上传功 ...

  2. 亿速云服务器 如何上传文件,使用MultipartFile怎么实现一个文件上传功能

    使用MultipartFile怎么实现一个文件上传功能 发布时间:2021-01-20 16:43:15 来源:亿速云 阅读:139 作者:Leah 使用MultipartFile怎么实现一个文件上传 ...

  3. 一个项目的开发流程是怎样的? 原名:「只差程序员」离优秀的产品还有多远?...

    http://www.toutiao.com/a4919665444/ ......产品开发的流程问题,这也是个严肃的问题.解决流程问题,就知道技术团队需要什么人,产品开发就成功了一半. 一个项目的开 ...

  4. 微信小程序从0到上线,程序员一个月开发一款小程序实录

    前言:本人从事游戏开发多年,是一名饱受折磨的游戏前端开发人员.游戏这个行业越来越难做,加班越来越严重.正值行业转变之际,听闻微信小程序热火之时,我想偿试一下小程序制作,因此,一个月之后有了这篇文章:微 ...

  5. python是通用编程语言吗-2020年,编程语言将不再只属于程序员,尤其是这门语言...

    原标题:2020年,编程语言将不再只属于程序员,尤其是这门语言 "学python,那不就是去做程序员吗?" 一提到python,许多同学第一反应会觉得,这是要去做程序员才需要学的技 ...

  6. 生日快乐程序员的浪漫代码_python告白代码,只属于程序员的浪漫

    不知何时,不知何因,程序员这个行业成为大家茶余饭后取乐的无辜群体.只要说到程序员,脑海中就浮现出刻板印象,标配穿搭:格子衫,牛仔裤,黑框眼镜.当然秃顶也是必须的,更狠的吐槽还有邋里邋遢,不懂浪漫,不知 ...

  7. python计算机代码_python告白代码,只属于程序员的浪漫

    不知何时,不知何因,程序员这个行业成为大家茶余饭后取乐的无辜群体.只要说到程序员,脑海中就浮现出刻板印象,标配穿搭:格子衫,牛仔裤,黑框眼镜.当然秃顶也是必须的,更狠的吐槽还有邋里邋遢,不懂浪漫,不知 ...

  8. 停不下来!程序员在GitHub上开源了一个自制表情包项目

    世界上本没有表情包,脑洞大的人多了,便有了表情包,如今,大家伙聊天都离不开表情包,但是手头上很多时候表情包根本不够用,所以市面上就有很有App.小程序可以帮助你制作专属你的表情包 而程序员在这方面就有 ...

  9. 1024| 只为程序员们打Call(多重福利)

    1024直达活动地址: http://www.epubit.com.cn/article/1374 亲爱的朋友们! 一年一度的程序员们的狂欢节1024程序员日,异步小编只为程序员打Call,福利不断! ...

最新文章

  1. Mocha and Diana (Easy Version) 并查集维护两片森林
  2. [JS]string.substr(start,length)str.slice(begin, end)
  3. js提取正则中的字符串
  4. 遍历QListWidget的item
  5. 排球记分员计分程序(三)————设计文档的编写及构架概要设计
  6. 制衣软件测试自学,服装检验作业指导书.doc
  7. GIS开发实习地图符号图式制作
  8. USB3.0接口定义浅析
  9. C语言利用switch的简单计算器
  10. Day002-2021-07-30 String常用API
  11. Cortex M3 DWT
  12. oracle临时表经常被锁_linux安装oracle
  13. linux运行pppd,linux pppd 连接成功 还是 没有网
  14. 小米、字节跳动、滴滴、英特尔、耐克、捷豹路虎等公司高管变动
  15. 浅谈微机综合自动化系统在化工企业变电站中应用
  16. 《指定一个用户只能在特定的时间里不能登陆》『罗斌原创』
  17. 无效的证书、相同的序列号、SEC_ERROR_REUSED_ISSUER_AND_SERIAL
  18. 最优控制 3:最优控制理论中的极小值原理与动态规划
  19. L3-1 千手观音【拓扑排序】
  20. CPU漏洞补丁修复导致KeServiceDescriptorTable获取变更

热门文章

  1. 为什么微软要把数据中心设在水下?
  2. 让我们深入了解PP YOLO做出的贡献
  3. Javascript字符串长度返回错误的原因
  4. sql server 监视_使用SQL Server Reporting Services进行快速,肮脏的服务器监视
  5. team explorer_我的Team Explorer 2015在哪里?
  6. PowerShell加密SQL Server的密码技术
  7. Boostnote跨平台 Markdown 编辑器
  8. 6 9*9乘法口诀
  9. win7下如何建立ftp服务器
  10. python对象回收_python 对象引用,可变性,垃圾回收