← Volver al listado de tecnologías
Natas Nivel 6 - Inclusión de Código Fuente
Natas Nivel 6 - Inclusión de Código Fuente
Objetivo
Un formulario pide un “secret”. Hay un enlace a “View sourcecode”.
Teoría: Exposición de Código Fuente
El Problema
Normalmente, PHP se ejecuta en el servidor y el usuario solo ve el HTML resultante. Pero si el desarrollador expone el código fuente, revela la lógica interna.
Qué Buscar en Código PHP
- Contraseñas hardcodeadas
- Rutas de archivos
- Includes de otros archivos
- Lógica de validación
- Conexiones a bases de datos
Análisis del Código
Al hacer click en “View sourcecode”, vemos algo como:
<?php
include "includes/secret.inc";
if(array_key_exists("submit", $_POST)) {
if($secret == $_POST['secret']) {
print "Access granted. Password is...";
} else {
print "Wrong secret";
}
}
?>
Observaciones
- Incluye un archivo:
includes/secret.inc - Compara
$secretcon lo que envías - La variable
$secretviene del archivo incluido
Solución
Paso 1: Acceder al archivo incluido
Navega a:
http://natas6.natas.labs.overthewire.org/includes/secret.inc
Paso 2: Obtener el secret
El archivo .inc contiene:
<?php
$secret = "VALOR_SECRETO";
?>
Paso 3: Enviar el formulario
Ingresa el valor del secret en el formulario y obtén la contraseña.
Por Qué Funciona
| Problema | Descripción |
|---|---|
| Código fuente expuesto | Link directo al código |
| Archivo .inc accesible | Sin protección de acceso |
| Secret hardcodeado | Contraseña en código |
Extensiones de Archivo
| Extensión | Comportamiento típico |
|---|---|
.php | Ejecutado, no visible |
.inc | ¡Puede ser visible! |
.phps | Muestra código fuente |
.bak | Backup, visible |
.old | Versión anterior, visible |
Proteger archivos .inc
# .htaccess
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
O mejor: ponerlos fuera del webroot.
Conceptos Aprendidos
| Concepto | Descripción |
|---|---|
| Source code disclosure | Exposición de código |
| PHP includes | Archivos incluidos |
| File extension handling | Manejo de extensiones |
Siguiente Nivel
- URL: http://natas7.natas.labs.overthewire.org
- Usuario: natas7