vendredi 29 mars 2013

Advanced WAF bypassing

//Si vous ne comprenez pas quelque chose, commentaire!

0x01~ Introduction
0x02~ WAF.. ouaf?!
0x03~ Application


0x01~ Introduction

Les injections SQL sont, je dirais, la faille la plus rependu sur le web, je dirais que cela représente entre 80/90 % des failles présentent sur le network.
Pour cela, les développeurs ont commencé à se méfier, ils ont mit en place se qu'on appelle des WAF ou bien des IDS*
Aujourd'hui, on va s’intéresser au WAF, et comme tout système, c'est faillible Smile ou plutôt.. Bypassable?

* Système de détection d’intrusion

0x02~ WAF.. ouaf?!

Peut-être le prononcez vous juste à là, "ouaf" mais c'est en fait un acronyme, l'acronyme de "Web Application Firewall" (<= enfin je crois xD) ou mieux dit: filtres d’applications Web

Comme il l'indique, il filtre, mais quoi? du café?
Non, des mots (enfin presque).
Très utilisé par les développeurs notamment pour contrer les failles du type XSS ou SQLi.

0x03~ Application

Pour bypasser ce fameux filtre, il existe pleins de techniques dont je parlerais plus tard.

Aujourd'hui je vais vous parlé d'un moyen de bypass qui n'a pas de nom à ma connaissance (dîtes en commentaire si vous le savez), on va l’appeler "arobase" tout au long de ce tutoriel.

Alors justement vous'mdirez, pourquoi "arobase"?

Bon, pour ceux qui ne le savent pas encore, "arobase" est le signe "@".

Prenons l'exemple d'un site vulnérable à une injection sql, on va mettre notre strophe comme d'habitude etc.. etc.. mais il s'avère que celui si nous renvois "403 forbidden" Rahhh!

à votre avis, qu'est-ce que ça peut bien être Û_u ?
- Oui, bien joué! il s'agit bien d'un WAF!

Dans cet exemple, le WAF bloque les lettres après SELECT (et non pas les chiffres)

Comme ceci =>


Citation :id?=-2 UNION ALL SELECT 1,version(),3--

Donc, on voit bien la présence de "version()" qui est bien après SELECT, et qui je l'espère, vous l'aurez compris, sont des lettres.

On va donc utilisé l'arobase, qui va nous servir comme une sorte de préfixe.

Faites comme si vous programmer et que vous assignez une valeur à l'arobase (qui est un peu de la triche)

Citation :?id=-2 and (@:=version()) union select 1,@,3

Ainsi, nous n'avons plus de lettres après SELECT, et nous sommes donc en mesure de bypasser le filtre:


 [Image: 112168Sanstitre.png]

0 commentaires: