htaccess文件上传

Posted by Tattoo on 2019-10-30
Estimated Reading Time 2 Minutes
Words 581 In Total
Viewed Times

About .htaccess

.htaccess文件又称分布式配置文件,是Apache服务器的一个配置文件,负责相关目录下的网页配置。
通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
当把.htaccess文件上传到某个文件夹时,它将作用于此目录及其所有子目录,想要使用.htaccess文件需要开启apache的httpd.config文件中的AllowOverride All配置
对于文件上传漏洞,我们可以通过修改或者上传.htaccess文件,来实现解析我们的想要解析的文件,对于白名单处理就无法使用这种方法绕过。

漏洞利用

上传一张正常图片

成功上传,并回显出上传路径,文件名没有被修改或者重命名

尝试上传一个php类型的webshell文件,内容为一句话木马

存在前端验证,用firebug删掉onchange属性,提示不能上传此文件类型,猜测用黑名单对上传文件后缀检验了,尝试.php2/.php5/.pht等文件类型都不能上传

此时尝试上传.htaccess文件,文件内容为

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

这段代码的意思是匹配到文件名中含有hello的字符就以php文件类型去解析
文件成功上传并回显路径

接着上传hello文件,内容为一句话木马,上传前同样要删掉前端代码

成功上传后,用菜刀连接getshell

还有一种方法是上传另一种配置的.htaccess文件
文件内容为

1
AddType application/x-httpd-php .jpg

意思是把.jpg后缀的文件当成php文件来执行
同样能被上传执行

漏洞修复建议

1.客户端检测,使用JS对上传图片检测,包括文件大小、文件扩展名、文件类型等

2.服务端检测,对文件大小、文件路径、文件扩展名、文件类型、文件内容检测,对文件重命名

3.其他限制,服务器端上传目录设置不可执行权限,上传路径不回显等


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !