1.CVE-2020-9484 tomcat session反序列化漏洞分析
2.常见的漏洞漏洞Web源码泄漏及其利用
3.一文详解Tomcat Ghostcat-AJP协议文件读取/文件包含漏洞CVE-2020-1938
4.小阑带你一探究竟 | Qemu漏洞该如何分析?
5.代码分析有助于发现代码中的漏洞吗
6.分析Discuz 3.4 越权登陆漏洞分析
CVE-2020-9484 tomcat session反序列化漏洞分析
Apache Tomcat 的 CVE-- 漏洞是一个源于持久化 Session 的远程代码执行漏洞,该漏洞的源码源码条件相对苛刻,包括启用 session 持久化功能、分析在 lib 或 WEB-INF/lib 目录下存在可用 gadget、检测服务器上存在已知路径文件内容可控。漏洞漏洞本文旨在详细分析该漏洞,源码源码安卓表白软件源码下载并介绍本地和远程调试 Tomcat 源码的分析方法。
首先,检测该漏洞的漏洞漏洞简介部分指出,Apache Tomcat 发布通告修复了一个远程代码执行漏洞(CVE--),源码源码条件包括:1. Tomcat 必须启用 session 持久化功能,分析即 FileStore;2. tomcat/lib 或 WEB-INF/lib 目录下的检测依赖存在可用的 gadget;3. 服务器上存在已知路径文件内容可控。
接着,漏洞漏洞我们分析漏洞的源码源码依赖条件。通过从官网下载并配置 Tomcat 8.5.,分析我们可以开始实现漏洞的触发。具体步骤包括配置 session 持久化(通过 context.xml 文件进行配置)、部署 gadget jar 包(例如,下载 commons-collections4-4.0.jar 并放入 tomcat lib 目录下),以及验证依赖条件是否满足。
为了帮助深入理解该漏洞,本文提供了多种 Tomcat 调试方法。本地调试可以通过 IntelliJ IDEA 等工具进行,包括创建项目、添加 Tomcat 服务、添加 Tomcat 源码、配置项目 lib 库文件等步骤。远程调试则需要修改启动脚本以添加 debug 配置,并在 IntelliJ IDEA 中配置 debug IP 和 port。
漏洞原理及触发分析中,我们了解到当使用 Tomcat 且使用了 session 持久化功能时,会尝试读取 session 文件中的内容并进行反序列化。具体逻辑包括路径拼接和反序列化过程。如果路径拼接过程中存在不当,攻击者可以通过路径穿越到根目录。seetaface源码实例之后,通过调用反序列化函数,如果存在文件上传漏洞,攻击者可以实现反序列化远程代码执行。
漏洞利用部分介绍了生成 payload 的方法,例如使用 Ysoserial 生成反序列化文件。生成 payload 的关键代码和完整漏洞利用链可以参考相关资源。触发漏洞的实例可能包括通过错误回显查看调用栈。
为了防止该漏洞,官方在 Tomcat 8.5. 版本中进行了补丁修复,主要在文件判断上进行改进。目前尚未发现绕过该补丁的姿势。
本文提供了一个全面的分析框架,包括漏洞原理、利用方法、补丁修复等内容,旨在提高对 Tomcat 安全性的理解。读者在应用本文内容时,应确保遵循安全最佳实践,防止任何可能对网络安全产生危害的行为。
常见的Web源码泄漏及其利用
Web源码泄漏漏洞及利用方法
Git源码泄露是由于在执行git init初始化目录时,会在当前目录下自动创建一个.git目录,用于记录代码变更等信息。若未将.git目录删除即发布到服务器,攻击者可通过此目录恢复源代码。修复建议:删除.git目录或修改中间件配置以隐藏.git隐藏文件夹。
SVN源码泄露源于其使用过程中自动生成的.svn隐藏文件夹,包含重要源代码信息。若网站管理员直接复制代码文件夹至WEB服务器,暴露.svn隐藏文件夹,攻击者可利用.svn/entries文件获取服务器源码。修复方法:删除web目录中的所有.svn隐藏文件夹,严格使用SVN导出功能,避免直接复制代码。jedis 2.7源码
Mercurial(hg)源码泄露通过生成的.hg文件暴露,漏洞利用工具为dvcs-ripper。运行示例需具体说明。
CVS泄露主要针对CVS/Root和CVS/Entries目录,直接暴露泄露信息。修复工具为dvcs-ripper,运行示例同样需具体说明。
Bazaar/bzr泄露为版本控制工具泄露问题,因其不常见但多平台支持,同样存在通过特定目录暴露源码的风险。具体修复方法与运行示例需进一步说明。
网站备份压缩文件泄露是管理员将备份文件直接存放于Web目录,攻击者通过猜测文件路径下载,导致源代码泄露。常见备份文件后缀需具体列出,利用工具御剑用于这类漏洞的利用。
WEB-INF/web.xml泄露暴露了Java WEB应用的安全目录,若直接访问其中文件需通过web.xml文件映射。WEB-INF目录主要包括文件或目录,通过web.xml文件推断类文件路径,最后直接访问类文件,通过反编译得到网站源码。
.DS_Store文件泄露源于Mac系统中Finder保存文件展示数据的文件,每个文件夹下对应一个。若上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件的泄露。利用工具为github.com/lijiejie/ds_...
SWP文件泄露为编辑文件时产生的临时文件,是隐藏文件,若程序意外退出则保留。直接访问并下载.swp文件,删除末尾的.swp后,可获得源码文件。jstorm 源码分析
GitHub源码泄露通过关键词搜索功能,容易找到目标站点的敏感信息,甚至下载网站源码。此类泄露源自代码托管平台,需注意个人代码管理安全。
总结,Web源码泄漏涉及多个环节,从代码版本控制到备份存储,再到代码托管平台,每个环节都可能成为攻击点。修复策略包括删除隐藏文件、严格使用版本控制功能、加强代码备份安全措施以及提高代码托管平台安全意识。
一文详解Tomcat Ghostcat-AJP协议文件读取/文件包含漏洞CVE--
文章首发于先知社区:xz.aliyun.com/t/
零基础慎入,因为一不小心你就看懂了。
以tomcat 8.5.版本为例进行漏洞分析,首先下载tomcat源码: et_receive函数的crc校验漏洞进行攻击,注意数据包大小可能导致的内存越界。
代码分析有助于发现代码中的漏洞吗
是的,代码分析确实有助于发现代码中的漏洞。
代码分析,也称为代码审查或代码检查,是一种通过系统检查源代码以发现其中可能存在的问题、错误或漏洞的过程。这个过程可以由人工进行,也可以借助自动化工具来完成。无论是哪种方式,其目的都是为了提高代码质量,确保软件的可靠性和安全性。
在人工代码分析中,开发人员或安全专家会逐行审查代码,寻找潜在的逻辑错误、未处理的异常、不安全的lucene源码解析编程实践等问题。例如,在Web开发中,常见的漏洞包括SQL注入、跨站脚本攻击和跨站请求伪造等。通过仔细审查代码中对用户输入的处理方式,可以发现是否存在未经验证或转义的用户输入,从而识别出潜在的注入攻击点。同样,检查身份验证和授权机制的实现,也能帮助发现可能的权限提升或伪造请求漏洞。
自动化代码分析工具则能够更快速地扫描大量代码,发现其中的常见问题和模式。这些工具通常基于静态代码分析技术,能够在不运行代码的情况下检测出其中的潜在问题。例如,一些工具可以检测出未使用的变量、未初始化的对象、空指针引用等常见的编程错误。同时,针对特定语言和框架的安全漏洞,也有相应的自动化工具能够进行模式匹配和漏洞识别。这些自动化工具的效率和准确性虽然不及人工审查,但它们能够大大减轻人工审查的负担,提高代码审查的覆盖率。
总的来说,代码分析是软件开发生命周期中不可或缺的一环。通过结合人工审查和自动化工具,可以有效地发现代码中的漏洞和潜在问题,从而提高软件的质量和安全性。这不仅有助于减少软件发布后的安全事件,也能提升用户对软件的信任度和满意度。
分析Discuz 3.4 越权登陆漏洞分析
Discuz是一个通用的社区论坛系统。有发现一个逻辑漏洞源于其默认配置的微信登陆功能。该漏洞允许攻击者越权登录论坛会员乃至管理员账号,具体情况取决于攻击者的运气。
漏洞源代码位于/upload/source/plugin/wechat/wechat.inc.php文件的-行。关键逻辑在于从common_member_wechatmp表查询对应openid的第一条结果,接着从common表中获取该uid的所有信息,并设置该用户为登录状态。
根据代码逻辑,如果攻击者能获取到某个用户的openid,则可越权登录该用户的账号。然而,微信接口文档显示openid是唯一的,并且只有用户授权后公众号才能获取到。从作者提供的payload来看,似乎并没有直接使用openid参数。
实际上,payload只是尝试登录openid为空的第一个用户。在当前情况下,通过/plugin.php?id=wechat:wechat&ac=wxregister&username={ name}的方式可以产生openid为空的情况,但同时也会创建一个新的账号。
作者提及,如果用户尝试绑定微信但绑定失败,openid会为空,但具体的绑定方法没有明确说明。利用此漏洞,攻击者可以遍历并登录所有openid为空的账户,依次登录、解绑、再登录下一个。
针对此漏洞,最新版本的Discuz已删除了相关代码。更新到最新版本即可解决此问题。
参考文献包括Gitee平台的项目链接和白帽汇的原创文章,文章强调了信息安全领域的工作,如网络空间测绘、资产收集、威胁情报和应急响应服务。白帽汇提供包括FOFA、FOEYE和NOSEC在内的安全工具和平台。
shiro反序列化漏洞原理分析以及漏洞复现(Shiro-/Shiro-漏洞复现)
shiro-反序列化漏洞(CVE--)漏洞简介
shiro-主要是由shiro的rememberMe内容反序列化导致的命令执行漏洞,造成的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的人都可以知道默认加密密钥。于是攻击者可以创建一个恶意对象,对其进行序列化、编码,然后将其作为cookie的rememberMe字段内容发送,Shiro 将对其解码和反序列化,导致服务器运行一些恶意代码。
特征:cookie中含有rememberMe字段
修复建议:
更新shiro到1.2.4以上的版本。
不使用默认的加密密钥,改为随机生成密钥。
漏洞原理
一、Shiro简介
Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。
在ApacheShiro<=1.2.4版本中AES加密时采用的key是硬编码在代码中的,于是我们就可以构造Remembe Me的值,然后让其反序列化执行。
二、Shiro服务器识别身份加解密处理的流程
(1)加密
1.用户使用账号密码进行登录,并勾选"Remember Me"。
2、Shiro验证用户登录信息,通过后,查看用户是否勾选了”Remember Me“。
3、若勾选,则将用户身份序列化,并将序列化后的内容进行AES加密,再使用base编码。
4、最后将处理好的内容放于cookie中的rememberMe字段。
(2)解密
1、当服务端收到来自未经身份验证的用户的请求时,会在客户端发送请求中的cookie中获取rememberMe字段内容。
2、将获取到的rememberMe字段进行base解码,再使用AES解密。
3、最后将解密的内容进行反序列化,获取到用户身份。
三、Key
AES加密的密钥Key被硬编码在代码里
于是可得到Payload的构造流程:
恶意命令-->序列化-->AES加密-->base编码-->发送Cookie
Shiro-反序列化漏洞(CVE--)Shiro和Shiro的区别是什么
Shiro只需要通过碰撞key,爆破出来密钥,就可以进行利用 Shiro的ase加密的key一般情况下猜不到,是系统随机生成的,并且当存在有效的用户信息时才会进入下一阶段的流程所以我们需要使用登录后的rememberMe Cookie,才可以进行下一步攻击。
漏洞指纹
URL中含有Shiro字段
cookie中含有rememberMe字段
返回包中含有rememberMe
漏洞介绍
在Shiro中,Shiro通过AES--CBC对cookie中的rememberMe字段进行加密,所以用户可以通过PaddingOracle加密生成的攻击代码来构造恶意的rememberMe字段,进行反序列化攻击,需要执行的命令越复杂,生成payload需要的时间就越长。
漏洞原理
由于Apache Shiro cookie中通过 AES--CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,用有效的RememberMe cookie作为Padding Oracle Attack 的前缀,然后制作精心制作的RememberMe来执行Java反序列化攻击
攻击流程
登录网站,并从cookie中获取RememberMe。使用RememberMe cookie作为Padding Oracle Attack的前缀。加密syserial的序列化有效负载,以通过Padding Oracle Attack制作精心制作的RememberMe。请求带有新的RememberMe cookie的网站,以执行反序列化攻击。攻击者无需知道RememberMe加密的密码密钥。
加密方式:AES--CBC 属于AES加密算法的CBC模式,使用位数据块为一组进行加密解密,即字节明文,对应字节密文,,明文加密时,如果数据不够字节,则会将数据补全剩余字节
若最后剩余的明文不够字节,需要进行填充,通常采用PKCS7进行填充。比如最后缺3个字节,则填充3个字节的0x;若最后缺个字节,则填充个字节的0;
若明文正好是个字节的整数倍,最后要再加入一个字节0x的组再进行加密
Padding Oracle Attack原理 Padding Oracle攻击可以在没有密钥的情况下加密或解密密文
Shiro Padding Oracle Attack(Shiro填充Oracle攻击)是一种针对Apache Shiro身份验证框架的安全漏洞攻击。Apache Shiro是Java应用程序中广泛使用的身份验证和授权框架,用于管理用户会话、权限验证等功能。
Padding Oracle Attack(填充Oracle攻击)是一种针对加密算法使用填充的安全漏洞攻击。在加密通信中,填充用于将明文数据扩展到加密算法块大小的倍数。在此攻击中,攻击者利用填充的响应信息来推断出加密算法中的秘密信息。
Shiro Padding Oracle Attack利用了Shiro框架中的身份验证过程中的一个漏洞,该漏洞允许攻击者通过填充信息的不同响应时间来确定身份验证过程中的错误。通过不断尝试不同的填充方式,攻击者可以逐步推断出加密秘钥,并最终获取访问权限。
这种攻击利用了填充错误的身份验证响应来获取关于秘密信息的信息泄漏,然后根据这些信息进行进一步的攻击。为了防止Shiro Padding Oracle Attack,建议及时更新Apache Shiro版本,确保已修复该漏洞,并采取其他安全措施,如使用安全的加密算法和密钥管理策略。
漏洞复现:CVE--
环境:kali linux
靶场使用:vulhub/shiro/CVE--
访问地址:
抓包分析一下:
在返回包当中发现存在rememberMe=deleteMe 字样,可以大概确定有配置shiro,可以进行下一步。因为shiro本身功能就是一个身份验证管理,所以一般都在登录口可以看到。
UI一键利用工具
使用工具再进行检测确认:
输入目标的url地址,根据关键字进行爆破秘钥
接下来爆破利用链以及回显方式:
接下来可进行命令执行:
反弹shell:
可使用工具进行检测:
检测完成后可进行命令执行,反弹shell等操作:
使用工具进行简单的反弹:
设置监听端口
window:
linux:
还有使用ysoserial监听模块JRMP来进行反弹shell,具体可看参考文档,操作都差不多。
正是因为利用简单,所以危害比较大。
工具地址
漏洞复现:CVE--
环境:kali linux
docker进行搭建启动
访问:
利用过程和shiro差不多,shiro需要登录网站,并从cookie中获取RememberMe。
进行登录,使用正确的账号和密码:
先使用正确的账号密码登录后,在抓包获取合法 Cookie(勾选Remember Me)
如果认证失败则只能得到 rememberMe=deleteMe
将登录后获取的set-cookie值当中的rememberMe值,将值复制下来,放到工具当中
选择shiro,输入目标url,设置rememberMe值,点击下一步,等待即可
选择检测方式:
等待即可:
使用shiro综合工具:
输入url后:进行爆破秘钥,爆破利用链以及回显
命令执行:
工具地址