网站首页 包含标签 漏洞分析 的所有文章

  • 漏洞分析 | WordPress 插件权限提升漏洞(CVE-2023-32243)

    漏洞概述 Essential Addonsfor Elementor是一款功能强大、易于使用的WordPress插件,为使用Elementor建立网站的用户提供了众多额外的功能和组件,使得用户能够更轻松地创建各种网站元素,并且还提供了许多预设计样式和高级功能,使得用户能够更好地管理和定制网站。此外,通过WordPress官方统计(https://api.wordpress.org/plugins/info/1.0/essential-addons-for-elementor-lite.json)可知,它的安装量超过百万。 近期,其密码重置功能存在授权问题,允许未经认证的远程攻击者实现权限提升。 受影响版本 受影响版本:5.4.0 <= Essential Addons for Elementor <= 5.7.1 漏洞分析 问题关键在于Essential Addons for Elementor的密码重置功能没有验证密码重置密钥,就直接改变了指定用户的密码,也就是说攻击者只需知道用户名,就有可能进行密码重置,并获得对应账户的权限。 这里我们采用打补丁前的最新版本(5.7.1)进行分析,具体链接如下:https://downloads.wordpress.org/plugin/essential-addons-for-elementor-lite.5.7.1.zip 先从includes/Classes/Bootstrap.php看起,这段代码是在WordPress中添加一个动作,当网站初始化时触发该动作,调用login_or_register_user() 该函数位于includes/Traits/Login_Registration.php 它的作用是处理登录和注册表单的提交数据,并根据提交的数据调用相应的方法。正如漏洞概述所说,问题关键在于密码重置,所以我们继续跟进reset_password(),它做的第一步操作就是检查page_id和widget_id是否为空,若为空则返回”xxx ID is missing”,用作后续的错误处理,所以我们首先要做的就是给这两个id赋值: 接着代码就会检查eael-resetpassword-nonce的值是否为空,若不为空则通过wp_verify_nonce()进行验证。 那么问题来了,nonce是什么?如何获取? 在 WordPress 中,nonce 是一个随机字符串,用于防止恶意攻击和跨站请求伪造(CSRF)攻击,它通常与表单一起使用,在表单提交时添加一个随机值,以确保表单只能被特定的用户或请求使用。而关于nonce如何获取,wp_create_nonce()可以做到这一点。 function wp_create_nonce( $action = -1 ) { $user = wp_get_current_user(); $uid = (int) $user->ID; if ( ! $uid ) { /** This filter is documented in wp-includes/pluggable.php */ $uid = apply_filters( 'nonce_user_logged_out', $uid, $action ); } $token = wp_get_session_token( $action ); $i = wp_nonce_tick( $action ); return substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 ); } 但需要注意的是,攻击者无法通过本地生成的 nonce 绕过受害者站点的wp_verify_nonce() 验证,因为他们不能在本地生成与受害者站点相同的 nonce。不过还有一种方法来获取nonce,直接访问主页即可在localize里找到它。 至于原因,则是它被includes/Classes/Asset_Builder.php::load_commnon_asset()设置在localize_object内: 跟踪localize_object不难发现,它被两个函数调用过: 先看add_inline_js(),它用于加载内联js代码和变量。在前端页面加载时,浏览器将加载该代码,并在js中创建名为 localize 的变量,该变量的值就是localize_objects 数组经wp_json_encode()转换的json字符串。 显然,我们刚才直接访问主页发现的localize就是以json格式呈现的。再看frontend_asset_load(),它用于加载前端资源。 最终上述两个函数都会被init_hook()调用,add_inline_js() 被添加到 wp_footer 中,优先级为100,以便在 WordPress 前端页面的页脚中加载内联js代码和变量。而frontend_asset_load() 被添加到 wp_enqueue_scripts 中,优先级为100,以便在 WordPress 前端页面加载时加载所需的前端资源。 之后就是给eael-pass1、eael-pass2赋值,设置新密码了: 当我们满足了上述前提条件以后,再通过rp_login设置想要攻击的用户即可。此时,代码就会借助get_user_by() function get_user_by( $field, $value ) { $userdata = WP_User::get_data_by( $field, $value ); if ( ! $userdata ) { return false; } $user = new WP_User(); $user->init( $userdata ); return $user; } 按我们给定的字段,也就是用户名去检索用户信息: 如果这是真实存在的用户,就调用reset_password() 进行密码重置操作: 漏洞复现 通过以上分析,我们仅需知道用户名以及nonce值,再向受害站点发送满足漏洞触发条件的请求体,即可进行漏洞利用。 当然,之前也提到了受影响的版本,所以漏洞利用之前,需要优先进行版本探测,有两个方法: 第一,由于frontend_asset_load()调用了wp_enqueue_style()来加载css文件,WordPress就会自动将版本号添加到url中,这是为了确保浏览器能够正确缓存css文件,以便在文件更新时将旧文件替换为新文件: function wp_enqueue_style( $handle, $src = '', $deps = array(), $ver = false, $media = 'all' ) { _wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); $wp_styles = wp_styles(); if ( $src ) { $_handle = explode( '?', $handle ); $wp_styles->add( $_handle[0], $src, $deps, $ver, $media ); } $wp_styles->enqueue( $handle ); } 第四个参数即代表指定样式表的版本号的字符串,如果它有的话,它将作为一个查询字符串添加到URL中,以达到破坏缓存的目的。如果版本号被设置为false,则会自动添加一个与当前安装的WordPress版本相同的版本号。如果设置为null,则不添加版本号。最终生成这样一条url:https://example.com/front-end/css/view/general.min.css?ver=x.x.x 第二,我们也可以通过/wp-content/plugins/essential-addons-for-elementor-lite/readme.txt进行版本探测。 确认受影响的版本以后,就是搜寻真实用户名。同样有多种方式进行探测: 使用 WordPress 的 rss feed 来提取用户名。这是一种用于发布和传递 WordPress 内容的标准格式,包含了站点的最新文章、页面、评论等内容,以及发布时间、作者、分类、标签等相关信息。这些信息可以被其他站点或应用程序订阅和使用,增加当前站点的曝光度。而其中dc:creator标签就包含了作者名称; 使用 WordPress 的 rest api 来获取用户名; 使用了 Yoast 插件提供的站点图来获取用户名。它较于第一种方法的优势在于只能获取到站点中已发布文章的作者信息。如果站点中还有其他用户没有发布文章,那么这些用户的信息是不会被获取的。 除此之外,WordPress也存在默认用户名(admin),这也是该漏洞最常利用的用户名之一。 做完上述信息收集以后,构造报文即可成功重置任意用户密码: 修复方案 在Essential Addons for Elementor(5.7.2)中,进行reset_password()操作之前,先去做了rp_key的校验。补丁如下:   ...

    2023-10-16 249
  • 以“溯源”为诱饵反钓鱼蓝队,攻击队这波上大分

    2023年攻防演练活动圆满收官,各位七夕节还在疯狂打HW的红蓝队师傅们辛苦了。上次分享了一些蓝队方面的想法,“攻防演练之给蓝队防守方的11个忠告”,感兴趣的师傅们可以在FreeBuf网站查看。这篇文章分享一下2023年攻防演练中红队的一些个人想法,希望和大家一起交流交流。如有不对之处,还请师傅们多多指教。 回顾2023年攻防演练行动,发生了很多非常有意思的事情,攻击队的整体表现令业界眼前一亮,给不少蓝队成员上了难忘的一课。例如在攻防演练行动刚刚开始时,就传出某某通信领域的单位被攻击队直接打穿;某某攻击队已经杀疯了等多种版本的传闻。由于事件的敏感性和保密性,导致很多消息难以百分百实锤,但也从侧面反映出2023年攻击队之强悍,战法之新颖,武器之犀利等。 最最令人感到不可思议的是,某个攻击队竟然想出一个“以溯源反制”为诱饵,引诱蓝队防守成员进入恶意环境,成功钓鱼蓝队的方法,在网络安全领域展示了一波什么才是真正的对抗,以及孙子兵法如何活灵活现应用至攻防演练行动中。 正是因为有如此出人意料的攻击方式的存在,才让攻防演练行动变得更加有意义。在攻防演练中发现问题,解决问题,真正提升企业安全防护能力,从而提升我国网络空间整体安全等级,才是攻防演练的最终目的和真正意义。 为2023年攻防演练行动中攻击队的优异表现点赞。但在攻防演练圆满收官的时候,攻击队这边也曝出舞蹈生滥竽充数的案例,其令网安行业震惊的程度不亚于上述新颖的攻击战法,甚至是有过之而无不及,可以预见,在2024年的攻防演练行动中,新人面试攻击成员将会遭遇前所未有的难度。 接下来,我会一一分享个人总结的2023年攻防演练观点,欢迎评论区留言讨论。 签了保密协议就认真履行 2023年攻防演练行动最后一天最大的瓜莫过于“苕皮哥了”。这位“苕皮哥”是某蓝队防守方成员,攻防演练的最后一天在红书发文:“暑假12天挣了3万多,奖励自己吃苕皮”,一时间引起轩然大波,迅速在整个网安圈子里流传,更是震惊了一众圈外打工人,纷纷在社交平台上惊呼“网安人搞钱太容易了。” 据说“苕皮哥”并非专业的网安人,而是一名在校舞蹈生,经过三个月的学习后以在校生的身份参加了2023年攻防演练行动,单日收入2700元。说实话这个工资已经吊打许多网安毕业生了。 不知道是觉得钱拿的过于容易,还是为了炫耀,“苕皮哥”干了一件很无脑的事情——直接公布了攻防演练进场合同,上面明确写了进场工资1800元,工作12小时以上工资上浮1.5倍,也就是2700元。 打过HW的师傅们都知道,一般这类合同都有保密协议,就这样不打码直接将进场合同发在社交平台上,对于厂商、甲方、第三方来说都是一种巨大的伤害。传闻“苕皮哥”事件传开后,厂商已经在琢磨起诉事宜,后续等待“苕皮哥”的也是会是更重的处罚。 最最糟糕的是这件事情将会给攻防演练行动的外聘人员带来严重的负面影响,很有可能以后在校大学生在面试hw时会面临更严格的要求,价格肯定也会迎来一波跳水,甚至有可能引发相关部门对于攻防演练外聘人员的整顿。“苕皮哥”行为出发点也许就是单纯的炫一波,但是最终的结果却是把网安吃饭的桌子都给掀了。 当然,从长远来看,这件事情也许会让攻防演练行动变得越来越规范,一些行业乱象将会被整改。这里强调一下,签了保密合同就要认真履行保密协议,真的别不当回事,当法院传票发来的那一刻,对于个人来说将会面临非常严重的后果。 攻击队上演“三十六计” 2023年另外一件令我大开眼界的事情,就是攻击队在攻防演练中上演了一波精彩的网安三十六计。整个攻击过程异常丝滑犹如行云流水,攻击方心思缜密层层设局,洞悉防守方的内心,一步步将防守方成员引入陷阱之中,将三十六计是玩的明明白白,实在是令人拍案叫绝,该狠狠上一波大分。 通常来说,蓝队防守方利用蜜罐来钓鱼攻击方是非常常见的手法,也是蓝队溯源反制必不可少的措施,蜜罐用的好,攻防演练的成绩基本也不会差到哪里去。但是红队以“溯源反制”为诱饵,反过来钓鱼蓝队这就不常见了。事实上这一次反钓鱼的效果非常好,蓝队成员大多中了圈套,后面结果如何已经不需要多说。 具体操作思路如下:红队故意发起攻击是蓝队进行溯源反制,在这个过程中诱导蓝队访问器搭建的恶意服务,钓鱼公告后红队再次对蓝队主机进行攻击反制,从而顺利获得防守方的内网权限。整个攻击方法不仅仅体现在技术高超,更多的是利用了规则——即没有多少蓝队能够抵得住“溯源反制”的诱惑,从而反钓鱼蓝队拿下权限。 2023年的这个案例充分说明了,网络攻防演练不是套路化的演习,而是实打实的攻守双方的激烈对抗,真正的攻击方不会和你讲任何的经验与套路,只会不断掏出新的攻击方法持续碾压你们。该案例也从侧面说明了攻防演练的实质,演习即实战,在攻防演练行动中,防守方必须时刻牢记,自己面对的是一群不论技术还是理念都十分先进的对手,千万不可放松警惕。如果我是本次攻防演练的裁判,那么我会给攻击方更多的分数,正是因为有这样持续进化的攻击方,我们的网络安全防护体系才能持续不断发展、优化。 旧的攻击方法依旧很好用 他山之石可以攻玉。在攻防演练行动开始之前,攻击队应该提前收集各类优秀的攻击方法和案例,总结学习其中的优秀思路和手法, 在攻防演练中,攻击方会利用各种技术手段和方法,如网络渗透、漏洞利用等,来尝试入侵防守方的系统或获取敏感信息。他们的目标是发现潜在的漏洞和弱点,并评估防守方对这些攻击的应对能力。红队常见的攻击方法可以分为以下八类: 互联网边界渗透。几乎所有企业都有部分开放于互联网的设备或系统,比如邮件、官网等。红队会以这些设备或系统的开放性特点,将其作为入侵的切入点。 通用产品组件漏洞利用。信息化产品虽然提高了企业的运行效率,但其自身的安全漏洞也给企业带来了很多潜在隐患。红队在攻防演练中就经常通过利用产品组件的漏洞来达成攻击目标,比如:OA漏洞、中间件漏洞、数据库漏洞等。 0day攻击。在攻防演练中,0day攻击已成为常态,由于0day漏洞能够穿透现有基于 ...

    2023-10-09 212
  • 关于近期国内航空航天领域面临APT窃密攻击风险分析

    自2023年年初,深信服深瞻情报实验室监测到大量来自南亚地区的APT组织针对我国科研院所开展定向窃密攻击,其中航空航天领域成为其攻击核心,国内有关科研单位和高校相继受到攻击。通过深度参与事件调查,我们逐渐可以揭示出本轮攻击的模式与特征,以及潜藏在攻击活动背后的野心。 航空航天领域高速发展引来知识产权窃密风险 我国的航空航天事业自新中国成立以来就始终保持着高速发展的态势。近年来随着C919大飞机、天宫空间站、歼-20、神舟十六号载人航天等项目的顺利运行,我国在航空航天技术领域取得巨大突破,逐渐走在了世界前沿。然而高速发展带来的不止是荣誉,也伴随着一些负面问题,在竞争激烈的时代,窃取知识产权成为一种较低成本的快速追赶手段。 基于此,源自南亚地区的SideWinder(响尾蛇)、Bitter(蔓灵花)、Patchwork(白象)、Donot(肚脑虫)、CNC等APT组织闻风而动,开始在网络空间大肆活跃。为获取政策情报、军事秘密、科研进展、知识产权等数据,上述组织近年来持续对我国及南亚部分国家开展攻击,攻击范围包括政府部门、国防军工单位、科研院所等。 西工大遭受网络攻击以来,科研院所一直是APT攻击的重要目标,据监测,2023上半年受攻击的相关单位至少包括5所高级院校以及1所高级科研单位。 其中最引人注意的是CNC组织针对某学校的攻击事件。此次攻击自23年1月起筹划,定向针对某重点实验室实施窃密攻击。据历史披露,CNC组织2021年6月,就曾在我国神舟十二号载人飞船成功点火升空,与天和号核心舱对接之际,针对我国航空航天领域相关单位发起集中攻击。 本轮攻击的模式与特征 (一)伪装境外学术期刊钓鱼 历年来我们对印度APT组织的印象是广泛使用钓鱼邮件作为攻击入口,这些钓鱼邮件通常会蹭当下社会新闻热点,例如疫情话题,招聘话题等。而在近期CNC组织针对某学校的攻击活动中,攻击者结合目标的特点,使用了更加定向的投递方式,即仅向近期即将发表论文的作者发送“论文校对”或“论文确认”邮件,邮件内容除链接外,均与真实邮件完全相同。该特征在不同目标中多次出现,具有稳定性,攻击成功率极高。 具体来说,推测攻击者首先通过其他渠道,获得多个研究人员个人邮箱,监控其中的论文投递情况,当出现近期投递的论文,攻击者在适当的时间,模拟期刊方,仅向几位文章作者发送“论文校对”邮件,邮件包含该论文的编号、投递时间、在线发表地址等信息。 由于论文作者都密切关注其论文投递后的状态变更,且发件人刻意模仿期刊方,文章编号等这类保密信息真实,作者通常会无防备的点击该邮件中的链接,如下图红框所示,哪怕恶意超链接以明文形式展示,也会有受害者点击。同时,由于发送的校对邮件极真实,不排除国际上多个航空航天相关期刊的邮箱也遭到窃取,攻击者从此处获得某期刊论文校对邮件模板。 在CNC组织针对另一学校的攻击中,我们看到以“论文确认”为主题的钓鱼邮件,该论文同样为受害者近期在投的文章。 调查中,由于攻击者配置错误,我们在攻击者托管下阶段恶意样本分发的服务器中看到了其他期刊的相关载荷,如下表,充分印证了攻击者正积极采用这种手法进行攻击。 名称 组织 组织网站 Journalx_kjdb 科技导报 kjdb.org aippublishing 美国物理联合会出版社 publishing.aip.org aipscitation 美国物理联合会出版社 publishing.aip.org apcats2023 航空航天技术与科学亚太会议 apcats2023.org eg2.novatechset Nova Techset电子出版 novatechset.com hindawicentral Hindawi出版社 hindawi.com Journalx_yhxb 宇航学报 yhxb.org.cn sciencedirect sciencedirect期刊 sciencedirect.com asmesociety 美国机械工程师学会 asme.org sprintnature 施普林格·自然出版社 springernature.com   (二)伪装境外业内大牛钓鱼 除了“论文”主题外,攻击者还模仿领域内某位韩国知名教授,向航空航天相关专业的老师发送会议邀请函。邀请函正文从某个真正受到邀请的老师邮箱中获得,收到邮件的老师都熟识该教授,部分老师出于信任点击了恶意链接。 由于攻击者对邮件内容非常自信,攻击者近乎嚣张地与多名老师进行了近十轮的邮件交流而未被识破,交流中攻击者以“核对参会人信息”等方式,十分自然地发送携带恶意链接或附件的邮件使受害者中招。 (三)跨网段的U盘传播模式 攻击手段除安装各类文档窃密程序外,还投递了可通过U盘进行大范围传播的恶意样本,此类恶意样本通过不间断地监控目标主机是否有新的移动设备或存储设备接入,当检测到新的设备接入时,将自身复制到新设备中并进行伪装。此类样本不仅具有跨网段传播的功能,还下载后续阶段的其他样本进行驻留。这种意图跨越隔离网络,多种传播方式共用的方式,充分契合高校科研实验室网络架构。 恶意样本将自身复制到U盘后,伪装成图片,并取名为“私人图片.png”,引诱其他使用该U盘的受害者点击。在事件调查过程中,已经多次提醒注意不打开未知文件的情况下,仍有受害者出于好奇打开“私人图片”,使样本在内网进一步传播。   (四)高度定制化木马,明确的窃密目标 CNC组织针对高校的攻击手法如下图,经过多阶段的恶意程序下载释放,最终主机中会落地文档窃取程序。 攻击者通过钓鱼邮件成功攻陷主机后进行信息收集,后续对文档窃取程序进行定制化开发,窃取攻击者感兴趣的目标,例如在某校发现的样本中存在硬编码的最近文档路径,在另一发现的样本中存在硬编码的微信聊天文件路径和杂项路径。 攻击中使用的基础设施分析 对本轮针对航空航天领域攻击中使用的IP基础设施所属地理位置进行分析,其使用的C2地理位置集中在欧洲地区。 攻击者在后阶段样本中多次使用第三方平台github作为载荷和C2托管平台,“59degf”、“xerox211”、“kkrightjack”等账号接替出现。 “59degf”于2022年5月26日加入github,并且活跃到2022年8月,不排除后续继续使用。 其首先创建“stylefonts”仓库,并上传一份pip9.0.3的安装包进行伪装,接着上传多个文件,并将加密C2信息存储于其中。 其还会在该仓库中存放使用base64编码的载荷文件“jquery-img.css”,通过分析该载荷为GRAT2开源远控,且被用于历史活动。 其他的C2更新信息如下表。 时间 文件名 数据 2022.7.4 CustomLogktr56632404 menu-items#8080@Ulzc7AnSIBk7shxMu7bc+Z8PGYo= 2022.7.5 CustomLogktr56632404 background-color@8080:eJGipVAZxpwarQ4Rt+vXyg== 2022.7.5 CustomLogktr56632404 menu-items#8080@eJGipVAZxpwarQ4Rt+vXyg== 2022.7.5 CustomLog menu-items#8080@eJGipVAZxpwarQ4Rt+vXyg== 2022.7.5 CustomLog menu-items#8080@MoTyR1NbFGeJ7G7lhgos 2022.7.5 CustomLog1 menu-items#8080@MoTyR1NbFGeJ7G7lhgos 2022.8.4 License-rtm.txt 6ZBsOoSsfGBn4RVOdh49BhEBvX5tc18=(解密为https://94.140.115.232/) 2022.8.5 License-rtm.txt 6ZBsOoSsfGBv7AlRcxwiGRgDvX1seV/KybQNFZTCOGIm6JPNkdnI8Tl6Zv7A(解密为https://192.121.87.128/gtjuik75743.php?huyice) 另外,在分析的样本“e1d12807f017c8f827fe586a19b91f1f0903d0acbb693901762adfaab638f619”中提取出其通信的github URL为“https://raw.githubusercontent.com/59degf/charsets/main/fonts-store.txt”,并未发现其使用的charsets仓库,需持续观察。 “xerox211”于2022年9月28日加入github,并创建了仓库“service”,使用github存放加密的C2数据,当未获取到对应样本时无法对该数据解密。 2022年9月29日上传数据“21/3/231/347”(该数据格式暂不清楚)。 接着在2022年10月12日多次更新该数据。 将上述数据更新为"262/347/28/256”(该数据格式暂时不清楚),期间进行过多次格式调整。 接着在2022年11月4日将数据再次更新为“0x41,0x51,0x8d,0x3e,0x5e,0x70,0x21,0xc4,0x40,0xe5,0x7d,0xd6,0x7b,0x04,0x95,0x31,0xf0,0xc7,0xef”。 最终再次进行格式调整,将数据更新为“41518d3e5e7021c440e57dd67b049531f0c7ef”。 “kkrightjack”于2022年8月23日加入github,于2022年8月24日快速上传config.json文件后又在短时间内删除“msecnd-tray!8080$vH71iikBrM0YKkmpvugwHA==”。 2022年9月23日重新更新该数据为“msecnd-tray!8080$v5w0/D/EvtqeYBANF9Rrmg==”   附录:IoC IOC类型 IOC MD5 bffa445f8f99a05384c3a61b9eaabc2f ca7276e10fcf08ec118b7cdd4e191ae8 390f9430d01e499719e9a36af5489808 869d595bbc42335fcf27321b60421582 6c65f3eea8c6b85cfae319a85d39eb55 0d5554ffd44fb843e0f41dce571c78d5 9bba6c6eb20046e40e4c6bedff370614 3af8b5681908426e817f906ff0d08b6e ce3b254fc75fe4210aa509581ca42848 774f5270c753a8651e81a2886130908f 29bbb78c7a9873836d7e76198f9e1f6c 63944ca21aee1ea6f5cfed011c7173b0 040c572499115880acf1704cdf0c4aec f75ac8caca2e3b8f1becd26c7d6542d7 d3d227719260091b7bb58111f0b219fa 88b2e156b43b650705d895b595d59087 018bb9c176732dfc7879a6c3bca8e0aa 3a79ef175d63e504eb9442e64af12661 b1e792da3e146ebabc76219ffe2385a4 337899dc4fe9e74935678cf6fd067c31 ef6e329c6fb3eb2a93cabadd6798cd20 32fdd60c5366c924b3cceb95dadc4c2e 70f134f39ef48ea6f8be96bd05d299a2   ...

    2023-08-13 191

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注