作者:光明使者之快乐天使_101 | 来源:互联网 | 2023-10-10 18:45
入门知识总体目标方向先熟悉一些基本的流程安装配置对应环境与分析工具常规漏洞代码审计分析一些框架漏洞代码审计分析学习方向个人认为主要的方向如下:学习了解java的基本
入门知识
总体目标方向
先熟悉一些基本的流程安装配置对应环境与分析工具常规漏洞代码审计分析一些框架漏洞代码审计分析
学习方向
个人认为主要的方向如下:学习了解java的基本使用学习掌握常见Web漏洞的原理(注入、XSS、SSRF等)学习审计常见漏洞学习审计中间件框架的知识(weblogic、fastjson等)
代码审计流程
配置分析环境没什么说的,没环境还分析个锤子熟悉业务流程功能总体分为多少块,每一块的功能代码是如何实现的分析程序架构比如说是MVC,每一层用了哪些第三方的架构,每一层用了哪些第三方的插件工具自动化分析先使用工具对代码扫描一遍人工审计结果(分两种)验证工具扫描结果,排除误报时间充裕的情况下,从前端jsp页面到后边参数的传递,到参数接收过滤处理,到返回前端结果,每一步都要研究明白,分析可能存在的问题。
War包
作用:
Web网站发布到中间件(tomcat、web logic等)部署,都是以war包的形式。中间件服务器将war包进行解析,假如我们能拿到这些war包,就可以反编译后进行代码审计
结构:
主要的审计过程都在Class文件
Java的内置对象
我们知道java之中的对象的使用一般都是要先new一下,在使用。但是其包含九大内置对象,无需声明(new)而直接使用。Request(请求)Response(相应)PageContext(在jsp中直接使用的java代码)Session(回话)Application(两个页面交互使用的共享对象)Out(直接输出的对象)ConfigPageException
Java中危险的函数
getParameter() 获取传入的参数,主要看看是否存在过滤,假设没有任何过滤,而是直接拿来使用,那么就极有可能存在漏洞getCOOKIEs()主要是看函数获取会话是干嘛的,假设仅仅是用来做对比和校验,那或许不存在风险,但是假设是将拿到的会话保存到数据库中就很危险。因为获取到的会话是从前端传递过来的,是不可信且存在风险的。getQueryString()数据库语句执行而get的一个字符串get headers()获取前端传值数据包头的值Runtime.exec()可以直接执行系统命令logger.info输出的命令,存在信息泄露的风险
三个关键字
Password存在泄露的风险Upload上传相关漏洞Download下载相关漏洞