.htaccess 当前目录_技术干货 | Apache的.htaccess利用技巧

本文详细介绍了Apache的.htaccess文件的配置、作用范围和常见指令,包括SetHandler、AddHandler、AddType、php_value和php_flag等。同时,探讨了.htaccess在文件解析、文件包含、源码泄露、代码执行、命令执行和XSS攻击等方面的安全漏洞利用,提供了一系列的示例和利用方式。
摘要由CSDN通过智能技术生成

7e6c41f33e8e332e4c5b1b2f5f66efd4.png

本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作!

欢迎各位添加微信号:qinchang_198231

加入安世加 交流群 和大佬们一起交流安全技术

0x1简介

0x1.1基本概念

.htaccess 文件提供了针对目录改变配置的方法, 即在一个特定的文档目录中放置一个包含一条或多条指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache 的 AllowOverride 指令来设置。.htaccess 中有 # 单行注释符, 且支持 \拼接上下两行。

0x1.2作用范围

.htaccess 文件中的配置指令作用于 .htaccess 文件所在的目录及其所有子目录,但是很重要的、需要注意的是,其上级目录也可能会有 .htaccess 文件,而指令是按查找顺序依次生效的,所以一个特定目录下的 .htaccess 文件中的指令可能会覆盖其上级目录中的 .htaccess 文件中的指令,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

0x1.3配置文件

启动 .htaccess,需要在服务器的主配置文件将 AllowOverride 设置为 All,如 apache2.conf

03127a3db0fe788e58353e5e8174892d.png

也可以将 .htaccess 修改为其他名

199c0d82f1ed0ae32cf4f02f354dc60f.png

0x2常见指令

.htaccess 可以实现网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。如需了解详细功能可看这篇文章http://www.htaccess-guide.com/ , 这里就不一一介绍,主要讲解几种常利用的指令。

0x2.1SetHandler

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

b3b60eb7777ea0120fcd640ffdc26ea0.png

示例1:

3fceab38258ef5bae1eea0ff3c81601f.png

此时当前目录及其子目录下所有文件都会被当做 php 解析

示例2:

c4c99863a9232e496be1e09b8dffcad7.png

apache的服务器状态信息(默认关闭),可以查看所有访问本站的记录

686753d7f7931345b9f8073573acc432.png

访问任意不存在的文件,加参数 ?refresh=5 来实现每隔 5s 自动刷新

0x2.2 AddHandler

AddHandler 可以在文件扩展名与特定的处理器之间建立映射
用法:

486806e623bf000631bb3f64eb68bfac.png

例如:

a257cf6b23f77ee0d59896d4cb2cbb2a.png

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

0x2.3AddType

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

674245cc46035616f7c649856240c621.png

示例:

07bd23b3eb9f01e9dd4b6ddd32ebde3a.png

将以 gif 为后缀的文件当做 php 解析

7c1f5c977bab08049be2d049d7dff3c5.png

将以 .png .jpg .gif 多个后缀当做 php 解析

0x2.4php_value

当使用 PHP 作为 Apache 模块时,也可以用 Apache 的配置文件(例如 httpd.conf)和 .htaccess文件中的指令来修改 php 的配置设定。需要有AllowOverride Options 或AllowOverride All 权限才可以。

php_value 设定指定的值。要清除先前设定的值,把 value 设为 none。不要用 php_value 设定布尔值。应该用 php_flag。

用法:

a7cd95348852436b5ebdf4a2cd29e4ac.png

查看配置可被设定范围

55954826496ac748ab7ece0832c684e4.png

由上可知 .htaccess 只能用于 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的指令。
查看php.ini 配置选项列表,寻找可利用指令

(1) 文件包含配置选项

b881824d8fe7acf95be8419d582bec39.png
  • auto_prepend_file:在主文件解析之前自动解析包含的文件

  • auto_append_file:在主文件解析后自动解析包含的文件

例如:

9df835e16fa6cdbfc4c6f84f8c9aa4e7.png

访问一个 php 文件时,在该文件解析之前会先自动解析 images.png 文件

(2) 绕过preg_match

9063b4a10efc5ffb03b5391b4356904e.png

例如:

b23623180a6371543907bcd508979bd9.png

设置正则回朔次数来使正则匹配的结果返回为 false 而不是0 ,从而可以绕过正则。

0x2.5php_flag

php_flag 用来设定布尔值的 php 配置指令
用法:

e1fa78c59b578a2e73473734bf7e7b82.png

查看php.ini 配置选项列表,寻找可利用指令

026ef735d2b0ebf7540f62315f9b869a.png

可以将 engine 设置为 0,在本目录和子目录中关闭 php 解析,造成源码泄露

05070fb6099c25046b8c9ccb0df11b70.png

0x3利用方式

0x3.1文件解析

