您现在的位置是:首页 > cms教程 > discuz教程discuz教程
Discuz利用UC_KEY进行前台getshell的方法
翠风2025-06-26 16:48:56discuz教程已有5人查阅
导读先通过uc_key把恶意代码保存在/uc_client/data/cache/badwords.php,然后利用preg_replace() 进行任意代码执行。先附上来源中的脚本。修改了一些代码。
先通过uc_key把恶意代码保存在/uc_client/data/cache/badwords.php,然后利用preg_replace() 进行任意代码执行。先附上来源中的脚本。修改了一些代码。
看了下poc,就是构造一个code和xml数据,然后发送到/api/uc.php,跟一下这个php文件 可以看到对$code进行解密,并且用parse_str()函数把参数解析注册成变量。 读取post的内容,并用xml_unserialize()解析内容
看到这里,$action=updatebadwords,下面还有个段代码echo $uc_note->$get['action']($get, $post); ,执行了updatebadwords()函数,上面有if判断了$get['action']的值,所以不能造成代码执行。 循环出post的数据,并把findpattern replacement两个的值赋给$data,然后写入/uc_client/data/cache/badwords.php文件把数据存进去了,那要把数据取出来才行,来看看哪里可以取。
根据文章的内容,触发点是:/forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=dddd
根据discuz的mvc框架,调用了/source/module/forum/forum_ajax.php 调用了uc_user_checkname()函数 UC_API_FUNC默认是调用 所以调用了 可以看到$action重组成oncheck_username,并调用oncheck_username()
跟进oncheck_username()函数, 位于/uc_client/control/user.php 调用了_check_username()函数。 跟到check_usernamecensor() 函数中 获取badwords的内容,并且把他存入数组$_CACHE['badwords']
然后有这么一句: 刚好就是我们第一步修改的地方,也就是我们可控的,所以造成了代码执行。
运行poc后在访问如下页面,就能执行代码了。 要小心uc_key的泄露,有这么几种方式, 还有就是管理员弱口令登录到后台拿到uc_key。
整个poc应该要修改的地方有四处:
第一处是网站的地址:填ip或者域名都行,第二个是获取到的uc_key,一般都是管理员才能看到,第三个就是phpinfo(); ,修改成一句话的脚本,第四个就是网站的目录,可能放在二级目录下。看了下poc,就是构造一个code和xml数据,然后发送到/api/uc.php,跟一下这个php文件 可以看到对$code进行解密,并且用parse_str()函数把参数解析注册成变量。 读取post的内容,并用xml_unserialize()解析内容
看到这里,$action=updatebadwords,下面还有个段代码echo $uc_note->$get['action']($get, $post); ,执行了updatebadwords()函数,上面有if判断了$get['action']的值,所以不能造成代码执行。 循环出post的数据,并把findpattern replacement两个的值赋给$data,然后写入/uc_client/data/cache/badwords.php文件把数据存进去了,那要把数据取出来才行,来看看哪里可以取。
根据文章的内容,触发点是:/forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=dddd
根据discuz的mvc框架,调用了/source/module/forum/forum_ajax.php 调用了uc_user_checkname()函数 UC_API_FUNC默认是调用 所以调用了 可以看到$action重组成oncheck_username,并调用oncheck_username()
跟进oncheck_username()函数, 位于/uc_client/control/user.php 调用了_check_username()函数。 跟到check_usernamecensor() 函数中 获取badwords的内容,并且把他存入数组$_CACHE['badwords']
然后有这么一句: 刚好就是我们第一步修改的地方,也就是我们可控的,所以造成了代码执行。
运行poc后在访问如下页面,就能执行代码了。 要小心uc_key的泄露,有这么几种方式, 还有就是管理员弱口令登录到后台拿到uc_key。
本文标签:
很赞哦! (0)
暂无内容 |
暂无内容 |
相关文章
- PHPCMS某处设计缺陷authkey泄露的解决方法
- PHPCMS漏洞authkey生成算法问题导致authkey泄露
- WordPress设置Description、Keywords和Title的方法
- kali攻击wordpress,trunkey+linux安装wordpress的方法
- ecshop循环foreach,iteration,key,index的写法
- pbootcms模板修改tags实现keywords内容关联匹配的代码实例
- pbootcms调用搜索页keyword值数量和标签页tag值数量的写法
- pbootcms文章通过keywords要害字匹配相关的解决方法
- pbootcms怎么获取结果页面的搜索keyword值和tag值
- 织梦dedecms实现{dede:arclist keyword='[field:title/]'}效果
- 织梦cms采集时keywords字段无法添加过滤规则怎么办
- dede织梦cms关键字不在keyword中设置实现內链的方法
暂无内容 |
暂无内容 |
随机图文
Discuz移动端适配常见问题与解决方案
移动端适配对于Discuz论坛来说是一个关键的优化点。用户在移动设备上浏览论坛的体验直接影响到用户的留存率和活跃度。那么,如何解决Discuz移动端适配的常见问题呢?Discuz的NT进行缓存分层本地缓存+memcached介绍
在以前的两篇文章(DiscuzNT 缓存设计简析, DiscuzNT中集成Memcached分布式缓存)中,介绍了DiscuzNT中的缓存设计思路以及如何引入Memcached,当然前者是IIS进程的缓存discuz3.2去掉forum.php
discuz3.2去掉forum.php的方法:首先依次点击“界面->导航设置->主导航”;然后建立个新导航;最后在域名设置中设置好自己的域名即可。C#模拟登录Discuz论坛Discuz X1.5代码实例
本方法通过将账号和密码提交到登录页面,返回一个CookieContainer类型的COOKIE容器,需要模拟登录访问的时候带着这个CookieContainer访问指定地址便可。
留言与评论 (共有 0 条评论) |