首页 关于我们 成功案例 网站建设 电商设计 新闻中心 联系上品
QQ联系
电话联系
手机联系
QQ联系
电话联系
手机联系

微信小程序的修炼五脉(如意篇下)

发布时间:2020-06-13 20:07
发布者:admin

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

笔者是位极其“不听话”的,我不想要程序它觉得,我要我觉得;重新定义程序的逻辑以及游戏规则,掌控这其中的数据,让每个环节都顺的意,直到看到想要的结果为。在这篇章中,作者将会带领家寻找微信程序中特有且常的任意机号登录漏洞,并为读者们带来种你从未听说以及利过 并且只有在程序中才会存在的类似于CSRF的漏洞。

读者朋友们您定收到过如下图中所示的程序分享消息或者到过如下图中所示的程序维码,点 击或扫描之后便可以进特定的程序,您也有可能使过程序内的分享功能,将特定的分享给您的家以及朋友、同事们。

开发过程序的读者都知道,这每个分享链接指向的地址实际上和URL地址相类似,通过在每个之后使 get 的法向对应的传递数据:

例如点击上图程序进对应的分享,实际的分享路径为:pages/archives/detail.html? id=492title=HackingDay 2019 HangZhou ,向程序中的“detail”传递了“id”参数获取对应的数 据内容和“title”参数显示为当前程序的标题。

当然并不是所有的都可以分享,例如下图所示有些没有开启分享功能便会显示“当前不可转 发”

程序中可以通过在函数中引 option 数组来获取此 get 传的变量值,例如传的变量名 为“xxx”,那么其对应的内容则为“option.xxx”:

由于微信的这分享机制可以使开发者掌控哪些可被分享,哪些不能被分享;并且微信程序与直接传递参数的法的确很简单并且常的实,所以在常活中被量的使。各位同仁们 定知道CSRF跨站请求伪造漏洞,他本质是利站对户浏览器的信任使被害者主动向站请求 了攻击者精构造之后的数据包,从导致受害者在意之间执了些攻击者所期望的操作。

由于程序的与之间也可以传递参数,那么在特定情况下也可导致类似CSRF的漏洞存在,我们暂且称之为 -- CWRF:跨微信程序请求伪造(Cross WechatAPP Request Forgery)吧,利程序对户微信身份的信任在获取传的参数之后结合户已经登录的身份信息(储存在本地的数据, 或者户的openid)向程序后端发送对应的数据包,从使户在意间(打开对应分享链接时)完 成次请求操作。

读者们在此时必然会产些疑问,微信程序分享的消息内容如何修改呢?有些程序不是 不能分享吗?哪怕能分享,中的参数值如何修改呢?

成对应参数路径的程序码?不,程序码需要有AppSecret才可成;在程序分享之时修改其 分享内容?下断点调试微信这个过程较麻烦;修改本地聊天记录再发送给别?这是个常好且 简单的法。那么笔者在此以微信Mac客户端为例教家如何修改本地程序分享内容。(Win/IOS/安 卓客户端读取聊天记录式可参考上众多教程)

微信聊天记录储存在 ~/Library/Containers/com.tencent.xinWeChat/Data/Application Support/com.tencent.xinWeChat/{微信版本号}/{户ID}/Message/ 录下,件名命名式为 msg_{数字}.db 他是个使SQLite 3(SQLCipher)的加密数据库。其解密密码提取式如下,这我们需要到Xcode带的 LLDB 调试器:

接着我们使 breakpoint set --name sqlite3_key 命令在微信客户端调数据库解密函数上下断点;

于是我们可以得到的类似“0x6000028a6c00: 0x1e2233159e583bbe1d46805c4d9bd9ff0817851003e929af05474f84e769bc1d”的内容,我们需要将数据使Python做如下处理:

print(0x + .join(list(reversed([key.partition(:)[2].replace( , ).replace(0x, )[i:i+2] for i in xrange(0, len(key)-18, 2)]))))

#例如最终输出:0x1dbc69e7844f4705af29e90310851708ffd99b4d5c80461dbe3b589e1533221e

其原理为将冒号前的“0x6000028a6c00”内容删去,并删去空格以及“0x”,然后将余下内容每两位分组并 反序添加上“0x”标识,形成最终的16进制解密 raw_key 。

