feat: Semaine 10
This commit is contained in:
@@ -0,0 +1,240 @@
|
||||
# Travail Pratique 01 - Florian POMPIDOU
|
||||
|
||||
> Vous intégrez l'équipe Red Team de Synapse Security, une société de conseil en sécurité offensive. Premier dossier du matin : votre chef de mission vous transmet un bref email.
|
||||
> "Tesla vient de signer un contrat d'audit de surface. Ils exposent du SaaS B2B. On a zéro doc interne — commencez par mapper ce qui est visible de l'extérieur. Périmètre : tesla.com et ses sous-domaines. Reconnaissance passive uniquement. Réunion client dans 4h — je veux un livrable exploitable. Bon courage."
|
||||
> Vous n'avez aucun template, aucune liste de tâches. C'est une vraie mission.
|
||||
|
||||
## 0. Les prérequis
|
||||
|
||||
- L'usage veut que j'ai quelques sécurités derrière moi. En temps normal, je me connecterais au réseau TOR quitte à sacrifier de la vitesse, sur le navigateur dédié. Pour l'exercice, je vais simplement passer sur un **VPN double-connexion Islande -> Pays-Bas -> Ordinateur**.
|
||||
- En plus de cela, j'utiliserais Kali 2025.4 sur VirtualBox, l'image officielle de Kali, mais avec 8 vCPUs et 8GB RAM. Parce qu'elle était déjà installée et que ça ira plus vite.
|
||||
- Un compte SHODAN (que je ne connaissais pas mais qui va sembler pratique) avec un compte enregistré par un alias SimpleLogin gratuit derrière un compte ProtonMail secondaire.
|
||||
|
||||
## 1. Plan de reconnaissance documenté
|
||||
|
||||
- Voir ce qu'on obtient en cherchant dans un moteur de recherche
|
||||
- Voir un résultat WHOIS
|
||||
- Voir un résultat SHODAN
|
||||
- Voir un rapport récupéré de quelqu'un d'autre qui aurait fait un NMAP (c'est passif !)
|
||||
|
||||
### Moteur de recherche
|
||||
|
||||
tesla.com, c'est facile à taper. On regarde la première page et voyons ce qu'on peut relever :
|
||||
|
||||

|
||||
|
||||
Evidemment, on a la vitrine commerciale, Wikipédia et les réseaux sociaux. On peut tenter un "More results from this site" pour filtrer sur le domaine :
|
||||
|
||||

|
||||
|
||||
Bon, j'ai beaucoup du domaine principal, mais je détecte en fin de page 1 (et rien en page 2) trois sous-domaines intéressants :
|
||||
|
||||

|
||||
|
||||
"IR", avec en intitulé "Investor Relations". J'ouvre avec WebArchive pour voir un peu :
|
||||
|
||||

|
||||
|
||||
Han. Je regarde sur ma machine Kali et même chose :
|
||||
|
||||

|
||||
|
||||
Ca n'aime pas les VPNs ! Tant mieux, je n'ai pas envie d'investir dans cette boîte de merde et donner de la valeur à son abruti de patron. Et puis j'ai pas d'argent.
|
||||
|
||||
### WHOIS
|
||||
|
||||
La première solution passive pour scanner un peu ce qui se tape de l'extérieur, c'est un très simple [WHOIS](https://www.whois.com). Je pourrais le faire depuis mon terminal, mais considérons que c'est de l'actif dans le cas présent.
|
||||
|
||||
[J'obtiens un rapport classique](https://www.whois.com/whois/tesla.com) :
|
||||
|
||||

|
||||
|
||||
Enregistré à San Francisco, depuis 1992, sécurité de base, etc. Ca ne m'apprend pas grand chose comme ça.
|
||||
|
||||
Quelque peu déçu, je passe sur [https://mxtoolbox.com/](MXToolBox) pour avoir un WHOIS complet (incluant MX, TXT, etc) et c'est déjà plus intéressant :
|
||||
- [TXT](https://mxtoolbox.com/SuperTool.aspx?action=txt%3atesla.com&run=toolpage)
|
||||
- [MX](https://mxtoolbox.com/SuperTool.aspx?action=txt%3atesla.com&run=toolpage)
|
||||
- [CNAME](https://mxtoolbox.com/emailhealth/tesla.com/) => J'ai un 403. Intéressant. Ils veulent vraiment bloquer ça...
|
||||
- [SPF](https://mxtoolbox.com/SuperTool.aspx?action=txt%3atesla.com&run=toolpage) => Que de l'adresse fixe. On peut connaître les étendues d'IP aptes à utiliser les services Tesla, ce qui veut dire qu'en recoupant chacune et avec un test actif dans NMAP, on peut retrouver quasi TOUT l'écosystème "agreé" tesla.com.
|
||||
- [DNS](https://mxtoolbox.com/SuperTool.aspx?action=txt%3atesla.com&run=toolpage)
|
||||
- [DMARC](https://mxtoolbox.com/SuperTool.aspx?action=txt%3atesla.com&run=toolpage)
|
||||
|
||||
Je fais deux autres services dédiés CNAME et j'ai des retours négatifs. Hm. Mais j'ai UN rapport de [WhatsMyDNS](https://www.whatsmydns.net/dns-lookup/cname-records?query=tesla.com&server=cloudflare) qui indique des autorités DNS :
|
||||
|
||||
```
|
||||
id 64655, opcode QUERY, rcode NOERROR, flags QR RD RA
|
||||
;QUESTION
|
||||
tesla.com. IN CNAME
|
||||
;ANSWER
|
||||
;AUTHORITY
|
||||
tesla.com. 86400 IN SOA edns69.ultradns.com. domain.teslamotors.com. 2016025264 1800 86400 86400 86400
|
||||
;ADDITIONAL
|
||||
```
|
||||
|
||||
On a un autre domaine "teslamotors.com" qui pourrait faire l'affaire. On note en tout cas.
|
||||
|
||||
### SHODAN
|
||||
|
||||
Je ne connais pas, mais je pense que ça sera plus complet. Pour "tester" comme un béotien moyen, je tape juste "tesla.com" dans la barre de recherche.
|
||||
|
||||
Et bien... je ne suis malgré tout pas déçu :
|
||||
|
||||

|
||||
|
||||
ALors je n'obtiens paaaas grand chose comme ça, mais j'ai déjà un rapport un peu plus détaillé sur ce qui est ouvert ou non :
|
||||
|
||||

|
||||
|
||||
Des ports, du service web, des emplacements... des versions TLS. Empreintes JARM et JA3S... voilà, faisons comme si je connaissais. Je regarde vite fait et j'obtiens cette définition d'un article de Fastly.com (inconnu au bataillon) dans l'article "What is TLS fingerprinting ?" :
|
||||
|
||||
> JARM is used to scan and identify servers and provides more uniqueness compared to JA3S. Unlike JA3S, which utilizes passive observation, JARM involves active scanning to solicit information from servers.
|
||||
|
||||
Bon, je crois comprendre à peu près. Ce ne me servira pas à grand chose présentement.
|
||||
|
||||
### Conclusion
|
||||
|
||||
Frustré de n'être que le passif dans cette relation, je cherche un peu par mot-clefs et j'obtiens un rapport de 2020 faisant état d'un NMAP sur tesla.com : [Recon Pipeline](https://recon-pipeline.readthedocs.io/en/latest/overview/viewing_results.html). C'est peut-être obsolète, mais sachant qu'une boîte de cette taille peut avoir des dettes techniques de 15-20 ans, je considère pour l'exercice qu'elle est encore à peu près à jour. Et c'est la poule aux oeufs d'or :
|
||||
|
||||
```
|
||||
[db-2] recon-pipeline> view targets --paged
|
||||
3.tesla.cn
|
||||
3.tesla.com
|
||||
api-internal.sn.tesla.services
|
||||
api-toolbox.tesla.com
|
||||
api.mp.tesla.services
|
||||
api.sn.tesla.services
|
||||
api.tesla.cn
|
||||
api.toolbox.tb.tesla.services
|
||||
|
||||
[db-2] recon-pipeline> view endpoints --paged
|
||||
[200] http://westream.teslamotors.com/y
|
||||
[301] https://mobileapps.teslamotors.com/aspnet_client
|
||||
[403] https://209.133.79.49/analog.html
|
||||
[302] https://209.133.79.49/api
|
||||
[403] https://209.133.79.49/cgi-bin/
|
||||
[200] https://209.133.79.49/client
|
||||
|
||||
[db-2] recon-pipeline> view nmap-scans --paged
|
||||
2600:9000:21d4:7800:c:d401:5a80:93a1 - http
|
||||
===========================================
|
||||
|
||||
[db-2] recon-pipeline> view ports --paged
|
||||
apmv3.go.tesla.services: 80
|
||||
autodiscover.teslamotors.com: 80
|
||||
csp.teslamotors.com: 443
|
||||
image.emails.tesla.com: 443
|
||||
marketing.teslamotors.com: 443
|
||||
partnerleadsharing.tesla.com: 443
|
||||
service.tesla.cn: 80
|
||||
shop.uk.teslamotors.com: 8080
|
||||
sip.tesla.cn: 5061
|
||||
|
||||
[db-2] recon-pipeline> view searchsploit-results --paged
|
||||
52.209.48.104, 34.252.120.214, 52.48.121.107, telemetry-eng.vn.tesla.services
|
||||
=============================================================================
|
||||
local | 40768.sh | Nginx (Debian Based Distros + Gentoo) - 'logrotate' Local Privilege
|
||||
| Escalation
|
||||
remote | 12804.txt| Nginx 0.6.36 - Directory Traversal
|
||||
local | 14830.py | Nginx 0.6.38 - Heap Corruption
|
||||
webapps | 24967.txt| Nginx 0.6.x - Arbitrary Code Execution NullByte Injection
|
||||
dos | 9901.txt | Nginx 0.7.0 < 0.7.61 / 0.6.0 < 0.6.38 / 0.5.0 < 0.5.37 / 0.4.0 <
|
||||
| 0.4.14 - Denial of Service (PoC)
|
||||
remote | 9829.txt | Nginx 0.7.61 - WebDAV Directory Traversal
|
||||
remote | 33490.txt| Nginx 0.7.64 - Terminal Escape Sequence in Logs Command Injection
|
||||
remote | 13822.txt| Nginx 0.7.65/0.8.39 (dev) - Source Disclosure / Download
|
||||
remote | 13818.txt| Nginx 0.8.36 - Source Disclosure / Denial of Service
|
||||
remote | 38846.txt| Nginx 1.1.17 - URI Processing SecURIty Bypass
|
||||
remote | 25775.rb | Nginx 1.3.9 < 1.4.0 - Chuncked Encoding Stack Buffer Overflow
|
||||
| (Metasploit)
|
||||
dos | 25499.py | Nginx 1.3.9 < 1.4.0 - Denial of Service (PoC)
|
||||
remote | 26737.pl | Nginx 1.3.9/1.4.0 (x86) - Brute Force
|
||||
remote | 32277.txt| Nginx 1.4.0 (Generic Linux x64) - Remote Overflow
|
||||
webapps | 47553.md | PHP-FPM + Nginx - Remote Code Execution
|
||||
|
||||
[db-2] recon-pipeline> view web-technologies --type "Programming languages"
|
||||
PHP (Programming languages)
|
||||
===========================
|
||||
|
||||
- www.tesla.com
|
||||
- dummy.teslamotors.com
|
||||
- 209.10.208.20
|
||||
- 211.147.80.206
|
||||
- trt.tesla.com
|
||||
- trt.teslamotors.com
|
||||
- cn-origin.teslamotors.com
|
||||
- www.tesla.cn
|
||||
- events.tesla.cn
|
||||
- 23.67.209.106
|
||||
- service.teslamotors.com
|
||||
|
||||
Python (Programming languages)
|
||||
==============================
|
||||
|
||||
- api-toolbox.tesla.com
|
||||
- 52.26.53.228
|
||||
- 34.214.187.20
|
||||
- 35.166.29.132
|
||||
- api.toolbox.tb.tesla.services
|
||||
- toolbox.teslamotors.com
|
||||
- 209.133.79.93
|
||||
|
||||
Ruby (Programming languages)
|
||||
============================
|
||||
|
||||
- storagesim.teslamotors.com
|
||||
- 209.10.208.39
|
||||
```
|
||||
|
||||
Voilà. Je m'arrête là, dans deux minutes je déclare la guerre nucléaire à cette entreprise des enfers.
|
||||
|
||||
## 2. Script Python `crtsh_recon.py`
|
||||
|
||||
> Écrivez un script Python qui interroge l'API publique de crt.sh et extrait automatiquement les sous-domaines du domaine cible.
|
||||
> Comportement attendu :
|
||||
```
|
||||
$ python crtsh_recon.py tesla.com
|
||||
[*] Interrogation de crt.sh pour tesla.com...
|
||||
[+] 14 certificats trouvés
|
||||
[+] Sous-domaines uniques :
|
||||
api.tesla.com
|
||||
staging.tesla.com
|
||||
vpn.tesla.com
|
||||
...
|
||||
[*] Export → tesla_subdomains.txt
|
||||
```
|
||||
> Le script doit : dédupliquer les résultats, filtrer les wildcards (*.tesla.com), exporter vers un fichier texte, et gérer proprement les erreurs réseau.
|
||||
|
||||
### Erreur 502
|
||||
|
||||
Site trop demandé visiblement :3 c'est pas d'bol.
|
||||
|
||||
Sinon j'avais trouvé [ce script par "YashGoti"](https://github.com/YashGoti/crtsh) qui semblait parfait. J'aurais sûrement fait un truc en rapport, en modifiant pour répondre aux critères (affiche dynamique, export en fichier teste [format CSV je pense] etc.)
|
||||
|
||||
Je pourrais prendre leur paquet en local, mais ça serait de l'actif.
|
||||
|
||||
### Alternative 1
|
||||
|
||||
Je regarde un post Reddit demandant une alternative à CRT.sh et je tombe sur SSLBoard.com. Après tout, pourquoi pas ?
|
||||
|
||||
Alors, il n'y a pas d'API on dirait, alors je prends [juste un rapport Web](https://sslboard.com/report/aa6986c4-8db7-493d-8fd7-6011d01e890f) en attendant :
|
||||
|
||||

|
||||

|
||||
|
||||
Alors il y a une version payante, donc... hm.
|
||||
|
||||
### Alternative 2
|
||||
|
||||
Dans le même post Reddit, j'apprends l'existence de "Merklemap". Je tente une recherche dessus et [j'obtiens encore un Pay2Gain](https://www.merklemap.com/search?query=*.tesla.com&page=0), mais exploitable en soit :
|
||||
|
||||

|
||||
|
||||
Plus de 500 certificats ? Et beh.
|
||||
|
||||
### Les alternatives
|
||||
|
||||
Sur le site de Let's Encrypt (je suis d'avis qu'ils s'y connaissent en certificat, mais je ne saurais l'affirmer 🥸) j'obtiens une liste de ces services ouverts : https://community.letsencrypt.org/t/certificate-transparency-search-resources/203368
|
||||
|
||||
On a deux autres services offrant une API, CertStream en Python : https://github.com/CaliDog/certstream-python
|
||||
|
||||
Mais il est presque l'heure de rendre, j'abandonne l'idée d'un script manuellement rédigé pour le moment.
|
||||
Reference in New Issue
Block a user