Algunas de mis experiencias y como empecé:
Cuando tenía 12 o 13 años, mi madre me compró un portatil/laptop como sorpresa, creo que por un cumpleaños, mas o menos por el año 2007. Mi madre no sabía ni lo que era un PC, asique no tenía internet, ni pendrive, ni nada, por lo que era un Windows Vista con el que no podía hacer casi nada. Me aburría asique me fuí a un cibercafé con un mp4 y pensé en que programas y "cosas" podía descargar para poder hacer "algo" con el portátil.
Una de las primeras cosas que me descargué fue el Dreamweaver, y varios tutoriales sobre desarrolo web y html, para aprender a hacer páginas web.El Dreamweaver era un programa que te salía una lista de elementos web que podías arrastrar a la pantalla. Por ejemplo arrastrabas los formularios a la pantalla y te generaba el código sin programar nada.
Tenía curiosidad por entender como funcionaba por detrás todo. Asique al cabo de un tiempo di con este foro y con su Warzone. En la warzone había ejercicios (hoy conocidos como CTF) en los que se incluían por ejemplo, modificar cabeceras http con la extensión para navegador http headers.
Este descubrimiento del protocolo http y otros temas del foro me llevó a instalar un Ubuntu Server con LAMP en el portátil. También a aprender C++, PHP y JS. Y a buscar por Google otros proyectos similares a la Warzone, como hackthissite.org, google-gruyere.appspot.com, etc.
En el momento que me centré en JS, tras 2 años aprendiendo C++, aprendí a explotar XSS y las vulnerabilidades clásicas como SQLi, csrf, etc.
De ahí vino mi primer "hackeo" real. Leyendo blogs aprendí lo que eran Dorks (búsquedas en google avanzadas para encontrar páginas que comunmente suelen tener tecnologías vulnerables. Por ejemplo: "intranet inurl:login ext:aspx" y empecé a probar la "cadena mágica" de sqli en distintos portales. Adentrándome en servidores de todo tipo, subiéndoles ncat usando los propios paneles (estilo cpane y webminl) de control de las páginas y servidores, evadiendo distintos AV para colar los ncat y shells reversas, etc.
Al principio explotaba todo lo que veía. Nunca causaba daños y muchas veces ni reportaba los fallos, simplemente exploraba un poco y si me apetecía les metía el fix y me salía, o simplemente me iba sin mas tras explorar un poco y descargarme algún programa que tenía el servidor.
Mas adelante empecé a buscar fallos de seguridad en servicios que utilizaba todos los días. Por ejemplo en elhacker.net reporté algún fallo de seguridad (como extraer los token csrf de los usuarios, hacer DOS a posts o inyecciones html en uno de los componentes), en
https://www.w3schools.com/ encontré varios XSS y csfr. ETC.
https://bugwriteups.netlify.app/#writeups/xss Aquí tienes el blog que hice hace tiempo sobre algunas vulns.
Después empecé a investigar fallos de seguridad mucho mas avanzados o nicho que muchos no conocerán, como puedan ser HTML dangling, DOM clobbering, etc. Y empecé a trabajar en grupos con otros hackers. Al principio haciendo exploits webs y escalando vulnerabilidades para compañeros que trabajan en consultoras y/o bug hunting. También empecé a desarrollar mis propias herramientas de ciberseguridad y a buscar bugs por mi cuenta en todo tipo de software. Desde entonces encontré muchos fallos de seguridad en servicios y tecnologías de todo tipo. Sin dar muchos detalles; cámaras web, motores de búsqueda, intranets, sistemas Android, etc.
Me salto muchas cosas por el camino, ofertas laborales y demás, pero no quiero extenderme mucho más.
La principal diferencia entre entornos controlados tipo CTF y reales es el realismo. Por desgracia el 99% de los CTF si bien contienen fallos de seguridad reales, no suelen imitar muy bien los entornos. Hay CTF que son muy buenos para aprender. Estos básicamente son vulnerabilidades muy simplificadas en entornos diseñados para dicha vulnerabilidad. Es decir, su objetivo es única y exclusivamente enseñarte dicha vulnerabilidad, y para ello imitan un entorno real como paete del escenario para que entiendas en que tipo de software sulen encontrarse dichas vulnerabilidades en entornos reales.
El otro tipo de CTF son mas bien puzzles o desafios. No soy muy fan de estos porque son muy poco realistas e incluyen entornos con un montón de inconvenientes artificiales que en raro caso se asemejan a defensas reales. Es como querer aprender matemáticas haciendo Sudokus (mucha gente estará en desacuerdo conmigo aquí). A veces la dificultad de estos es mas que encontrar fallos de seguridad complejos en entornos reales, y no por complejidad de la arquitectura, si no por ser entornos artificiales que reflejan el caos mental de los creadores. Los fallos de seguridad normalmente son simples. Lo que los hace complejos es como estos interactuan con otras tecnologías en la infrastructura del target. Entonces, en vez de perder el tiempo con CTF random (a menos que sean un sitio con CTFs sencillos y concretos que traten de enseñar y no retar), es mejor directamente ir a escenarios reales.
TLDR: Céntrate en aprender las tecnologías que hacen funcionar todo. Cuando las entiendas, busca que fallos de seguridad tienen dichas tecnologías en concreto. Céntrate en estudiar la vulnerabilidad X con la máxima profundidad que puedas hasta el punto en que puedas abrir un editor de código y hacer un scanner para dicha vulnerabilidad de memoria sin consultar recursos externos.
Una vez en este punto puedes investigar herramientas de seguridad que hacen exactamente eso y utilizarlas para buscar el fallo en servicios reales. Incluso podrás extender dicha herramienta, ya que tu conoces el fallo al milímetro y simplemente con leer el código de la herramienta te vendrá a la cabeza: "Olle, pero este scanner que estoy usando no detecta DOM XSS en urls que utilizan window.location.hash en lugar de window.location", o lo que sea.