Você está na página 1de 96

Audit Sécurité

vendredi 6 mars 2009 1


Ordre du jour

• Présentation de l’atelier

• Audit boîte noire

• Audit à code ouvert

vendredi 6 mars 2009 2


Qui parle?

• Philippe Gamache

• Parler haut, interagir librement :


audit de sécurité, formations

• Caviste de cidres de glace

• info@ph-il.ca

vendredi 6 mars 2009 3


Qui parle?
• Damien Seguy

• Alter Way Consulting :


services experts en
logiciels libres

• Editeur de calendriers

• damien.seguy@alterway.fr

vendredi 6 mars 2009 4


Livre sécurité
• Nouvelle édition 2009

• Bilan complet de la
sécurité : système,
MySQL, PHP, etc

• Edité chez Eyrolles

• Dédicaces sur demande

vendredi 6 mars 2009 5


Cligraph CRM
• CRM/GRC Open Source

• Version 0.991

• Activement développé

• Soutenu par Cogivea


http://www.cogivea.com/

• Léger, rapide et puissant

• http://www.cligraphcrm.com/

vendredi 6 mars 2009 6


Cligraph CRM

• Technologies PHP et MySQL, Javascript

• Code développé depuis 5 ans

• 4970 fichiers

• 1200 fichiers PHP

• 320 000 lignes de code

vendredi 6 mars 2009 7


L’atelier sécurité

• Réveillez-vous : vous avez du travail!

• Analyse des logs et identification des problèmes

• Discussion des stratégies de protection et contextes

• http://192.168.3.73/ de démonstration

vendredi 6 mars 2009 8


Tests boîte noire

9
vendredi 6 mars 2009 9
Tests boîte noire

• Recherche d’informations

• Trouver de l’information sur l’application

• Que puis-je faire sur cette application?

• Où sont les points d'entrée les plus


populaires?

10
vendredi 6 mars 2009 10
Tests boîte noire
• Trouver des vulnérabilités

• Trouver les trous dans l’application

• Scanneurs automatiques

• À la main

• Fuzzing

• Scénarios

• Comment puis-je l'utiliser à mon avantage?

11
vendredi 6 mars 2009 11
Tests boîte noire

• Attaquer

• Attaquer une
vulnérabilité avec
un but précis

12
vendredi 6 mars 2009 12
Recherche
d’informations
• Moteurs de recherches

• Facebook, LinkedIn, Joboom, Monster

• Langage de programmation

• Logiciels utilisés

13
vendredi 6 mars 2009 13
Recherche
d’informations
• Moteurs de recherches (suite)

• Google : phpinfo, "Zend engine”,


site:nomsite.com

• Divulgation de renseignements

<b>Notice</b>: undefined </b> on line <b>


<b>Warning</b>: </b> on line <b>

14
vendredi 6 mars 2009 14
Recherche
d’informations
• Moteurs de recherches (suite)

• Krugle : echo $_GET

• Bases de données de vulnérabilités

• BUGTRAQ
• CERT
• CVE
• Milw0rm

15
vendredi 6 mars 2009 15
Recherche
d’informations
• Google codesearch :

• XSS
lang:php (echo|print).*\$_(GET|POST|COOKIE|
REQUEST)

• Injection SQL
lang:php query\(.*\$_(GET|POST|COOKIE|
REQUEST).*\)

• Injection de code
lang:php (include|include_once| require|
require_once).*\$_(GET| POST|COOKIE|REQUEST)

16
vendredi 6 mars 2009 16
Recherche
d’informations
• Google codesearch :

• Injection d'en-tête HTTP


lang:php header\s*\(.*\$_(SERVER| GET|POST|
COOKIE|REQUEST).*\)

• Fixation de session
lang:php session_start\(\)
lang:php session_regenerate_id\(\)

17
vendredi 6 mars 2009 17
Recherche
d’informations
• Google codesearch :

• Affichage arbitraire de fichiers

lang:php (fopen|readfile|file_get_contents)\s*\
(.*\$(_GET|_POST|HTTP_GET_VARS|
HTTP_POST_VARS).*\)