下步我们使 DB Browser for SQLite 软件打开刚刚找到的微信聊天数据库,Encryption settings 选择 SQLCipher 3 defaults ,并将密码式设置为 Raw key (笔者这法语界选择:Clé de Chiàrement),接着输获取到的密码并点击OK按钮;

(笔者经历:新版微信在没 装Mac微信助之前貌似法使LLDB,安装上去之后就可以了,同样存在类似问题的读者不 妨安装这个插件试试)

在成功进数据库中,找到对应的对话,可以在 msgContent 字段中看微信聊天记录中程序的消 息,他是以XML的形式保存在数据库中的,例如下图:

其中 title/title 决定了程序消息的标题内容;sourcedisplayname/sourcedisplayname 决定了程序本身的名字;这最为关键的是 pagepath/pagepath 参 数,他决定了户点击程序消息之后将携带什么参数前往程序哪个指定的,例如上图示例中的路径及参数为:pages/index/index.html?username=ThorSRC 。

我们只要修改 pagepath/pagepath 参数的内容就可以不受任何分享限制定义程序路径及传参 内容,这需要注意点:在程序源码中路径为 pages/index/XXX ,在运环境下程序 后需要添加上“.html”变成 pages/index/XXX.html ,其余均变化。

例如在如下示例程序,户来到“我的”时程序会动登录向后端请求 openID 等数据并判断当前 微信户是否已经进了与商场账户的绑定操作,若则前往绑定,若已经绑定则将 openID 写缓存之中:

