精华内容
下载资源
问答
  • Java代码审计

    2019-08-06 23:16:29
    该课程从代码审计与渗透测试优缺点对比讲起,讲解了为什么前端防护都是纸老虎、如何从后端防护来防止漏洞被利用。学好该课程对于渗透的朋友能更彻底的了解漏洞的原理、开发的朋友能写出没有漏洞的代码。课程当中会...
  • java代码审计系统课程

    2021-05-06 10:32:28
    1、随着三同步要求,代码审计作为三同步中的... 3、市面上少有的系统性的java代码审计课程。 4、学习以后开发不再编写“漏洞”,渗透测试人员更加清晰的了解漏洞原理。 5、本课程附件中提供审计源码、审计工具fortify
  • 主要代码审计方法是跟踪用户输入数据和敏感函数参数回溯: 跟踪用户的输入数据,判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑 可以是一个函数,或者是条小小的条件判断语句。 敏感函数参数回溯,...
  • JAVA代码审计

    2018-06-28 18:27:51
    JAVA代码审计JAVA代码审计 图示JAVA代码审计 图示JAVA代码审计 图示JAVA代码审计 图示JAVA代码审计 图示
  • java代码审计字典(10种类型-上).pdf,有兴趣可以下载看看,不亏
  • JAVA代码审计之SQL注入

    千人学习 2019-05-20 09:27:38
    本章节课程主要从以下三方面详细的介绍了如何针对java代码中sql注入的审计方法及黑盒验证: 1、JDBC连接方式下sql注入的存在的形态及修复方法,like、in情况在如何安全使用预处理来防范sql注入 2、在使用Mybatis框架...
  • Java代码审计漏洞挖掘(入门)

    千次阅读 2021-11-10 11:00:29
    出品|MS08067实验室(www.ms08067.com)双十一最有意义的事情莫过于是学习一门高级渗透技术了!代码审计属于高级渗透测试服务的一环,顾名思义就是检查源代码中的安全缺陷,检查...

    出品|MS08067实验室(www.ms08067.com)

    双十一最有意义的事情莫过于是学习一门高级渗透技术了!

    代码审计属于高级渗透测试服务的一环,顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。代码审计的对象主要是PHP、JAVA、ASP等与WEB相关的语言。

    代码审计对攻防研究有着怎样重要的意义?

    在“”方面,以往的通过扫描器扫描站点或利用nday来渗透的方式已经受到了很大的制约,现在及未来的典型渗透测试流程是:确定站点指纹→通过旁站扫描备份或开源程序拿源码→代码审计→根据审计出漏洞来进行利用,所以代码审计能力也越发变得重要。

    在“”方面,国内有大量网站曾遭到过拖库,其中相当一部分漏洞就是因为代码导致的。如果企业安全人员具备代码审计的能力,能提前做好代码审计工作,在黑客发现系统漏洞之前找出安全隐患,提前部署好相应安全防御措施,可落实“安全左移”,提高应用系统的安全性,从而“治未病”。

    而Java Web的应用越来越广泛,已经成为安全测试人员需要直面的问题,在主流的大型应用中,Java俨然成为了首选开发语言。目前国内外大型企业大多都采用了Java作为核心的开发语言,因此对于安全从业者来说,Java代码审计已经成为了自身应该掌握的关键技能。

    课程结构:

    星球是《Java代码安全审计(入门篇)》图书的配套讲解视频及技术解答,建立的根本性目的是“通过较详细的漏洞点剖析以及代码审计实战演示帮助读者朋友能够入门Java代码审计,夯实Java代码审计的基本功,从此迈入Java代码审计的大门。

    为此,课程视频配合图书的整体结构主要从以下几个方面展开讲解:

    1.Java代码审计预备知识(初识Java代码审计、代码审计环境搭建、代码审计辅助工具简介以及Java EE基础补充)

    2.典型的Java Web漏洞剖析(“OWASPTop10 2017”之内和之外的漏洞代码审计)

    3.Java EE开发框架安全审计(SSM、Struts2、SpringBoot)

    4.开源Java Web应用代码审计实战(JspxCMS代码审计实战)

    5.“交互式应用程序安全测试”与“运行时应用自保护”等技术(小话IAST与RASP)

    6.Java安全编码规范

    星球截至目前已经大部分课程

    例如:#课程讲解#JAVA代码审计技术讲解

    233d70f7e411d4c0ee8a7b43668935ee.png

    b9655b448d19b6b19a00efc6b9ac042c.png

    123a260fbd5ad9414d2ee8f6aefb972c.png

    双十一领劵购买惊爆价只需要399元/年

    附全书目录:
    第一章 初识Java代码审计
    1.1代码审计的意义
    1.2 Java代码审计的所需基础
    1.3代码审计的常用思路
    第二章 代码审计环境搭建
    2.1 JDK的下载与安装
    2.1.1 JDK的下载
    2.1.2 JDK的安装
    2.1.3 添加JDK到系统环境
    2.2 Docker容器编排
    2.2.1 Docker基本原理及操作
    2.2.2 使用Vulhub快速搭建漏洞验证环境
    2.3 远程调试
    2.3.1 对Weblogic进行远程调试
    2.3.2 对Tomcat进行远程调试
    2.3.3 Vmware虚拟机搭建远程调试环境
    2.4 项目构建工具
    2.4.1 Maven基础知识及掌握
    2.4.2 Swagger特点及使用
    第三章 代码审计辅助工具
    3.1 代码编辑器
    3.1.1 Sublime
    3.1.2 IDEA
    3.1.3 Eclipse
    3.2 测试工具
    3.2.1 Burp Suite
    3.2.2 SwitchyOmega
    3.2.3 Max Hacker Bar
    3.2.4 Postman
    3.2.5 Postwomen
    3.2.6 TamperData
    3.2.7 Ysoserial
    3.2.8 marshalsec
    3.2.9 Mysql 监视工具
    3.2.10 Beyond Compare
    3.3 反编译工具
    3.3.1 JD-GUI
    3.3.2 FernFlower
    3.3.3 CRF
    3.3.4 IntelliJ IDEA
    3.4 Java代码静态扫描工具
    3.4.1 Fortify SCA
    3.4.2 VCG
    3.4.3 FindBugs与FindSecBugs插件
    3.4.4 SpotBugs
    3.5 公开漏洞查找平台
    3.5.1 CVE(http://cve.mitre.org/)
    3.5.2 NVD(https://nvd.nist.gov/)
    3.5.3 CNVD(https://www.cnvd.org.cn/)
    3.5.4 CNNVD(http://www.cnnvd.org.cn/)
    3.6 小结
    第四章 Java EE基础知识补充
    4.1 Java EE 分层模型
    4.1.1 Java EE的核心技术
    4.1.2 Java EE分层模型
    4.2 了解MVC模式与MVC框架
    4.2.1 Java MVC 模式
    4.2.2 Java MVC框架
    4.3 Java Web的核心技术——Servlet
    4.3.1 Servlet 的配置
    4.3.2 Servlet 的访问流程
    4.3.3 Servlet 的接口方法
    4.3.4 Servlet 的生命周期
    4.4 Java Web 过滤器——filter
    4.4.1 filter 的配置
    4.4.2 filter 的使用流程及实现方式
    4.4.3 filter 的接口方法
    4.4.4 filter 的生命周期
    4.5 Java反射机制
    4.5.1 什么是反射?
    4.5.2 反射的用途
    4.5.3 反射的基本运用
    4.5.4 不安全的反射
    4.6 ClassLoader类加载机制
    4.6.1 ClassLoader类
    4.6.2 loadClass()方法的流程
    4.6.3 自定义的类加载器
    4.6.4 loadClass()方法和Class.forName的区别
    4.6.5 URLClassLoader
    4.7 Java动态代理
    4.7.1 静态代理
    4.7.2 动态代理
    4.7.3 CGLib 代理
    4.8 Javassist动态编程
    4.9 可用于JavaWeb的安全开发框架
    4.9.1 Spring Security
    4.9.2 Apache Shiro
    4.9.3 OAuth2.0
    4.9.4 JWT
    第五章 “OWASP Top10 2017”漏洞的代码审计
    5.1注入
    5.1.1 漏洞简介
    5.1.2 SQL注入
    5.1.3 命令注入
    5.1.4 代码注入
    5.1.5 表达式注入
    5.1.6 模板注入
    5.1.7 小结
    5.2失效的身份认证
    5.2.1 漏洞简介
    5.2.2 Webgoat8 JWT Token猜解实验
    5.2.3 小结
    5.3敏感信息泄露
    5.3.1 漏洞简介
    5.3.2 TurboMail 5.2.0敏感信息泄露漏洞
    5.3.3 开发组件敏感信息泄露漏洞
    5.3.4小结
    5.4 XML 外部实体注入(XXE)
    5.4.1 漏洞简介
    5.4.2 读取系统文件
    5.4.3 DoS攻击
    5.4.4 Blind XXE
    5.4.5 修复案例
    5.4.6小结
    5.5 失效的访问控制
    5.5.1 漏洞简介
    5.5.2 横向越权
    5.5.3 纵向越权
    5.5.4 小结
    5.6 安全配置错误
    5.6.1 漏洞简介
    5.6.2 Tomcat 任意文件写入(CVE-2017-12615)
    5.6.3 Tomcat AJP 文件包含漏洞(CVE-2020-1938)
    5.6.4 Spring Boot 远程命令执行
    5.6.5 小结
    5.7 跨站脚本(XSS)
    5.7.1 漏洞简介
    5.7.2 反射型XSS
    5.7.3 存储型XSS
    5.7.4 DOM型XSS
    5.7.5 修复建议
    5.7.6小结
    5.8 不安全的反序列化
    5.8.1漏洞简介
    5.8.2 反序列化基础
    5.8.3漏洞产生的必要条件
    5.8.4 反序列化拓展
    5.8.5 Apache Commons Collections反序列化漏洞
    5.8.6 FastJSON反序列化漏洞
    5.8.7小结
    5.9 使用含有已知漏洞的组件
    5.9.1漏洞简介
    5.9.2 Weblogic中组件的漏洞
    5.9.3 富文本编辑器漏洞
    5.9.4小结
    5.10 不足的日志记录和监控
    5.10.1漏洞简介
    5.10.2 CRLF 日志注入
    5.10.3未记录可审计性事件
    5.10.4对日志记录和监控的安全建议
    5.10.5小结
    第六章 “OWASP Top10 2017”之外常见漏洞的代码审计
    6.1 CSRF
    6.1.1 CSRF简介
    6.1.2 实际案例及修复方式
    6.1.3 小结
    6.2 SSRF
    6.2.1 SSRF简介
    6.2.2实际案例及修复方式
    6.2.3小结
    6.3 URL跳转与钓鱼
    6.3.1 URL 跳转漏洞简介
    6.3.2 实际案例及修复方式
    6.3.3 小结
    6.4 文件操作
    6.4.1 简介
    6.4.2漏洞发现与修复案例
    6.4.3 小结
    6.5 Web后门
    6.5.1 简介
    6.5.2 Java Web 后门案例讲解
    6.5.3 小结
    6.6 逻辑漏洞
    6.6.1 简介
    6.6.2 漏洞发现与修复案例
    6.6.3 小结
    6.7 前端配置不当
    6.7.1 简介
    6.7.2 漏洞发现与修复案例
    6.7.3 小结
    6.8 拒绝服务攻击
    6.8.1 简介
    6.8.2 漏洞发现与修复案例
    6.8.3 小结
    6.9 点击劫持漏洞
    6.9.1 简介
    6.9.2 漏洞发现与修复案例
    6.9.3 小结
    6.10 HTTP参数污染
    6.10.1 简介
    6.10.2 漏洞发现与修复案例
    6.10.3 小结
    第七章 Java EE开发框架安全审计
    7.1 开发框架审计技巧简介
    7.1.1 SSM框架审计技巧
    7.1.2 Struts2框架审计技巧
    7.1.3 SpringBoot框架审计技巧
    7.2 开发框架使用不当范例(Struts2 远程代码执行)
    第八章 JSPXCMS代码审计实战
    8.1 JSPXCMS简介
    8.2 安装
    8.2.1 安装环境需求
    8.2.2 安装步骤
    8.3 目录结构及功能说明
    8.3.1 目录结构
    8.3.2 功能说明
    8.4 第三方组件漏洞审计
    8.5 单点漏洞审计
    8.5.1 SQL 审计
    8.5.2 XSS 审计
    8.5.3 SSRF 审计
    8.5.4 RCE 审计
    8.6 本章总结
    第九章 小话IAST与RASP
    9.1 IAST简介
    9.2 RASP简介
    9.3 单机版OpenRASP Agent实验探究
    9.3.1 实验环境
    9.3.2 实验过程
    9.4 OpenRASP Java Agent原理浅析
    9.5 本章小结
    附录 Java安全编码规范索引

    扫描下方二维码加入星球学习

    加入后会邀请你进入内部微信群,内部微信群永久有效!

    32610e2a6a4497de45a8ebf6aadda27e.png4f903e04fcc7b053ff5c2fe02d97f359.png

    aebda66a32aeca551bc06c4c91779fe8.pngea357b1bf790be0657754aede673f12f.png

    4ca16e7caf1c15dacaa2c22fde99f2cd.png3d7779a1771bd8494d5accdd5714a109.png

    目前5000+人已关注加入我们

    7552e674e28f8d8a9d03fa3779a56f75.gif

    展开全文
  • JAVA代码审计基础入门

    2021-03-15 15:58:01
    它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP...

    1 JavaWeb基础

    1.1 JSP是什么

    JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

    JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

    JSP会被编译成一个java类文件,如index.jsp在Tomcat中Jasper编译后会生成index_jsp.javaindex_jsp.class两个文件。

    1.2 JSP生命周期

    用户从点击URL发起request请求到response响应的JSP生命周期如下:

    1.3 jar包与war包的区别

    JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JavaSE程序可以打包成Jar包。

    war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压。

    war包内容

    1.4 JSP内置对象

    不需要用户提前定义,可以直接使用的。对内置对象的使用要考虑有没有对传来的数据进行过滤。

    1.5 JavaWeb分层思想

        视图层(View 视图)

        控制层(Controller、Action 控制层)

        服务层(Service)

        业务逻辑层BO(business object)  

        实体层(entity 实体对象、VO(value object) 值对象 、模型层(bean)

        持久层(dao- Data Access Object 数据访问层、PO(persistant object) 持久对象)

    1.6 模块化开发

    如今的较为大型的Java Web项目通常都采用了模块化方式开发,借助于Maven、Gradle依赖管理工具,Java可以非常轻松的完成模块化开发。

    使用Maven开发的JavaWeb项目示例:

    14.png

    1.7 Servlet

    Servlet来处理一些较为复杂的服务器端的业务逻辑。

    值得注意的是在Servlet3.0之后(Tomcat7+)可以使用注解方式配置Servlet了。

    基于注解的Servlet:

    基于配置实现的Servlet:

    2 JAVA代码审计工具

    编写Java代码可以使用Myeclipse,Intellidea。

    2.1 Intellidea

    同样代码审计也可以用这些工具,这里介绍Intellidea,因为有免费版,下面是几个调试中会用到的几个快捷键:

    • F7 ,进入下一步,如果当前断点是一个方法,进入方法体。
    • F8 ,进入下一步,但不会进入方法体内。
    • Alt+Shift+F7 , 进入下一步,如果当前断点是一个方法,方法还有方法则循环进入。
    • Shift+F8 ,跳出到下一个断点,也可以按F9来实现。
    • Drop Frame ,当进入一个方法体想回退到方法体外可以使用该键。

    2.2 Fortify

    在这里介绍一个比较不错的专用工具Fortify SCA。Fortify SCA是一款代码审计工具,也做白盒测试工具用,内置的分析引擎、安全编码规则包、审查工作台、规则自定义编辑器和向导、IDE 插件五部分组成专门,用来检测源代码中的漏洞!

    工具主界面:

    可以看一下fortify的rules库,这里是进行漏洞规则匹配的地方:

    查看漏洞详情:

    2.3 JAR

    在某些特殊的场景下拿到的只是jar文件,我们任然可以反编译jar文件进行代码审计。常见的反编译工具:

    • Fernflower可以很轻松的实现jar的完整反编译,执行如下命令即可: java -jar fernflower.jar
    • JD-GUI是一个带GUI的反编译工具,在JD-GUI的菜单中点击File-->Save All Sources即可反编译jar。
    • IDEA默认就支持jar包反编译。
    • FernFlower提供了GUI版本Bytecode-Viewer,Bytecode-Viewer提供了直接反编译的class、jar、zip、apk、dex功能,直接拖拽jar就可以直接对整个jar进行反编译了。

    3 代码审计

    审计的漏洞类型分为业务安全问题、代码实现服务框架安全问题。

    3.1 业务安全类

    主要理解该系统的逻辑:

    1. 用户登陆、用户注册、找回密码等功能中密码信息未采用加密算法、未添加验证码、验证码未作安全刷新(未刷新Session中验证码的值)。
    2. 找回密码逻辑问题(如:可直接跳过验证逻辑)。
    3. 动态验证码未限制验证码失败次数验证码有效期验证码长度过短导致的验证码爆破问题。
    4. 充值、付款等功能调用了第三方支付系统未正确校验接口(与第三方的交互、与客户的交互,主要查看逻辑问题)。
    5. 用户中心转账、修改个人资料、密码、退出登陆等功能未采用验证码或Token机制导致存在CSRF漏洞
    6. 重要接口采用ID自增、ID可预测并且云端未验证参数有效性导致的越权访问、信息泄漏问题(如:任意用户订单越权访问)。
    7. 敏感信息未保护,如Cookie中直接存储用户密码等重要信息,跟踪cookie中的变量最终到了哪。
    8. 弱加密算法、弱密钥,如勿把Base64当成数据加密方式、重要算法密钥采用弱口令如123456
    9. 后端无异常处理机制、未自定义50X错误页面,服务器异常导致敏感信息泄漏(如:数据库信息、网站绝对路径等)。

    3.2 服务框架类

    3.3 代码实现类

    1. 任意文件读写(文件上传、文件下载)、文件遍历文件删除文件重命名等漏洞
    2. SQL注入漏洞
    3. XXE(XML实体注入攻击)
    4. 表达式执行(SpEL、OGNL、MVEL2、EL等)
    5. 系统命令执行漏洞(ProcessBuilder)
    6. 反序列化攻击(ObjectInputStream、JSON、XML等)
    7. Java反射攻击
    8. SSRF攻击
    9. XSS

    1) 前端审计

    前端经常出现漏洞的地方是JS和DOM事件,在这里会对前端输入的数据进行初步校验。

    键盘事件

    • onkeydown :某个键盘按键被按下
    • onkeypress:某个键盘按键被按下并松开
    • omkeyup:某个键盘按键被松开

    鼠标事件

    • onclick
    • onmousemove
    • ondblclick
    • onmouseout
    • onmousedown

    其他事件

    • 框架/对象事件
    • 打印事件
    • 表单事件
    • 拖动事件
    • 剪贴板事件
    • 多媒体事件

    2) Web.xml文件

    审计时,得先看是否含有全局过滤器,经常是查看web.xml文件里的filter。过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。

    审计web.xml文件

    首先我们可以看到使用了框架strust2和Hibernate,然后我们可以搜寻了这些框架存在的漏洞,在这里是否依旧存在。

    其次可以查看filter,看看有没有对用户输入数据进行过滤的filter,发现没有关于xss、sql的过滤文件,那就说明所有提交到后台的数据都可能存在危险,从中找找纰漏。

    3)XSS

    XSS是跨站脚本攻击(Cross Site Script) 。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该网页时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

    XSS危害:

    原理:

    审计:

    反射型xss,就是直接能从URL中获取数据,比如el表达式。如果参数是从后台获取的,并且在前端无法修改,那么就不存在反射性XSS。我们可以通过检查JAVA代码来验证此参数是不是从后台获取?

    如下图,El表达式直接从前端获取数据:

    看一个从后台获取数据的案例:

    设置了value。

    查看数据处理的servlet,发现他的数据是从后台获取的。

    DOM型xss,直接使用DOM获取值,然后直接拼接到URL里,很容易出现漏洞。

    4) SQL注入

    • 直接拼接错误:

                       将request.getParameter("")直接放在SQL语句。

    • 预编译使用有误:

                       在使用占位符后未进行setObject或者setInt或者setString

    • %和_

                   没有手动过滤%。预编译是不能处理这个符号的, 所以需要手动过滤,否则会造成慢查询,造成 dos

    • Mybatis 框架

                     使用注解或者xml将java对象与数据库sql操作对应。在注解中或者 Mybatis 相关的配置文件中搜索 $ 。然后查看相关 sql 语句上下文环境。

                     与使用JDBC不同的是,MyBatis使用#{}${}来进行参数值替换。

                     使用#{}语法时,MyBatis会自动生成PreparedStatement,使用参数绑定(?)的方式来设置值,因此#{}可以有效防止SQL注入。

    XML例子
    
    映射器界面
    
        @Mapper
        public interface UserMapper {
            User getById(int id);
        }
    
    XML配置文件
    
        <select id="getById" resultType="org.example.User">
         SELECT * FROM user WHERE id = #{id}
        </select>

                        使用${}语法时,MyBatis会直接注入原始字符串,即相当于分段字符串,因此会导致SQL注入。

    注释示例
    
        @Mapper
        public interface UserMapper {
            @Select("SELECT * FROM user WHERE id= #{id}")
            User getById(@Param("id") int id);
        }

    安全的写法是使用参数化查询,即SQL语句中使用参数绑定 ?(占位符)和PreparedStatement,如

    String sql = "SELECT * FROM users WHERE name= ? ";
    PreparedStatement ps = connection.prepareStatement(sql);
    // 参数 index 从 1 开始
    ps.setString(1, name);

    注意,?(占位符)不能用于order by,from

    5)SSRF

    代码中提供了从其他服务器应用获取数据的功能但没有对目标地址做过滤与限制。比如从指定URL链接获取图片、下载等。

    常出问题的函数:

    HttpClient.execute
    HttpClient.executeMethod
    HttpURLConnection.connect
    HttpURLConnection.getInputStream
    URL.openStream

    常支持的协议:

    6)CSRF

    一些增删改查方法,是否进行Referer头检验token检验 无法构造的随机数参数验证码密码

    7)序列化

    Java 程序使用 ObjectInputStream 对象的readObject方法将反序列化数据转换为 java 对象。但当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码

    // 将序列化对象写入文件object.db中
    
    FileOutputStream fos = new FileOutputStream("object.db");
    
    ObjectOutputStream os = new ObjectOutputStream(fos);
    
    os.writeObject(obj);
    
    os.close();
    
    // 从文件object.db中读取数据
    
    FileInputStream fis = new FileInputStream("object.db");
    
    ObjectInputStream ois = new ObjectInputStream(fis);
    
    // 通过反序列化恢复对象obj
    
    Object obj2 = ois.readObject();
    
    System.out.println(obj2);
    
    ois.close();

    java 序列化的数据一般会以标记(ac ed 00 05)开头,base64 编码后的特征为rO0AB

    找出反序列化函数调用点:

    • ObjectInputStream.readObject
    • ObjectInputStream.readUnshared
    • XMLDecoder.readObject
    • Yaml.load
    • XStream.fromXML
    • ObjectMapper.readValue
    • JSON.parseObject

    8)命令执行

    查找是否有使用如下方法,且其中的内容用户可控。

    Runtime.exec
    ProcessBuilder.start
    GroovyShell.evaluate
    

    9)id越权

    在每个request.getParameter("userid");之后查看是否有检验当前用户与要进行增删改查的用户。

    安全学习交流群:687398569

    展开全文
  • 四月底开始入手java代码审计,从一开始的一头雾水到现在博客总结,之间经历了许多,走过不少坑,虽然大四啥事儿都没有但是整个过程也还是压力比较大的 现在IDEA中以及没有java代码审计插件 Fi...

    目录

    壹   ofcms环境搭建(避坑指南)

    贰   从ofcms出发浅析javaweb项目目录结构及其功能

    叁   CVE-2019-9614 SSTI模板注入漏洞

    肆   任意文件上传漏洞

    伍   存储型XSS漏洞

    陆   后台SQL注入漏洞


     

     

    壹   ofcms环境搭建(避坑指南)

    四月底开始入手java代码审计,从一开始的一头雾水到现在博客总结,之间经历了许多,走过不少坑,虽然大四啥事儿都没有但是整个过程也还是压力比较大的

    现在IDEA中以及没有java代码审计插件 FindBugs 了,现在叫做 SpotsBugs ,人都傻了

    环境搭建方面以及总结在之前的博客里面:

    https://blog.csdn.net/Alexz__/article/details/116229266

    一定要去看看,因为有许多的坑

     

     

     

    贰   从ofcms出发浅析javaweb项目目录结构及其功能

    因为没有系统的学习过javaweb的开发知识,对于整个javaweb的框架结构十分的陌生,于是便学习之后总结了这一盘博客,用来巩固自己学习路上所遇到的问题以及学习的成果;

    总结在了这篇博客里面:

    https://blog.csdn.net/Alexz__/article/details/116272080

     

     

     

    叁   CVE-2019-9614 SSTI模板注入漏洞

    CVE-2019-9614漏洞复现:

    CVE官网链接:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9614

    先登录进ofcms的后台admin管理界面;然后再模板文件中课编辑Freemarker的模板代码(这想想就....实在是不安全);随机挑选一个幸运页面,进行payload注入;

    Payload:<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

    然后从前台进入该页面(联系我们)

    于是便完成了系统命令执行的操作:

     

    代码审计分析:

    我们从项目的pom.xml文件中可以得知,该项目使用了Freemarker 2.3.21版本

    该模板管理功能界面源码为 /ofcms-admin/src/main/java/com.ofcms.cms/admin/cms/TemplateController.java

    从源码中可以看到该功能支持freemarker模板文件的热处理,编辑保存等功能

    我们来看模板目录:

    与其一一对应的是.../webapp/WEB-INF/page/default/下的html文件

    但是我们在网页端进行实时模板更改的时候,后台网页文件并不会有变化,这里应该是作者在freemarker框架上二次开发了一个热处理功能从而可以进行模板编辑;作者还是很牛逼的,ofcms整个系统架构逻辑严密,分工明确,功能也十分得强大,就是在某些小地方的疏忽倒是存在不安全的因素(其实大部分的不安全因素都可以通过部署waf来缓解,从而进行治标不治本的操作)

    具体内容可移步至:

    https://blog.csdn.net/Alexz__/article/details/116400913

     

     

     

    肆   任意文件上传漏洞

    漏洞复现:

    可上传jsp文件,后台无过滤

    file_path不用管,应该是源路径,需要注意的是dirs和file_name这两个,我们可以通过file_path确定当前文件上传位置,通过dir进行修改,然后重命名为file_name后缀改为jsp,然后在file_content内添加我们URL编码的木马内容:

    源码审计分析:

    通过路劲搜索可定位到:

    .../ofcms-admin/src/main/java/com.ofcms.cms/admin/controller/cms/TemplateController.java文件

    审计保存模板片段代码:(审计过程中添加注释)(注释就是精华)

    可以发现,核心操作代码在保存编辑完成之后保存模板时,用到了一个没什么卵用的dirs字段数据,我们便利用此字段输入数据可控来进行文件路径的重新定位;且保存模板时也没有进行字符串的过滤验证,扩展名也没有任何限制,于是便可以完成已知路劲的任意文件上传挂马获得shell:

    冰蝎马:

    上去了

    后话:这一个模板编辑功能就爆出来了两个严重的漏洞,看来在开发系统时,需要注意啊,就是对于功能点的创新和尝试,同时也包含着非常大的安全隐患,切记要慎重。

     

     

     

    伍   存储型XSS漏洞

    漏洞复现:

    漏洞存在位置:http://localhost:8080/ofcms-admin/case-c-61.html  位置不一定,这个是我的

    源码审计分析:

    通过post请求的路径定位到评论区前端界面:

    .../ofcms-admin/src/main/webapp/WEB-INF/page/default/articel.html

    从数据库中直接调取资源:

    再次通过POST请求路径定位到后端java代码:

    .../ofcms-api/src/main/java/com/ofsoft/cms/api/v1/CommentApi.java

    找到了评论接口:

    PS:因为输入法突然在IDEA中不能用了,就用英文打上了注释,勉强看懂代码大意就行

    这里的XSS漏洞出现原因就简单明了了,前端V展示数据资源无过滤审核措施,后端接收资源也无过滤,于是便导致了这个存储型的XSS漏洞,算是高危,因为无需登录谁都可以评论

     

     

     

    陆   后台SQL注入漏洞

    漏洞复现:

    这里可以进行update进行sql注入

    几种常见的update注入模板:payload:适用于字符型:

            ' or updatexml(1,concat(0x7e,(database())),0) or '

         适用于数字型:

        ' or extractvalue(1,concat(0x5e24,(database()))) or '

    从表内随便选择一个进行注入操作:

    这里选择的是of_cms_ad

    payload:update of_cms_ad set ad_name=updatexml(1,concat(0x7e,(database())),0) where ad_id=2

    爆出了数据库名称

    源码审计分析:

    通过请求包头找到文件路径:

    该板块的源码如下:

    可以看到,通过getPara()获取到POST的sql字段数据

    追踪Db.update():(快捷键按住Ctrl后鼠标点击函数即可)

    继续追踪MAIN.update():

    穷追不舍update()

    可以看到这边已经开始数据库交互数据了,conn先赋值为空,然后把数据喂进另一个update()中:继续追踪:

    通过查看IDEA给予的说明文档可以发现其用途

    所以,在此处使我们可以控制的update型进行SQL注入;

     

     

     

    小结:

    本人第一次java代码审计,在开始之前上网找了许多的教程,准备工作等等,还发现居然没有一本系统介绍java代码审计的书籍;

    其实这一次审计与其说是审计不如叫做黑盒渗透+代码分析;

    看了许多前人的博客,从一个知识点引发出来无数个知识点,那种知识荒漠的感觉实在很糟糕,没办法,从头开始补,现在还有时间

    下面可能要涉及的就是java代码审计靶机,从漏洞形成原理出发,去发掘大多数人通用漏洞的形成原理,系统的进行java代码审计的学习;

     

     

     

     

     

    “因为山就在那里。”

                              ——英国登山家乔治·马洛里(George Mallory)

     

     

    展开全文
  • 出品|MS08067实验室(www.ms08067.com)李柯俊:国内某知名企业实验室高级web研究员,《java代码审计:入门篇》作者,曾在freebuf、 安全客发表多篇高质量技术...

    出品|MS08067实验室(www.ms08067.com)

    李柯俊:

    国内某知名企业实验室高级web研究员,《java代码审计:入门篇》作者,曾在freebuf、  安全客发表多篇高质量技术文章,擅长代码审计,渗透测试,安全开发。

    随着市面上第一本JAVA代码审计图书《Java代码审计:入门篇》的出版,实验室紧随其后推出了配套的知识星球Java直播培训,很多读者粉丝在支持我们的同时,也提出了很多问题,今天就请实验室李柯俊师傅就读者提出的种种问题进行解答!

    Q1:  为什么要学Java代码审计?

    Q2:学了Java代码审计对我到底有什么好处?

    Q3:学完Java代码审计后我可以干什么?

    Q4:学了Java代码审计对我的工作能有什么样的帮助?

    Q5:  我是0基础,我能不能学会Java代码审计?

    Q6:为什么要选择MS08067的课程来学习Java代码审计?

    Q7:MS08067的Java代码审计课程特点是什么?

    Q8:在MS08067学完Java代码审计到底可以达到什么样的一个阶段?

    让我们一起听听 李柯俊师傅怎么解答! 

    本次招生人数:为保证授课质量,小班教学,每期班只收25人

    上课时间

    开课时间8月6号,每周五、六、日的晚间 19:00-21:00 ,共24天,48小时,为期8周左右。如果无法准时参加直播课程,在线培训的每节课程都会被录制成视频上传到学员区,可随时下载观看。

    学习方式

    培训采用在线直播+随堂录播+配套教材+配套星球的形式,无需等待,报名后即刻邀请进Java代码审计星球立即开始预习!

    讲师介绍

    讲师A:某乙方实验室高级web研究员,《java代码审计:入门篇》作者,曾在freebuf、安全客发表多篇高质量技术文章,擅长代码审计,渗透测试,安全开发

    讲师B:某甲方公司源代码审计工程师,深入了解常见漏洞源码层因,负责公司核心系统的源码审计及为业务提供漏洞修复方案

    讲师C:某乙方安全研究员,主攻Java安全研究和主机安全领域,曾在多个沙龙上进行技术分享,在安全客/先知等平台发表过高质量文章

    讲师D:某安全公司安全研究员小姐姐,主攻Java安全研究,擅长代码审计,安全开发,曾在freebuf、paper多个平台发表过高质量文章

    课程大纲

    课程费用

    每期班定价4999,首期班特价4699前20名加入均送JAVA审计知识星球资格价值499元

    凡是MS08067旗下任意星球学员或其他培训课程学员,可享内部价4499

    每个报名学员都享受一次免费的重听权益,一次没学懂就再来一遍。请有意参加培训的学员抓紧报名!(可开票)

    报名咨询请联系小客服



    如何提前预习

    • 为更顺利的完成课程相关内容,请同学一定要提前预习相关知识点,已经报名的同学,请阅读报名时赠送的《JAVA代码审计:入门篇》一书,并且在赠送的“JAVA审计星球”中学习相关的内容。

    例如:#互动答疑#如何学习代码审计

    例如:#思路梳理#集中回答共性问题

    例如:#思路梳理#学习技巧

    • 还没有报名的可以去我们B站观看我们和漏洞银行联合推出的免费课程来学习!

      https://www.bugbank.cn/live/java

    直播培训和知识星球的区别

    • 从内容上来讲,知识星球的定位是图书的部分配套技术视频讲解。而直播培训内容是在此基础上一整套全新的课程体系,强化了JAVA基础,漏洞覆盖面也更全跟更详细、进阶干货内容更加深入、开源组件漏洞分析案例也更多等,总之有本质的区别。

    • 从形式来看,知识星球是一个类似论坛版块的形式,更有利于圈子的交流,我们提供的视频教程需要你去下载、去看、去练才能学会,买了如果不下载、下载回来如果不看、看了如果不练那还是没有用。那直播培训的目标是让您学会,而不是仅仅给您一堆视频教程去看,我们会布置作业,会有批改,会有现场解答,更系统的小班辅导,这也是我们每期限定人数的原因。

    • 我们非常珍惜读者对MS08067的信任,我们希望可以做小而精的高质量在线培训,如果我们去投广告宣传做大后就会变质,在这里每个报名学员都可以享受免费的重听权益,一次没学懂就再来一遍,实际工作中碰到问题,那就带着问题再来重听一遍。

        为什么选择MS08067直播培训     

    MS08067近年来在安全界的口碑还是有目共睹的,特别是对信安感兴趣的学生、爱好者做了些有意义的事情,是真心实意的为读者,绝无半点虚假,做星球的初衷也是为了满足读者对于图书配套视频的需求,不像一些培训把心思花在宣传、花在“卖教程”上,实验室4年出版了5本原创图书就可以看出我们的初心和技术能力。

    此次培训围绕红队攻击中的实战应用,重点突出实战、干货、思路、深度。负责讲解的老师也是MS08067的资深核心骨干成员,拥有多年的实战工作经验,让您所学的技术可以在企业中真正用得上。

    很多读者跟我反映过开始都是看视频、看书自学,但是一旦遇到实验报错就没法解决,遇到不懂的技术点也没人解答,本应该重点掌握的技术也没有掌握,100%的初学者都会或多或少的走些弯路,学了1-2年还是效率低、进步慢,有的甚至就放弃了信安这个行业,学习信安要有圈子,也要有方法,自学当然没有问题,但该花的钱一分也不能少花。

    最后再说下现在的信安培训也是鱼龙混杂,有很多挂羊头卖狗肉的也有很多商业化很成熟的机构,我们只希望做自己、多出书,然后做些小而精的培训,仅此而已。


    扫描下方二维码加入星球学习

    加入后邀请你进入内部微信群,内部微信群永久有效!

     

     

    来和5000+位同学一起加入星球学习吧!


    展开全文
  • Java代码审计 曾在启明星辰、绿盟科技等大型企业安全公司就职,对金融、能源...
  • 0x03 Java Sec Code 本地搭建 3.1 介绍 项目地址:https://github.com/JoyChou93/java-sec-code 该项目也可以叫做Java Vulnerability Code(Java漏洞代码) 每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),...
  • 全新 JAVA代码审计实战培训 课程重磅来袭 直播培训的目标是让您学会 而不是仅仅给您一堆视频教程去看 私塾式小班精讲,可免费重听!招生人数:为保证授课质量,小班教学,每期班...
  • JAVA代码审计(1)

    千次阅读 2020-09-29 15:56:19
    1.代码审计开始篇 首先代码审计要从漏洞原理开始,需要了解基本漏洞的产生原理,比如SQL注入、XSS、XXE、反序列化、溢出等等(推荐《Web安全深度解析》认识基本漏洞就够了),当然还有业务流程方面的一些漏洞,比如业务...
  • 1.java常用执行系统命令函数 Runtime.exec Process GroovyShell.evaluate ProcessBuilder.start() 2.补充知识点 Process类方法: 1.destroy() 杀掉子进程。 2.exitValue() 返回子进程的出口值。 3.InputStream ...
  • 首先,需要了解一下语法树和词法树的概念,这是代码审计工具实现审计功能的根本。 简单举例介绍: 源码: const a = 1; const b = a + 1; 词法树与语法树解析: 它的词法树: [ { "type": "Keyword", "value": ...
  • “CNVD-2021-05471,jtopcms文件上传getshell” 这个漏洞是我入门JAVA代码审计的一血,本文以“小白”的视角展开。如果你 只是想看具体的漏洞利用,那么请直接跳至“三、漏洞点”。 二、漏洞挖掘思路 1.找点 以前都...
  • 有点闭门造车,百度学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。...
  • Java代码审计--checklist

    2019-10-14 20:13:14
    通常我喜欢把代码审计的方向分为业务层安全问题、代码实现和服务架构安全问题,。 1. 业务层安全常见问题 业务层的安全问题集中在业务逻辑和越权问题上,我们在代码审计的过程中尽可能的去理解系统的业务流程以...
  • JAVA代码审计初探

    2019-08-31 19:49:01
    参考:JAVA安全编码与代码审计 JAVA常用架构 maven 根目录下有pom.xml MVC 大部分web项目都基于MVC开发,model(模型)+view(视图)+controller(控制器) dao层,service层,controller层(web),view层 controller 负...
  • 只能用${} 示例:二次注入代码审计 搜索select关键字,在UserMapper.java找到不安全的$号.UserService.java中找到对应的调用。 发现其逻辑为从session中取出username,随后拼接到sql语句进行查询。 接着照哦session...
  • 全新 JAVA代码审计实战培训 课程重磅来袭 直播培训的目标是让您学会 而不是仅仅给您一堆视频教程去看 私塾式小班精讲,可免费重听!招生人数:为保证授课质量,小班教学,每期班...
  • 总结知识点---Java代码审计

    千次阅读 2020-04-21 09:25:04
    持续更新问题及答案 问:说下平时怎么做代码安全审计的,具体思路...问:你做代码审计有没有找过比较经典的漏洞 条件竞争漏洞 问:有没有接触过php的代码审计,php的文件包含漏洞是什么。文件包含漏洞的形成原因...
  • 创建java项目,创建lib文件将jar包导入,添加类,即可看到反编译后的源代码 通过右上角Add Configurations,单机+添加remote 其中”-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” 将作为...
  • java代码审计之XSS

    2020-04-16 19:50:21
    审计思路: 扫描所有的 HttpServletRequest 查看相关的上下文环境。 这里以javasec为例: 先将1存储进去 这里是将xss存储到了cookie里边 访问就可以看见了 javasec处理方法: 这里提供几个具...
  • Java代码审计入门篇

    千次阅读 2018-06-28 11:30:21
    作者:i春秋核心白帽yanzmi原文来自:https://bbs.ichunqiu.com/thread-42149-1-1.html本期斗哥带来Java代码审计的一些环境和工具准备。Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的...
  • java代码审计

    千次阅读 2021-07-18 23:40:31
    https://www.cnblogs.com/nongchaoer/p/13324114.html 有些源码搭建网站,会自动创建 数据库,但有些 需要先手动创建数据库,才可以搭建网站。视情况而定。 ...代码审计——白盒测试 ...代码审计工具:N
  • java代码审计:SSRF

    2021-03-11 16:59:53
    漏洞描述 当Web服务器对用户提供的未经验证的目标参数发起请求时,将发生服务器端...缺陷代码 def doGet(value:String) = Action { WS.url(value).get().map { response => Ok(response.body) } } 修复建议:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,240
精华内容 8,496
关键字:

java代码审计

java 订阅