渗透测试-文件上传漏洞

  1. WebShell与WebShell管理工具
  2. 文件上传漏洞概述
  3. 文件上传漏洞绕过
  4. 文件上传漏洞防御

一、WebShell与WebShell管理工具

什么是WebShell

webshell,简称网页后门,简单的来说它是运行在web应用之上的远程控制程序
webshell其实就是一张网页,由php、jsp、asp、asp.net等这类web应用程序语言开发,但webshell并不具备常见网页的功能,例如登录、注册、信息展示功能,一般会具备文件管理、端口扫描、提权、获取系统信息等功能。拥有较完整功能的webshell,我们一般称为大马。功能简易的webshell称为小马。除此之外还存在一句话木马、菜刀马、脱裤马等等的名词,是对于webshell功能或者特性的简称。

webshell之php一句话木马
<?php @eval($_POST[x]); ?>
  1. 获取POST请求参数中x的值,例如POST请求中传递x=phpinfo(); 那么 $_POST[x] 就等同于 phpinfo();
  2. @是错误控制运算符,当将 @ 放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
  3. eval() 将字符串当做PHP代码去执行。例如eval(‘phpinfo();’) 其中 phpinfo(); 会被当做PHP代码去执行。

我们通过该webshell,传递任意PHP代码,让其去执行,从而达到任意代码执行

webshell管理工具

中国蚁剑 是一款开源的跨平台网站管理工具,也是一款webshell管理工具,它主要面向与合法授权的渗透测试安全人员以及进行常规操作的网站管理员。中国蚁剑的核心代码模板均改自于伟大的中国菜刀

二、文件上传漏洞概述

什么是文件上传漏洞

文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力

三、文件上传漏洞绕过

1. 前端js限制绕过

(1)开启插件noscript
(2)改webshell文件后缀名上传,利用burpsuite抓包改回文件后缀名

2. 服务端MIME 类型验证绕过

利用burpsuite抓包,将报文中的Content-Type改成允许的类型

  • Content-Type: image/gif
  • Content-Type: image/jpg
  • Content-Type: image/png

在这里插入图片描述
在这里插入图片描述

3. 服务器文件内容验证-文件头

图片格式往往不是根据文件后缀名去做判断的。文件头是文件开头的一段二进制,不同的图片类型,文件头是不同的。文件头又称文件幻数。
常见文件幻数:

  • JPG:FF D8 FF E0 00 10 4A 46 49 46
  • GIF :47 49 46 38 39 61 (GIF89a)
  • PNG:89 50 4E 47
4. 服务端文件扩展名验证-黑名单绕过

后缀名大小写绕过服务端没有将后缀名转换为统一格式进行对比,导致可以上传后缀为pHp的文件,又因为windows操作系统大小写不敏感,所以 .pHp 扔回被当成PHP文件解析。

重写绕过:服务端将黑名单的后缀名替换为空,但仅进行一次。上传.phphpp后缀,替换php一次为空,则后缀为.php。

特殊可解析后缀绕过黑名单规则不严谨,在某些待定环境中某些特殊后缀名仍会被当做PHP文件解析。php|php2|php3|php4|php5|php6|php7|pht|phtm|phtml基于debian和ubuntu的apt-get安装apache,默认对于文件解析如下。在这里插入图片描述

5. 利用windows特性

在这里插入图片描述

在这里插入图片描述
warning :未经授权,不得转载
声明:本文旨在为学习网络信息安全的同学提供指引帮助,维护网络空间的安全
有问题的小伙伴请在下方留言,喜欢就点个赞吧;关注我,带你一起写bug
知乎:叄贰壹
简书:带只拖鞋去流浪

发布了60 篇原创文章 · 获赞 2 · 访问量 1955

猜你喜欢

转载自blog.csdn.net/weixin_43148062/article/details/105485330