5.CVE-2018-15664-符号连接替换漏洞
简介在18.06.1-ce-rc2版本之前的Docker中,docker cp命令对应的后端API存在基于竞争的符号链接替换漏洞,能够导致目录穿越。攻击者可以利用此漏洞以root权限实现宿主机文件系统的任意读写,CVSS 3.x评分为7.5分。
漏洞原理CVE-2018-15664是一个TOCTOU(time-of-check to time-of-use)问题,属于竟态条件漏洞。
这个问题指的是对象进行安全检查和使用该对象的步骤之间存在间隙,攻击者可以先构造并放置一个能够通过安全检查的合法对象,顺利通过目标程序的安全检查流程,然后立即使用恶意对象替换之前的合法对象。这样一来,目标程序真正使用的实际上是被替换后的恶意对象。
漏洞原理流程图
攻击首先利用合法文件进行合法校验,正常文件校验通过之后再把合法文件替换为恶意文件。达到恶意利用的目的。以上就是TOCTOU问题的原理。这个问题看起来很抽象, ...
xsstrike源码赏析
XSStrike作为一个在github有9.9k start的xss检测工具。架构,检测思路对于研究xss检测还是很有帮助的,下面将从以下五个部分来赏析一下xsstrike源码。
1.项目架构1234567891011121314151617181920212223242526272829303132333435XSStrike├── core│ ├── __init__.py│ ├── arjun.py #查找页面中的input标签name属性作为参数。携带xsschecker请求参数查看回显来判断风险参数│ ├── checker.py #判断输入的特殊字符是否被编码,并根据编码情况进行打分│ ├── colors.py #为输出添加颜色│ ├── config.py #记载所有配置。如:启动xsstrike时输入的参数记载在globalVariables。│ ├── dom.py #domxss检测。正则匹配domxss的 source,sink。source能够流出sink则进行标记│ ├── encoders ...
fastjson反序列化漏洞原理及扩展
内部分享中分享的一些fastjson知识点,这里简单记录一下。
文章中涉及的代码均已上传到github:https://github.com/h1iba1/fastjsonVulnDemo
fastjson原理浅析Fastjson反序列化采用两个函数:JSON.parseObject(),JSON.parse()。
简单写一个demo来查看两者区别:
parseObject:默认返回 fastjson.JSONObject 类。
parse:默认返回@type指定的user类。
parseObject也可以添加Object.class参数来返回user类。
@type如果利用过fastjson漏洞,会发现几乎所有的payload中都存在@type,那这个@type有啥含义呢?
@type参数能将我们序列化后的类转为@type中指定的类,然后在反序列化过程中会自动调用类中的setter和getter和构造函数。
写一个简单的dome进行尝试:
EvilEntity.java
1234567891011121314151617181920212223242526package com.e ...
jar包修改绕过系统license验证
最近做的一个项目领导要求破解一个系统。emmmm,只能硬着头皮分析一波。
搭建环境远程debug。因为该项目基于tomcat搭建,找到catalina.sh
添加如下配置,重启。
1CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
ieda配置远程jvm调试即可:
定位关键验证代码通过反编译所有jar包搜索关键字+debug跟踪定位到关键代码如下。
验证绕过分析通过简单查看license验证代码,大概确定两个方法。
1.license.key采用ras算法验证,可以尝试根据代码写一个license.key生成器。
翻看了一下代码只找到rsa的公钥,license.key是根据机器码生成。推测是机器码+rsa私钥生成license.key。上传license.key之后,系统采用公钥解密验证。这个方法感觉没啥希望。
2.更改license验证jar包中的关键代码,再 ...
s2-001复现分析
1.漏洞原因官方说明:https://cwiki.apache.org/confluence/display/WW/S2-001
1The 'altSyntax' feature of WebWork 2.1+ and Struts 2 allows OGNL expressions to be inserted into text strings and is processed recursively. This allows a malicious user to submit a string, usually through an HTML text field, containing an OGNL expression that will then be executed by the server if the form validation has failed. For example, say we had this form that required the 'phoneNumber' field to not be b ...
s2-005复现分析
1.漏洞简介官方描述:https://cwiki.apache.org/confluence/display/WW/S2-005
s2-005是对s2-003的绕过,s2-003通过将#字符加入了黑名单来限制简单对象的执行,但是#字符可通过编码来绕过,比如:unicode编码(\u0023)或者8进制(\43)。
12345('\u0023' + 'session\'user\'')(unused)=0wn3dwhich will look as follows once URL encoded:('\u0023'%20%2b%20'session\'user\'')(unused)=0wn3d
而后为了修复,官方增加安全配置禁止静态方法调用(allowStaticMethodAcces)和类方法执行(MethodAccessor.denyMethodExecution)等来修补。但是并没有完全解决该漏洞,ognl表达式依旧可以执行,通过ognl表达式将安全配置修 ...
java反射机制
0x01 反射原理反射中几个极为重要的方法:
1234获取类的⽅法: forName实例化类对象的⽅法: newInstance获取函数的⽅法: getMethod执⾏函数的⽅法: invoke
方法详解:
forName():
forName两种使用形式:
1234567891011Class<?> forName(String name) //name:class名称Class<?> forName(String name, **boolean** initialize, ClassLoader loader)//name:class名称//initialize:是否进行“类初始化”//loader:加载器//第一种调用形式等同于第二种,其实就是第二种形式的封装,默认进行"类初始化”,默认加载器根据类名(完整路径)来加载Class.forName(className) Class.forName(className, true, currentLoader)
newInstance():
newInstance()没有参数输入,所以newIns ...
反序列化URLDNS
学习java反序列化自然绕不开cc链,ysoserial。ysoserial中最简单的链条就属urldns,用来作为入门学习很不错,下面简单分析,跟一下流程。
0x01 利用链123456HashMap->readObject()HashMap->hash()URL->hashCode()URLStreamHandler->hashCode()URLStreamHandler->getHostAddress()InetAddress->getByName()
依此跟进分析:
java.util.HashMap#readObjectr():1234567891011121314151617181920212223242526272829303132333435363738394041424344private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { // Read in th ...
arl_poc编写
最新版的arl增加了poc编写与探测的功能。打算自己编写一些常用poc来提高杀伤力。
因为主要用来做资产发现,本人更注重于指纹识别以及一些简单的poc探测。主要关注一下几个方面
指纹识别:12345shirostruts2weblogicspringsolr
简单的poc探测:123springboot未授权swagger接口文档发现...
敏感资产发现:123系统后台管理系统...
1. arl poc框架arl poc工具存在于v2.3.1镜像中。
1docker pull tophant/arl:v2.3.1
进入镜像:
12345docker exec -it arl_web /bin/bashfind / -name poccd /opt/ARL-NPoC/xing/ # 进入poc框架目录,可直接将ARL-NPoC打包拷贝出来进行本地使用
Arl-npoc本地使用:
1234567891011121314151617181920xing -husage: xing [-h] [--version] [--quit] [--log { ...
hugo+github page搭建自定义域名的https博客
1.部署hugomac安装Hugo:12brew install hugohugo version 查看hugo版本
hugo创建博客:1hugo new site h11ba1.com #在当前目录下创建h11ba1.com文件夹
生成新的文章:1hugo new posts/first-post.md
文章内容如下:12345---title: "My First Post"date: 2021-07-01T13:46:58+08:00draft: flase---
将草稿draft改为flase。
配置博客主题:123git initgit submodule add https://github.com/miiiku/hugo-theme-kagome.git ./themes/kagome # 将此存储库作为Git - 子模块,这样将更容易获取这个主题的更新echo theme = \"kagome\" >> config.toml # 更改配置文件,将主题加入配置
本地预览 ...