- Reaction score
- 112
- EasyCred
- 3,814
Objectif
Créer un script Python qui teste la sécurité d'un site web, nous allons utiliser plusieurs outils de la bibliothèque standard ainsi que des modules externes comme `requests` et `BeautifulSoup`.
Ce script permettra de vérifier des vulnérabilités courantes telles que l'injection SQL et les failles XSS (Cross-Site Scripting).
Voici un exemple de script qui analyse un site web pour certaines de ces vulnérabilités :
Installation des dépendances
Assurez-vous d'avoir les modules suivants installés. Vous pouvez les installer via pip :
Script de test de sécurité
Un code de base :
Explications du code :
1.Imports:
Nous importons les bibliothèques nécessaires.
2.Classe `SecurityTester`:
Cette classe contient des méthodes pour tester différentes vulnérabilités.
- `check_sql_injection` : Teste des payloads courants pour l'injection SQL.
- `check_xss` : Teste des scripts malveillants pour détecter d'éventuelles failles XSS.
- `check_security_headers` : Vérifie la présence d'en-têtes de sécurité HTTP essentiels.
3.Méthode `run_tests` :
Exécute toutes les méthodes de test et affiche les résultats.
4.Exécution du script:
Permet à l'utilisateur de saisir l'URL du site à tester.
Avertissement :
EnjoyCoding
Créer un script Python qui teste la sécurité d'un site web, nous allons utiliser plusieurs outils de la bibliothèque standard ainsi que des modules externes comme `requests` et `BeautifulSoup`.
Ce script permettra de vérifier des vulnérabilités courantes telles que l'injection SQL et les failles XSS (Cross-Site Scripting).
Voici un exemple de script qui analyse un site web pour certaines de ces vulnérabilités :
Installation des dépendances
Assurez-vous d'avoir les modules suivants installés. Vous pouvez les installer via pip :
Bash:
pip install requests beautifulsoup4
Script de test de sécurité
Un code de base :
Python:
import requests
from bs4 import BeautifulSoup
class SecurityTester:
def __init__(self, url):
self.url = url
def check_sql_injection(self):
payloads = ["' OR '1'='1", "' OR '1'='2", "'; DROP TABLE users; --"]
for payload in payloads:
response = requests.get(self.url + payload)
if "error" not in response.text.lower():
print(f"Possible SQL injection vulnerability found with payload: {payload}")
return True
print("No SQL injection vulnerabilities detected.")
return False
def check_xss(self):
payloads = ["<script>alert('XSS')</script>", "'><script>alert('XSS')</script>"]
for payload in payloads:
response = requests.get(self.url + f"?input={payload}")
if payload in response.text:
print(f"Possible XSS vulnerability found with payload: {payload}")
return True
print("No XSS vulnerabilities detected.")
return False
def check_security_headers(self):
response = requests.get(self.url)
headers = response.headers
if 'X-Content-Type-Options' not in headers:
print("Missing X-Content-Type-Options header.")
if 'X-Frame-Options' not in headers:
print("Missing X-Frame-Options header.")
if 'X-XSS-Protection' not in headers:
print("Missing X-XSS-Protection header.")
if 'Content-Security-Policy' not in headers:
print("Missing Content-Security-Policy header.")
print("Security headers checks completed.")
def run_tests(self):
print(f"Running security tests on: {self.url}")
self.check_sql_injection()
self.check_xss()
self.check_security_headers()
if __name__ == "__main__":
url = input("Veuillez entrer l'URL du site à tester (ex: http://example.com): ")
tester = SecurityTester(url)
tester.run_tests()
Explications du code :
1.Imports:
Nous importons les bibliothèques nécessaires.
2.Classe `SecurityTester`:
Cette classe contient des méthodes pour tester différentes vulnérabilités.
- `check_sql_injection` : Teste des payloads courants pour l'injection SQL.
- `check_xss` : Teste des scripts malveillants pour détecter d'éventuelles failles XSS.
- `check_security_headers` : Vérifie la présence d'en-têtes de sécurité HTTP essentiels.
3.Méthode `run_tests` :
Exécute toutes les méthodes de test et affiche les résultats.
4.Exécution du script:
Permet à l'utilisateur de saisir l'URL du site à tester.
Avertissement :
Utilisez ce script uniquement pour tester les sites web pour lesquels vous avez une autorisation explicite. Le test de sécurité sur des sites sans permission peut être illégal et contraire à l'éthique.
Les tests effectués ici sont très basiques et doivent être considérés comme un point de départ. Pour des tests de sécurité plus complets, envisagez d'utiliser des outils spécialisés tels que OWASP ZAP ou Burp Suite.
EnjoyCoding
Last edited: