mt 发表于 2019-3-18 09:55:00

永久删除你在任何 Discuz! X 论坛的帐号漏洞修复方案

Twitter网友Coxxs公布了疑似Discuz! X 论坛的漏洞,通过调用网页控制台Console键入特定代码,执行代码后会先删除UCenter 内的帐号,随后UCenter 会通知 Discuz! 删除用户帐号。

1、进入欲删除账号的网站,登陆欲删除的账号
2、按F12打开控制台,点击「Console」,为了分便操作,先清空控制台,点击左上角‘禁止’按钮清空
3、复制以下代码到Console中,按下Enter键执行代码
location.href=((d=(await(await fetch(“./home.php?mod=spacecp&ac=avatar”,{credentials:’include’})).text()).match(/\/\/\S+\/images\/ca\S+&ag/g).replace(‘images/camera.swf?’,’?m=user&a=delete&’))&&confirm(‘真的要[永久]删除你的ID?’))?d:”;
4、弹出对话框,点击「确定」
*.部分浏览器可能会拦截对话框,请查看地址栏处是否有对话框被拦截。
5、返回一个大于0的整数,删除账号成功,尝试登陆,失败。

说明:此操作是删除的是 UCenter 内的帐号,UCenter 会通知 Discuz! 删除用户帐号
通知可能出现延迟,或不成功。因此可能不会立即登出网站
如果通知最终成功,该帐号及其所有帖子都会从 Discuz! 中删除
如果通知不成功,帐号登出后也将无法登录。此时可以注册一个新的同名帐号,覆盖原帐号。原帐号信息将被删除,其帖子将无法阅读(但不会删除)。

解决方案:
1、修改文件一:“/source/plugin/mobile/api/2/uploadavatar.php”
找到82行,把如下代码:
$result = self::uc_api_post_ex('user', 'rectavatar', array('uid' => $_G['uid']), $extra);

修改为:
$result = self::uc_api_post_ex('user', 'rectavatar', array('uid_avatar' => $_G['uid']), $extra);

2、修改文件二:“/source/plugin/wechat/wechat.class.php”

找到549行,把如下代码:
$result = self::uc_api_post_ex('user', 'rectavatar', array('uid' => $uid), $extra);
修改为:
$result = self::uc_api_post_ex('user', 'rectavatar', array('uid_avatar' => $uid), $extra);

3、修改文件三:“/uc_client/client.php”

找到591行,把如下代码:
$uc_input = uc_api_input("uid=$uid");

修改为:
$uc_input = uc_api_input("uid_avatar=$uid");

4、修改文件四:**** Hidden Message *****
修复漏洞的原理,就是把input里面的参数uid改成了uid_avatar,这样修改头像和删除用户的加密字符串不一样了!


页: [1]
查看完整版本: 永久删除你在任何 Discuz! X 论坛的帐号漏洞修复方案