
代码审计
文章平均质量分 86
TeamsSix
我的公众号:TeamsSix
展开
-
代码审计 | 跨站脚本 XSS
0x01 反射型 XSS以下代码展示了反射型 XSS 漏洞产生的大概形式<% String name = request.getParameter("name"); String studentId = request.getParameter("sid"); out.println("name = "+name); out.println("studentId = "+studentId);%>当访问 http://localhost:8080/xss原创 2021-12-25 11:13:06 · 2213 阅读 · 2 评论 -
【代码审计】Tomcat 任意文件写入 CVE-2017-12615
0x00 环境搭建直接 Docker 搭建即可git clone https://github.com/vulhub/vulhub.gitcd /vulhub/tomcat/CVE-2017-12615sudo docker-compose buildsudo docker-compose up -d0x01 漏洞复现直接使用 PUT 发起请求就可以上传任意文件,比如向 /teamssix.jsp/ 发起请求PUT /teamssix.jsp/ HTTP/1.1Host: 172.16.原创 2021-12-16 17:41:27 · 603 阅读 · 0 评论 -
【代码审计】敏感信息泄露
这里以 TurboMail 5.2.0 里的敏感信息泄露漏洞作为学习。已知 TurboMail 5.2.0 的敏感信息泄露路径为 /mailmain?type=pm打开 TurboMail 的安装目录,在 turbomail\web\webapps\ROOT\WEB-INF 下找到 web.xml 文件,发现以下配置信息<servlet-mapping> <servlet-name>mailmaini</servlet-name> <url-patte原创 2021-12-15 13:53:13 · 3141 阅读 · 0 评论 -
【代码审计】JWT Token
0x00 介绍JSON Web Token 缩写成 JWT,被用于和服务器的认证场景中,这一点有点类似于 Cookie 里的 Session id,关于这两者的区别可以看本文尾部的参考链接。JWT 由三部分构成,分别为 Header(头部)、Payload(负载)、Signature(签名),三者以小数点分割,格式类似于这样:Header.Payload.Signature实际遇到的 JWT 一般是这种样子eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIi原创 2021-12-14 19:14:02 · 755 阅读 · 0 评论 -
【代码审计】模板注入
0x00 介绍这里主要学习下 FreeMarker 模板注入,FreeMarker 是一款模板引擎,FreeMarker 模板文件与 HTML 一样都是静态页面,当用户访问页面时,FreeMarker 引擎会进行解析并动态替换模板中的内容进行渲染,然后将渲染后的结果返回到浏览器中。0x01 FreeMarker 模板FreeMarker 模板语言(FreeMarker Template Language,FTL)由 4 个部分组成,分别如下:文本:包括 HTML 标签与静态文本等静态内容,该部分原创 2021-12-03 20:19:45 · 1181 阅读 · 0 评论 -
【代码审计】表达式注入
1、介绍表达式语言(Expression Language)简称 EL 表达式,是一种 JSP 内置的语言。在 JSP 中,使用 ${} 来表示 EL 表达式,例如 ${name} 表示获取 name 变量。在 EL 表达式中有两种获取对象属性的方法,第一种为 ${param.name},第二种为 ${param[name]}2、实例使用实例使用 param 对象获取用户传入的参数值,这里的 ${param.name} 相当于 request.getParameter(“name”)<%原创 2021-11-29 18:25:50 · 1122 阅读 · 0 评论 -
【代码审计】命令注入和代码注入
0x01 命令注入在开发过程中,开发人员可能需要对系统文件进行移动、删除或者执行一些系统命令,这时如果执行的命令用户可控,就会导致命令执行漏洞。1、示例当命令可控时,就可能会导致命令注入,例如以下代码:String cmd = request.getParameter("cmd");Runtime.getRuntime().exec(cmd);这种漏洞原理很简单,主要就是找到执行系统命令的函数,看命令是否可控。java 程序中执行系统命令的函数如下:Runtime.execProcess原创 2021-11-21 16:20:39 · 4907 阅读 · 0 评论 -
【代码审计】SQL 注入
0x01 JDBC 拼接不当造成 SQL 注入JDBC 有两种方法执行 SQL 语句,分别为 PrepareStatement 和 Statement,两个方法的区别在于 PrepareStatement 会对 SQL 语句进行预编译,而 Statement 在每次执行时都需要编译,会增大系统开销。理论上 PrepareStatement 的效率和安全性会比 Statement 好,但不意味着就不会存在问题。以下是一个使用 Statement 执行 SQL 语句的示例String sql = "se原创 2021-11-17 20:47:43 · 726 阅读 · 0 评论 -
【代码审计】Java Web 过滤器 - filter
0x00 前言filter 被称为过滤器,是 Servlet 2.3 新增的一个特性,同时也是 Serlvet 技术中最实用的技术。过滤器实际上就是对 Web 资源进行拦截,做一些处理后再交给下一个过滤器或 Servlet 处理,通常都是用来拦截 request 进行处理的,也可以对返回的 response 进行拦截处理。开发人员利用 filter 技术,可以实现对所有 Web 资源的管理,例如实现权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。0x01 filter 的配置filter原创 2021-11-16 11:56:53 · 830 阅读 · 0 评论 -
【代码审计】Java Web 核心技术-Servlet
0x00 前言Servlet 是 Java Web 容器中运行的小程序,Servlet 原则上可以通过任何客户端-服务端协议进行通信,但它们常与 HTTP 一起使用,因此 Servlet 通常作为 “HTTP Servlet”的简写。Servlet 是 Java EE 的核心,也是所有 MVC 框架实现的根本。0x01 Servlet 的配置版本不同,Servlet 的配置不同,Servlet 3.0 之前的版本都是在 web.xml 中配置的,在 3.0 之后的版本中则使用更为方便的注解方法来配置原创 2021-11-15 17:20:03 · 618 阅读 · 0 评论 -
【代码审计】Java EE 基础知识
Java 平台分为三个主要版本:Java SE(Java 平台标准版)Java EE(Java 平台企业版)Java ME(Java 平台微型版)Java EE 是 Java 应用最广泛的版本。0x01 Java EE 的核心技术Java EE 有十三种核心技术,它们分别是:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail 和 JAF,这里重点介绍以下几种:Java 数据库连接(Java Database Co原创 2021-11-15 12:46:01 · 711 阅读 · 0 评论 -
【代码审计】Maven 基础知识
0x00 前言Maven 是一个项目构建和管理工具,利用它可以对 JAVA 项目进行构建和管理。Maven 采用项目对象模型 POM(Project Object Model)来管理项目。Maven 的主要工作就是用来解析一些 XML 文档、管理生命周期与插件。Maven 被设计成将主要的职责委派给一组 Maven 插件,这些插件可以影响 Maven 生命周期,提供对目标的访问。0x01 pom.xml 文件介绍pom.xml 文件被用于管理源代码、配置文件、开发者的信息和角色等,Maven 项原创 2021-11-03 16:41:32 · 289 阅读 · 0 评论