JAVA代码审计笔记

news/2024/11/25 19:44:50/

预编译不是万能的,否则就不会出现这么多的SQL注入漏洞。order by后面的语句,是不能够用预编译进行处理的,只能通过拼接进行操作,因此需要手动过滤。
SQL注入漏洞的防范方法
1、预编译
2、类型转换
xss漏洞的危害
窃取Cookie,键盘记录,截屏,网页挂马,命令执行
xss漏洞产生的原因
用户的输入没有经过处理便直接进行了输出
目录穿越漏洞简介
Web应用程序没有去检验文件名中是否存在“…/”等特殊字符,没有对访问的文件进行限制,导致目录穿越,读取到本不应读取到的内容
目录穿越漏洞的修复方法
对文件名进行过滤,防止出现“./”等特殊符号;采用ID索引的方法来下载文件,而不是直接通过文件名;对目录进行限制;合理配置权限
URL跳转漏洞简介
目前很多的Web应用因为业务需要,需与内部的其他服务或者第三方的服务进行交互,这样就需要重定向的功能,由当前网页跳转到第三方的网页
重定向函数在代码当中就有,不需要我们自己添加,而且URL跳转的漏洞是出现在具有URL跳转功能的代码当中
命令执行漏洞简介
命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如果系统命令代码未对用户可控参数做过滤,则当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
命令执行漏洞的危害
继承Web服务程序的权限去执行系统命令或读/写文件,反弹shell,控制整个网站甚至控制服务器,进一步实现内网渗透
执行系统命令的函数
在PHP开发语言中有system()、exec()、shell_exec()、eval()、passthru()等函数可以执行系统命令。在Java开发语言中可以执行系统命令的函数有Runtime.getRuntime.exec和ProcessBuilder.start,其中,Runtime.getRuntime.exec是在Java1.5之前提供的,Java1.5之后则提供了ProcessBuilder类来构建进程可以通过”;“进行命令的拼接,将ping和id两个命令给合在一起
XXE漏洞的简介
当应用程序在解析XML输入时,在没有禁止外部实体的加载而导致加载了外部文件及代码时,就会造成XXE漏洞。
XXE漏洞的危害
任意文件读取、内网探测、攻击内网站点、命令执行、DOS攻击等
SSRF漏洞定义
SSRF漏洞通常出现在社交分享、远程图片加载或下载、图片或文章收藏、转码、通过网址在线翻译、网站采集、从远程服务器请求资源等功能点处
SSRF漏洞的危害
(1)获取内网主机、端口和banner信息。
(2)对内网的应用程序进行攻击,例如Redis、jboss等。
(3)利用file协议读取文件。
(4)可以攻击内网程序造成溢出。
SSRF漏洞URL中常出现url、f、file、page等参数。SSRF会使用HTTP请求远程地址,因此代码审计时我们要特别留意能够发起HTTP请求的类及函数。
Java反序列化漏洞
Java是面向对象编程的,当你想把某个对象存储起来以便长期使用时,便需要用到Java反序列化。最常见的反序列化情况便是服务器的SESSION,当有大量用户并发访问,就有可能出现庞大数量的SESSION对象,内存显然不够用,于是Web容器便会将SESSION先序列化到硬盘中,等需要使用时,再将保存在硬盘中的对象还原到内存中,这个存储再拿出来的过程便是序列化和反序列化的过程
序列化和反序列化
一般来说,把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。
Java反序列化漏洞的危害
Java反序列化漏洞一般有以下几种危害
任意代码执行,获取SHELL,对服务器进行破坏
SSTI漏洞的危害
任意代码执行,获取SHELL,破坏服务器完整性等
在Java中常见的模板引擎
XMLTemplate、Velocity、CommonTemplate、FreeMarker、Smarty4j、TemplateEngine等
Spring MVC框架
(1)模型:一个或多个JavaBean对象,用于存储数据(实体模型由JavaBean类创建)和处理业务逻辑(业务模型由一般的Java类创建)。
(2)视图:一个或多个JSP页面,向控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据。
(3)控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的JavaBean,并将处理结果存放到实体模型JavaBean中,输出给视图显示。
JAVA代码审计实战
在实际项目中可以使用奇安信代码卫士或者fortify这类自动审计工具来进行快速审计。当然这种方法审计出来的漏洞并不是很全且存在极高的误报率,因此最好是将其作为一个辅助工具用来快速地发现某些明显的漏洞,而其他的漏洞还是需要自己对源码进行通读或回溯功能点的方法来发现


http://www.ppmy.cn/news/9231.html

相关文章

刷油漆【中等】

在一个8 \times 8 的网格中,一些水平的行被涂成红色,一些垂直的列被涂成蓝色,条纹是按顺序画的,一个接着一个。绘制条纹时它会重新绘制它所经过的所有单元格。(原理跟刷油漆一样)现在你需要确定最后一个上色的是什么颜色红色条纹是…

容器化——Centos下部署最后一版支持Docker的k8s集群

部署版本 首先要确定部署的版本 查询Kubernetes对Docker支持的情况 kubernetes/dependencies.yaml at master kubernetes/kubernetes (github.com) 查询Kubernetes Dashboard对Kubernetes支持的情况 Releases kubernetes/dashboard (github.com) 名称版本kubernetes1.23Doc…

Linux Bash单方括号与双方括号 [和[[的区别

本文参考 Burak Gkmen 的文章 Differences Between Single and Double Brackets in Bash。 单括号 [ 是 shell builtin,即 test 内置命令: $ type [ [ is a shell builtin $ [ 3 -eq 3 ] && echo “Numbers are equal” Numbers are equal $ t…

Hive SQL 每日SQL

1、查询订单明细表(order_detail)中销量(下单件数)排名第二的商品id,如果不存在返回null,如果存在多个排名第二的商品则需要全部返回。 需要用到的表: 订单明细表:order_detail 代码…

P10 PyTorch contour meshgrid

前言: 这两个函数是在画梯度图中经常用到的,简单了解一下 参考: python作图之plt.contour详解_你大佬来啦的博客-CSDN博客_plt.contour 目录: meshgrid contour 二维 contour 三维一 meshgrid 作用 创建网格点矩阵 输入&#…

[数据结构基础]栈和队列的结构及接口函数

一. 栈 1.1 栈的概念及结构 栈是一种特殊的线性表,其只允许在固定的一段进行插入和删除元素的操作。进行数据插入和删除的一端成为栈顶,另一端称为栈底。栈结构中的数据遵循先进后出原则(LIFO:Last in First Out)&am…

【数据篇】33 # 可视化数据处理的一般方法是什么?

说明 【跟月影学可视化】学习笔记。 数据可视化的一般过程 先看有什么样的数据:分析真实数据然后看想从数据中了解什么信息:获取想要的信息再决定使用何种可视化方式呈现:为数据选择正确的呈现形式最后看展示的效果怎么样,是否…

mysql 存储过程批量删除重复数据

mysql 存储过程批量删除重复数据 表结构: LOAD DATA INFILE /usr/local/phone_imsi_12 replace INTO TABLE tbl_imsi2number_new FIELDS TERMINATED BY \t ENCLOSED BY (number,imsi); 先用SQL语句来进行去重操作: delete from tbl_imsi2number_new …