经常出现在文件上传的黑名单没有限制 .htaceess 后缀,通过上传 .htaccess 文件,再上传图片,使图片的 php 恶意代码得以被解析执行

.htaccess 文件内容有如下两种

1.SetHandler 指令

7289fa172a4056bc27d339b6d04d5c1d.png 34fa67ea85cfb2b38bd4255f41027b54.png

2.AddType

712e44b65e4a6e957c3386ecf1f92c9d.png

0x3.2文件包含

0x3.2.1本地文件包含

通过 php_value 来设置 auto_prepend_file或者 auto_append_file 配置选项包含一些敏感文件, 同时在本目录或子目录中需要有可解析的 php 文件来触发。

.htaccess 分别通过这两个配置选项来包含 /etc/passwd,并访问同目录下的 index.php文件。

auto_prepend_file

69966bdb03c9a76edc5d84f3c9cb9660.png 29f2734f3fc5194cef56400585445592.png

auto_append_file

cca0fd87e2eca2f046dbe22900848270.png 2259da9629ce03273917847f99706b6e.png

0x3.2.2远程文件包含

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

ca24fad9418a81dc7c421a2ba5a486fb.png

这里为了演示,就在 php.ini 中设置 all_url_include 为 On

a97f43a4b8d386a9f02a872b4a270ad0.png 71e470be25fc31ca490fc7b7b3cb829e.png

0x3.3源码泄露

利用 php_flag 将 engine 设置为 0,在本目录和子目录中关闭 php 解析,造成源码泄露

05070fb6099c25046b8c9ccb0df11b70.png

这里在谷歌浏览器访问会显示源码,用其他浏览器访问会显示空白,还需查看源码,才可看到泄露的源码

d43fcf824ec0ccca049311db0b73d181.png

0x3.4代码执行

1.利用伪协议all_url_fopen、all_url_include 为 On

2a3bf93d27ab38fb04960656dbc3b04e.png 7b0d681033ca30072e28feb7e6fd297b.png

2.解析.htaccess
方法一:

b441fe907f997216d98f3c6c39586509.png 8ae1665863050d22b8dfc006955df713.png

方法二:
这种适合同目录或子目录没有 php 文件。
需要先设置允许可访问 .htaccess 文件

e842af7e98ff4e0a3e1047f04874a1a7.png

将 .htaccess指定当做 php文件处理

79e08401144ae242aa46b7b224795837.png c747d3f2de094217727d3bfad6b69ec6.png

0x3.5命令执行

0x3.5.1CGI启动

cgi_module 需要加载,即 apache 配置文件中有

b14e0bcb95c98544842b74bf6228b5e1.png

.htaccess内容

fce3de9fb2b68c025b254c50ee0610e0.png

ce.xx

5fcaec322c7580f2d9844a523de5d486.png c31711f887267b9e7df6d49b70c901af.png

例题可看 De1CTF2020 check in

0x3.5.2FastCGI启动

mod_fcgid.so需要被加载。即 apache 配置文件中有

498c08577899620bead4db0ad811decd.png

.htaccess

160d6814a1c675db9ca01d07a5076321.png

ce.xx 内容随意

ece3d3fda3ffcaae107a0ee016cda491.png

0x3.6XSS

0x3.6.1 highlight_file

.htaccess

c4b2b356138ddc148db111d524f553f1.png

其中的 highlight.comment 也可以换成如下其他选项

95c562fd34c73d343115786304f7d948.png

index.php

60f805375d7f524c0a4beaaff637de11.png d209b85c2939a7013fc33142dc1e7eb7.png

0x3.6.2错误消息链接

index.php :

9cd6fb94f36ce5b426c12ff3ae28fe10.png

.htaccess

32bc33fa366d7300756d47480856e14a.png e4bb6295bc5dbc8b103a63d1e0bbcde3.png

0x3.7自定义错误文件

error.php

e97b79f55916f5e11c3234cd7ba1a542.png

.htaccess

62ac16b700b58255075032a9ee3d525b.png

访问 error.php,会报错并记录在 shell.php 文件中

633ccec27bffdd313078a8b0f7d403c5.png

因为会经过 html 编码,所以需要 UTF-7 来绕过。

.htaccess

6e0e3e4687d2aef09cb84ad5f6ee4f82.png

例题可看X-NUCA-ezphp

0x4参考链接

https://www.anquanke.com/post/id/205098
https://www.cnblogs.com/Wanghaoran-s1mple/p/13152075.html
http://httpd.apache.org/docs/2.4/
https://github.com/sektioneins/pcc/wiki/PHP-htaccess-injection-cheat-sheet
https://www.freebuf.com/vuls/218495.html

本文转自:先知社区

作者:ye1s

a8ffaf56592818736c7dfc2d2ff5393a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值