PHP代码审计:变量覆盖
0x00 前提本文是给作为给小伙伴分享教学的一篇文章,给讲一下,所以写的比较简陋。。。见谅而且都比较基础,只是简单讲课提纲吧
0x01 变量覆盖审计0x00 简介变量覆盖,顾名思义就是可以覆盖已有变量值,导致变量覆盖的漏洞
常见的造成的代码审计的情景是代码中出现以下关键词:
register_globals=on
extract()函数
parse_str()函数
import_request_variables()函数
$$
0x01 变量覆盖演示extract()extract(array,extract_rules,prefix)函数
https://www.runoob.com/php/func-array-extract.html
该函数可以从数组中将变量导入到当前的符号表,即将数组中的键值对注册成函数,使用数组键名作为变量名,使用数组键值作为变量值。
这里我们要注意一下该函数的第二个参数
EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。
EXTR_SKIP - 如果有冲突,不覆盖已有的变量。
这就为我们提供了覆盖的可能。
12345 ...
Shiro 550 反序列化漏洞 详细分析+poc编写
0x00 前言shiro反序列化漏洞这个从 shiro 550 开始,在2016年就爆出来, 但是到现在在各种攻防演练中也起到了显著作用
这个漏洞一直都很好用,特别是一些红蓝对抗HW的下边界突破很好用
遂研究一下这个漏洞的成因和分析一下代码
0x01 Shiro 550 漏洞描述Apache Shiro RememberMe 反序列化导致的命令执行漏洞
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理
编号:Shiro-550, CVE-2016-4437
版本:Apache Shiro (由于密钥泄露的问题, 部分高于1.2.4版本的Shiro也会受到影响)
0x02 环境搭建基础环境编辑器:IDEA 2020
java版本:jdk1.7.0_80
Server版本 : Tomcat 8.5.56
shiro版本:shiro-root-1.2.4
组件:commons-collections4
搭建过程如果闲配置麻烦,也可以直接用我弄好的GitHub地址
https://github.com/godzeo/shiro\_1.2.4\_ ...
Java代码审计:反序列化链CommonsCollections1详解
0x01 漏洞介绍Apache Commons Collections是一个第三方的基础类库,提供了很多强有力的数据结构类型并且实现了各种集合工具类,可以说是apache开源项目的重要组件。
CommonsCollection在java反序列化的源流中已经存在5年
今天介绍的CommonsCollections1,反序列化的第一种RCE序列化链
CommonsCollections1反序列化漏洞点仍然是commons-collections-3.1版本
0x02 实验环境
maven的pom导入依赖
1234567<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> </de ...
Java代码审计:Java反序列化入门之URLDNS链
0x00 前言自学Java 代码审计,主要自己一个人学习,有点闭门造车,搜索引擎学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。
之前研究了,但是没有整理好,因为有hvv任务,所以推迟了一些,现在赶紧整理发出来。
0x01 Java反序列化介绍Java反序列化漏洞的产生原因:
简单的说就是,在于开发者在重写 readObject 方法的时候,写入了漏洞代码。
序列化和反序列化本身并不存在问题
但当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码。
0x02 反序列化方法的对比在接触Java反序列化之前,就是PHP了,PHP的反序列化和着还是有区别的
他们最基本的原理是类似的,反复横跳,找到一个利用链。
都是用于数据存储的一个格式化的操作。
将一个对象中的属性按照某种特定的格式生成一段数据流,在反序列化的时候再按照这个格式将属性拿回来,还原成对象。
而Java其提供了更加高 ...
Java代码审计:XXE漏洞
0x00 前提Java 代码审计自学:主要自己一个人学习,有点闭门造车,搜索引擎学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。
0x01 XXE漏洞简介XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。Java中的XXE支持sun.net.www.protocol 里的所有协议:http,https,file,ftp,mailto,jar,netdoc。一般利用file协议读取文件,利用http协议探测内网,没有回显时可组合利用file协议和ftp协议来读取文件。
0x02 XXE相关基础概念XML&DTDXML (可扩展标记语言,EXtensible Markup Language),是一种标记语言,用来传输和存储数据,而非显示数据。DTD(文档类型定义,Documen ...
Java代码审计:文件篇/文件上传/文件读取/目录遍历
0x00 前提自学Java 代码审计,主要自己一个人学习,有点闭门造车,搜索引擎学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。
0x01 文件路径穿越简述:
许多的文件漏洞都是来源于文件路径的问题,好多时候也是路径可控,再加上一下程序员奇怪的逻辑。
如果漏洞路径可控提供很多其他突破的方法
攻击者利用../可以上传至任意指定目录或者目录穿越。
示例代码:中间有../可以造成文件路径的不安全
12345678910111213package file;import java.io.File;import java.io.IOException;public class filepath { public static void main(String[] args) throws IOException { File file = new File("../../file/123.txt"); ...
CVE-2020-15778漏洞复现
0x01 漏洞简介SCP(secure copy)是linux系统下基于ssh登录进行安全远程文件拷贝的命令,可以在linux之间复制文件和目录。
OpenSSH中小于 8.3p1版本 SCP命令里存在命令注入漏洞。当将文件复制到远程服务器时,文件路径附加在本地scp命令的末尾,可以触发命令注入漏洞。
漏洞存在的点在 https://github.com/openssh/openssh-portable/blob/a2855c048b3f4b17d8787bd3f24232ec0cd79abe/scp.c#L989
攻击者可以采用反引号(`)文件作为命令注入执行scp命令,命令将会发送到远程服务器并执行。
作者介绍是
将文件复制到远程服务器时,文件路径会附加在本地scp命令的末尾。例如,如果执行以下命令
1scp SourceFile user@host:directory/TargetFile
它将执行本地命令
1scp -t directory/TargetFile
大佬的原帖https://github.com/cpandya2909/CVE-2020-15778/
0x ...
java代码审计自学:从爬虫到SSRF漏洞
0x00 前提主要是因为自己的学习Java 代码审计中的学习思路吧,主要自己一个人学习,有点闭门造车,百度学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。
这个是因为刚刚造轮子,学习了一下Java的GUI是怎么写的,造了一个轮子,要写一个爬虫,由于中间出现了小bug,看了看网络请求这块,后来发现顺便就是把SSRF这个漏洞就一起研究。
0x01 SSRF漏洞SSRF(Server-Side Request Forge, 服务端请求伪造),攻击者让服务端发起指定的请求,SSRF攻击的目标一般是从外网无法访问的内网系统。
这个不必多说了,直接copy吧
Java中的SSRF和PHP的有点区别:协议支持少一些,而且部分协议是受限的比如gopher协议,所以总体上来说Java的SSRF危害肯没PHP那么大。
通常 ssrf 容易出现的功能点,还是和php那些都一样:
基本上都是发起url请求的地方:
1、通过关键字 share、url、link、src、sour ...
java代码审计自学:反射机制
0x00 简介主要是因为自己的学习Java 代码审计中的学习思路吧,主要自己一个人学习,有点闭门造车,百度学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。
P牛的文章中说到:
Java安全可以从反序列化漏洞开始说起,反序列化漏洞⼜可以从反射开始说起。
0x01 Java反射机制我之前觉得Java学起来感觉是比较死的,因为我只是站在变成的角度,php的各种动态的调用,免杀起来都方便的不行,但是发现java的提供的“反射”功能,也是可以提供⼀些动态特性,也是灵活的
所以,Java反射(Reflection)是Java非常重要的动态特性
我们通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息
还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。
简单的说就是,我们用对象可以通过反射获取他的类,用类可以通过拿到它的所有⽅法(包括私有),拿到的⽅法可以为所欲 ...
java代码审计自学:sql注入篇
0x00 前提主要是因为自己的学习Java 代码审计中的学习思路吧,主要自己一个人学习,有点闭门造车,百度学习法,但是还是记录一下,也分享一下,也便于将来的总结和反思,如果我能终能学到什么,我也会重新梳理思路,为那些自学者提供一个好的思路,所以有了下面的系列文章java代码审计自学篇。
0x01 漏洞原理虽然基础,但是还是介绍一下吧
SQL 注入老生常谈,就是 SQL 命令插入请求中,并在服务器端被接收后用,没有有效的过滤,导致服务器执行了意料之外的恶意的 SQL 命令,最终达到恶意的脱数据。
Java 的 SQL 注入和 PHP 中的 SQL 注入,其实原理都是一样的,理论上只要是与数据库存在数据交互,只要传入的数据完全受用户控制,没有有效的过滤都有可能出现 SQL 注入的。
java的特殊是有一些框架会托管一部分的数据库的操作,我们要了解一下
0x02 分类:拼接和预编译1、直接拼接,未进行过滤将request.getParameter("id")获取的id直接放在SQL语句,没有过滤而且是拼接的情况
以前的JDBC的方式,的直接拼接方式,存在sql注入:
...