默认
发表评论 7
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 请教RainbowChat-Web进行渗透测试时请求劫持的疑问
在进行渗透扫描时,发现系统出现漏洞,操作步骤如下:
1. 使用A用户手机申请验证码
2. 使用A用户手机和验证码进行登录,此登录过程是使用Burp Suite软件控制(可拦截)
3. 登录成功后,使用Burp Suite修改respose中返回内容的user_uid值为B用户的,这个时候用户会变成B用户

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

推荐方案
评论 7
1)使用https了吗?
2)开启token检验了吗?
引用:JackJiang 发表于 2024-11-06 12:10
1)使用https了吗?
2)开启token检验了吗?

我看了一下,im_http_service处理过程没有返回token,传的是N/A,在IM Web端的index.html页面有:
        <script type="text/javascript">
            /* 启动Web端IM */
            window.RBChatMainUI.doLoginIMServer();
        </script>

这里执行IM端的登录,后面又调用了mobileimsd-client-sdk.js的loginImpl登录:
        loginImpl : function (varloginInfo, wsUrl, supportSSL){
            this._loginInfo = varloginInfo;
            // 发起首次连接和认证
            this._socket = io.connect(wsUrl, {
                query: 'token='+JSON.stringify(w.IMSDK._loginInfo),
                forceNew:true,               // 20170110:加了此选项才能让客户端socketio.disconnect()生效!
                secure:supportSSL?true:false // 20170526:是否支持SSL/TLS
            });

到这里处理这个登录过程的,应该是IM Web端部分的server吧,不知道后续是怎么处理呢,发送给MQ,再用MQ的消费端处理么?
引用:snowmandxp 发表于 2024-11-06 12:26
我看了一下,im_http_service处理过程没有返回token,传的是N/A,在IM Web端的index.html页面有:
      ...

你公司叫什么名字。我核对一版本

开启https和http token校验,按照服务端部署和开发者手册去做就行了
公司叫广东威士顿,我看一下手册
是广州威士顿,我看了一下开发者指南里并没有讲如何开启token校验,因为并不是在传输过程中拦截,光开启https是没有用的,我可以登录认证返回token,但我不知道后续IM登录是如何处理token的
我看了一下,问题应该出在这里:
function callBack_CheckAuthToken(loginInfo, fn) {

  //*********************************************************************** START
  // TODO 你可在此填写登陆/掉线重连认证代码实现:(true表示验证成功,false表示失败) START
  //var authOK = false; // 验证失败!
  var authOK = true;    // 验证成功!
  // TODO 你可在此填写登陆/掉线重连认证代码实现:(true表示验证成功,false表示失败) END
  //*********************************************************************** END

  logger.info('[IM应用层-回调] 已收到sdk的连接认证回调,loginInfo=%s, 认证结果=%s', JSON.stringify(loginInfo), authOK);

  // 此回调请原样照写,不可更改:即将认证结果传回第2层回调(fn回调函数来自SDK内部,原样传过去即可)
  fn(null, authOK);
}

实际上IM的登录流程是没有处理的,这里直接返回了authOK = true

那实际上是要在这里提供一个登录流程,这个是IM端的,难道继续再调用rainbowchat_server那个登录流程?

像普通的Web应用,每次请求都会带上token,每次请求都会校验token的有效性,我想知道,RainbowChat-Web,请次发送消息,服务端会校验用户身份的有效性么?
引用:snowmandxp 发表于 2024-11-06 14:28
我看了一下,问题应该出在这里:
function callBack_CheckAuthToken(loginInfo, fn) {

默认的这段认证回调“TODO”,是预留给你对接你现在系统的Auth2.0或别的单点登陆验证系统(最简单的,你可以考虑用JWT,可参考这篇:http://www.52im.net/thread-2106-1-1.html

你可以对接你现有的系统,生成token返回给客户端(你前面看到的返回的默认N/A,表示的也是预留空值),客户端就自动带到你看到的这个回调里,然后通过你们自已的认证逻辑来检验就行了

通常对于长连接来说,连接建立的时候检验身份就行了,不需要每条消息都检验,如果每条都要检验,那性能就会消耗太大了,不现实,也没有必要,它不需要像http短连接那样每次请求都要检验token(但如果你的场景下安全要求特别高,那你可以考虑每条消息都检验)
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部