1微信参考
https://developer.work.weixin.qq.com/document/path/90665
https://xz.aliyun.com/t/11092
企业微信提供了通讯录管理、客户联系、身份验证、应用管理、消息推送、素材管理、OA、效率工具、企业支付、企业互联、会话内容存档、电子发票、家校沟通、家校应用、政民沟通等API,企业可以使用这些API,为企业接入更多个性化的办公应用
企业微信的corpid 和secret 泄露,可能会导致以下安全问题:
攻击者可以通过这些信息获取企业微信的 access_token 和其他敏感信息,如用户信息、聊天记录等,从而进行恶意操作或者攻击。
攻击者可以伪造企业微信的身份,冒充企业微信的管理员进行欺诈或者诈骗行为,对企业造成损失。
攻击者可以在企业微信中注入恶意代码,通过漏洞等方式进行攻击和非法操作。
获取的配置文件内容
public
static final String QQ_APPID = "10******4";
public static final String QQ_APPKEY = "d6c19e95b******6fdec2142c";
public static final String WECHAT_APPID = "wx7ac******8006d5";
public static final String WECHAT_SECRETID =
"36b957c0aa32******00f56c93106";
public
static final String WEIBO_APPKEY = "18******670";
public static final String WEIBO_RedirectURI = "xxx";
public static final String WEIBO_SERCET =
"631b06d026c******6bffecfb0ac";
corpid
每隔企业都拥有唯一的corpid,获取此信息可在管理后台"我的企业"-"企业管理"下查看"企业ID"
secret
secret是企业应用里面用于保障数据安全的"钥匙",每一个应用都有一个独立的访问密钥,为了保证数据的安全,secret务必不能泄露。查看Secret需要在手机企业微信查看
access_token
access_token是企业后台去企业微信的后台获取信息时的重要票据,由corpid和secret产生。所有接口在通信时都需要携带此信息用于验证接口的访问权限
根据官方文档获取access_token需要使用到corpid和corpsecret
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取
可根据企业微信API查询access_token权限
https://open.work.weixin.qq.com/devtool/query
每个secret对应了每个独立的应用,如果用上面生成的access_token请求未授权的应用会导致报错。48002:API接口无权限调用
错误码可根据企业微信API接口查询
https://open.work.weixin.qq.com/devtool/query?e=60020
获取企业微信API域名IP段就需要拥有"审批"权限,获取"审批"的Secret生成access_token
https://qyapi.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=
https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=
id对应部门id,parentid对应所属部门id
https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=
https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=
所有人的姓名、手机号、头像、企业微信二维码、邮箱
更详细API信息参考:
https://developer.work.weixin.qq.com/document/path/90193
在学习完企业微信corpid和corpsecret泄露之后,发现在配置文件中的appid和secret原来是微信小程序
2微信小程序
参考:
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
返回状态码:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html
微信小程序的WECHAT_APPID 和WECHAT_SECRETID泄露,可能会导致以下安全问题:
被攻击者可以通过这些信息获取小程序的 access_token 和其他敏感信息,如用户信息等,从而进行恶意操作或者攻击。
攻击者可以伪造小程序的身份,冒充小程序开发者进行欺诈或者诈骗行为,对用户造成损失。
攻击者可以在小程序中注入恶意代码,通过漏洞等方式进行攻击和非法操作。
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=ACCESS_TOKEN
微信会返回下述JSON数据包给公众号:
https://mp.weixin.qq.com/debug/
除了可以获取access_token和服务器地址,其他都是未授权未找到其他授权接口
3科大讯飞
参考
https://www.xfyun.cn/doc/platform/xfyunreadme.html#%E5%B9%B3%E5%8F%B0%E7%89%B9%E8%89%B2
讯飞开放平台作为开放的智能交互技术服务平台,致力于为开发者打造一站式智能人机交互解决方案。用户可通过互联网、移动互联网,使用任何设备、在任何时间、任何地点,随时随地享受讯飞开放平台提供的“听、说、读、写……”等全方位的人工智能服务。目前,开放平台以“云+端”的形式向开发者提供语音合成、语音识别、语音唤醒、语义理解、人脸识别等多项服务。
国内外企业、中小创业团队和个人开发者,均可在讯飞开放平台直接体验先进的语音技术,并简单快速集成到产品中,让产品具备“能听会说会思考会预测”的功能。
科大讯飞语音合成API的凭据,如果这些凭据泄露,恶意用户可以使用它们来访问您的语音合成API,这可能会导致以下风险:
访问API的使用限制:如果您的API使用计划有访问限制,攻击者可能会使用您的API密钥来绕过访问限制,并访问您的API,这可能会导致您的API使用量超过了您的预算或计划限制。
访问敏感数据:如果您的语音合成API与敏感数据有关,则攻击者可以使用您的API密钥来访问或篡改这些数据,这可能会导致隐私和合规性方面的问题。
消费资源:攻击者可以使用您的API密钥来消费您的资源,例如使用您的服务器来进行暴力破解或发起分布式拒绝服务攻击(DDoS攻击),这可能会导致您的API不可用或降速。
private final String hostUrl = "https://tts-api.xfyun.cn/v2/tts";
private final String appid = "59****5";
private final String apiSecret = "1a3f18***************0b554509";
private final String apiKey = "c30779b1****************05eb80";
科大讯飞的功能包括:
语音识别:将人类语音转化为计算机可识别的文本。
语音合成:将计算机生成的文本转化为自然流畅的语音。
语音评测:对人类语音进行自然度、流畅度、准确度等多方面的评估。
语音唤醒:通过唤醒词来激活设备,并开始语音交互。
语音分析:对音频进行分析和处理,如音频去噪、音频降噪等。
语音翻译:将一种语言的文本或语音翻译成另一种语言的文本或语音。
语音交互:通过语音交互技术,实现人机对话、语音搜索等功能。
除此之外,科大讯飞还提供了人工智能领域的其他解决方案,如人脸识别、图像识别、机器翻译等,这些技术可以应用于安防、金融、医疗、教育、交通等领域,为企业和个人提供更加便捷、智能的服务。
关于以上的每一个功能都分别有不同的服务接口
语音识别: ws[s]: //iat-api.xfyun.cn/v2/iat
语音合成: ws[s]: //tts-api.xfyun.cn/v2/tts
语音评测: wss://ise-api.xfyun.cn/v2/open-ise
自然语言处理:https://audit.iflyaisol.com/audit/v2/syncText
文字识别: http[s]: //api.xf-yun.com/v1/private/sf8e6aca1
图像识别:http://tupapi.xfyun.cn/v1/scene
这里仅用语音合成做演示
golang代码
package
main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"fmt"
"net/url"
"time"
)
const (
STATUS_FIRST_FRAME = 0 // 第一帧的标识
STATUS_CONTINUE_FRAME = 1 // 中间帧标识
STATUS_LAST_FRAME = 2 // 最后一帧的标识
)
type
WsParam struct {
APPID string
APIKey string
APISecret string
Text string
CommonArgs map[string]string
BusinessArgs
map[string]string
Data
map[string]interface{}
}
func NewWsParam(appid,
apikey, apisecret, text string) *WsParam {
return &WsParam{
APPID: appid,
APIKey: apikey,
APISecret: apisecret,
Text: text,
CommonArgs: map[string]string{"app_id": appid},
BusinessArgs: map[string]string{"aue": "raw",
"auf": "audio/L16;rate=16000", "vcn":
"xiaoyan", "tte": "utf8"},
Data: map[string]interface{}{"status": 2, "text":
""},
}
}
func (p *WsParam)
create_url() string {
urlStr :=
"wss://tts-api.xfyun.cn/v2/tts"
//生成RFC1123格式的时间戳
date := time.Now().UTC().Format(time.RFC1123)
// 拼接字符串
signature_origin := fmt.Sprintf("host: %s\n",
"ws-api.xfyun.cn")
signature_origin +=
fmt.Sprintf("date: %s\n", date)
signature_origin
+= fmt.Sprintf("GET %s HTTP/1.1", "/v2/tts")
// 进行hmac-sha256进行加密
signature := hmac.New(sha256.New, []byte(p.APISecret))
signature.Write([]byte(signature_origin))
signature_sha :=
base64.StdEncoding.EncodeToString(signature.Sum(nil))
authorization_origin := fmt.Sprintf("api_key=\"%s\",
algorithm=\"%s\", headers=\"%s\",
signature=\"%s\"",
p.APIKey,
"hmac-sha256", "host date request-line",
signature_sha)
authorization :=
base64.StdEncoding.EncodeToString([]byte(authorization_origin))
// 将请求的鉴权参数组合为字典
v := url.Values{}
v.Add("authorization",
authorization)
v.Add("date", date)
v.Add("host", "ws-api.xfyun.cn")
// 拼接鉴权参数,生成url
urlStr = urlStr + "?" + v.Encode()
//
fmt.Printf("date: %s\nv: %v\n", date, v)
//此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致
// fmt.Println("websocket url :", urlStr)
return urlStr
}
func main() {
wsParam := NewWsParam("xxx", "xxxx", "xxx",
"要转换的文字")
str := wsParam.create_url()
fmt.Println(str)
}
获取鉴权接口,可以直接使用wss在线网站进行使用
wss://tts-api.xfyun.cn/v2/tts?authorization=YXBpX2tleT0iYzMxxxxxxxxxxxxxxxxxxxRlIHJlcXVlc3QtbGluZSIsIH************************NcjZJandrWksxTE1UbGR5Szh6cz0i&date=Sun%2C+14+May+2023+09%3A16%3A07+UTC&host=ws-api.xfyun.cn
POST请求参数, 文本内容,需进行base64编码。app_id需要修改
{
"common": {
"app_id": "xxx"
},
"business": {
"aue": "raw",
"vcn": "xiaoyan",
"pitch":
50,
"speed": 50
},
"data":
{
"status": 2,
"text":
"5q2j5Zyo5Li65oKo5p+l6K+i5ZCI6..."
}
}
返回结果是合成后的音频片段,采用base64编码。可使用脚本导出mp3格式
即时通信SDK的AppID是腾讯云即时通信服务分配给开发者的应用唯一标识符。如果该AppID泄露,攻击者可能会利用该AppID进行恶意操作,例如:
篡改消息:攻击者可以使用泄露的AppID伪造发送方身份,向用户发送恶意消息,如诱导用户点击恶意链接或下载恶意文件,从而实施钓鱼攻击。
消耗资源:攻击者可以使用泄露的AppID向腾讯云服务器发送大量请求,占用服务器资源,造成服务不可用或延迟等问题。
其他攻击:攻击者可以通过其他手段,如针对即时通信接口的攻击等,进一步实施攻击行为
参考:
https://tcc.tencentcs.com/im-api-tool/index.html#/v4/group_open_http_svc/get_appid_group_list
https://cloud.tencent.com/document/product/269/1520
项目中暂还没遇到,没有安装环境这里只简单写了一下
需要SDKAppID和privateKey
即时通需要生成UserSig,UserSig需要SDKAppID和privateKey通过计算生成
脚本下载地址:https://github.com/tencentyun/tls-sig-api-v2-golang/tree/master
使用API联调工具进行测试
QQ需要引导用户登录才可以获取到Authorization Code,然后根据Authorization Code获取
Access Token。根据Access Token才可以调用API获取用户的信息。
QQ并没有研究出来有用的信息,暂时跳过
参考:
https://wiki.connect.qq.com/%e5%bc%80%e5%8f%91%e6%94%bb%e7%95%a5_server-side
https://connect.qq.com/sdk/webtools/index.html
引用chatgpt的回答,结果和QQ的机制类似
要通过Weibo App Key 获取授权登录的access_token,需要进行以下步骤:
在微博开放平台创建应用,并获取 App Key 和 App Secret。
引导用户使用微博授权登录,获取到用户的微博帐号和授权码 code。
使用授权码 code,以及 App Key 和 App Secret,向微博授权服务器发起请求,获取 access_token。具体请求方式可以参考微博开放平台提供的接口文档。
获取到 access_token 后,可以使用该 token 访问微博开放平台提供的各种接口,包括获取用户信息、发送消息等。
参考:
https://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5
5.关注公众号
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