Tomcat 任意文件写入漏洞 CVE-2017-12615
影响范围: Apache Tomcat 7.0.0 - 7.0.79 漏洞类型:任意文件写入漏洞 操作系统限制:Windows 配置要求: 需开启 readonly = false 漏洞利用:写入敏感文件,例如用木马 getshell 利用原理:Windows 特性,在文件名后面加空格、/、::$DATA,系统会自动忽略后缀 绕过手段:斜杠绕过:PUT /文件名.jsp/ 空字符绕过:PUT /文件名.jsp%20(空格) NTFS 流绕过:PUT /文件名.jsp::$DATA 漏洞复现:12345678# 拉取dockers镜像,将端口映射到8081,访问公网地址:8081docker run -d -p 8081:8080 --name tomcat-7070 tomcat:7.0.70# 镜像默认没开readonly=false,用sed强行改写docker exec -it tomcat-7070 sed -i '/<servlet-class>org.apache.catalina.servlets.DefaultServlet<\/ser...
JBoss 反序列化漏洞 CVE-2017-12149
影响范围 JBoss AS 5.x - JBoss AS 6.1.0.Final 漏洞类型Java 反序列化 操作系统限制无 配置要求 http-invoker.sar 必须处于部署状态 ReadOnlyAccessFilter 过滤器映射 漏洞利用命令执行,反弹 shell 利用原理在 JBoss AS 5.x 或 6.x 中,引入名为 ReadOnlyAccessFilter 过滤器,其默认映射路径为/invoker/readonly,该路径在默认配置下无需身份验证就可访问,该过滤器处理客户端发送的 POST 请求数据时,直接获取请求体的输入流调用 readObject () 方法进行反序列化操作。在还原对象过程中,系统未对传入二进制流进行安全过滤、字节码校验或白名单限制,攻击者可以构造恶意序列化对象,恶意二进制数据通过 HTTP 请求发送到靶机,JBoss 在解析对象时,自动触发对象内部嵌套的恶意代码,执行恶意命令 漏洞复现现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vul...
Nginx 文件名逻辑漏洞 CVE-2013-4547
影响范围: Nginx 0.8.41 - 1.4.3 Nginx 1.5.0 - 1.5.7 漏洞类型:任意文件解析 操作系统限制:无 配置要求:默认配置 漏洞利用:远程命令执行 利用原理:在受影响的版本中,Nginx 读取路径中的字符时候,遇到空格会认为路径部分结束,接下来是 HTTP 协议版本,如果在空格后面接着一个空字节(0x00),Nginx 错误地跳过正常终止逻辑,允许非法字符序列进入后续路径处理。攻击者修改文件后缀,末尾有一个空格,Nginx 接收到请求后在磁盘找到相应文件后认为请求合法,但完整路径是/uploadfiles/文件名.gif[0x20] [0x00].php,配置文件 conf 正则匹配到.php,就会交给后端 FastCGI 处理,由于 FastCGI 协议和 PHP 解析器是基于 C 语言字符串处理,C 语言中的 0x00 代表字符串结束,PHP 实际处理的文件则是/uploadfiles/文件名.gif,因为该文件已经被 Nginx 指定文件后缀,PHP 会忽略其 gif 后缀,直接解析其中的 PHP 代码,导致远程代码执行 漏洞复现:现成的 ...
JBoss 反序列化漏洞 CVE-2017-7504
影响范围 JBoss AS 3.2.0 - 4.2.3.GA 漏洞类型Java 反序列化 操作系统限制无 配置要求默认配置 漏洞利用命令执行,反弹 shell 利用原理JBoss AS 默认集成了一个用于 HTTP 协议传输信息的组件 JBossMQ,其组件含有一个名为 HTTPServerILServlet 的接口,该接口访问路径/jbossmq-httpil/HTTPServerILServlet 无需校验即可访问,Servlet 处理 POST 请求数据时,直接调用 readObject () 方法来反序列化数据流,且未对传入对象进行安全过滤或白名单限制,攻击者利用 yoserial 工具生成恶意系列化二进制数据,通过 HTTP 请求发送到靶机,JBoss 解析对象时自动触发对象内部嵌套的恶意代码 漏洞复现现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vulhub.git#进入漏洞目录cd vulhub/jboss/CVE-2017-7504#拉取镜像docker-compos...
Tomcat 文件包含漏洞 CVE-2020-1938
影响范围 Apache Tomcat 6.x (全版本受影响) Apache Tomcat 7.0.0 - 7.0.99 Apache Tomcat 8.5.0 - 8.5.50 Apache Tomcat 9.0.0.M1 - 9.0.30 漏洞类型二进制解析漏洞 操作系统限制无 配置要求8009 端口打开 漏洞利用 任意文件读取,例如读取 WEB - INF / web.xml 文件,只能读取使用 AJP 目录下的文件 文件包含,RCE 远程代码执行,可以是反弹 shell 利用原理 AJP 协议默认监听端口通常缺乏认证,利用协议缺陷,伪造 javax.servlet.include 属性 漏洞复现12#拉取镜像docker run -d -p 8082:8080 -p 8009:8009 --name ghostcat-vulhub vulhub/tomcat:9.0.30 使用云服务器: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495...
Nginx 整数溢出漏洞 CVE-2017-7529
影响范围 Nginx 0.5.6 - 1.13.2 漏洞类型整数溢出 操作系统限制无 配置要求Nginx 开启了缓存功能 漏洞利用信息泄露 利用原理Nginx 处理 Range 请求的模块计算请求范围时候使用了 64 位有符号整数,在计算多段请求时候,Nginx 会计算总的返回长度,攻击者通过给出接近 64 位整数机选大数字,两个负数相减或正数相加,结果超过 64 位整数能表示的最大范围,这个数值在计算机内部发生了溢出。当 Nginx 开启了缓存,存文件的格式不是纯文本,而是包含 KEY、过期时间、后端服务器信息,后端返回的原始头信息,以及真正的网页内容,由于漏洞导致的整数溢出(没做边界检验),攻击者构造负数起始位置,在通过整数溢出使得请求变得合理(大整数与负数相加后整数溢出变成极小的数,极小的数小于实际文件总长,使服务器认为请求合理),Nginx 内部计算的原始读取位置发生了偏移,可以让出错的指针刚好落到缓存头区域,进而读到缓存的内容 漏洞复现现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vu...
Apache Shiro 认证绕过漏洞 CVE-2010-3863
影响范围 Apache Shiro 1.0.0-incubating 漏洞类型权限绕过 操作系统限制无 配置要求 在 Shiro 配置文件中设置了基于路径的访问控制规则 漏洞利用登录管理后台,信息泄露 利用原理Shiro1.1.0 版本之前进行安全校验前缺少对 URL 标准化处理,Shiro 拦截器执行的是严格的字符串匹配或者正则匹配,就会认为/./admin 与/admin/不同(./当前目录,../上一级目录);后端 Web 容器为了兼容性,会自动解析 URL 中的相对路径符号 漏洞复现现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vulhub.git#进入漏洞目录cd vulhub/shiro/CVE-2010-3863#拉取镜像docker-compose up -d 用 burpsuite 抓取 http://靶机 ip:8080/admin/ 发送到 Repeater 模块 直接发送会返回 302,重定向到登录页面 修改路径/./admin/ 发送后返回 ...
Shiro 反序列化漏洞 CVE-2016-4437
影响范围 Apache Shiro 1.0.0 - 1.2.4 部分集成过时 Shiro 组件的第三方框架 / 脚手架 漏洞类型Java 反序列化 操作系统限制无 配置要求默认配置 漏洞利用反弹 shell 利用原理在 Shiro1.2.4 及以前的版本中,AbstractRememberMeManager 类在代码中硬编码了 AES-128-CBC 加密的密钥 kPH + bIxk5D2deZiIxcaaaA==,意味着所以使用默认配置的 Shiro 系统用同一个密钥进行加解密 Cookie。Shiro 方便用户在关闭浏览器保持登录状态(RememberMe 逻辑),将用户身份序列化后存入 Cookie,当用户再次访问,服务器回自动读取并反序列化还原对象。解密 Cookie 后,Shiro 直接调用 Java 的 ObjectInputStream.readObject() 来还原对象,密钥对还原对象类型进行安全防护。攻击者在 Cookie 中注入精心构造的恶意代码,Shiro 拦截含 rememberMe 字段的 HTTP 请求,恶意代码经过 base64 解码再用 AES...
Log4j 反序列化命令执行漏洞 CVE-2017-5645
影响范围 Apache Log4j 2.0-alpha1 - 2.8.1 漏洞类型Java 反序列化 操作系统限制无 配置要求 启动 Log4j 的 TcpSocketServer 服务,监听 4712 端口(也可指定其他端口) 漏洞利用命令执行,反弹 shell,植入木马 利用原理Log4j 的 TcpSocketServer 和 UdpSocketServer 类中,在接收日志数据时,没有对数据进行安全检验,直接通过 ObjectInputSteam.readObject() 进行反序列化,攻击者可以构造被序列化的恶意对象链来实现命令执行 漏洞复现用现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vulhub.git#进入漏洞目录cd vulhub/log4j/CVE-2017-5645#拉取镜像docker-compose up -d 扫描靶机端口 4712,用 telnet 连接成功连接,说明端口开放 12telnet 公网ip 被扫描端口nc -zv 公网ip 被扫描端...
Spring Data Rest 远程命令执行漏洞 CVE-2017-8046
影响范围 Spring Data REST 2.5.0 - 2.5.11 Spring Data REST 2.6.0 - 2.6.8 Spring Data REST 3.0.0.RC1 - 3.0.0.RC3 Spring Boot 1.5.0 - 1.5.8 Spring Boot 1.4.x 及更早版本 漏洞类型SpEL 表达式注入 操作系统限制无 配置要求默认配置 漏洞利用命令执行,进行反弹 shell,写入木马 利用原理Spring Data REST 支持通过 PATCH 请求对资源进行局部更新,PATCH 请求包含一个 path 字段,用于指定修改的对象属性,后端接受请求时,Spring 会将 path 字段直接传递给 SpeExpressionParser 解析,框架没用对 path 进行安全过滤或合法性检验,攻击者可以在 path 字段构造 SpEL 表达式实现代码执行 漏洞复现用现成的 vulhub 来拉取镜像 123456#下载vulhub源代码git clone https://github.com/vulhub/vulhub.git#进入漏洞目录c...