文件上传绕过复现

目录

内容

总结:

学习文章:


内容:

昨天在某社区上看到的一篇文章写了一次文件上传的绕过姿势,今天复现一下:

手写模拟上传的过滤和绕过,只是演示了关于本次要过的过滤别的过滤没写

php 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="loadfile" ><br>
    <input type="text" name="filename" >
    <input type="submit" value="提交">
</form>
<body>
</body>
</html>
<?php
error_reporting(1);
$name=$_FILES['loadfile']['name'] or die();
$final=strrchr($name,".");
$position=$_POST["filename"];
$filename=substr($position,0,(strrpos($position,'.')));
#echo $filename;
$arry='/jpg|png/';
if(!preg_match($arry,$final))
{
    echo "非法上传只能上传".$arry;
}
else
{
    $tmp=$_FILES["loadfile"]["tmp_name"];
    $path=move_uploaded_file($tmp,"upload/$filename$final");
    if($path)
    {
        echo "上传成功!".'<br>';
        echo "路径:"."upload/$filename$final";
    }
}
?>

打开成这样的一个界面:

观察代码是一个白名单 过滤只允许jpg和png上传,上传的文件名是可控的

按理来说白名单可以结合%00阻断来实现绕过的,但是发现在接收文件名后会将上传的文件的尾缀强行加到可控文件名上面去,而尾缀又是白名单

这个时候可以利用windows系统文件命名的特性 : 符号来进行阻断

在windows文件命名当中有的特殊符号是不允许出现在文件名中的,而冒号(:)出现在创建文件中时会阻断后面的内容而创建一个空文件

之所以是空文件,是因为在php上传文件移动时是根据给的目录严格创建的,如果说指定的目录upload/test.php:.jpg在创建后是test.php就无法将临时文件移动到指定文件上

冒号后加多一点是给匹配时匹配到最后的一个点

可以看到已经上传成功了

也成功创建了php文件但是木马没写进去,这时候就要靠php在windows下的一个符号特性

php在windows下使用 << 时会调用到windows的通配符的接口导致php在windows中就相当于通配符 *

在文件移动的时候只要让文件在移动时通过通配符找到已经上传的php文件将含有木马的内容写入到该文件上就行了

很简单,只要在上传的文件的尾缀后面加上<<<即可,这里因为尾缀的检验是正则匹配不是强行用等号(==)所以只需要尾缀中含有白名单上的字符即可

创建空的php文件

命名为shels.jpg.php上传成功

写入内容

发现shels.jpg<<<上传成功在windows寻找文件看来就是shels.jpg?*就会去匹配存在的文件这样就可以匹配上shels.jpg.php文件了(前提是没有别的可以匹配到的文件哦)

可以看到内容已经成功写进php文件中

总结:

知识点:

  1. windows创建文件时冒号(:)可以阻断后面的内容
  2. php5.6+版本下
  • <在windows中相当于通配符?
  • <<相当于*

利用条件:

  1. 上传的文件名可控
  2. 添加的尾缀可控(不是对方强行添加固定的尾缀)
  3. 服务器在windows上部署

学习文章:

奇安信攻防社区-记某系统有趣的文件上传 (butian.net)

相关推荐
low神25 分钟前
前端在网络安全攻击问题上能做什么?
前端·安全·web安全
云卓科技1 小时前
无人机之激光避障篇
科技·安全·机器人·无人机·制造
网络研究院1 小时前
大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
网络·人工智能·安全·语言模型·攻击·劫持
网络研究院2 小时前
企业急于采用人工智能,忽视了安全强化
网络·人工智能·安全·工具·风险·企业
白帽黑客cst3 小时前
网络安全(黑客技术) 最新三个月学习计划
网络·数据结构·windows·学习·安全·web安全·网络安全
网络研究院3 小时前
网络安全:建筑公司会计软件遭受暴力攻击
网络·安全·研究·漏洞·报告·分析
世界尽头与你5 小时前
活动目录安全
安全·网络安全·内网安全
anddddoooo5 小时前
vulnhub(11):derpnstink(hydra爆破用户名和密码、验证的文件上传)
linux·运维·服务器·安全·web安全·网络安全
金灰5 小时前
有关JS下隐藏的敏感信息
前端·网络·安全
web_learning_3216 小时前
网络安全证书考取相关知识
安全·web安全·网络安全