在一些关键业务接口,系统通常会对请求参数进行签名验证,一旦篡改参数服务端就会提示签名校验失败。在黑盒渗透过程中,如果没办法绕过签名校验,那么就无法进一步深入。
微信小程序的前端代码很容易被反编译,一旦签名加密算法和密钥暴漏,找到参数的排序规则,那么就可以篡改任意数据并根据算法伪造签名。下面我们将通过两个简单的小程序参数签名绕过的案例,来理解签名逆向的过程。
01、常见签名算法
首先呢,我们需要理解的是,加密和签名是两回事,加密是为了防止信息泄露,而签名的目的是防止数据被篡改。
哈希算法的不可逆,以及非对称算法(私钥签名,公钥验签),为签名的实现提供了必要的前提。常见的签名算法,如:
MD5、SHA1、SHA256、HMAC-SHA1、HMAC-SHA256、MD5WithRSA、SHA1WithRSA 、SHA256WithRSA等。
各种签名示例如下:
可以看到常见的HASH签名算法输出长度是固定的,RSA签名长度取决于密钥大小,输出相对较长。那么,通过签名的字符长度,我们可以简单的判断出系统所使用的签名算法。
02、MD5签名绕过