什么是文件上传漏洞——来自GPT-4
文件上传漏洞是一种常见的安全漏洞,它出现在Web应用程序中,允许攻击者上传恶意文件到服务器。这种漏洞可能导致严重的安全问题,例如服务器被入侵、数据泄露和应用程序功能受损。
文件上传漏洞通常由以下几个原因导致:
-
不充分的文件类型验证:Web应用程序应该仅允许用户上传特定类型的文件,例如图片、文档等。如果验证不严格,攻击者可能会上传恶意文件,如脚本或可执行文件。
-
不安全的文件名处理:攻击者可能会尝试使用特殊字符或路径遍历技术来上传文件到非预期的目录。这可能导致对服务器上其他文件的访问或覆盖。
-
不恰当的权限设置:如果上传目录的权限设置不当,攻击者可能会利用上传的文件执行恶意操作,例如执行代码或访问敏感数据。
为了防止文件上传漏洞,作为一名软件工程师,我们可以采取以下措施:
-
限制允许上传的文件类型:仅允许用户上传预定义的安全文件类型,并对文件扩展名和MIME类型进行严格验证。
-
对文件名进行安全处理:对上传的文件名进行过滤和验证,移除特殊字符,防止路径遍历攻击。
-
设置合适的权限:确保上传目录的权限设置正确,限制对敏感数据和系统文件的访问。
-
文件内容检查:对上传的文件进行内容检查,以防止潜在的恶意代码或嵌入式恶意内容。
-
使用隔离的文件存储:将上传的文件存储在与应用程序隔离的位置,以降低潜在的安全风险。
-
定期更新和打补丁:保持Web应用程序和服务器组件的更新,以修复已知的安全漏洞。
我的理解
最简单的文件上传例子:新建微信/QQ账号,上传新头像;或者学校宿舍报修系统,宿舍水龙头坏了,上传报修图片。
文件上传靶场
这里我们使用Pikachu皮卡丘平台,选择一张图片点击上传即可,注意给的是相对路径
输入相对路径就可以找到我们上传的图片了
此时,已经把我们的图片上传到对方服务器当中了,我们打开上帝视角
以上是正常客户的操作——老老实实上传图片,如果你是个黑客呢?
一句话木马
现在到了最经典的部分
<?php @eval($_POST['w']);?>
eval():执行代码层面命令
system():执行系统层面命令
先把上面这段话写好,保存到一个名为1.php的文件中,接着按照图片的位置上传我们的马子
经过不到0.1秒跳出来下面这个,所以我们判断是前端校验
通过浏览器的定位器定位到源码有个前端函数checkFile()
我们直接删掉他
然后就上传成功
然后就可以成功在对方网站执行代码啦
用HackBar执行命令显得很low,所以我们使用流量连接工具——中国蚁剑
除了蚁剑,shell连接工具还有菜刀,冰蝎,哥斯拉等
菜刀最开始给网站运维人员(站主)用的,后面被黑客发现就变成黑客工具了
冰蝎和哥斯拉在功能上更强,有自己特有的流量(AES加密),流量特征不一样
挂上蚁剑的代理,抓一下蚁剑的流量
经过URL解码,可以发现蚁剑的流量是没有被加密的