专栏首页BypassPHP代码审计笔记--任意文件上传

PHP代码审计笔记--任意文件上传

0x01 最简单的文件上传

未进行文件类型和格式做合法性校验,任意文件上传

漏洞代码示例:

新建一个提供上传文件的 upload.html

<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

创建上传脚本 upload_file.php

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
  move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
  echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
  }
?>

漏洞利用:可上传任意文件

这是一种非常简单文件上传方式。

基于安全方面的考虑,应增加用户上传文件的限制,比如检查文件类型、限制文件大小,限定文件路径,文件名重命名、白名单限制文件上传类型等。

0x02 upload-labs

推荐一个很不错的项目,提供了各种上传漏洞的靶场,可以从upload-labs总结上传漏洞及其绕过的技巧。

GitHub项目地址:https://github.com/c0ny1/upload-labs

Pass-01
  js判断文件上传文件类型,抓包绕过
Pass-02
  文件类型匹配,抓包修改Content-Type: image/jpeg
Pass-03~Pass10
  黑名单过滤
Pass11~Pass12
  白名单,上传路径拼接,可截断
Pass13~Pass16
  文件头判断,图片马绕过
Pass17~Pass18
  先上传后删除,条件竞争
Pass19
  文件名可控,move_uploaded_file()函数 00截断绕过
Pass20
  文件名可控,数组方式绕过

本文分享自微信公众号 - Bypass(Bypass--),作者:Bypass

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【代码审计】CLTPHP_v5.5.3 任意文件上传漏洞

    在代码审计中,发现了一个无需权限的任意文件上传漏洞,可批量,已提交CNVD,分享一下思路。

    Bypass
  • 【代码审计】QYKCMS后台任意文件上传、任意文件读取漏洞

    青云客网站管理系统(QYKCMS)是青云客开发的一款基于PHP+MySql的轻量级智能建站系统。在T00ls看到两篇QYKCMS的代码审计文章,也下载了一套回来...

    Bypass
  • PHP代码审计笔记

    http://blog.evalbug.com/2015/11/10/different_arrays_compare_indentical_due_to_in...

    用户5878089
  • 【代码审计】ThinkPhp6任意文件写入

    版本:v6.0.0-v6.0.1 复现过程: 下载配置好tp6 然后 ,在\tp6\app\controller\Index.php 中。写好,漏洞代码。

    渗透攻击红队
  • 【代码审计】xyhcms3.5后台任意文件读取

    一个很老的cms了,感谢小阳师傅给的练手cms,以下仅为此cms其中一个任意文件读取漏洞和任意文件删除漏洞的审计笔记。

    天钧
  • 【代码审计】任意文件读取漏洞实例

    大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件。 这里,通过两个任意文件读取漏洞实例...

    Bypass
  • 【代码审计】任意文件删除漏洞实例

    在一个网站中,涉及文件删除操作的函数,如果文件名可控,将可能存在任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。好久没更新代码审计的文章了...

    Bypass
  • PHP代码审计笔记--SQL注入

    测试语句:id=1 UNION SELECT user(),2,3,4 from users

    Bypass
  • PHP任意文件上传漏洞(CVE-2015-2348)

    安全研究人员今天发布了一个中危漏洞——PHP任意文件上传漏洞(CVE-2015-2348)。 在上传文件的时候只判断文件名是合法的文件名就断定这个文件不是恶意文...

    FB客服

扫码关注云+社区

领取腾讯云代金券