File Upload ๋์·์ฐํ
File Upload Vuln
ํ์ผ ์ ๋ก๋ ์ทจ์ฝ์ ์ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ์์์ ํ์ผ์ ์ ๋ก๋ํ ์ ์๋ ์ทจ์ฝ์ ์ด๋ค.
์ ๋ก๋ ๊ฐ๋ฅํ๋ค๊ณ ๋์ด ์๋๊ณ ํด๋น ํ์ผ์ ์คํ์ํฌ ์ ์์ด์ผํ๋ค. ๊ทธ๋์ ์ ๋ก๋ํ ํ์ผ์ ์ ํํ ๊ฒฝ๋ก๋ฅผ ํ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
~~/~~/webshell.php?cmd=
์น ์์ ํ์ผ์ด ์์นํ ๊ฒฝ๋ก๋ฅผ ์์์ผ ์์ ๊ฐ์ด ๋ช ๋ น์ด ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ ์์ฒญํด ์ค ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ ํํ ๊ฒฝ๋ก๋ฅผ ์์ง ๋ชปํ์ฌ ํ์ผ์ ์ ๋ก๋ ํ๋๋ผ๋ ์์ฒญ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ๋ฌด์ฉ์ง๋ฌผ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ด๋ฅผ ์จ๊ธฐ๊ณ , ๊ฒฝ๋ก๋ฅผ ์์ง ๋ชปํ๋๋ก ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์๊ธฐ ํ๋ค๊ฒ ํด๋๋ ๊ฒ์ ๋ฌผ๋ก ํ์ฅ์๋ ๊ทธ๋๋ก์ง๋ง, ํ์ผ๋ช ์ ๋ฐ๊พธ์ด์ ์ ์ฅ๋๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ (๊ทธ๋๋ก ์ ์ฅ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง ์๋ค.) ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์์๋ด์ผ ํ๋ค.
ex) webshell.php -> Fu0C.sfctifmm.php
์ฆ, ํ์ผ์ด ์ ์ฅ๋ ์ ํํ ์์น์ ํจ๊ป, ํด๋น ํ์ผ์ ์ ์ฅ๋ ์ด๋ฆ์ ํฌํจํ ์์ ํ ๊ฒฝ๋ก๋ฅผ ํ์ ํ ์ ์์ด์ผํ๋ค๋ ๊ฒ์ด๋ค.
ํ์ผ ์ ๋ก๋ ๊ณต๊ฒฉ์ ๊ฐ์ฅ ๋ํ์ ์ธ ๊ณต๊ฒฉ์ ์น์(Webshell) ๊ณต๊ฒฉ์ผ๋ก, File Upload ๊ณต๊ฒฉ๊ณผ ์น์์ ๋์ผ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค.
์น์(Webshell)
์น์(Webshell)๊ณต๊ฒฉ์ ์๋ฒ ์ธก์์ ์คํ ๊ฐ๋ฅํ ํ์ผ์ ์ ๋ก๋ํ ์ ์๋ ๊ณต๊ฒฉ์ ๋งํ๋ค.
์น์ํ์ผ์ ํ์ผ ์ ๋ก๋๋ ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ์๋ฒ์ ์ ๋ก๋ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋จ๋ ํ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ผ๋ก ๋จ์ผ ํ์ผ๋ก ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑ๋ ์น์์ ๋ค์๊ณผ ๊ฐ๋ค.
ํ์ค ์น์ / Single-line Webshell / One-line Webshell / ์ผ๊ตฌํ๋ชฉ๋ง(ๅ้จๆจ้ฉฌ)โ ๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ฉฐ php๋ฅผ ์์๋ก ๋ค๋ฉด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
<?php system($_GET['cmd']); ?>
์น์ํ์ผ์ ํด๋น ์๋ฒ์์ ์คํํ ์ ์๋ ํ์ผ์ ์ ๋ก๋ํด์ผ ํ๋ค.
์ ๋ก๋ํ๋ค๊ณ ๋์ด ์๋๊ณ ์ด ํ์ผ์ ์คํํด์ผ ํ๋๋ฐ, ์ฌ๊ธฐ์ ํด๋น ํ์ผ ์ ๋ก๋ ๋ฐ ์คํ์ ๋ํ ์๋ชป๋ ์ ๋ณด๋ค์ด ๋ง์ด ์กด์ฌํ๋ค.
์๋ชป ์๊ฐํ๊ณ ์๋ ์ฐํ๊ธฐ๋ฒ
(*) Image Web Shell
ํ์ผ์ ์ฌ๋ฆด๋ webshell.php๋ก ์ ์ฅํ๋๋ ์ ๋ก๋๊ฐ ์๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ฐ๋ฐ? webshell.php.jpg๋ก ์ฌ๋ ธ๋๋ ์ ์ฅ๋๊ณ ์คํ๋๋๋ค?! ๋ผ๋ ๋ง์ด๋ค.
| ๊ฒฐ๋ก ์ ๋ถ.๊ฐ.๋ฅ ํ๋ค๋ ๊ฒ์ด๋ค. ์คํ๋ ์ฌ์ง๊ฐ ์๋ค.
Double Extension
File Upload Bypass ๊ธฐ๋ฒ์ผ๋ก์ ์ด์คํ์ฅ์(double extension)๊ฐ ๊ฐ๋ฅํ ๊ฒ ์ฒ๋ผ ๋ณด์ด๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
ํ์ผ์ ์ฌ๋ฆด๋ webshell.php๋ก ์ ์ฅํ๋๋ ์ ๋ก๋๊ฐ ์๋์๋ค๊ณ ๊ฐ์ ํ ์ํ์์ ์์ ํ์ฅ์์ ๋ฐ๋๋ก webshell.jpg.php์ ๊ฐ์ ํ์ฅ์์ ํ์ผ์ธ๋ฐ ์ ๋ก๋๊ฐ ๊ฐ๋ฅํ๋ค?!
๋ง์ฝ์ ์์ ๋ฐฉ์์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ด๊ฒ์ ์ฑ๊ณต์ ์ธ Bypass ๊ธฐ๋ฒ์ธ ๊ฒ์ด ์๋๋ผ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ด ์๋ชป๋ ๊ฒ์ด๋ค.
ํ์ผ ์ ๋ก๋์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ๊ฐ๋ฐ์ ์๋ชปํ ๊ฒ์ธ๋ฐ, (.)์ ๊ธฐ์ค์ผ๋ก split์ ํด์ ๊ตฌํ์ ํ๋ ๊ฒฝ์ฐ, ๊ฐ์ฅ ์์ (.)์ ๊ธฐ์ค์ผ๋ก๋ง ์ ์ฅ์ ํ๋ค๋ฉด? ์ค์ ์ ์ฅ๋ ๋๋ webshell.jpg.php๋ก ์ ์ฅ๋์ง๋ง, .(jpg)๋ก ์ธ์๋๋ค๋ ๊ฒ์ด๋ค.
Double Encoding (feat. War Game)
webshell.php.jpg ๋ผ๊ณ ์ ๋ก๋๋ ํ์ผ์ด php๋ก์ ์คํ๋๋ ๊ฒ์ด๋ค. ํด๋น ์ทจ์ฝ์ ์ ์๊ฒ์ ์ธก์์ (.php.jpg...)์ ๊ฐ์ ๋๋ธ ์ธ์ฝ๋ฉ์ด๋ผ๋ ๊ธฐ๋ฒ์ด ์๋ค... ๋ผ๊ณ ์ผ๋ถ๋ฌ ๋ง๋ค์ด๋์ ๊ฒ์ผ๋ก ์ค์กดํ๋ ์ทจ์ฝ์ ์ด ์๋๋ผ๋ ๊ฒ์ด๋ค.
๋ง์ฝ ์ค์ ๋ก webshell.php.jpg๋ผ๊ณ ์ ์ฅ๋์ด ์๋๋ฐ ์น์๋ฒ๊ฐ ๊ฐ์๊ธฐ ๋ท๋ถ๋ถ์ ์๋ผ๋จน๊ณ webshell.php๋ผ๊ณ ์ธ์ํ๋ค? ๋ ๊ฒ์ ๋ง์ด ์๋๋ค๋ ๊ฒ์ด๋ค.
webshell.php.jpg๊ฐ ๊ฐ๋ฅํ๋ค๋ฉด?! webshell.jpg๋ก ๋ฃ์ด๋ ๊ฐ๋ฅํด์ผํ๋ค๋ ๊ฒ์ผ๋ก์ ๊ฒฐ๋ก ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
ํ์ฅ์๋ฅผ ์์ด๋ ๋ฐฉ๋ฒ
์ ์ฑ์ฝ๋ ์ ํฌ๋ฅผ ์ํด, ํ์ฅ์๋ฅผ ์์ด๋ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ์์๋ณด์.
NULL Byte Injection
webshell.php%00.jpg
(%00) NULL ๊ฐ์ ์ด์ฉํ์ฌ .jpg ๋ถ๋ถ์ด ๋ ์๊ฐ๋ ๊ฒ์ผ๋ก ์ค์ ๋ก๋ webshell.php์ ๋์ผํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
.htaccess ํ์ผ
(.htaccess)๋ ์น ์ค์ ํ์ผ๋ก์ ์ํ์น(Apache) ์๋ฒ์์ ์คํํ ํ์ฅ์๋ฅผ ์ง์ ํ๋ ํ์ผ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ์จ๊น์ฒ๋ฆฌ ๋์ด ์์ผ๋ฉฐ, ํด๋น ํ์ผ์ ์์ ํ๊ฑฐ๋ ๋ฎ์ด ์ฐ๋ ๊ฒฝ์ฐ, ํน์ ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ์๋ ์ํ๋ ํ์ฅ์์ ํ์ผ์ ๋ง์น ์คํํ์ผ ์ฒ๋ผ ์ด์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค. (ls -> ์จ๊น ํ์ผ -> ls +al)
์ฆ ๋ค์๊ณผ ๊ฐ์ด .jpg , .png๋ฅผ .php๋ก ์คํํ๋ผ ๋ผ๊ณ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
AddType application/x-httpd-php .jpg .png
๋์ฒดํ ํ์ฅ์์ ๋ํ์ฌ๋ ๊ธฐ์กด์ ์กด์ฌํ๋ ํ์ฅ์๊ฐ ์๋์ฌ๋ ๋๋ค. ์ํ๋๋๋ก ํ์ฅ์ ๋ช ์ ์ ๋ ฅํ๊ณ ์ด๋ฅผ ์ด์ฉํ ์ ์๋ค.
AddType application/x-httpd-(์คํํ๋ ํ์ฅ์) .(๋์ฒดํ ํ์ฅ์1) .(๋์ฒดํ ํ์ฅ์2) .(๋์ฒดํ ํ์ฅ์3)
(AddType MIME_TYPE FILE_EXTENSION)
์๋ฒ์์ ์คํ๋ ํ์ฅ์ ๊ท์น์ ์ ํด์ฃผ๋ ๊ฒ์ผ๋ก ํด๋น ๋๋ ํ ๋ฆฌ๋ง ์ํฅ์ ๋ฐ๊ฒ๋๋ค.
File Upload์ ๋์๋ฐฉ์(๋ถ์ถฉ๋ถ)
ํ์ผ ์ด๋ฆ ๋๋ ํ
์ ์ฅ๋๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ถ๋ ์ ๋ต์ผ๋ก์ ํ์ผ์ ์ด๋ฆ์ ๋๋ ํํ์ฌ ์ถ์ธกํ๊ธฐ ์ด๋ ต๊ฒ ํ๋ ๊ฒ์ด๋ค. ํ์ผ์ ํ๊ธฐ๊ฐ ์๋ ๋ฟ ์๋๋ผ, ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ถ์ธกํ์ง ๋ชปํ๋๋ก ํ๋ ๊ฒ์ด๋ค.
๋ค์ด๋ก๋๋ฅผ ํ๋๋ฐ ์ ๋ก๋ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ฅผ ์๊ฐ ์๋? YES
์ ๋ก๋ํ ํ์ผ์ ์น ๊ฒฝ๋ก ์ด๋๊ฐ์ ์ ์ฅํด๋๊ณ , ๊ทธ๊ฒ์ ์ง์ ์ ๊ทผํด์ ๋ค์ด๋ก๋ ํ๋๋กํ๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
~~/uploads/files/poc.php
์์ ๊ฒฝ๋ก์ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ, ๊ฒฝ๋ก๋ฅผ ์๊ธฐ ์ฌ์ ์ง์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ์ ์ธ๊ฐ ์ทจ์ฝ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.(๋ก๊ทธ์ธํ ์ฌ๋๋ง ํ์ผ์ ๊ฐ์ ธ๊ฐ๊ฒ ํด์ฃผ์ธ์. ๋ผ๊ณ ํ๋๋ผ๋) ์ด ๋ฐฉ์์ ๋ชจ๋ ์ฌ๋์ด ๋ค์ด๋ก๋ ๊ฐ๋ฅํ๊ฒ ๋๋ค.
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํ๋ ๊ฒฝ์ฐ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ฅผ ์ ์๋ค.
download.php?filePath=
download.php?boardId=
download.php?fileId=
์์ ๊ฐ์ด ๋ค์ด๋ก๋๋ฅผ ์ํ ๊ธฐ๋ฅ ํ์ผ์ ๋ง๋ค์ด๋๊ณ , db์์ ์กฐํํ๋ค์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ฅผ ์ ์๋ค๋ ๊ฒ์ด๋ค.
DB์๋ ํ์ผ์ id์ ํ์ผ๋ช ๊ฒฝ๋ก๊ฐ ์ ์ฅ๋์ด ์๊ณ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์์ DB์์ ์กฐํ๋ฅผ ํ๊ณ ๋ค์ด๋ก๋ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
<?
php user ํ์ธ : gear
(ํ๊ฐ๋ ์ฌ๋๋ง ๋ค์ด๋ก๋ ๊ฐ๋ฅํ๋๋ก ๊ตฌํ)
?>
ํ์ง๋ง ํด๋น ๋์๋ฐฉ์์ ๊ฒฝ์ฐ SQL Injection ์ทจ์ฝ์ ์ผ๋ก ํ์ผ ๊ฒฝ๋ก๊ฐ ๋ ธ์ถ๋๋ ๊ฒฝ์ฐ์ ์๊ฐ ์ ์ฌ์ ์ผ๋ก ์กด์ฌํ๋ ์กฐ๊ฑด๋ถ ๋์ ๋ฐฉ์์ผ๋ก์ ์ธ์ ๋ ์ง ๋ซ๋ฆด ์ค๋น๊ฐ ๋์ด ์๊ฒ๋๋ค.
๋ฐ๋ผ์ ์ถ์ฒํ์ง ์๋ ๋์๋ฐฉ๋ฒ์ผ๋ก ๋ฏธํกํ ๋์๋ฐฉ๋ฒ์ ํด๋นํ๋ค.
> ํ๋กํ ์ฌ์ง์ ๊ฒฝ์ฐ ๊ฒฝ๋ก๊ฐ ๋ ธ์ถ๋ ์ ๋ฐ์ ์๋ค. ๊ทธ ์ด์ ๋ Web Page์์ <img> ํ๊ทธ๋ฅผ ํตํด ์์ฒญ์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค. (๋ถ์ถฉ๋ถํ ์ธ๊ฐ ์ทจ์ฝ์ ์ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค.)
ํ์ฅ์ ํ์ดํธ๋ฆฌ์คํธ ๊ธฐ๋ฐ ํํฐ๋ง
Content-Type Header๋ฅผ ์ด์ฉํ๋ฉด ํ์ผ ์ด๋ฆ์ ๋๋ ํ ๋ณด๋ค๋ ์กฐ๊ธ ๋ ์์ ํ ์ ์๋ค. ํ์ง๋ง ํ์ฉ๋๋ ํ์ฅ์์ ๊ฐ์ผ๋ก ๋ณ์กฐ๋ packet์ ์ ๋ฌํ๊ฑฐ๋ %00 ๊ณผ ๊ฐ์ NULL Injection์ผ๋ก ์ฐํ๊ฐ ๊ฐ๋ฅํ ์ฌ์ง๊ฐ ์กด์ฌํ๋ค.
์ผ๋ฐ์ ์ธ php์ MIME Type
Content-type: application/x-php
์์ ๊ฐ์ด php๋ก ๋์ด ์๋ ํ์ฅ์๋ฅผ ์ ๋ก๋๊ฐ ๊ฐ๋ฅํ ํ์ฅ์๋ก ๋ณ์กฐํ์ฌ ์์ด๋ ๊ฒ์ด๋ค.
Content-type: image/jpeg
File Extension ํ์ธ
์๋ชป๋ file extension์ ๊ฒ์ฆ ๋ก์ง์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ์ฐํ ๊ธฐ๋ฒ์ด ๊ฐ๋ฅํ ์ ์๋ค.
1) NULL Byte Injection์ ์ด์ฉํ์ฌ ์ฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
webshell.php%00..jpg
2) ๋์๋ฌธ์์ ๊ฒ์ฌ๊ฐ ๋ฏธํกํ ๊ฒฝ์ฐ์๋ ์ฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
php -> pHp, phP
3) Alternative File Extensions์ ์ฌ์ฉํด์ ์ฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
https://book.hacktricks.xyz/pentesting-web/file-upload
ํ์ผ์ ์๊ทธ๋์ณ ํ์ธ
ํ์ผ ๊ฒ์ฆ ๋ก์ง์ผ๋ก์ ํ์ผ ๊ฒ์ฆ ํจ์๋ฅผ ์ด์ฉํ์ฌ ํ์ผ์ ์๊ทธ๋์ณ(File Signature)๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
File Signature๋ file์ ๋งจ ์ฒซ๋ถ๋ถ์ ํด๋น ํ์ฅ์์ ๋ํ ์๊ทธ๋์ณ๊ฐ ๋ด๊ฒจ์ ธ ์๋๋ฐ ์ด๋ฅผ ๋งํ๋ค.
http://forensic-proof.com/archives/300
ํ์ผ ์๊ทธ๋์ฒ ๋ชจ์ (Common File Signatures) | FORENSIC-PROOF
forensic-proof.com
ํ์ผ ๊ฒ์ฆ ๋ก์ง์ ๋ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๊ฑฐ๋, ์ง์ ์ ์ํด์ ์ฌ์ฉํ๋๋ฐ ์ ๋๋ก ๊ตฌํํ์ง ์๋๋ค๋ฉด, ์ด๊ฒ๋ฅผ ๋ณ๊ฒฝํ์ฌ ๋ค๋ฅธ ํ์ฅ์๋ก์ ์ธ์ํ๋๋ก ํ๊ฑฐ๋, ํด๋น ํ์ฅ์์ ์๊ทธ๋์ฒ๋ ๊ทธ๋๋ก ๋๊ณ ํ์ผ ๊ฐ์ฅ ๋ท์ชฝ์ ์น์์ ์ฝ์ ํ๋ ๊ฒฝ์ฐ์ ์ฐํ๊ฐ ๊ฐ๋ฅํ ์ ์๋ค.
File Upload์ ๋์๋ฐฉ์(์ฌ์ง๊ฐ ์๋ ๋ฐฉ๋ฒ)
BLOB / CLOB
DB์ ํ์ผ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก์ BLOB / CLOB ํ์ผ ํ์์ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
ํ์ผ ์ ๋ก๋๊ฐ ๊ฐ๋ฅํ ๊ทผ๋ณธ์ ์ธ ์์ธ์ ์น ์๋ฒ์ ํ์ผ๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ด์๋๋ฐ, ์ด๊ฒ์ DB ํ ์ด๋ธ ์์ ์ ์ฅํ๋ค๋ฉด? ์คํ๋ ์ฌ์ง๊ฐ ์์ด์ง๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ฌธ์ ๋ DB๊ฐ ๋ชจ์๋ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ์ผ ์ ์ฅ ์๋ฒ๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ค๋ค.
NAS
ํ์ผ ์ ์ฅ ์๋ฒ๋ก์ ํด๋น ์๋ฒ๋ ์น ์๋ฒ์ ์์ ๋ถ๋ฆฌํ๊ณ ํด๋น ํ์ผ์ด ์คํ๋ ์ ์๋ ์ฌ์ง๋ฅผ ๋ง๋ค์ง ์์ผ๋ฉด๋๋ค.
๋์ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ํด Web Server์ WAS๊ฐ ์ฐ๊ฒฐ๋์ด ๋์ํ๋ฏ์ด ํ์ผ์ ๊ด๋ฆฌํ๋ NAS Server๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํจ์ด๋ค.
WEB - WAS - DB
WEB - NAS
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ NAS Server์ ๊ฒฝ์ฐ ์๋ฒ์ธก ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ํ๊ฒฝ์ด ๊ตฌ์ถ๋์ด ์์ด์๋ ์๋๋ค. ํ์ผ์ ์คํ๋์ง ์๋๋ก ํ๊ธฐ ์ํด์ ๋ฐ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋กํ๋๋ฐ, ์ฝ๋๊ฐ ์คํ ๊ฐ๋ฅํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋๋ค.
์ฆ php ํ์ผ์ ์ ์ฅํ๋ค๋ฉด php ์์ฒด๊ฐ ์ค์น๋์ด ์์ง ์์ผ๋ฉด ์คํ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
Webshell์ ๋จ์
์น์(webshell)์ ์ฌ๋ ค์ cmd ๋ช ๋ น์ ํตํด ๊ฒฝ๋ก๋ฅผ ์ด๋ํ๋ฉฐ, ๋ด๋ถ๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋ํ์ฌ ๋จ.๋ฐ.์ฑ ์ด๋ผ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ํ๋ฒ ๋ช ๋ น์ ์ ๋ ฅํ๊ณ ๋๋ฉด ํด๋น ๋๋ ํ ๋ฆฌ์ ์ ์ง๋๋ ๊ฒ์ด ์๋๋ผ ๋ค์ ๊ธฐ์กด์ ๊ฒฝ๋ก๋ก ๋์์ค๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ก๋ถํฐ ๋ค์ ์ ๋ ฅํด์ค์ผํ๋ค๋ ๊ฒ์ด๋ค.
์ฆ ์ผํ์ฑ/ํ๋ฐ์ฑ ์ด๊ธฐ ๋๋ฌธ์ ์ํ์ ๋ํ ์ ์ฅ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Reverse Shell์ด ํ์ํ๋ค.
FLI(File Include)์ทจ์ฝ์
Webshell ์ทจ์ฝ์ ์ ์๋งคํ๊ฒฉ์ธ ์ทจ์ฝ์ ์ผ๋ก File Include ์ทจ์ฝ์ (File Inclusion)์ด ์๋ค.
include / include_once / require / require _once
์์ ๊ฐ์ including ๊ธฐ๋ฅ์ ๊ฐ์ง ์ฝ๋๊ฐ ์กด์ฌํ๋ ๊ณณ์์ ๋ฐ์ ๊ฐ๋ฅํ ์ทจ์ฝ์ ์ด๋ค.
db์ ๋ณด์ ๊ฒฝ์ฐ id/pw๊ฐ ์ฌ์ฉํ ๋๋ง๋ค ํ์ํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด๊ฒ์ ํ์ํ ๋ชจ๋ ํ์ด์ง๋ง๋ค ์ฐ๋ ๊ฒ์ด ์๋๊ณ ํ๋์ php์ ๊ณ์ ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ฃ์ด๋๊ณ , ํ์ํ ๊ฒฝ์ฐ์ ๊ฐ์ ธ์์ ์ฐ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ณต๋๋ ๋์ผํ ์ฝ๋๋ฅผ ์ ์ฑํด๋๊ณ ๊ฐ์ ธ๋ค ์ฐ๋ ๋ฐฉ์์ ์ทจํจ์ผ๋ก์จ ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
dbConfig.php
<?php
(php์ฝ๋๋ก ์ ์ฅ๋์ด ์๋ db ๊ณ์ ์ ๋ณด)
?>
login.php
<?php
include('dbConfig.php');
(์์ ํ์ผ ๋ด์ฉ์ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ๋ณต๋ถํ๊ณ ์คํ)
?>
์์ ๊ฐ์ด include๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ ํด๋น ํ์ผ์ ๋ด๋ถ ๋ด์ฉ์ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐํ๋ฏ์ด ์คํํ ํ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ค๋ ๊ฒ์ด๋ค.
๋ค๋น๊ฒ์ด์ ๋ฐ (nav.php) ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๋ชจ๋ ํ์ด์ง์ ๋์ฐ๋ ๋ถ๋ถ์ ๊ฐ๊ฐ์ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ด ์๋๋ผ nav.html, nav.php์ ๊ฐ์ด ๋ง๋ค์ด์ ๋์ด๋ค๋ ๊ฒ์ด๋ค.(ํค๋(Header) / ํธํฐ(Footer))
* ํ๋ก๊ทธ๋๋ฐ, ํดํน, ์ปดํจํฐ ๊ณต๋ถ
> ๊ฒ์ผ๋ฅธ ์ฌ๋์ด ์ํจ. ํ๋ฒ์ ๋ค๋ฐ๊ฟ.
> ์ฑ์คํ ์ฌ๋. ํ๋ ํ๋ ๊ฐ์ ๋ฐ๊ฟ.
๊ฒฐ๋ก : ๊ฒ์ผ๋ฅด๊ธฐ ์ํด์ ๋ ธ๋ ฅํ๊ณ ๋ถ์ง๋ฐํ ์ฌ๋์ด ๋์!
๋ฐ๋ผ์ Web Page์์ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๋ฐ๋ผ์ ๋ค๋ฅธํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ?page= ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฐ๋๋ค๋ฉด ํด๋น ์ทจ์ฝ์ ์ ์๊ฐํด ๋ณผ ์ ์๋ค.
์๋ฒ์ ์กด์ฌํ๋ ์์์ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, DB ๊ณ์ ์ ๋ฐ์์ค๋ ํ์ผ ๋ํ ํธ๋ฆฐ๋ค๋ ๊ฒ์ด๋ค.
LFI ์ทจ์ฝ์ ์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด์๋ include๊ฐ ์๋ ๊ฒ์ ์ธ์งํด์ผ ํ๊ธฐ ๋๋ฌธ์
์ด๊ฒ์ ์น ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด์ ์๊ฐํด๋ด์ผํ๋ค.
ํด๋น ์ทจ์ฝ์ ์ ์๋ฒ์์ ์ํ๋ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๋จ, ์์ค ์ฝ๋ ๋นผ๊ณ ... ๋ผ๋ ์๊ฐ์ ๋ณ๊ฑฐ ์๋ ์ทจ์ฝ์ ์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
ํ์ง๋ง ์ด๊ฒ์ ์ญ์ผ๋ก ์ด์ฉํ๋ค๊ณ ์๊ฐ์ ํด์ผํ๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ์์ฒญ๋ ์ทจ์ฝ์ ์ด๋ค.
์์ค์ฝ๋๋ฅผ ์ป์ด์ฌ ์ ์๋ ์ด์ ๋ ์๋ฒ๊ฐ ์คํํด์ ๊ฒฐ๊ณผ๊ฐ๋ง ์ ๋ฌํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํ๋ ์๋ฒ ์ธก ์ฝ๋๊ฐ ์ฝ์ ๋ ํ์ผ์ ์ ๋ก๋ํด ํด๋น ํ์ผ์ ๊ฐ์ ธ์จ๋ค๋ฉด? ์ฝ๋๊ฐ ์คํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด์ฌ ์ ์๋ค๋ ๊ฒ์ด๋ค.
FLI -> LFI
์ด๋ฏธ์ง ํ์ผ๋ก ๋ฐ๊พธ์ด์ค ์คํํ์ผ(webshell.php -> webshell.jpg) ์ ๋ฃ๋๋ค๋ฉด? ์ด๋ฏธ์ง ํ์ผ๋ก ๋ฃ๊ณ ๋ถ๋ฌ์ฃผ๋ ๊ฒฝ์ฐ ๋ด๋ถ์ ์์ค์ฝ๋๋ฅผ ์คํํ๊ณ ์ค๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ LFI ์ทจ์ฝ์ ์ผ๋ก Local File Include ์ทจ์ฝ์ ์ ํด๋นํ๋ค.(File Include์๋ ๋ค๋ฅธ ์ทจ์ฝ์ ์ด๋ค.)
File Inclusion ๊ณต๊ฒฉ์ ํ๋ ๊ณผ์ ์์ File Upload๋ฅผ ํ์ฉํ ์๋ ์์ง๋ง, ๋ค๋ฅธ ์ทจ์ฝ์ ์ด๋ผ๋ ๊ฒ์ ์ธ์งํ๋๋ก ํ์.
OSCP ์นจํฌํ ์คํธ : ํดํน
์นจํฌ ํ ์คํธ๋ผ๋ ํดํน์ ์ ์ฒด ์ฅ๋ฅด์์ ์น ํดํน์ด๋ผ๋ ์ฅ๋ฅด ๋ด์์ LFI ์ทจ์ฝ์ ์ ๋จ๊ณจ ๋ฌธ์ ๋ผ๊ณ ํ๋ค.
LFI ์ทจ์ฝ์ ์ ์๊ฐ๋ณด๋ค ๋๋จํ๋ค๋ผ๋ ๊ฒ์ด๋ค.
> ๋ง์ฝ LFI ์ทจ์ฝ์ ์ ์ฐพ์๋๋ฐ ํ์ผ ์ ๋ก๋๊ฐ ์๋ค๋ฉด? ํ์ผ์ ์ ํ ์ฌ๋ฆด ๊ป๋์ง๊ฐ ์๋ค๋ฉด?!
๊ทธ๋๋ ํ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ํ์ผ์ ์ฌ๋ฆฌ์ง ์๋๋ผ๋, ์น ์๋ฒ์ ์ด๋ค ํ์ผ์ ์ํฅ์ ์ค ์ ์๋ค.
> ๋ฐ๋ก ์น ๋ก๊ทธ(Web log), ์ ์ํ ๊ธฐ๋ก์ด ์น ์๋ฒ์๋ ๋ค ๊ธฐ๋ก๋๊ณ ์๊ณ ์ด๊ฒ์ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
URL ์ฃผ์์ ๊ทธ๋ฅ <?php system($_GET['cmd']); ?>๋ฅผ ๋ฃ์ด์ค๋ค๋ฉด? ์ด์ํ ์์ฒญ์ด๋ค ํ๊ณ ๋๊ธฐ๊ณ ,404 ์๋ฌ๊ฐ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด๊ฒ์ access_log์์ ์์ฒญํ๋ค๋ฉด?.... ๊ทธ ์์ฒด๋ก ์น์์ ๋ธ ์ ์๋ ์ทจ์ฝ์ ์ด ๋๋ค๋ ๊ฒ์ด๋ค.
(URL ์ฃผ์์ ์ ๋ ฅํ ๋ด์ฉ๋ค์ access_log์๋ ๊ธฐ๋ก๋๊ธฐ ๋๋ฌธ์ด๋ค.)
include๋ ์ด๋ค ํ์ผ์ด๋ ๋ถ๋ฌ์จ๋ค.
include๋ ํด๋น ์์น์ ๊ทธ ํ์ผ์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๊ฒ์ด๋ค.!!!!
๊ทธ๋ฆฌ๊ณ ๋์ ์คํํ๋ ๊ฒ์ด๋ค.
๋ก๊ทธ์์๋ URL์ ์ ๋ ฅ๋๋ ๋ชจ๋ ๋ด์ฉ์ด ๊ธฐ๋ก๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก include ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๋ก๊ทธ ํ์ผ์ ๋ถ๋ฌ์จ๋ค๋ฉด?! ํด๋น ๊ธฐ๋ก์ ๋ถ๋ฌ์ค๊ฒ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ์ผ์ ๋ฐ๋ก ์ ๋ก๋ ํ์ง ์๋๋ผ๋ ๋ก๊ทธํ์ผ์ include ํ๋ ๊ณผ์ ์์ ์ค๋ฅ๊ฐ ๋ฌ๋ webshell ์ฝ๋์ ๋ํ ๊ธฐ๋ก์ด ๋ถ๋ฌ์์ง๋ฉด์ ์คํ๋๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
์ฆ, ์ด๋ค ์ธ์ด๋ก ๊ตฌ์ฑ๋์ด ์๋๊ฐ์ php์ include์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ธ์ด๋ณ ํจ์๋ฅผ ์ด์ฉํ๋ค๋ฉด ํด๋น ๋ก๊ทธ์์ ์ํ๋ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
์ฌ์ง์ด include ์ทจ์ฝ์ ์ ๊ฒฝ์ฐ txt ์์ ์๋ php ์ฝ๋๋ ์คํ์ด ๋๋ค. ์ด๋ค ํ์ผ์ด๋ ๊ทธ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๊ณ ์คํํ๊ธฐ ๋๋ฌธ์ด๋ค.
LFI / RFI
LFI ๋ Local File Include๋ก์ File Include์ ์น ์๋ฒ ๋ด์ ์๋ ํ์ผ์ ๊ฐ์ ธ์จ๋ค.
RFI ๋ Remote File Include ๋ก์ (NAS ์๋ฒ์ ๊ฐ์ ์ธ๋ถ ์๋ฒ์ ๊ฒฝ์ฐ) File Include์ ์ธ๋ถ ์๋ฒ์ ์๋ ํ์ผ์ ๊ฐ์ ธ์จ๋ค.
File Download
ํ์ผ ๋ค์ด๋ก๋(File Download) ์ทจ์ฝ์ ์ ์ด๋ค ํ์ผ์ ์ ๋ฌํด์ฃผ๊ณ ์๋ ๊ธฐ๋ฅ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํ๋ค.
download.php?fileName=test.txt
<?php
fileName = $_GET['fileName'];
downlaod('/files/' . $fileName);
?>
์์ ๊ฐ์ ํ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ file download๋ฅผ ์ํ ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ค๋ฉด ํด๋น ๊ธฐ๋ฅ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํ์ฌ, ๊ฒฝ๋ก ์กฐ์์ ํตํด ์ํ๋ ํ์ผ์ ๋ค์ด๋ฐ์ ์ ์๋ ์ทจ์ฝ์ ์ด๋ค.
fileName = ../../../../../../../etc/passwd
/files/../../../../../../../etc/passwd
์์ ๊ฐ์ด ์น ๊ฒฝ๋ก๋ฅผ ๋ฒ์ด๋๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ etc/passwd ๊ฒฝ๋ก์ ์ ๊ทผํ์ฌ ์ค์ ์ ๋ณด๋ฅผ ๋นผ์ฌ ์ ์๋ ๊ฒ์ด๋ค.
ํด๋น ์ทจ์ฝ์ ์ ์์ค์ฝ๋์ ์คํ์ด ๊ฐ๋ฅํ ๊ฒ์ ์๋๋ผ๋ ๋จ์ ์ด ์์ง๋ง, ๋ด๋ถ์ ์์ค์ฝ๋๋ฅผ ๋ค์ด๋ก๋ ๊ฐ๋ฅํ ์ทจ์ฝ์ ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ../../../../../../../์ ๊ฐ์ด ๊ฒฝ๋ก ์ด๋์ด ๊ฐ๋ฅํ ์ทจ์ฝ์ : path traversal ์ ํจ๊ป ์ด์ฉํ๋ฉด ๋ด๋ถ์ ํ์ผ์ ์ ๋ถ ์ด๋ํ ์ ์๊ฒ ๋๋ ์ํํ ์ทจ์ฝ์ ์ด๋ค. ์คํ๋์ง ์์ ํํ์ ์ฝ๋, ๊ทธ ์์ฒด(์์ค ์ฝ๋)๋ฅผ ํ๋ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ฆ, File Download ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ฉด Web Source Code๋ฅผ ํ์ทจํ ์ ์๊ณ , DB์ ๋ณด๋ฅผ ์ ์ฅํด๋ ๊ฒ๋ ํ์ทจ๋์ด DB์์ฒด๋ ํธ๋ฆฌ๋ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก download.php์ ๊ฐ์ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ด ์๋ ํ์ด์ง์ path๋ฅผ ํ์ธํ๊ฒ ๋๋๋ฐ, ../../../../../../../etc/passwd ์ ๊ฐ์ ๊ฒฝ์ฐ ์ญ ์ฌ๋ผ๊ฐ๋ฉด ์๊ธฐ ๋๋ฌธ์ ์ฐพ๊ธฐ ์ฝ์ง๋ง, ์์ค์ฝ๋๋ฅผ ์ฐพ๋ ๊ฒ์ ์ฝ์ง ์๋ค.
1. path traversal
2. guessing (์ถ์ธก)
* ์ง๊ธ์ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ์์ ๋ง์ด ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์์ ์ ์ฐ๋ค๊ฐ html tag๋ก ์ญ์ ๋ ๊ฒ์ ๊ฒฝ์ฐ, ์ฆ ์ฝ๋๋ฅผ ์ง์ฐ์ง ์๊ณ ์ฃผ์์ฒ๋ฆฌ๋ง ํด๋์ ๊ฒฝ์ฐ, ํด๋น ์ฃผ์์ ํ๊ณ ๋ค์ด๊ฐ๋ณด๋ฉด ์ด์ ์ ์ฐ๋ ๋ถ๋ถ์์ ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ ์์ฑํ๋ ๋ฐฉ์์ด ๋น์ทํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ํด๋น ํ๋ผ๋ฏธํฐ๋ค์ ์ด๋ฆ์ ์ถ์ธก์ ํตํด, ์์ธกํ์ฌ ๋ฃ์ด๋ณด๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ด๋ค.
(์ฌ๊ธฐ์ guessing ๊ณต๊ฒฉ์ ๊ฒฝ์ฐ, ์ฌ๊ธฐ์ ์์๊ฑฐ ๊ฐ์๋ฐ?, ๋น๋ฐ๋ฒํธ ์ด๊ฒ์ผ๊ฑฐ ๊ฐ์๋ฐ?, ๋ฑ๊ณผ ๊ฐ์ด ํ๋ก์ ํธ๋ฅผ ๋ง์ด ๋ค๋๋ฉด์ ์ฌ๋ฌ ์น์ฌ์ดํธ๋ฅผ ๋ถ์ํ๊ณ , ํ์ด์ง๋ณ ๋๋ ํ ๋ฆฌ์ ๊ตฌ์ฑ๋ค์ ์๊ฐํ๋ ๋ฅ๋ ฅ์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ ฅ์ ๋ฌด์ํ์ง ๋ชปํ๋ค๊ณ ํ๋ค.)
๋จ, ์ฃผ์ํ ์ ์ด ์๋ค.
์ฃผ์ํ ์
์์ File Download์ทจ์ฝ์ ์ ๊ฒฝ์ฐ ํดํน์ ์ ์ฅ์์๋ ์์ค์ฝ๋๋ฅผ ์ฐพ์๋ด์ด ๋ด๋ถ์ ํด๋น ์ฝ๋๋ฅผ ์ง์ ๋ณด๊ณ ์ทจ์ฝ์ ์ ์ถ๊ฐ์ ์ผ๋ก ์ฐพ์ ์๋ ์๋ ์์ฒญ๋ ์ทจ์ฝ์ ์ด์ง๋ง, ๋ชจ์ํดํน์์๋ ํด๋น ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ค๊ณ ๋ง์๋๋ก ๋ด๋ถ ํ์ผ์ ๋ฐ์์๋ ์๋๋ค๋ ๊ฒ์ด๋ค.
ํดํน์ ์ ์ฅ์์ ํด๋น ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ๋ค๊ณ ์๊ฐํด๋ณด์.
1. ์์ค์ฝ๋๋ฅผ ์ฐพ๋๋ค. (์ด๋ฏธ ์ฌ๊ธฐ์๋ถํฐ ์์ฒญ๋ ์ทจ์ฝ์ ์ด๋ค.)
2. ์์ค์ฝ๋๋ฅผ ๋ถ์ํ๋ค.
-> ๋ถ์์ ๋จ๊ณ์์ ์ฝ๋๋ฅผ ๋ณด์ง ์๊ณ ๋ ์ ์ ์๋ SQL Injection ๊ฐ๋ฅ Point๊ฐ ๋๊ฑฐ ๋ฐ๊ฒฌ๋ ์ ์๋ค.
(์์ค์ฝ๋ ๋ถ์์ ํตํด์๋ง ์์๋ผ ์ ์๋ ์ทจ์ฝ์ ์ ์ถ๊ฐ๋ก ๋ฐ๊ฒฌํ ์๋ ์๋ค๋ ๊ฒ์ด๋ค.)
์ทจ์ฝ์ ์ ๋ ์ฐพ๊ธฐ ์ํด ์์ค์ฝ๋๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๊ณ ๋ถ์ํ์ฌ ๋ ๋ง์ ์ทจ์ฝ์ ์ ์ฐพ์๋ธ๋ค. ์ํ๋ ํ์ผ๋ค์ ๋ค์ด๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฒญ๋ ์ทจ์ฝ์ ์ด ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ด๊ฒ์ ์นจํฌํ ์คํธ์ ๊ด์ (ํดํน์ ๊ด์ )์ผ๋ก์ ํ์ผ ๋ค์ด๋ก๋ ์ทจ์ฝ์ ์, ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์๊ฐํด๋ด์ผ ํ๋ ๊ฒ์ด์ง ๋ชจ์ํดํน์ ๋จ๊ณ์์๋ ํด๋น ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋๋ค๋ฉด, ๋ด๋น์์์ ์์๋ฅผ ํตํด ์ถ๊ฐ์ ์ธ ์ทจ์ฝ์ ๋ฐ๊ฒฌ์ ์ํด์ ์์ค์ฝ๋๋ฅผ ๋ค์ด๋ฐ์ ์ ๊ฒํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ณ ์งํํด์ผํ๋ค.
๋ง์๋๋ก ์ฝ๋๋ฅผ ๋ค์ด๋ฐ๋๋ค๋ฉด, ๋ฒ์ ์ธ ๋ฌธ์ ๋ก๋ ๋ฒ์ง ์ ์๋ค๋ ๊ฒ์ ์์ด์๋ ์๋๋ค.
POC๋ก์ ๋ค์ด๋ก๋ ํด๋ด์ผํ ํ์ผ
/etc/passwd
Windows
/boot.ini
winnt/win.ini
../../../../../../../../boot.ini
File Download ๋์ ๋ฐฉ์
File Downlaod ์ทจ์ฝ์ ์ ๊ณต๊ฒฉ์ ๋ํ ๋์๋ฐฉ์์ File Upload ์ ๋์๋ฐฉ์๊ณผ ํก์ฌํ๋ค.
๋๋ ํ
๋ง์ฝ javascript ํ์ผ์ ๋ค์ด๋ฐ์ ๋ณด๋ ๊ฒฝ์ฐ์ ๋๋ ํ๊ฐ ๋์ด ์๋ ๊ฒฝ์ฐ ๋๋ ํ๋ฅผ ํ์ด์ฃผ๊ณ ํ์ธ์ด ๊ฐ๋ฅํ๋ค. (์จ๋ผ์ธ ์ฌ์ดํธ์ ๋๋ ํ ํด์ ์ด์ฉํ์.) ํน์ ํต์ฌ ํจ์๋ค ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ทธ๋๋ก ๋ณด์ฌ์ง๋ค.
ํด๋ก ํด๊ฒฐ๋์ง ์๋๋ค๋ฉด ๋ฆฌ๋ฒ์ฑ์ ํด์ผํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์