声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.1

前言

历经寻魔、访道、如意、修仙之后来降妖,这也是本微信⼩程序渗透专题的最后⼀篇⽂章了。有攻既有守,前四篇为⼤家带来的都是攻,收尾作者不妨同样站在“⽆恶不赦”的攻击者⻆度浅谈⼀下微信⼩程序的⼏个防守要点。敌⼈所讨厌的便是我们需要注意的,如何有效的刺中攻击者的痛处在防守中⼗分的重要。安全在⼀些时候是⼀个成本的问题,防守成本和攻击成本是成正⽐的,在这种情况下不能⼀味地增加防守成本,要在防守成本有限时尽可能加⼤⽐率使攻击成本成倍增⾼。

No.2

道高一丈

保护⼩程序安全应从源码安全、接⼝安全、后台安全、平台安全四⽅⾯⼊⼿。

源码安全: 

     由于⽬前微信⼩程序对IOS/安卓客户端上的⼩程序包并未做任何加密,所以⼩程序的源码可以轻松被还 原出来。并且在本⼈看来加密⼩程序也是完全没有必要的,毕竟全部都是静态的本地的资源,即使加密 了花点时间照样逆向出本地代码。那么既然源码终究是要被看⻅的,使⽤代码混淆和类似Webpack打包 ⼯具来开发⼩程序将会是⼀个不错的选择。对于混淆以及打包之后的源码,可能能直接劝退⼀部分渗透 ⼩萌新或者能延⻓渗透测试者的分析时间,虽然⽆法百分百保护源码但能增加攻击成本这⼀点就⾜够 了。另外请在发布⼩程序时在设置中勾选“上传代码时⾃动压缩混淆”和“上传时进⾏代码保护”,虽然这样 做只会并没有多⼤⽤处,但⼼⾥安慰还是有的,和买《五年中考三年模拟》却从来不做⼀个道理。

微信小程序的修炼五脉(降妖)_微信小程序

另外设置⼩程序⾃动/⼿动埋点也是⼀个⾮常不错的选择,好的埋点可以监控到⼩程序的各种异常。它好 ⽐是⼀个没有交互的蜜罐,⼀个不熟悉您程序的陌⽣⼈在还原完源码之后⼀次性⼲净利落的把埋点代码 全部去除是基本不可能的,难免会遗漏⼀些点,那么当他将⼩程序导⼊⾄开发者⼯具运⾏时,就像我们 对⼀个不熟悉的且载有蜜罐的内⽹⼀顿扫描⼀样,必然会触发埋点(蜜罐)。普通⽤户是不可能将⼀个微 信⼩程序放置在开发者⼯具上运⾏的,若收到了⼩程序在开发环境中运⾏的数据报告,并且其IP不是⾃ ⼰公司的出⼝IP那必然是有攻击者在对您的⼩程序做渗透测试。

微信小程序的修炼五脉(降妖)_微信小程序_02

接⼝安全: 

推荐使⽤AES+RSA的⽅式对数据进⾏加密,并且结合时间戳对数据包进⾏签名(具体详情本⼈已和⾕歌 达成战略合作,⼤家直接在⾕歌搜索即可获取多套成熟⽅案)。如此⼀来便可保证传输数据在攻击者没 有解包⼩程序之前⽆法被读取/修改,⽽且这样做真的挺恶⼼⼈的也从侧⾯增加了攻击成本。保证了传输 过程中的相对安全,接下去便是不能有SQL注⼊、⽔平越权这样的漏洞存在。

另外请不要忘记微信⼩程序 wx.login 功能的特性:

1.每⼀次调⽤都会⽣成⼀个⼀次性有效的 js_code 参数

2.⽣成的 js_code 具有有效时间

3.同时间只能有⼀个 js_code 有效(例如⼩程序内连续⽣成两 个code A和B,那么⽼的A便不再有效)