18
vendredi 6 mars 2009 18
Recherche
d’informations
• Google codesearch :

• Mots de passes

filetype:sql INSERT
intitle:"phpinfo()" +".default_password"
+"Zend Scripting Language Engine"
lang:php _connect\s*\(.*,.*,("|').*("|').*\)
lang:php "VBULLETIN IS NOT FREE SOFTWARE"
lang:php "XCART_SESSION_START"
lang:php \$pass\w+\s*=\s*('|")\w+('|");

19
vendredi 6 mars 2009 19
Recherche
d’informations
• robots.txt

• Alias Apache

• /icons/

• Signatures dans les en têtes

• curl, wget, Firefox, Rex Swain's HTTP Viewer

• .phps

20
vendredi 6 mars 2009 20
Recherche
d’informations
• https

• Page 404

• Page blanche

• arrêt de code sans affichage d'erreur

21
vendredi 6 mars 2009 21
Recherche
d’informations
• Répertoires courants
• includes
• admin
• tmp
• data
• db
• uploads

22
vendredi 6 mars 2009 22
Recherche
d’informations
• theHarvester
http://www.edge-security.com/theHarvester.php

• MetaGoofil
http://www.edge-security.com/metagoofil.php

• Nikto
http://www.cirt.net/

• SEAT (Search Engine Assessment Tool)


http://midnightresearch.com/projects/search-
engine-assessment-tool/

23
vendredi 6 mars 2009 23
Recherche
d’informations

• Subdomainer
http://www.edge-security.com/subdomainer.php

24
vendredi 6 mars 2009 24
Recherche
d’informations
• http://www.cligraphcrm.com/

vendredi 6 mars 2009 25


Recherche
d’informations

vendredi 6 mars 2009 26


Recherche
d’informations

• Google

• Google codesearch

• Milm0rm

vendredi 6 mars 2009 27


Trouver des
vulnérabilités
• Où trouver des vulnérabilités?

• XSS

• CSRF

• Injections

• Remplacement de fichiers

• etc.

28
vendredi 6 mars 2009 28
Trouver des
vulnérabilités

• Comment exploiter cette faiblesse?

• Que faire avec cette faille?

29
vendredi 6 mars 2009 29
Outils manuels
• Firefox
• Access Me
• Firebug
• Firecookie
• FirePHP
• HackBar
• Header Spy
• JavaScript Debugger

30
vendredi 6 mars 2009 30
Outils manuels
• Firefox
• Poster
• SQL Inject Me
• SQL Injection!
• User Agent Switcher
• Web Developer
• X-Forwarded-For Spoofer
• XSS Me Data

31
vendredi 6 mars 2009 31
Outils manuels

• Rex Swain's HTTP Viewer


http://www.rexswain.com/httpview.html

32
vendredi 6 mars 2009 32
Scanneurs
automatiques
• Simple à mettre en oeuvre

• Permets de trouver les attaques les plus courantes

• Doivent être adaptés

• Mis à jour régulièrement

• Personnalisables

33
vendredi 6 mars 2009 33
Scanneurs
automatiques
• Acunetix Web Vulnerability Scanner
http://www.acunetix.com/vulnerability-scanner/

• BeEF
http://www.bindshell.net/tools/beef/

• Burp Suite
http://portswigger.net/suite/

• Metasploit
http://www.metasploit.com/

34
vendredi 6 mars 2009 34
Scanneurs
automatiques
• Nikto
http://www.cirt.net/

• PBlind
http://www.edge-security.com/pblind.php

• Scrawlr
https://download.spidynamics.com/Products/scrawlr/

• SCRT Mini MySqlat0r


http://www.scrt.ch/pages_en/minimysqlator.html

35
vendredi 6 mars 2009 35
Scanneurs
automatiques

• SCRT Webshag
http://www.scrt.ch/pages_en/outils.html

• XSSploit
http://www.scrt.ch/pages_en/xssploit.html

36
vendredi 6 mars 2009 36
Fuzzing

• Test par valeur aléatoire

• Stress des formulaires

• Bases de données

• Test décomplexé

37
vendredi 6 mars 2009 37
Fuzzing
• Tous les caractères de \0 à \x255

• Tous les caractères Unicode

• Les nombres 1, 0, -1, 0.99, extrêmes, infinis

• Chaînes

• Longues

• courtes

38
vendredi 6 mars 2009 38
Fuzzing
• Dictionnaires de valeurs

• de vulnérabilités

• GET, POST, COOKIE

• Des variables tableaux

• c[]=1

39
vendredi 6 mars 2009 39
Fuzzing
• Excédents de variables

• debug=1, task=view

• Manque de variables

• Encodages variés

• UTF-8, Latin1, HTML, hexa

40
vendredi 6 mars 2009 40
Fuzzing
• Burp Suite
http://portswigger.net/suite/

• SCRT Webshag
http://www.scrt.ch/pages_en/outils.html

• WebSlayer
http://www.edge-security.com/webslayer.php

• Wfuzz
http://www.edge-security.com/wfuzz.php

41
vendredi 6 mars 2009 41
Scénarios
• Des tests plus adaptés

• fragiles

• Automatiser les tests

• À utiliser avec le fuzzing

• À utiliser avec des serveurs mandataires

42
vendredi 6 mars 2009 42
Scénarios
• Burp Suite
http://portswigger.net/suite/

• Firefox
• Selenium IDE
• Funkload
http://funkload.nuxeo.org/

• ProxyStrike
http://www.edge-security.com/proxystrike.php

43
vendredi 6 mars 2009 43
Scénarios
• SCRT Webshag
http://www.scrt.ch/pages_en/outils.html

• WebScarab
http://www.owasp.org/index.php/
Category:OWASP_WebScarab_Project

44
vendredi 6 mars 2009 44
Facilitez votre vie
• Backtrack
http://www.remote-exploit.org/backtrack.html

vendredi 6 mars 2009 45


Facilitez votre vie
• Samurai Web Testing Framework
http://samurai.inguardians.com/

vendredi 6 mars 2009 46


Sécure ?
vendredi 6 mars 2009 47
Les prolèmes

• Faux sentiment
sécurité

• Ne marche pas
toujours

vendredi 6 mars 2009 48


Notre cas

• La sécurité par
l’insécurité

• La sécurité par
l’instabilité

vendredi 6 mars 2009 49


Que faire?

• Tests manuels

• Les sources

• Installer l’application

vendredi 6 mars 2009 50


Les fichiers
total 592
drwxrwxrwx 25 user group 850 23 Feb 12:03 accueil
drwxrwxrwx 67 user group 2278 23 Feb 12:03 action
drwxrwxrwx 39 user group 1326 23 Feb 12:03 agent
drwxrwxrwx 13 user group 442 23 Feb 12:03 biblio
drwxrwxrwx 39 user group 1326 23 Feb 12:03 compte
-rwxrwxrwx 1 user group 7692 11 Sep 02:44 connect.php
-rwxrwxrwx 1 user group 3856 11 Sep 02:44 err_navig.php
-rwxrwxrwx 1 user group 3165 11 Sep 02:44 erreur404.php
drwxrwxrwx 76 user group 2584 23 Feb 12:03 etat
drwxrwxrwx 171 user group 5814 23 Feb 12:03 fonctions
drwxrwxrwx 8 user group 272 23 Feb 12:03 images
drwxrwxrwx 13 user group 442 23 Feb 12:03 include
-rwxrwxrwx 1 user group 2784 11 Sep 02:44 index.php
drwxrwxrwx 27 user group 918 23 Feb 12:03 install
drwxrwxrwx 80 user group 2720 23 Feb 12:03 inter_pages
drwxrwxrwx 6 user group 204 23 Feb 12:03 langue

drwxrwxrwx 7 user group 238 2 Mar 18:15 log
drwxrwxrwx 36 user group 1224 23 Feb 12:03 mail

vendredi 6 mars 2009 51


Les fichiers
total 592
drwxrwxrwx 25 user group 850 23 Feb 12:03 accueil
drwxrwxrwx 67 user group 2278 23 Feb 12:03 action
drwxrwxrwx 39 user group 1326 23 Feb 12:03 agent
drwxrwxrwx 13 user group 442 23 Feb 12:03 biblio
drwxrwxrwx 39 user group 1326 23 Feb 12:03 compte
-rwxrwxrwx 1 user group 7692 11 Sep 02:44 connect.php
-rwxrwxrwx 1 user group 3856 11 Sep 02:44 err_navig.php
-rwxrwxrwx 1 user group 3165 11 Sep 02:44 erreur404.php
drwxrwxrwx 76 user group 2584 23 Feb 12:03 etat
drwxrwxrwx 171 user group 5814 23 Feb 12:03 fonctions
drwxrwxrwx 8 user group 272 23 Feb 12:03 images
drwxrwxrwx 13 user group 442 23 Feb 12:03 include
-rwxrwxrwx 1 user group 2784 11 Sep 02:44 index.php
drwxrwxrwx 27 user group 918 23 Feb 12:03 install
drwxrwxrwx 80 user group 2720 23 Feb 12:03 inter_pages
drwxrwxrwx 6 user group 204 23 Feb 12:03 langue

drwxrwxrwx 7 user group 238 2 Mar 18:15 log
drwxrwxrwx 36 user group 1224 23 Feb 12:03 mail

vendredi 6 mars 2009 52


Les fichiers
total 592
drwxrwxrwx 25 user group 850 23 Feb 12:03 accueil
drwxrwxrwx 67 user group 2278 23 Feb 12:03 action
drwxrwxrwx 39 user group 1326 23 Feb 12:03 agent
drwxrwxrwx 13 user group 442 23 Feb 12:03 biblio
drwxrwxrwx 39 user group 1326 23 Feb 12:03 compte
-rwxrwxrwx 1 user group 7692 11 Sep 02:44 connect.php
-rwxrwxrwx 1 user group 3856 11 Sep 02:44 err_navig.php
-rwxrwxrwx 1 user group 3165 11 Sep 02:44 erreur404.php
drwxrwxrwx 76 user group 2584 23 Feb 12:03 etat
drwxrwxrwx 171 user group 5814 23 Feb 12:03 fonctions
drwxrwxrwx 8 user group 272 23 Feb 12:03 images
drwxrwxrwx 13 user group 442 23 Feb 12:03 include
-rwxrwxrwx 1 user group 2784 11 Sep 02:44 index.php
drwxrwxrwx 27 user group 918 23 Feb 12:03 install
drwxrwxrwx 80 user group 2720 23 Feb 12:03 inter_pages
drwxrwxrwx 6 user group 204 23 Feb 12:03 langue

drwxrwxrwx 7 user group 238 2 Mar 18:15 log
drwxrwxrwx 36 user group 1224 23 Feb 12:03 mail

vendredi 6 mars 2009 53


Les fichiers
total 592
drwxrwxrwx 25 user group 850 23 Feb 12:03 accueil
drwxrwxrwx 67 user group 2278 23 Feb 12:03 action
drwxrwxrwx 39 user group 1326 23 Feb 12:03 agent
drwxrwxrwx 13 user group 442 23 Feb 12:03 biblio
drwxrwxrwx 39 user group 1326 23 Feb 12:03 compte
-rwxrwxrwx 1 user group 7692 11 Sep 02:44 connect.php
-rwxrwxrwx 1 user group 3856 11 Sep 02:44 err_navig.php
-rwxrwxrwx 1 user group 3165 11 Sep 02:44 erreur404.php
drwxrwxrwx 76 user group 2584 23 Feb 12:03 etat
drwxrwxrwx 171 user group 5814 23 Feb 12:03 fonctions
drwxrwxrwx 8 user group 272 23 Feb 12:03 images
drwxrwxrwx 13 user group 442 23 Feb 12:03 include
-rwxrwxrwx 1 user group 2784 11 Sep 02:44 index.php
drwxrwxrwx 27 user group 918 23 Feb 12:03 install
drwxrwxrwx 80 user group 2720 23 Feb 12:03 inter_pages
drwxrwxrwx 6 user group 204 23 Feb 12:03 langue

drwxrwxrwx 7 user group 238 2 Mar 18:15 log
drwxrwxrwx 36 user group 1224 23 Feb 12:03 mail

vendredi 6 mars 2009 54


Les fichiers
total 592
drwxrwxrwx 25 user group 850 23 Feb 12:03 accueil
drwxrwxrwx 67 user group 2278 23 Feb 12:03 action
drwxrwxrwx 39 user group 1326 23 Feb 12:03 agent
drwxrwxrwx 13 user group 442 23 Feb 12:03 biblio
drwxrwxrwx 39 user group 1326 23 Feb 12:03 compte
-rwxrwxrwx 1 user group 7692 11 Sep 02:44 connect.php
-rwxrwxrwx 1 user group 3856 11 Sep 02:44 err_navig.php
-rwxrwxrwx 1 user group 3165 11 Sep 02:44 erreur404.php
drwxrwxrwx 76 user group 2584 23 Feb 12:03 etat
drwxrwxrwx 171 user group 5814 23 Feb 12:03 fonctions
drwxrwxrwx 8 user group 272 23 Feb 12:03 images
drwxrwxrwx 13 user group 442 23 Feb 12:03 include
-rwxrwxrwx 1 user group 2784 11 Sep 02:44 index.php
drwxrwxrwx 27 user group 918 23 Feb 12:03 install
drwxrwxrwx 80 user group 2720 23 Feb 12:03 inter_pages
drwxrwxrwx 6 user group 204 23 Feb 12:03 langue

drwxrwxrwx 7 user group 238 2 Mar 18:15 log
drwxrwxrwx 36 user group 1224 23 Feb 12:03 mail

vendredi 6 mars 2009 55


Les fichiers
cligraphcrm/include/fpdf:
total 376
-rwxrwxrwx 1 user group 46002 26 Jan 02:41 fpdf.php
-rwxrwxrwx 1 user group 705 11 Sep 02:44 fpdf_entete.php
-rwxrwxrwx 1 user group 47404 26 Jan 18:07 fpdf_facture.php
-rwxrwxrwx 1 user group 14922 26 Jan 14:50 fpdf_html2pdf.php
-rwxrwxrwx 1 user group 5238 11 Sep 02:44 fpdf_mem_image.php
-rwxrwxrwx 1 user group 7629 11 Sep 02:44 fpdf_memoire.php
-rwxrwxrwx 1 user group 1243 11 Sep 02:44 fpdf_table_def.inc
-rwxrwxrwx 1 user group 27075 11 Sep 02:44 fpdf_tableau.php
-rwxrwxrwx 1 user group 4317 11 Sep 02:44 fpdf_texte.php
-rwxrwxrwx 1 user group 12852 11 Sep 02:44 fpdf_writetag.php

vendredi 6 mars 2009 56


Les fichiers
cligraphcrm/include/fpdf:
total 376
-rwxrwxrwx 1 user group 46002 26 Jan 02:41 fpdf.php
-rwxrwxrwx 1 user group 705 11 Sep 02:44 fpdf_entete.php
-rwxrwxrwx 1 user group 47404 26 Jan 18:07 fpdf_facture.php
-rwxrwxrwx 1 user group 14922 26 Jan 14:50 fpdf_html2pdf.php
-rwxrwxrwx 1 user group 5238 11 Sep 02:44 fpdf_mem_image.php
-rwxrwxrwx 1 user group 7629 11 Sep 02:44 fpdf_memoire.php
-rwxrwxrwx 1 user group 1243 11 Sep 02:44 fpdf_table_def.inc
-rwxrwxrwx 1 user group 27075 11 Sep 02:44 fpdf_tableau.php
-rwxrwxrwx 1 user group 4317 11 Sep 02:44 fpdf_texte.php
-rwxrwxrwx 1 user group 12852 11 Sep 02:44 fpdf_writetag.php

vendredi 6 mars 2009 57


Les fichiers
cligraphcrm/install/sql/tables:
total 928
-rwxrwxrwx 1 user group 4750 29 Jan 10:44 acces.sql
-rwxrwxrwx 1 user group 4802 29 Jan 10:44 acces_type.sql
-rwxrwxrwx 1 user group 190 23 Nov 20:12 admin_crm.sql
-rwxrwxrwx 1 user group 1111 3 Feb 14:45 adresse.sql
-rwxrwxrwx 1 user group 1637 15 Jan 11:24 affaire.sql
-rwxrwxrwx 1 user group 578 17 Jan 19:27 affaire_intvt.sql
-rwxrwxrwx 1 user group 1544 22 Oct 17:49 affaire_pdt.sql
-rwxrwxrwx 1 user group 3231 3 Dec 19:15 agent.sql
-rwxrwxrwx 1 user group 581 22 Oct 17:49 argument.sql
-rwxrwxrwx 1 user group 3062 25 Jan 09:45 avoir.sql
-rwxrwxrwx 1 user group 1605 21 Jan 06:30 avoir_detail.sql
-rwxrwxrwx 1 user group 741 22 Oct 17:49 campagne.sql
-rwxrwxrwx 1 user group 701 22 Oct 17:49 campagne_promo.sql
-rwxrwxrwx 1 user group 537 22 Oct 17:49 categorie_pdt.sql
-rwxrwxrwx 1 user group 527 27 Jan 11:36 cgv.sql
-rwxrwxrwx 1 user group 547 11 Sep 02:44 civilite.sql
-rwxrwxrwx 1 user group 4871 22 Oct 17:49 client.sql

vendredi 6 mars 2009 58


Installation

vendredi 6 mars 2009 59


Installation

vendredi 6 mars 2009 60


Installation

vendredi 6 mars 2009 61


Installation

vendredi 6 mars 2009 62


Installation

vendredi 6 mars 2009 63


Installation

vendredi 6 mars 2009 64


Installation

vendredi 6 mars 2009 65


Installation

vendredi 6 mars 2009 66


Audit de code

vendredi 6 mars 2009 67


Ordre du jour

• Lire les logs et repérer les vulnérabilités

• Caractériser et supprimer les failles

• Evaluation du volume de correction

vendredi 6 mars 2009 68


Approche
• Un point d’entrée

• Lecture du code

• Ouverture d’esprit et découverte

• Identifier la faille

• Comment l’exploiter

vendredi 6 mars 2009 69


Outils existants
• Rats
http://www.fortifysoftware.com/security-resources/rats.jsp

• Yasca
http://www.yasca.org

/accueil/accueil.php:478: High: fopen


/action/facture_trt.php:170: High: eval
/include/pear/File_Archive/Archive/Reader/Bzip2.php:80:
High: bzopen
/mail/mess_suppr_trt.php:193: High: mail
/include/pear/PEAR/RunTest.php:449: High: system
/fonctions/gallery.func.php:95: Medium: is_dir
/include/pear/PEAR/Remote.php:296: Medium: fsockopen

vendredi 6 mars 2009 70


Trois moteurs

• Grep

• Les expressions rationnelles

• Le tokenizer

vendredi 6 mars 2009 71


Approches
Sémantique Rapide

700
• Sémantique : proche
des concepts PHP et 525
de programmation
350
• Rapide à mettre
en place et exécuter 175

0
Grep Regex Tokenizer

vendredi 6 mars 2009 72


Occurrences
$_GET $_POST $_REQUEST

Grep 137 604 2650

Regex 139 667 3279

Token 11 617 1518

vendredi 6 mars 2009 73


Choix

• One-liner contre temps de développement

• Précision sémantique face à recherche brute

• Rejouable ou jetable

vendredi 6 mars 2009 74


Points d’intérêt
• index.php

• index_bis.php

• err_nav.php

• out.php

• erreur404.php

• verif.php

vendredi 6 mars 2009 75


Points d’intérêt

Entrée Filtrage

Traitement Suivi

Sortie Protection

vendredi 6 mars 2009 76


Cheminement

$_GET pdo_query

pdo_fetch
echo

vendredi 6 mars 2009 77


Interfaces
• Navigateur • Système

• URL • Processus

• Cookies • PHP

• JavaScript • XML

• SQL • LDAP ...

vendredi 6 mars 2009 78


Navigateur
• Entrées

• $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE

• Sorties

• echo, print, var_dump

• Protections

• htmlentities, htmlspecialchars, strip_tags


ext/xmlwriter

vendredi 6 mars 2009 79


URL
• Entrées

• parse_url, urldecode, rawurldecode

• Sorties

• echo, print, http_build_url, http_build_query,


http_build_str

• Protections

• url_encode, rawurlencode

vendredi 6 mars 2009 80


Cookies
• Entrées

• $_COOKIES, $HTTP_COOKIE_VARS,
http_parse_cookies, session_name

• Sorties

• setcookies, setrawcookie, stream_context_create,


httpRequest::setcookies, http_build_cookie

• Protections

vendredi 6 mars 2009 81


JavaScript
• Entrées

• json_decode

• Sorties

• json_encode, echo, print

• Protections

• Rien vraiment

vendredi 6 mars 2009 82


SQL
• Entrées

• pdo_query, mysqli_query, query,

• Sorties

• *fetch*, mysqli_error

• Protections

• pdo_quote, mysqli_real_escape_string, etc.

vendredi 6 mars 2009 83


Fichiers
• Entrées

• fopen, file_get_contents, passthru

• Sorties

• fwrite, fread, mkdir,

• Protections

• pathinfo, realpath

vendredi 6 mars 2009 84


PHP
• Entrées

• eval, include, require et _once, dl, preg_replace,


assert

• Sorties

• var_export

• Protections

• Aucune pour le code, fichiers pour les autres.

vendredi 6 mars 2009 85


Système
• Entrées

• ini_get, set_limit, getenv, getmypid, phpversion,


phpinfo,

• Sorties

• ini_set, setenv

• Protections

• Aucune prévue

vendredi 6 mars 2009 86


Trouvailles

vendredi 6 mars 2009 87


Register_globals

• Register globals via fct_urldecode dans fonctions/


fonctions_gen.php

• Utilisation des superglobales, puis intuition sur le


nom de la fonction

• $GLOBALS[$k] et affectation

vendredi 6 mars 2009 88


Injections SQL

• $query="select theme_nom from theme where


theme_id=\"".$_REQUEST['theme_id']."\"";

• Passer par les requêtes SQL, et chercher les variables


globales

• Lire le contexte et repérer les variables sans filtrage

vendredi 6 mars 2009 89


err_nav.php XSS

• init_chem_crm est injecté directement

vendredi 6 mars 2009 90


Téléchargements

• Via les fonctions header()

• Téléchargement de fichiers dans lanceur_dl.php

• Pas de protection des variables, ni par session

vendredi 6 mars 2009 91


$_REQUEST DOS

• $_REQUEST est utilisé pour le logout

• if(isset($_REQUEST['opt']) && $_REQUEST['opt']==1)

• $_REQUEST == $_GET && $_POST && $_COOKIE

• Que se passe-t-il quand on pose un cookie ‘opt’ de 1?

vendredi 6 mars 2009 92


include
• $format=$_REQUEST['exp_formdoc'];

• include(fct_lien_page_custom("action/facture_".
$format.".php","abs"));

• Maitrise du chemin d’inclusion

• $exp_formdoc = "/../action/facture_fiche";
<- auto-inclusion!

• ou bien, tentative d’inclusion d’un phpinfo qui traine

vendredi 6 mars 2009 93


eval

• $nom=addslashes($_REQUEST['nom']);

• eval('insert_action_agent("'.
$LANG_AGENT['cgv_mod'].'",66,'.$param_id.',"","'.
$date_du_jour.'",2);');

• PHP injection!

vendredi 6 mars 2009 94


die

• $result2=$_SESSION['cligraph']->request($query2)
or die($_SESSION['cligraph']->errormsg)

• Interruption de script en cas de problème de


requêtes

• errormsg ne contient pas de message intéressant

vendredi 6 mars 2009 95


Code OK

• Opérateur @

vendredi 6 mars 2009 96