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

今天同事说Discuz可以通过js删除自己在论坛的账号信息,试验了一下确实可以,接下来吾爱编程就为大家介绍一下关于永久删除你在任何 Discuz! X 论坛的帐号漏洞修复方法,有需要的小伙伴可以参考一下:

1、js代码:

[login]location.href=((d=(await(await fetch("./home.php?mod=spacecp&ac=avatar",{credentials:'include'})).text()).match(///S+/images/caS+&ag/g)[0].replace('images/camera.swf?','?m=user&a=delete&'))&&confirm('真的要[永久]删除你的ID?'))?d:'';

[/login]

此代码需要在登录的状态下,按F12打开控制台,点击「Console」,在此执行。

2、执行效果:

QQ截图20200420190607.png

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

3、原理:

就是修改头像和删除用户的api的input加密字符串是通用的!可以根据前面的参数随意执行任意一个都可以!

4、解决方法:

(1)、vim /source/plugin/mobile/api/2/uploadavatar.php

$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)、vim /source/plugin/wechat/wechat.class.php

$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)、vim /uc_client/client.php

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

(4)、vim /uc_server/control/user.php,找到210、310、353行

$uid = $this->input('uid');
修改为
$uid = $this->input('uid_avatar');

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部