文件上传
C3ngH Lv3

任意文件上传漏洞的概念和危害

  • 概念

    任意文件上传漏洞(Arbitrary File Upload Vulnerability)是一种常见的网络安全漏洞,通常存在于Web应用程序中。这种漏洞允许攻击者将恶意文件上传到Web服务器,从而可能导致服务器受到攻击或被入侵。

    攻击者利用任意文件上传漏洞的步骤通常如下:

    1. 找到漏洞点:攻击者首先需要找到目标网站或Web应用程序中的文件上传功能,并确定是否存在安全漏洞。
    2. 上传恶意文件:一旦发现存在漏洞,攻击者可以利用该漏洞来上传包含恶意代码的文件。这些文件可能是恶意脚本、后门程序、木马等,用于进一步攻击目标系统或获取敏感信息。
    3. 执行恶意代码:上传成功后,攻击者可以通过触发上传的文件来执行其中包含的恶意代码。这可能会导致服务器被入侵、敏感数据被窃取、系统被控制等危险后果。
  • 危害

    1. 执行恶意代码:攻击者可以上传包含恶意代码的文件,如Webshell(Web后门),以获取对目标服务器的完全控制。一旦上传成功并执行,攻击者就可以执行任意系统命令、访问敏感数据或者利用服务器作为跳板进一步攻击其他系统。
    2. 篡改网站内容:攻击者可以上传包含恶意内容的文件来篡改网站的页面,显示虚假信息、恶意链接或者欺骗用户输入敏感信息。
    3. 敏感信息泄露:攻击者可以上传包含敏感信息的文件,如数据库备份文件、配置文件等,导致敏感信息泄露。
    4. 服务拒绝:攻击者可以上传大型文件或者大量文件,导致服务器资源耗尽,服务拒绝给合法用户提供服务。
    5. 绕过权限控制:攻击者可以上传包含用户权限或者访问控制规则的文件,绕过应用程序的权限控制机制,获取未经授权的权限。
    6. 劫持用户会话:通过上传包含恶意脚本的文件,攻击者可以获取用户的会话标识,从而劫持用户的会话并进行进一步攻击或欺骗。

任意文件上传漏洞的修复方式

  1. 输入验证和过滤:在服务器端对用户上传的文件进行输入验证和过滤,确保只允许上传可信文件类型,并拒绝上传具有恶意或非法文件扩展名的文件。可以使用白名单和黑名单机制来限制上传文件的类型。
  2. 文件类型检查:对上传的文件进行严格的文件类型检查,可以通过检查文件的魔术数字(magic number)、文件扩展名等方式来验证文件的类型是否符合预期。
  3. 文件内容检查:对上传的文件内容进行检查,确保不包含恶意代码或恶意内容。可以使用反病毒软件或文件内容检测工具来扫描上传的文件,检测其中是否包含恶意代码。
  4. 文件权限控制:确保上传的文件存储在安全的目录中,并设置适当的文件权限,以防止恶意用户通过上传恶意文件获取对服务器的访问权限。
  5. 隔离上传文件:将用户上传的文件与应用程序代码和其他系统文件隔离开来,确保上传的文件不会影响到应用程序的正常运行或系统的安全性。
  6. 文件重命名:在保存上传文件时,将文件重命名为随机生成的唯一文件名,以防止恶意用户上传同名文件覆盖系统文件或执行攻击。
  7. 沙箱动态监测:使用沙箱技术,将上传的文件在受控环境中进行动态监测和分析。通过模拟执行环境,监测文件是否包含恶意代码、恶意行为或者不良影响,并且在检测到可疑行为时采取相应的防御措施,如拒绝文件上传或者将文件标记为不安全。
  8. 安全编码实践:开发者应该遵循安全编码实践,如最小特权原则、避免使用不安全的函数和库、定期更新和修补软件等,以降低漏洞被利用的风险。

图片马制作方式

  1. 使用文本方式打开,在末尾粘贴一句话木马

  2. 在cmd中输入命令copy 1.jpg/b+2.php 3.jpg

    • /b是二进制形式打开

    • /a是ascii方式打开

  3. 16进制打开图片在末尾添加一句话木马

  4. Photoshop打开

注意:

  • 单纯的图片马并不能直接和蚁剑连接,因为该文件依然是以image格式进行解析,
  • 只有利用文件包含漏洞(在代码中引入其他文件作为php文件执行时,未对文件进行严格过滤,导致用户指定任意文件,都作为php文件解析执行)才能成功利用该木马

upload-labs题解

upload-labs靶机包含漏洞类型分类:

image

如何判断上传漏洞类型?

image

  • Pass-01

    前端校验文件名是否安全。绕过方法:禁用javascript,或者上传白名单后缀文件,burp捉包修改为对应服务器能够解释的文件后缀。

  • Pass-02

    后端校验文件类型是否为image/jpeg、image/png、image/gif。绕过方法:修改Content-Type: application/octet-stream为Content-Type: image/jpeg即可。

  • Pass-03

    上传php其他后缀名

  • Pass-04

    上传.htaccess文件

  • Pass-05

    文件后缀大小写绕过

  • Pass-06

    空格绕过:利用Windows对“文件名中空格会被作为空处理”的特性,程序检测后缀名.php ,空格会自动删除。

  • Pass-07

    .号绕过:

  • Pass-08

    ::$DATA绕过(特殊符合不能成功新建)文件名+“::$DATA”会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名。如:“phpinfo.php::$DATA” windows会自动处理末尾的::$DATA 变成“phpinfo.php” 。

  • Pass-09

    .空.绕过

  • Pass-10

    双写绕过

  • Pass-11

    白名单限制,$_GET[‘save_path’]路径可控。GET:通过%00截断,上传文件

  • Pass-12

    白名单限制,$_POST[‘save_path’]路径可控。POST:通过HEX改值为php+00截断,上传文件

  • Pass-13

    文件包含,上传图片马

  • Pass-14

    文件包含,检查图片的长宽高。通过copy 1.jpg/b + 2.php/a shell.jpg,新建图片马

  • Pass-15

    文件包含,检查图片的长宽高。通过copy 1.jpg/b + 2.php/a shell.jpg,新建图片马

  • Pass-16

    文件包含,二次渲染。上传大图片马,使其在服务器中二次渲染,获取下载并对比二次渲染后的图片马特征。挑选未被渲染的地方,插入payload。

  • Pass-17

    条件竞争,<?php fputs(fopen('shell.php','w'),'<?php eval($_POST[x]);>');?>

  • Pass-18

    Apache解析漏洞+条件竞争

  • Pass-19

    文件名可控,黑名单绕过,使用shell.php.绕过黑名单上传

  • Pass-20

    白名单限制,检查MIME和后缀名。

  • Pass-21

 评论
评论插件加载失败
正在加载评论插件
总字数 80.2k 访客数 访问量