4.渗透测试者⽆法在开发者⼯具内⽣成合法的 js_code 。搞安全,领导的话⼀定要听,但说明书上的内容不⼀定要全听,我们可以让 wx.login 这个功能应⽤场景丰富⼀些,并不只有在登录相关操作时才调⽤它。我们也可以把他当做⼀个校验码⽣成⼯具,在⼀些关键 操作调⽤此函数⽣成 js_code 返回⾄后端来判断此操作是否合法。 

那么当攻击者想要测试API时他必须每⼀个操作都使⽤⼀个新的 js_code ,⽽ js_code ⼜不能⾃⼰本地 合法⽣成只有去⼿机上真⼈操作抓取⼀个,但这样测⼀次抓⼀次很烦啊,但是如果攻击者想投乔同时抓 取多个 js_code 也不想⾏,同时间只有⼀个有效⽽且放时间⻓了还会过期。此时若数据包本身还有加密 以及签名步骤,攻击者便是有苦说不出,直接想砸电脑⾛⼈。

后台安全:

第⼀,绝对不使⽤弱⼝令;第⼆,绝对不漏升级任何⼀个插件;第三,绝对后台的不对外访问。这⼀块 并没有什么可以详谈的,使⽤复杂密码和及时升级是基本内容,⽽将管理平台放置在内⽹不让公⽹访问 则能⼀劳永逸,是先有可被攻击的系统后有⼊侵者,当管理系统在公⽹下不可直接访问时也只能考虑物 理⼊侵了。

平台安全:

这⾥提到的平台是“微信开发平台”,⼩程序的⼀切都与他息息相关,在此平台上⼀切数据的安全⽆疑也 是⼗分重要的。每个⼩程序都有⼀组与之对应的登录账户,这个账户的密码理应定期更换,若被意外泄 露也问题不⼤毕竟微信有强⼤的安全机制后续还要开发者扫码确认之后才可登录。

微信小程序的修炼五脉(降妖)_微信小程序_03

接下来⽐较重要的两块便是“开发设置”中的“⼩程序AppSecet(密钥)”和“⼩程序代码上传密钥”,这两两串 密钥不应该在⼩程序包内或者互联⽹任何⼀个可被公开访问到的地⽅储存,另⼀旦怀疑被泄露需及时重 置以及重新⽣成。⼩程序代码上传功能的“IP⽩名单”是默认开启的,请务必保持其开启状态并配置完善的⽩名单。

微信小程序的修炼五脉(降妖)_微信小程序_04

随后便是“第三⽅设置”中的授权问题,请定期查看您⼩程序账户内的授权,若有已经不再使⽤的第三⽅ 平台请⽴即停⽌授权给他们权限,并及时更改⼀些已授权权限⼤于实际需要使⽤权限的第三⽅平台的权 限(可以通过重新授权的⽅式实现)。

微信小程序的修炼五脉(降妖)_微信小程序_05

No.3

结语

“⾏久以致远 继往⽅开来”

除了微信⼩程序还有百度⼩程序、京东⼩程序、⽀付宝⼩程序等等,想要⼀⼀列举是徒劳的,这⼀类类 ⼩程序是当今百年未有之⼤变局下⼀个时代⽂化的缩影,他只是我们中华⽂明此时的⼀种载体。我们是 ⼀股股传奇的后浪推挤着这⼀切前⾏,当时间⼀点⼀点的往后挤啊,⼩程序他可能也就变了或者成为了 只能带⾛的回忆,但不论⻓河之后会出现什么,当这篇⽂章必然过了时时,安全研究渗透测试的本质终 究还是换汤不换药。不断地学习⼲货和实战经验是我们此时为了活下去的“硬通货”,但如果我们失去了 安全⼈的思想和初⼼,只顾⼀昧实践却丢了万不变的理论帽⼦失去了本应坚守的品德操守也会有些乏味 了吧。站在巨⼈、萍客、⼀个⾜够强⼤并不服输的⾃⼰身上向前继续学习,活出潇洒!

 

微信小程序的修炼五脉(降妖)_微信小程序_06

专注渗透测试技术

全球最新网络攻击技术

END

微信小程序的修炼五脉(降妖)_微信小程序_07