feat: Semaine 10
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Travail Pratique 02 - Florian POMPIDOU
|
||||
|
||||
> Vous avez vos sous-domaines. Maintenant votre chef de mission remonte la pression :
|
||||
> "Bien. On a les sous-domaines — maintenant je veux savoir ce qui tourne derrière. Versions, ports, CVE éventuelles. Et je veux que ce soit automatisé — si demain le client change d'infra, on relance le script et on a les résultats en 30 secondes. Je ne veux plus faire ça à la main."
|
||||
|
||||
## 0. Préparation
|
||||
|
||||
- Définir la portée du projet
|
||||
- Voir le dépôt Python officiel de Shodan
|
||||
- Amorcer le projet
|
||||
- Commencer le script
|
||||
- Tester le script
|
||||
- Hélitreuiller le lama
|
||||
|
||||
## 1. Documentation
|
||||
|
||||
Le site a un onglet "Developer" et de là des liens vers des API selon la stack. Je prends Python : https://github.com/achillean/shodan-python
|
||||
|
||||
Faisant détox de l'IA, mais ayant pour seule doc un site tiers de 2014 (en python 2... on n'est pas dans la merde), je tente avec une IA (Gemini Pro) mais l'éthique la force à dire "non". Je pourrais lui tirer les vers du nez, truander, mais... non, je tente autre chose de tout nouveau qui vient de sortir : "faire mes propres recherches". Incroyable.
|
||||
|
||||
## 2. Script Python
|
||||
|
||||
Je mets en place une clef API (si j'oublie de l'enlever du document, pas d'inquiétude, je vais la réinitialiser à la fin) et je fais un banal script qui prend une IP en argument :
|
||||
|
||||

|
||||
|
||||
Bon, ça marche, j'ai un bloc JSON non structuré. Ca promet d'être marrant.
|
||||
|
||||
Je tombe sur un script qui fait à peu près ce que je veux (https://github.com/TiiTcHY/ShoDomain-Seeker/blob/main/ShoDomain_Seeker.py) et je me dis qu'après tout, hein. Voilà quoi. Je pique juste ce qui m'intéresse.
|
||||
|
||||
Sauf que c'est pour un compte payant.
|
||||
|
||||
Je ré-écris tout pour taper sur la bibliothèque publique Shodan...
|
||||
|
||||
Et j'ai encore du 403 :
|
||||
|
||||

|
||||
|
||||
### Oh et puis zut
|
||||
|
||||
Je ne vois pas comment je peux faire ça en 3 heures avec une doc pétée en n'étant guère développeur de base. Mais je garde de la technicité dans mon approche. J'ai besoin d'une IA, mais sans censure. J'installe alors un modèle personnalisé de Qwen3.5 9B totalement chargé sur ma carte graphique, et j'enregistre un serveur MCP local pour l'agent IA de VSCode et je fais tourner la bourrique.
|
||||
|
||||
Parce que "convertir" un script de 200 lignes sur une autre stack à une heure du rendu, très peu pour moi.
|
||||
|
||||
### Mais c'est un complot en fait
|
||||
|
||||
BON, maintenant j'ai un 401 parce que j'ai encore confondu PAT et clef API. Je réadapate le script pour un PAT et...
|
||||
|
||||
```
|
||||
[*] Démarrage du scan global v3 pour : tesla.com
|
||||
[-] Erreur API (403): {"title":"Forbidden","status":403,"detail":"This endpoint requires an organization ID for API access. Free users can only access this endpoint through the Platform UI."}
|
||||
```
|
||||
|
||||
Non mais là c'est bon.
|
||||
|
||||
J'abandonne l'idée d'avoir un résultat et je vais juste commenter le code censys. Définir les fonctions et le rendre maintenable.
|
||||
|
||||
## 3. Test de la plateforme
|
||||
|
||||
A défaut de faire des requêtes en script, je tente sur la Plateforme, que je vois un peu le résultat.
|
||||
|
||||
Je réussis à faire une requête pour avoir un retour attendu en script :
|
||||
|
||||
```sql
|
||||
((host.dns.names: "tesla.com" and host.services.endpoints.http.uri: *) and host.ip: *) and host.services.port = "21"
|
||||
```
|
||||
|
||||
Je filtre par "21", port FTP par défaut, parce que c'est notoirement un port tout pourri. Je trouve un résultat qui me permet de regarder un peu le détail :
|
||||
|
||||

|
||||
|
||||
Bon, il n'y a rien... mais s'il y avait eu, il aurait fallut payer :
|
||||
|
||||

|
||||
|
||||
Non mais à ce stade faisons du NMAP et recoupons avec Metasploit. La main manuelle de l'homme, y a que ça de vrai.
|
||||
Reference in New Issue
Block a user