探索黑客技术攻防,实战研究与安全创新

导航菜单

百度游戏用户登录漏洞

最近,百度更新了百度游戏的首页,笔者自是第一时间去观摩。当然界面是焕然一新,可漏洞也不少。

先在前面说一句,这个漏洞仅用于研究,可能在读者看到这篇文章时,漏洞已经不存在了。

本着一颗寻找漏洞的心理,在百度游戏改版后笔者就到了百度游戏首页,开启封包拦截。本人是使用Chrome中的开发者工具,虽然那功能好像是抄袭苹果的Safa ri的功能,不过还算挺好用。

尝试登录一个用户,这时我注意到百度游戏的页面都是显式XHTML的,和以往百度其他的百度页面都不同。这时我发现他居然不是使用百度通用的登录接口passport.baidu.com。虽然最后还是有用到,不过他是先在login.xhtml中验证了用户名和密码的正确,然后才走passport.baidu.com设置全百度域名下的cookie。
图片35.png对这个地址POST了一段数据:
c=login&loginName=test&password=test然后返回的是一个神奇的HTML页面,里面如果登录失败就简陋的用ale rt提示你用户名或密码错。还有这个页面自己设置的charset是gbk,不过alert的内容却是utf8的,我该说什么好,我对此已经做不出什么评论了。

本着一个测试的心理,笔者立刻写个验证工具尝试使用百度这个新接口。一番测试下来,发现这个接口不仅不需要验证码,甚至连登录次数、lP限制都没有,真的是太可怕了!

部分流程代码:

图片36.png

int  tmain(int argc, _TCHAR* argv[])

{

    char *username = NULL;

    char *password = NULL;

   if (argc > 2)

           {

              username = WcToMb (argv[l]) ;

              password = WcToMb (argv[2]) ;

   } else {

      std::cout《 "Usage:"《 std::endl

《 "\tBaiduYouxi.exe [username] [p?issworcll"《 std::endl;

//初始化socket

   WSADATA wsaData;

        if (WSAStartup (MAKEWORD (2, 1),  &wsaData)   lI  LOBYTE (wsaData. wVersion)   1=  2)

      std::cout《 "WSAStartup F,rrorl"《 std::endl;

              free (username) ;

              free (password) ;

       return -1;

   if (!InitHost(》 {

      std::cout《 "[nit Host卜、T1rorl"《 std::endl;

               free (username) ;

              free (password) ;

       return -1;

   SOCKET sock = NULL;

     char data[1024],  header[1024] ;

    char术szRetHeader = NULL;

   CBuffer result;

   int dataLen = 0;

   if (!InitDefSocket(&sock》 {

      std::cout《 "[nitDeljSocket r,rro~."《 std::endl;

               free (username) ;

               free (password) ;

       return -1;

//注意,中文用户需要用utf8格式

std::cout《 "Start Login: "《 username《 ":"

《 password《 " ..."《 std::endl;

char *utf8user = MbToUtf8Url(username) ;

wsprintfA(data,  szLoginDataF,  utf8user, password) ;

free (utf8user) ;

dataLen = lstrlenA(data) ;

wsprintfA(header,  szLoginHeaderF,  dataLen) ;

int i_ret = -1;

if(SOCKET_ERROR == send(sock, header, lstrlenA(header), 0》

 {

i_ret = -2;

另外值得一提的是,笔者在发现这个漏洞的同时,给他们的客服邮箱发了封邮件,说明了这个错误,虽然他们回复的很快,不过好像没解决这个问题,他们的那个客服邮箱感觉就像是个摆设,写在那里的确看上去挺专业的。直到最近才更新了一下,换成user.xhtml来登录了,返回的是JSON数据,不过login.xhtml这个登录接口居然没有被封,这真的是让人笑掉大牙,百度就这么不在意用户数据的安全问题吗?

这样的事实让我们不得不反当前思国内的互联网安全状况,就连百度这样的大企业也这么不在意这些安全问题,那些小企业就可见一斑了。我们在建立网站的同时更需要重视安全问题,否则表面上看上去挺风光的,最后后台却已经沦为别人的后花园了。

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