个人笔记-渗透测试-文件上传漏洞

1,文件上传漏洞原理

eval()将括号中的数据按代码进行执行
<?php @eval($_POST['test']);?>

2,Webshell介绍

  1. 一句话木马
    • 代码短
    • 场景多,可以单独生成文件,也可以插入到图片中
    • 安全性高,隐匿性强,可变形免杀
  2. 小马
    • 体积小,功能少
    • 只有文件上传功能
  3. 大马
    • 体积大,功能全
    • 能够管理数据库,文件管理,对站点进行快速的信息收集,甚至能够提权

3,网站控制工具

4,文件上传漏洞危害

文件上传漏洞:指用户上传了一个可执行的脚本文件,而且通过这个脚本获得了执行服务器端命令的能力。

危害:

  1. 挂黑链
  2. 挖矿
  3. 敏感文件泄露

5,靶场安装

6,绕过所用到的知识点

MIME用法
客户端使用:

  1. GET请求不需要这个字段。
  2. POST请求头,放在Content Type字段用来指定上传文件类型,方便服务器解析。放在Accept,告诉服务端允许接收的响应类型。比如只能接收json或者其他。

服务端使用:

  1. 放在响应头里面,Content Type告诉客户端响应的数据类型,方便客户端解析。

常见类型:text/html,application/json,multipart/form-data,image/jpeg

等价扩展名 要在apache配置文件中加入AddType application/x-httpd-php .php .phtml .php3

  • asp = asa,cer,cdx
  • aspx = ashx,asmx,ascx
  • php = php2,php3,php4,php5,phps,phtml
  • jsp = jspx,jspf

Hypertext Access(超文本入口)

  • .htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。
  • 通过.htaccess文件,可以实现:网页301重定向,自定义404错误页面,改变文件扩展名,允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

Content-Dispostion

  • 常规的HTTP应答中,Content-Dispostion响应头指示回复的内容该以何种形式展示,是以内联形式(为网页的一部分),还是以附件的形式下载并保存到本地。
  • 各个子部分在Content-Type中定义的分隔符分隔。用在消息体自身则无实际意义。
  • 放在请求中,作用为传输文件名

文件名截断
作用:扫描到截断字符就停止解析。后面所有内容全部无视。

  • 截断字符:chr(0),类似C++的“\0”
  • url encode:%00、ASCⅡ value:0

文件头
文件头的内容会标识该文件类型:

  • png:89 50 4E 47 0D 0A 1A 0A
  • jpg: FF D8
  • gif: 47 49 46 38 39|37 61 ——即为GIF89(7)a
  • bmp: 42 4D
  • java:ca fe ba be

图片+代码生成图片马

  • windows copy 图片 /b + 代码文件 /a 生成的代码图片
  • linux cat 图片 代码 > 生成的代码图片

搭配文件包含漏洞进行getshell操作

  • include.php?file=

条件竞争
程序(保存文件在本地并对其进行校验)执行代码的过程中,趁着保存的文件还在服务器本地而没被服务器检测删除的空隙即时访问,实现攻击目的。

  • <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["test"])?>');?>
  • 通过inturder模块不停的向服务器进行文件上传,利用服务器在判断的时间访问上传的文件(上述代码作用:执行后在文件目录下生成一个木马),之后再用工具访问生成的木马。

move_uploaded_file()
函数接受以“/./”结尾的命名存储方式,想方法通过文件结尾加"/.“,”./"进行绕过验证,将木马上传至服务器

7,漏洞发现与利用

利用流程:

  1. 找到上传的位置
  2. 尝试绕过校验,上传文件
    • 绕过方式:
      • 删除/禁用JS
      • 修改MIME
      • 等价扩展名
      • 大小写
      • htaccess(apache解析漏洞)
      • 双写
      • 加空格
      • 加点
      • ::$DATA
      • %00、0x00截断
      • 图片马
      • 条件竞争(时间差)
      • move_uploaded_file()忽略文件结尾的’/.’
  3. 获得文件位置
    • 如何获取文件路径:
      • 开源CMS进行代码审计
      • 做一个文件变动监视器
  4. 蚁间连接,管理文件
    • 文件包含
    • .htaccess
    • 如果文件没有执行权限或重新编码后:

思路:

  • Redis KV 持久化+未授权访问的漏洞
  • MySQL读写 select into file …
  • CMS 小马(shell)

8,漏洞防御

文件上传漏洞发生的前提

  1. 网站上传功能能正常使用
  2. 文件类型允许上传
  3. 上传路径可以确定
  4. 文件可以被访问,可以被执行或被包含

据此进行防御:

  • 扩展名黑白名单校验
  • MIME类型校验(image/gif)
  • 文件内容头校验
  • 对文件内容进行二次渲染
  • 对上传的文件重命名,不易被猜测
  • 不要暴露上传文件的位置
  • 禁用上传文件的执行权限
有道云笔记是一款文件管理和云存储平台,用户可以将各种文件上传至云端进行保存和管理。针对有道云笔记渗透测试文件上传核题,主要是测试目标是否存在文件上传漏洞文件上传漏洞是指攻击者通过上传恶意文件或者利用上传功能绕过限制,成功在目标服务器上执行任意代码或者获取未授权的访问权限。攻击者可通过上传特定类型的文件,利用后台执行逻辑漏洞或者文件解析漏洞,从而实现对目标系统的攻击或控制。 针对有道云笔记文件上传漏洞,常见的测试方法包括: 1. 尝试上传各种类型的文件:测试能否上传系统可执行文件、脚本文件或者危险的文件类型。 2. 绕过后台验证:尝试修改请求报文、绕过文件类型检查、篡改上传文件路径等,测试服务器是否能正确地执行上传操作的检查。 3. 文件解析漏洞测试:测试上传的文件是否能够被服务器直接解析,并且触发对应的解析漏洞。 4. 文件重命名与遍历:测试能否修改上传文件的文件名,并尝试通过../等目录遍历操作访问到其他敏感文件。 针对发现的漏洞和问题,需要将测试结果整理成详细的渗透测试报告,包括漏洞描述、危害程度评估和修复建议等。然后与有道云笔记的开发团队和管理员进行沟通,提供测试结果和修复建议,并跟踪漏洞修复进展。 及时发现和修复文件上传漏洞,对于保护用户数据和防止潜在的攻击十分重要。因此,有道云笔记应该充分重视渗透测试文件上传核题,加强安全意识和漏洞修复的流程,确保用户数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值