Day #19 of #100DaysOfCyber : Le concept du jour l'#OS#Command#Injection
Après avoir vu les exécutions de code via les uploads de fichiers, aujourd'hui on va parler d'une autre faille hyper critique : l'OS Command Injection (Injection de commandes système).
Le concept est simple : cette faille arrive quand le backend prend une entrée utilisateur et la passe directement à une fonction qui exécute des commandes sur le terminal du serveur (comme system() ou exec()), sans rien nettoyer.
Imaginez une application web où le dev veut créer une fonctionnalité pour tester la connectivité d'une adresse IP. Côté code backend, il fait ça :system("ping -c 4 " + ip_user);
Ce que le dev attend : L'utilisateur tape 8.8.8.8, et le serveur exécute sagement ping -c 4 8.8.8.8.
Ce que fait le pentester : Il sait comment fonctionnent les terminaux. À la place d'une simple IP, il va injecter des opérateurs comme ;, && ou |. Par exemple, il va envoyer : 8.8.8.8 ; whoami.
Du coup, le serveur va exécuter aveuglément deux commandes à la suite : d'abord le ping, puis le ; va forcer le terminal à lancer la commande suivante : whoami.
À partir de là, le pentester a un accès direct au terminal. Il lui suffit d'enchaîner avec un ls -la, un cat pour lire des fichiers confidentiels, ou carrément injecter un Reverse Shell pour prendre le contrôle total de la machine.
#Un dev qui comprend la sécurité.
#Un pentester qui comprend le code.
@_makh0u
#Cybersecurity #WebSecurity #DevSecOps #Backend #CommandInjection #RCE #FullStack
Day #18 of #100DaysOfCyber | Lab : Exploitation d'une faille d'upload de fichier
Comme on l'a vu lors du Day 16, il ne faut jamais se fier au #Content-Type pour la vérification des fichiers côté Backend.
Pour valider ce lab, je devais récupérer le contenu du fichier /home/carlos/secret.
L'application possède une fonctionnalité d'upload pour la photo de profil. J'ai commencé par uploader directement mon script PHP pour extraire le contenu, mais le Backend a refusé en m'indiquant qu'il acceptait uniquement les images JPEG ou PNG.👇
Day #16 of #100DaysOfCyber | Concept du jour : Contourner la validation du Content-Type
Hier, on a vu le cas où un serveur n'avait aucune sécurité. Dans la vraie vie, les développeurs mettent des protections.
Aujourd'hui, on voit comment contourner un filtre basé sur le Content-Type.
Comment fonctionne ce filtre ?
Quand tu uploades une image, ton navigateur envoie une requête HTTP contenant une ligne appelée Content-Type. Par exemple : Content-Type: image/jpeg.
L'erreur classique en dev, c'est de lire cette ligne côté Backend et de lui faire aveuglément confiance. Si le serveur voit image/jpeg, il valide l'upload sans vérifier le contenu réel.
Comme cette ligne est générée par le navigateur, un attaquant peut la modifier en deux secondes.
L'attaquant envoie son script exploit.php. Le navigateur génère automatiquement : Content-Type: application/x-php.
Le serveur bloque la requête.
L'attaquant intercepte la requête avec Burp Suite et remplace manuellement la ligne par : Content-Type: image/jpeg.
Le Backend est trompé : il croit recevoir une photo et accepte le fichier. Le script PHP est enregistré sur le serveur.
Le Content-Type est une donnée utilisateur modifiable. On ne doit jamais lui faire confiance pour valider la sécurité d'un fichier. La seule vraie solution reste l'analyse des fichiers côté Backend.
#Un dev qui comprend la sécurité.
#Un pentester qui comprend le code.
@PamIbrahimaBaba@_makh0u@MDLD_
#Cybersecurity #WebSecurity #FileUpload #Bypass #BurpSuite #Backend #FullStack
Day #14 of #100DaysOfCyber | SAKR : #Smart Recon
J'ai travaillé sur la v1 du module Smart Recon.
Avant, je perdais beaucoup de temps pour réussir à regrouper toutes ces informations. Avec SAKR, j'ai tout centralisé en un seul clic autour de 3 étapes simples :
- Trouver : L'application récupère les sous-domaines de manière passive, sans toucher à la cible, en passant par des outils existants comme https://t.co/d6wAo6ExfM.
- Vérifier : Elle teste si les serveurs répondent, identifie le cloud provider et récupère les codes status de chaque page.
- Trier : Plus besoin de chercher, on obtient le résultat directement dans un tableau propre et on sait exactement par où commencer .
En quelques secondes, la cartographie est prête.
#Un dev qui comprend la sécurité.
#Un pentester qui comprend le code.
@PamIbrahimaBaba@_makh0u
#Cybersecurity #WebSecurity #SAKR #Reconnaissance #SmartRecon
@joshmanders@dhh@Cloudflare Haha fair enough 😂 It’s Intel’s new chip architecture — might give that M1 a run for its money. But a lake of panthers would also be a solid upgrade tbh
@strzibnyj Been an Omakub user since day one then tried Omarchy for like one day (not stable at that time), moved back to Omakub and felt completely lost 😅 GNOME suddenly felt heavy after just a few hours on a tiling WM. That’s when I knew there was no going back. Thanks @dhh