致远 OA 变种 BASE64 算法的加解密方法

栏目: 编程工具 · 发布时间: 6年前

内容简介:作者:kk本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org在几天前,我就收到致远OA的RCE漏洞部分详情,但是并没有引起重视。当时获得的POC部分只包括了任意文件上传的数据包,但并没有其余详情,且数据包中重要数据都被编码过了。原以为又是一次恶作剧。没想到啊。

作者:kk

本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org

在几天前,我就收到致远OA的RCE漏洞部分详情,但是并没有引起重视。当时获得的POC部分只包括了任意文件上传的数据包,但并没有其余详情,且数据包中重要数据都被编码过了。原以为又是一次恶作剧。没想到啊。

由于漏洞本身没什么好讲的,现在让我们来看看这个POC中涉及的编码算法,看看原始的POC中的编码数据是做什么的。

首先漏洞位置在 htmlofficeservlet ,通过一段时间的寻找我找到了一份旧的 Seeyon OA 的源码:

https://github.com/zhf839428881/seeyon_v3x/

其中这个接口的实现在 HtmlOfficeServlet.java 文件内。

通过这份代码我们知道接口对参数的获取使用的是 DBstep.iMsgServer2000.GetMsgByName 方法。

又经过一段时间,我找到了 DBstep 数据库,然而 DBstep 并没有对参数进行加解密的操作。

卡了一段时间后,我发现此处的DBstep是被修改过的版本,对DBstep进行修改的是iweboffice中间件,而这个中间件属于金格科技。

从金格科技的官网我找到了试用版的iweboffice,可惜其中的iMsgServer版本为2015,且找不到iMsgServer2000的下载地址。

又过了一段时间,我找到了如下的文件:

https://github.com/ExllntSuppt/ecology-OA/blob/master/iMsgServer2000.java

通过分析可以知道 DBstep.iMsgServer2000.GetMsgByName 调用了 DBstep.iMsgServer2000.DecodeBase64 方法。

通过分析可以知道此处是一个base64算法的变种。

对应base64中的密文 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

该处变种算法的密文为 FxcYg3UZvtEz50Na8G476=mLDI/jVfC9dsoMAiBhJSu2qPKe+QRbXry1TnkWHlOpw

但是使用该密文无法正确对致远POC中的密文进行解密,推测在致远OA中,该密文被修改了。

联系了公司中有Seeyon OA的小伙伴,通过他的协助终于获取到了Seeyon的密文:

gx74KW1roM9qwzPFVOBLSlYaeyncdNbI=JfUCQRHtj2+Z05vshXi3GAEuT/m8Dpk6

写了个变种base64互转base64的小脚本。

var a = "gx74KW1roM9qwzPFVOBLSlYaeyncdNbI=JfUCQRHtj2+Z05vshXi3GAEuT/m8Dpk6";
var b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var c="OKMLlKlV";
var d="";

function a2b(v)
{
    for (var i = 0; i < a.length; i++) {
        if(a[i]==v){
            return b[i];
        }
    }
}

function b2a(v)
{
    for (var i = 0; i < b.length; i++) {
        if(b[i]==v){
            return a[i];
        }
    }
}

for (var i = 0; i < c.length; i++) {
    d=d+a2b(c[i]);
}

对POC中的加密参数进行解密后,我们得到如下数据。

参数 变种base64 base64 明文

DBSTEP OKMLlKlV REJTVEVQ DBSTEP

OPTION S3WYOSWLBSGr U0FWRUFTSU1H SAVEASIMG

currentUserId zUCTwigsziCAPLesw4gsw4oEwV66 Njk5MzAwNzk2OTYwMDAwMDI3MQ== 6993007969600000271

CREATEDATE wUghPB3szB3Xwg66 MjAxOS0wNS0yMA== 2019-05-20

RECORDID qLSGw4SXzLeGw4V3wUw3zUoXwid6 LTU1MDUyNTY1MDQ0MjM0NjIyMzc= -5505256504423462237

originalFileId wV66 MQ== 1

FILENAME qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6 Li5cLi5cLi5cQXBhY2hlSmV0c3BlZWRcd2ViYXBwc1xzZWV5b25cdGVzdDEyMzQ1Ni5qc3A= ..\..\..\ApacheJetspeed\webapps\seeyon\test123456.jsp

needReadFile yRWZdAS6 ZmFsc2U= false

originalCreateDate wLSGP4oEzLKAz4=iz=66 MTU1ODI3NTE2NDgzNg== 1558275164836

POC中还有一个客户端的IP,解密后为内网地址。

从这些明文中,我们知道这个POC中操作的数据库是DBSTEP,进行的操作应该是保存图片。其中还有用户的ID和记录ID的存在。操作时间是在2019-05-20,也就是说这个漏洞至少已经被发现一个月了。

还可以看到漏洞写入的文件地址是"......\ApacheJetspeed\webapps\seeyon\test123456.jsp",由于服务器上的上传目录不是固定的,这个POC只能影响上传目录与默认配置一致的服务器。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing for Emotion

Designing for Emotion

Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00

Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具