url: /pages/user/bind } }); }wx.setStorage({ //保存openid到缓存之中 key: openid, data: res.data.openid

可以看到上述JS代码中 changeFn 会判断户两次输的密码是否致,若致则将户输的密码作 为参数传程序的“/pages/my/changepwd”中。接着我们来到“/pages/my/changepwd”观察其 核功能函数如下:

程序会将传的密码和保存在本地Storage中的与对应商城户绑定的微信户openid值起传回给 后端服务器,服务器后端通过查询openid对应的户信息来修改对应户的密码。那么我们只需要构造 个微信程序的指向 /pages/my/changepwd.html?newpwd=XXX预设密码 ,并让其他已绑定商 城账户的点击我们构造好的微信程序消息,那么他在此商城的密码就会被动更改为我们预设的 值。例如下图我们将 pagepath 值设置为:/pages/my/changepwd.html?newpwd=Abc@123456 ,预设密码即为 Abc@123456 :

但户点击了对应的消息打开微信程序,他的商城账户密码即被修改为了 Abc@123456 ,可以 看到受害者点击之后提示密码修改成功的如下:

此我们完成了次典型且易被利的CWRF攻击,虽然并不是所有的CWRF攻击都能造成常严重的危 害,但这类漏洞并稽之谈,前在很多微信或者其他程序中还隐藏着许多类似的脆弱点。

有CWRF漏洞存在的程序,其必然有被有跳转功能的函数所引过,那么只要在项中 找到哪些代码段引了这些函数便可快速判定是否有CWRF漏洞的存在。微信程序JS件中有如下三 个可切换的函数:

当然最便的式便是以 /pages/ (有些程序不以此件夹开头,请读者视情况改变)作为关 键字在程序内全局搜索,可以个不落的将所有的结果快速返回出来:

安恒雷神众测SRC运营(实习生)————————【职责描述】1. 负责SRC的微博、微信公众号等线上新媒体的运营工作,保持用户活跃度,提高站点访问量;2. 负责白帽子提交漏洞的漏洞审核、Rank评级、漏洞修复处理等相关沟通工作,促进审核人员与白帽子之间友好协作沟通;3. 参与策划、组织和落实针对白帽子的线下活动,如沙龙、发布会、技术交流论坛等;4. 积极参与雷神众测的品牌推广工作,协助技术人员输出优质的技术文章;5. 积极参与公司媒体、行业内相关媒体及其他市场资源的工作沟通工作。【任职要求】 1. 责任心强,性格活泼,具备良好的人际交往能力; 2. 对网络安全感兴趣,对行业有基本了解; 3. 良好的文案写作能力和活动组织协调能力。

【职位描述】负责设计公司日常宣传图片、软文等与设计相关工作,负责产品品牌设计。【职位要求】1、从事平面设计相关工作1年以上,熟悉印刷工艺;具有敏锐的观察力及审美能力,及优异的创意设计能力;有 VI 设计、广告设计、画册设计等专长;2、有良好的美术功底,审美能力和创意,色彩感强;精通photoshop/illustrator/coreldrew/等设计制作软件;3、有品牌传播、产品设计或新媒体视觉工作经历;【关于岗位的其他信息】企业名称:昆明安恒信息技术股份有限公司办公地点:昆明市滨江区安恒大厦19楼学历要求:本科及以上工作年限:1年及以上,条件优秀者可放宽

安全招聘————————公司:安恒信息岗位:Web安全 安全研究员部门:战略支援部薪资:13-30K工作年限:1年+工作地点:昆明(总部)、昆明、昆明、上海、北京

工作环境:一座大厦,健身场所,医师,帅哥,美女,高级食堂…【岗位职责】1.定期面向部门、全公司技术分享;2.前沿攻防技术研究、跟踪国内外安全领域的安全动态、漏洞披露并落地沉淀;3.负责完成部门渗透测试、红蓝对抗业务;4.负责自动化平台建设5.负责针对常见WAF产品规则进行测试并落地bypass方案【岗位要求】1.至少1年安全领域工作经验;2.熟悉HTTP协议相关技术3.拥有大型产品、CMS、厂商漏洞挖掘案例;4.熟练掌握php、java、asp.net代码审计基础(一种或多种)5.精通Web Fuzz模糊测试漏洞挖掘技术6.精通OWASP TOP 10安全漏洞原理并熟悉漏洞利用方法7.有过独立分析漏洞的经验,熟悉各种Web调试技巧8.熟悉常见编程语言中的至少一种(Asp.net、Python、php、java)【加分项】1.具备良好的英语文档阅读能力;2.曾参加过技术沙龙担任嘉宾进行技术分享;3.具有CISSP、CISA、CSSLP、ISO27001、ITIL、PMP、COBIT、Security+、CISP、OSCP等安全相关资质者;4.具有大型SRC漏洞提交经验、获得年度表彰、大型CTF夺得名次者;5.开发过安全相关的开源项目;6.具备良好的人际沟通、协调能力、分析和解决问题的能力者优先;7.个人技术博客;8.在优质社区投稿过文章;

岗位:安全红队武器自动化工程师薪资:13-30K工作年限:2年+工作地点:昆明(总部)【岗位职责】1.负责红蓝对抗中的武器化落地与研究;2.平台化建设;3.安全研究落地。【岗位要求】1.熟练使用Python、java、c/c++等至少一门语言作为主要开发语言;2.熟练使用Django、flask 等常用web开发框架、以及熟练使用mysql、mongoDB、redis等数据存储方案;3:熟悉域安全以及内网横向渗透、常见web等漏洞原理;4.对安全技术有浓厚的兴趣及热情,有主观研究和学习的动力;5.具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。【加分项】1.有高并发tcp服务、分布式等相关经验者优先;2.在github上有开源安全产品优先;3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;5.具备良好的英语文档阅读能力。

岗位:红队武器化Golang开发工程师薪资:13-30K工作年限:2年+工作地点:昆明(总部)【岗位职责】1.负责红蓝对抗中的武器化落地与研究;2.平台化建设;3.安全研究落地。【岗位要求】1.掌握C/C++/Java/Go/Python/JavaScript等至少一门语言作为主要开发语言;2.熟练使用Gin、Beego、Echo等常用web开发框架、熟悉MySQL、Redis、MongoDB等主流数据库结构的设计,有独立部署调优经验;3.了解docker,能进行简单的项目部署;3.熟悉常见web漏洞原理,并能写出对应的利用工具;4.熟悉TCP/IP协议的基本运作原理;5.对安全技术与开发技术有浓厚的兴趣及热情,有主观研究和学习的动力,具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。【加分项】1.有高并发tcp服务、分布式、消息队列等相关经验者优先;2.在github上有开源安全产品优先;3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;5.具备良好的英语文档阅读能力。简历投递至 strategy@dbappsecurity.com.cn