Study/WebHacking

[์ทจ์•ฝ์ ] File Inclusion ์ทจ์•ฝ์ : LFI (Local File Inclusion)

mnzy๐ŸŒฑ 2024. 3. 12. 04:00

LFI(Local File Inclusion) ์ทจ์•ฝ์ ์ด๋ž€?

LFI๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด ์„œ๋ฒ„์˜ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด๋‹ค.

 

์ด ์ทจ์•ฝ์ ์€ PHP์™€ ๊ฐ™์€ ์„œ๋ฒ„ ์ธก ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž…๋ ฅ ๊ฒ€์ฆ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค.

์ฃผ๋กœ php ์ฝ”๋“œ์ƒ์—์„œ include() ์‚ฌ์šฉ ์‹œ input์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ํ•„ํ„ฐ๋ง์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„ ๋ฐœ์ƒํ•œ๋‹ค.

 

๊ณต๊ฒฉ์ž๋Š” ์ด ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜์—ฌ ์›น ์„œ๋ฒ„์—์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ฝ๊ฑฐ๋‚˜, ๋กœ์ปฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ณด์•ˆ์„ ์šฐํšŒํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

include($_GET['file'] . '.php');

 

์œ„ ์ฝ”๋“œ๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ($_GET['file'])์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ผ์„ includeํ•œ๋‹ค.

์ด๋•Œ, ๊ณต๊ฒฉ์ž๊ฐ€ URL์„ ์กฐ์ž‘ํ•˜์—ฌ http://example.com/index.php?file=../../../../etc/passwd ์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ /etc/passwd ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ฒŒ ๋˜์–ด ์‹œ์Šคํ…œ์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

LFI ๊ณต๊ฒฉ

๋‹ค์–‘ํ•œ php wrapper์„ ํ™œ์šฉํ•ด LFI ๊ณต๊ฒฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

https://www.php.net/manual/en/wrappers.php

  • file:// — Accessing local filesystem
  • http:// — Accessing HTTP(s) URLs
  • ftp:// — Accessing FTP(s) URLs
  • php:// — Accessing various I/O streams
  • zlib:// — Compression Streams
  • data:// — Data (RFC 2397)
  • glob:// — Find pathnames matching pattern
  • phar:// — PHP Archive
  • ssh2:// — Secure Shell 2
  • rar:// — RAR
  • ogg:// — Audio streams
  • expect:// — Process Interaction Streams

 

์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ LFI ๊ณต๊ฒฉ์„ ํ•˜๋ฉด์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” wrapper๋Š” ์ •ํ•ด์ ธ์žˆ๋‹ค.

  • expect://
  • php://filter/
  • zip://

expect:// wrapper๋Š” system command๋ฅผ ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค. 

์ฆ‰, expect://ls ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด, ls ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋œ๋‹ค.

 

php://filter์˜ ๊ฒฝ์šฐ, ์„œ๋ฒ„์•ˆ์˜ ํŒŒ์ผ๋“ค์„ ์—ด๋žŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค (encode ๋˜๋Š” decode์˜ ํ˜•ํƒœ). 

์ฆ‰, www.[์›น์‚ฌ์ดํŠธ์ฃผ์†Œ]/?file=php://filter/convert.base64-encode/resource=ํŒŒ์ผ๋ช…์„ ํ™œ์šฉํ•˜๋ฉด, base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ํŒŒ์ผ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

zip:// ์˜ ๊ฒฝ์šฐ, zip ํŒŒ์ผ์˜ ์••์ถ•์„ ํ’€๊ณ , ์••์ถ•์„ ํ‘ผ ํŒŒ์ผ์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.