- 浏览: 631999 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
d1438138:
[img][/img]
google api 的一些神奇使用 -
waykingeye:
[i][b][u]引用[list]
[*][img][url] ...
No result defined for action and result input -
tss0823:
...
No result defined for action and result input -
yahier:
有什么办法能够捕捉,然后给出自定义的提示呢
No result defined for action and result input -
chen_lian:
恩恩 按照上面的代码测试一下觉得很对
java创建目录
0x01
http://wcf1987.iteye.com/blog/1749088 这是对CVE-2012-0507的分析
http://wcf1987.iteye.com/blog/1768355这是对CVE-2013-0422的分析
本文则是java的cve-2013-0422的分析,其实看poc感觉上就跟CVE-2012-0507有几分相似的地方,都是最终利用了defineclass来实现定义一个高权限的类,他面临的挑战也与CVE-2012-0507有几分相似,下面具体分析。
0x02 这个poc的特点是新,目前为止orcale没打补丁,所以中招几率非常之大,大家速度关闭浏览器的java设置吧,话说回来,感觉java这几年好像漏洞频发的样子,不知道是我才关注还是oracle的不作为。
0x03 poc中有一段字符串,但是这段字符串解码如下
import java.security.AccessController;
import java.security.PrivilegedExceptionAction;
public class B
implements PrivilegedExceptionAction
{
public B()
{
try
{
AccessController.doPrivileged(this); } catch (Exception e) {
}
}
public Object run() {
System.setSecurityManager(null);
return new Object();
}
}
可以看到这段代码中就核心功能就一句话System.setSecurityManager(null);,这句话执行成功了,保护机制也就绕过了,poc的大量反射就为了能够高权限的去调用一下这个类B的构造函数,即poc中的localClass3.newInstance();
0x04 看这段poc中大部分的反射都集中在了这两个类中
sun.org.mozilla.javascript.internal.Context
sun.org.mozilla.javascript.internal.GeneratedClassLoader
看他的poc逐步突破路径如下:
0x5 这里会发现出现了大量的MethodHandle,MethodType之类的东西,这些东西都是jdk7新有的特性,和反射很类似,不过似乎效率更高?我个人目前觉得在这个poc中,这些调用方式如果替换成反射应该也是可以的,核心的对权限的突破应该是出现在0x04中提到的这两个类中
0x06
MethodHandles.publicLookup()
Returns a lookup object which is trusted minimally. It can only be used to create method handles to publicly accessible fields and methods.
之所以不用lookup的方法,是因为lookup返回的是所有的方法,而publicLookup只返回属性为public的方法和属性,这样子后面有一步就不会因为权限不够导致错误,
MethodType.methodType()
主要是定义方法的参数结构,可以有多个,主要支出各个参数的类型是什么
public MethodHandle findVirtual(Class<?> refc,
String name,
MethodType type)
throws NoSuchMethodException,
Produces a method handle for a virtual method. The type of the method handle will be that of the method, with the receiver type (usually refc) prepended. The method and all its argument types must be accessible to the lookup class.
When called, the handle will treat the first argument as a receiver and dispatch on the receiver's type to determine which method implementation to enter. (The dispatching action is identical with that performed by aninvokevirtual or invokeinterface instruction.)
The returned method handle will have variable arity if and only if the method's variable arity modifier bit (0x0080) is set.
Because of the general equivalence between invokevirtual instructions and method handles produced by findVirtual, if the class is MethodHandle and the name string is invokeExact or invoke, the resulting method handle is equivalent to one produced by MethodHandles.exactInvoker or MethodHandles.invoker with the same type argument.
这个方法就是去找到一个方法,第一个参数是这个方法是哪个类或者接口的,第二个参数是这个方法名是什么,第三个则是这个方法的参数是什么有几个,分别什么类型。注意这个方法可以去找那些接口的抽象方法,而不一定是具体的实现,通过这三个参数可以唯一的定位出一个方法,返回的就是methodHandle了。
public Object invokeWithArguments(List<?> arguments)
throws Throwable
Performs a variable arity invocation, passing the arguments in the given array to the method handle, as if via an inexact invoke from a call site which mentions only the type Object, and whose arity is the length of the argument array.
This method is also equivalent to the following code:
invokeWithArguments(arguments.toArray())
Parameters:
arguments - the arguments to pass to the target
Returns:
the result returned by the target
这个方法就是很简单调用前面返回的methodHandle了,参数与定义时的保持一致即可。返回就是方法执行的结果了
0x07 那么原来的复杂的反射调用可以简化为如下(只是表明调用的实质):
Context a =new sun.org.mozilla.javascript.internal.Context();
sun.org.mozilla.javascript.internal.GeneratedClassLoader b=a.createClassLoader(null);
b.defineClass(XX);
0x08 在以前的blog中我们说过java干掉安全机制的一种方法中,最重要的是如何去得到一个ClassLoader,而ClassLoader最大的问题是,在严格限制的低权限环境中肯定是不允许你创建他的子类的实例的,而通过getClass.getClassLoader则虽然可以得到当前类的ClassLoader,但是由于这个一般都是系统类,和我们不在同一个包下面,无法去调用这个protected的defineClass方法,在这个poc中我们发现似乎两个方面都有空子可以钻,
0x09 a.createClassLoader(null);这个方法按道理在低权限下是无法创建ClassLoader的,但是
由于找不到这两个文件的具体源代码,也就无从分析了,但是看上去似乎这里有点小问题,而后的b中又定义了一个public的defineClass方法估计在这个里面,可能在这个public方法里面去调用了protected的那个defineClass从而导致了安全系统的破坏。
发表评论
-
metasploit 图形化界面和自动化exploit脚本
2013-10-21 16:25 77720x01 最新版的metasploit没了图形化界面, ... -
APKTool签名的一个问题
2013-10-14 21:19 25230x01 昨天写了反编译,今天就写下签名的问题 0 ... -
APKTool打包的一个小问题
2013-10-13 20:23 248330x01,又开始写blog了,好久没有网络了,最近终于可以开 ... -
struts2远程执行漏洞学习(四)
2013-05-23 00:12 23590x01 最近又有了一个新的struts2漏洞,http:/ ... -
纯转一篇关于方法句柄的,对理解很多java poc帮助很大
2013-04-19 15:16 4354http://book.2cto.com/20130 ... -
CVE-2013-1493 学习
2013-03-25 16:06 30230x01 这个又是一个java CVE,效果前几个一样, ... -
myeclipse崩溃多处理的一个小窍门
2013-01-15 20:23 31920x01 如果大家用了myeclipse10以上版本,忽然间 ... -
CVE-2013-0422 学习
2013-01-11 16:26 41920x01 这个是这两天爆出来的,我构建了一个本地测试代码,主 ... -
CVE 2012 0507 分析
2012-12-17 16:00 35720x01 https://github.com/wche ... -
android 无权限 伪造短信
2012-11-06 09:15 35820x01 这个有是大名鼎鼎的蒋教授发现的,原理简单,有点意思 ... -
A new way to hack android app info
2012-11-06 01:04 1668最近新研究了一种android攻击手段,blog发到团队那里的 ... -
一次被黑追凶(未完待续)
2012-10-15 19:52 25180x01,某天师妹告诉我们某台服务器疑似被人干掉了,我果断远程 ... -
<找工作 十一>生产者消费者 组赛队列
2012-09-25 17:39 1534用阻塞队列实现 import java.util.co ... -
<找工作 十>生产者 消费者模型
2012-09-25 16:54 1164今天被问了个这个问 ... -
<找工作 九> 字符串全排列问题
2012-09-23 22:01 1389public class StringTest { ... -
<找工作 七>leetcode Add Two Numbers
2012-09-13 22:24 3148Add Two Numbers 链表相加 p ... -
<找工作 六>leetcode Median of Two Sorted Arrays
2012-09-13 21:25 3253http://www.leetcode.com/onlinej ... -
python 反编译 pyc 一些心得
2012-09-06 10:59 538470x01 , 现在用python的人也多了起来,代码安全始终是 ... -
关于web渗透中得一些记录
2012-08-24 23:31 36221. 当得到linux root shell时 ... -
mail xss
2012-08-11 21:57 17171 最近迷上了xss,感觉各种飘逸,特别是http://www ...
相关推荐
利用CVE-2013-2251漏洞获取服务器的webshell,从而黑入服务器
CVE-2011-0816, CVE-2011-0831, CVE-2011-0832, CVE-2011-0835, CVE-2011-0838, CVE-2011-0848, CVE-2011-0870, CVE-2011-0876, CVE-2011-0879, CVE-2011-0880, CVE-2011-2230, CVE-2011-2231, CVE-2011...
2. CVE-2016-3416、CVE-2016-0688、CVE-2016-0638:这些是2016年的高知名度漏洞,可能使攻击者能够通过恶意构建的请求执行任意代码,通常与反序列化问题有关。 3. CVE-2015-2623、CVE-2015-4744:这些漏洞可能允许...
CVE-2013-6117 $ ./CVE-2013-6117 -hOptions: -h, --help display help information -f, --filename File containing list of IP addresses -t, --target Target IP -n, --threads No of concurrent threads ...
针对CVE-2023-6548 和 CVE-2023-6549 的 NetScaler ADC 和 NetScaler Gateway 的漏洞补丁升级包 CVE-2023-6548 :在管理接口上执行经过身份验证的(低特权)远程代码 CVE-2023-6549:拒绝服务 2、 强烈建议受影响...
2. CVE-2018-15473:这个漏洞涉及到OpenSSH的公钥认证过程。如果攻击者能够操纵公钥文件的顺序,他们可能可以绕过特定的认证限制,从而获取未经授权的访问权限。 3. CVE-2018-15919:这是一个输入验证错误,可能...
Androidroot源码利用CVE-2013-6282漏洞.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
自己总结出来的一个脚本,虽然是利用,但是工具是可以用。系统漏洞脚本
CVE-2013-6282是一个漏洞编号,该漏洞属于Linux内核级别的漏洞,在android 2.x至4.3之前的版本中同样存在, 可以用于系统提权,获得root权限,属于Linux系统API缺陷。 利用该漏洞,开发Android root程序。
weblogic10.36 CVE-2018-2893补丁文件 最新补丁文件,修复 WebLogic(CVE-2018-2893)安全漏洞预警,oracle官方发布了2018年4月份的关键补丁更新CPU(CriticalPatchUpdate),其中包含一个高危的Weblogic反序列化漏洞...
总之,通过分析,可以得出结论:CVE-2012-4969漏洞是因为CMshtmlEd类对象在释放后,其指针被错误地再次使用所导致。这样的漏洞能够被利用来执行任意代码,造成严重的安全威胁。解决这类问题,通常需要软件厂商发布...
【CVE-2013-3660 分析与 x64 平台 EXP 编写技巧】 本文主要探讨的是Microsoft Windows系统中一个名为CVE-2013-3660的安全漏洞,该漏洞源于win32k.sys模块,可能导致本地权限提升。这个漏洞是由Google安全团队的...
Jackson官方github仓库发布安全issue,涉及漏洞CVE-2019-14361和CVE-2019-14439,均是针对CVE-2019-12384漏洞的绕过利用方式,当用户提交一个精心构造的恶意JSON数据到WEB服务器端时,可导致远程任意代码执行。...
CVE-2022-33891POC Apache Spark 命令注入(CVE-2022-33891)POC CVE-2022-33891 影响版本 Apache spark version 3.1.1版本 Apache Spark version>= 3.3.0 修复方案 1.建议升级到安全版本,参考官网链接: ...
麒麟Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包9 麒麟Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包9 麒麟Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关...
标题"CVE-2018-3191利用exp"涉及的是一个针对WebLogic服务器的安全漏洞,该漏洞被命名为CVE-2018-3191。这个漏洞是由于WebLogic服务器中Spring框架的一个组件处理JNDI(Java Naming and Directory Interface)注入...
Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包1Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包1Linux kernel本地权限提升漏洞(CVE-2022-0847)漏洞补丁及相关依赖包1Linux ...
1.上传并解压:Centos7-openssh补丁包(最新fix CVE-2021-41617 #2008884).zip 2.到服务器对应的解压目录 执行命令安装 : rpm -Fvh openssh-* 3.安装完成后执行命令查看修复情况: rpm -qa openssh --changelog | ...
标题 "cve-2019-2725修复相关的补丁p29694149_10360190115_Generic.zip" 指涉的是一个针对CVE-2019-2725漏洞的安全更新。CVE-2019-2725,全称“Common Vulnerabilities and Exposures”,是2019年发现的一个特定安全...
Oracle 11.2.0.1 CVE-2012-1675 补丁:p12880299_112010_Linux-x86-64.zip 是一个针对Oracle数据库系统的重要安全更新。这个补丁主要解决了一个在Oracle 11.2.0.1版本中的严重安全漏洞,该漏洞被标记为CVE-2012-1675...