JNDI注入
参考文章:
https://b1ue.cn/archives/529.html
https://docs.oracle.com/javase/jndi/tutorial/TOC.html
https://tttang.com/archive/1441/
https://goodapple.top/archives/696
https://xz.aliyun.com/t/12277
https://myzxcg.com/2021/10/Java-JNDI%E5%88%86%E6%9E%90%E4%B8%8E%E5%88%A9%E7%94%A8/
写在前面吧:这篇文章我早就”抄“完了,因为最近在找工作(一言难尽),过了一段时间我回来看自己写的文章,简直就是一坨。网上对这种分析的文章数不胜数,而且感觉大家写的都非常好,但是轮到自己写的时候都是稀里糊涂就写完了。说是写文章其实就是根据其他师傅的文章进行复现,debug源码。当然这其中我还是有自己提出问题的,大部分问题也都自己去验证了。
也许,抄着抄着就会了?
最后也是写了JNDI注入的利用工具:https://github.com/N ...
XSS小记
浏览器渲染过程和解码顺序
参考文章https://erzbir.com/archives/browser-parsing-xss-tutorailhttps://www.secpulse.com/archives/118040.htmlhttps://lalajun.github.io/2018/08/25/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B8%B2%E6%9F%93%E5%8E%9F%E7%90%86%E4%B8%8E%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81/
常常因为一些Bypass的方式引起困扰,一般抵御XSS的方式都是实体编码,但是为什么有些实体编码的方式也可以出发XSS,例如:<a href=javascript:alert& ...
gadget-inspector
参考文章:
https://xz.aliyun.com/t/7058
https://paper.seebug.org/1034/
https://gityuan.com/2015/10/24/jvm-bytecode-grammar/
简介gadget-inspector是在Black Hat USA 2018中被提出的,是一个用来自动检测反序列化链的工具。Automated Discovery of Deserialization Gadget Chains Ian Haken
在第一次看PPT的时候,搞不懂”Controlling Data Types => Controlling Code!”具体是什么意思,在PPT中还讲述了什么是反序列化漏洞以及产生的原因,然后就是gadget chain。
然后看了这篇文章感觉讲的的很清晰。概括来讲就是因为JAVA的多态性,同一个方法在不同的类里可能会有不同的实现,而有些不恰当的设计可能会导致其成为反序列化漏洞中的一个gadget。
Gadget-inspector程序入口在gadaget-inspector项目中,G ...
SOFARPC反序列化漏洞
sofa-rpc简单介绍SOFARPC是一个Java RPC框架。它默认使用SOFA Hessian协议来反序列化接收到的数据,sofa-rpc的github地址是:https://github.com/sofastack/sofa-rpc在SOFARPC中维护了一个黑名单,若反序列化的类在其中则会抛出异常。但是在SOFARPC 5.11.1之前的版本存在一条gadget链可以导致反序列化漏洞。先简单介绍一下hessian序列化。
hessian序列化与反序列化Hessian 是一种动态类型、二进制序列化和 Web 服务协议,专为面向对象传输而设计。Hessian 是动态类型的、紧凑的并且可以跨语言移植。写一个简单的例子看一下hessian序列化与反序列化。
123456789101112131415161718192021222324252627282930// Util.javapackage cn.luc1fer.hessianDemo;import com.caucho.hessian.io.Hessian2Input;import com.caucho.hessian.io. ...
CommonsCollections反序列化
写在开头:
https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html oracle中国官网这个对应版本有问题,所以复现的时候,多了一些不必要的小插曲,所以下载应该到其他网站,例如:https://www.oracle.com/hk/java/technologies/javase/javase8-archive-downloads.html
java原生序列化与反序列化在Java中,想要让一个类能够序列化,需要让该类实现java.io.Serializable接口。这个接口是一个标记接口(marker interface),即它没有定义任何方法,类实现这个接口只是表示它可以被序列化。
写一个简单的序列化和反序列化的例子:
1234567891011121314151617181920212223242526272829303132333435363738// Person.javaimport java.io.Serializable;public class Person im ...
cve-2023-1606分析
novel-plus漏洞介绍详情:https://avd.aliyun.com/detail?id=AVD-2023-1606
docker 环境:https://github.com/N0boy-0/vulenv
后台账号密码都是admin
novel-plus(小说精品屋-plus)是一个多端(PC、WAP)阅读、功能完善的原创文学 CMS 系统。
novel-plus 3.6.2版本存在安全漏洞,该漏洞源于文件DictController.java存在问题,对参数orderby的操作会导致sql注入。
漏洞分析其实没有什么好分析的,只不过有一个点比较有意思。这是一个小型的项目,直接下载源码简单看一下。
漏洞出现的地方在com.java2nb.common.controller.DictController,在这个文件里有一个list()方法
1234567891011@ResponseBody@GetMapping("/list")@RequiresPermissions("common:dict:dict")public PageBean ...
tomcat 内存马分析(一)
参考文章:
https://goodapple.top/archives/1355
https://su18.org/post/memory-shell/
https://xz.aliyun.com/t/13024
Servlet的启动JSP可以看作一个Java Servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。这句话可以从代码层面理解一下。在上篇提到过JspServlet =>org.apache.jasper.servlet.JspServlet。接着上一篇的tomcat流程分析写,最后说到StandardWrapper的初始化,在初始化之后还会去加载Servlet,在StandardContext.startInternal()中的4932行代码:
在loadOnStartup方法中会通过load方法加载已经初始化的Servlet(defaultServlet+JSPServlet),在这里只会初始化在xml中配置了load-on-startu ...
网易云js逆向及一个潜在的安全问题
网易云音乐参数加密分析找到加密函数首先找到获取comments的url:https://music.163.com/weapi/comment/resource/comments/get?csrf_token=xxxxxxxxxxx
然后可以看到参数除了csrf_token都是加密过的,所以需要定位一下params和encSecKey如何被加密得到的。
分析是比较简单的,首先直接来一个xhr断点锁定weapi/comment/resource/comments/get
打好xhr断点之后,直接刷新页面
顺着调用栈开始找加密前的参数,可以一个栈一个栈跟着调试,也可以找可疑点,比如找params和encSecKey赋值的地方。
最后在u1x.be1x中找到了参数加密前的内容:
1234567{ "cookie": true, "type": "json", "method": "GET", "data": "rid=R ...
tomcat启动流程简要分析
tomcat启动流程简要分析
下面的流程就是跟着走了一遍代码,枯燥无味。
说明文中大部分都是各处摘抄,做一个记录。顺序没有调整,文章的最后才去介绍了生命周期
Tomcat 框架介绍
https://blog.nowcoder.net/n/0c4b545949344aa0b313f22df9ac2c09详细描述了tomcat的架构和各部分组件作用
Tomcat的整体结构如下:
tomcat其实就是http服务器+servlet容器,tomcat能解析客户端传来的http/https报文,并将其转发至对应的servlet容器去处理,处理之后的结果封装成http/https报文返回给客户端。
Server:Tomcat服务器,一个Tomcat的实例,服务器启动会自行加载配置文件中配置好的连接器与容器。
Service:一个Server可以运行多个Service,但是默认只有一个。
Connector:连接器用于解析不同的协议(HTTP、HTTPS、AJP),对于Servlet来说是无法感觉到协议的不同的,以为连接器将协议解析并提供一个ServletRequest对 ...
php文件包含
非常古早的记录,给学弟看[捂脸]
php文件包含文件包含的函数
include
require
include_once
require_once
require 函数如果没有找到所包含的文件会返回一个E_ERROR,从而无法执行下面的代码;
而include函数如果没有找到所包含的文件会返回一个E_WARNING,可以继续执行下面的代码
set_include_path为当前脚本设置 include_path 运行时的配置选项。如果脚本设置了include_path 即使你include函数后面跟随了文件的路径,也会优先去解析include_path里的脚本。如果设置了include_path,但是这个路径并没有所包含的文件,而且include所包含的文件中没有路径信息,会报错而不是从当前目录去找。
如果不设置include_path的情况下,切include所包含的文件也不含路径信息的话,会从当前脚本的工作目录去查找文件。
include_onceinclude_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中 ...