Time:20200724
本文章持续更新~
由于项目原因,第一次接触到了 fortify 这款代码审计工具,这里简单记录一下 fortify 的报告结果分析。
由于项目保密性要求,这里就不贴代码了
报告结果分析
0x1 Hardcoded Password(密码硬编码)
威胁等级:高危
什么是密码硬编码?
「密码硬编码」就是——将密码以明文的形式直接写到代码中。
下边示例中,将用户名和密码直接写到代码中,就是硬编码。
1 function connectionDatabase(url, userName, password) {
2 // ....
3 }
4
5 connectionDatabase('./api', 'zhangsan', '1234567');
主要危害有2个方面:
1)安全风险
只要能拿到该代码的人(即使代码发布前做过编译或者混淆压缩,也能通过反编译等手段查看到源码),都能获取到该用户名和密码,导致安全风险;
2)可维护性不好
代码一旦发布上线,后续要修改该用户名和密码非常困难,需要更改源代码。
0x2 Hidden Field(隐藏领域)
威胁等级:低危
隐藏字段不显示给用户,但数据会在提交表格时发送:
![fbfb8c040eba5a8986453f40862ff994.png](https://i-blog.csdnimg.cn/blog_migrate/f1e26383cbdcb058325cfefb7ba2772a.jpeg)
0x3 Javascript hijacking(Javascript 劫持)
威胁等级:低危
这里引用一下大佬之前的文章,原文点我查看,原理如下:
![027ec7797f9313efb2524a1321207951.png](https://i-blog.csdnimg.cn/blog_migrate/ad38f034725c4dd6105444f6d29a6cde.jpeg)
0x4 Weak Cryptographic hash(弱加密哈希算法)
威胁等级:低危
形如下图所示,说明存在弱加密哈希算法
漏洞:
![8da76d2f55b884b508b18c9460b55fe0.png](https://i-blog.csdnimg.cn/blog_migrate/58716c0328ffa495c04d62a8ea4fc1c3.jpeg)
CryptoJS.enc.Utf8.parse()
函数作用是将字符串转换为 128bit 的 key,然后才能用于 AES 加密。CryptoJS.mode.cbc
就是 AES 加密。
参考文章
- Weak Cryptographic hash: http://jser.io/2014/08/19/how-to-use-aes-in-crypto-js-to-encrypt-and-decrypt
- Javascript hijacking: https://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.html
- Hardcoded Password: https://www.cnblogs.com/zhaoweikai/p/10210881.html