一、背景
汤青松 ,北京趣加科技有限公司 安全工程师,实体书《PHP WEB安全开发实战》作者,擅长企业安全建设,SDL安全建设。PHPCon 2020 第八届 PHP 开发者大会分享《PHP安全编码规范与审查》,NSC 2019第七届中国网络安全大会分享《PHP反序列化漏洞分析实践》看雪2018 安全开发者峰会担任Web安全训练营 讲师
大家好,非常高兴给大家分享《代码安全体系建设》议题,我是汤青松,目前在 SDL 方面做的比较多的。今天讲的这个话题其实和 SDL 有很大关系的。我这次分享这个话题的其实就是 SDL 当中的一部分。很多同学如果在甲方也会去做 SDL 当中的一些工作,所以我希望我这次分享的内容对大家有所帮助。
这次分享的话题是 SDL 当中的一部分,但是它不完全是 SDL 因为我主要还是聚焦于在安全向左移的这样一个概念当中。所以今天分享的话题主要是聚焦于这个代码风险管理。那在这个代码安全当中可能有哪些风险点了?那它可能会包含技术方面的工作和非技术方面的工作,比如说管理工作以及这个学习方面的一些事情都会有讲解到。
二、安全测试
再就给大家分享一个安全测试当中,安全测试主要有这几个, web 站点测试、API接口测试、私有协议测试和案例输出。
2.1 web站点测试
那这个web站点测试了其实我觉得还是比较常规的,目前也没有什么太大的一个技术难点
比如说测试个sql注入、 XSS 但一般目前来说是个sql注入和 XSS 这些问题点已经比较少了, XSS 可能是反射型 XSS 多一些,但是影响我觉得也不是太别大,因为现在都是那个cookie 加密的就是HTTP Only 另外这种形式,所以没有太多可说的。
2.2 API接口测试
API 接口怎么测试了? API 接口它和这个 web 站点它有一些区别。像 web 站点我们可能可以通过爬虫的方式把那地址都爬虫出来,然后再对这个地址进行扫描。那扫描有结果了,我们就把这个验证一下,验证完之后然后提出来。
那么 API 接口有个问题点,就是我们没办法去爬虫。所以这个时候了我们通常打开一个xray的一个端口,用这个服务模式。然后手机了我们把这个端口指向xray的这个代理地址,然后我们去打开一些请求,把这些地址收集起来,然后去扫描。同时我们还会有一个 URL 地址的清单,就是这个地址其实是开发那边给我们提供的。然后这个功能测试那边同学也有一份我们在对这个地址了去进行这个逻辑进行的一个测试,比如说越权以及这个支付漏洞等等这些方面的问题的检测。
2.3 私有协议测试难点
第三个就是私有协议测试,那私有协议了其实测试起来是比较麻烦的,比如说这个socket的协议,那么 TCP 协议,那么我们其实是没有办法直接把这个数据包了给解析出来的,除非了我们得有一个模拟他们的客户端。那目前来说只有几个就是重点项目了,我们会和他们对一下这个端和服务端的数据的一个格式,然后进行模拟测试。那这个工作量还是蛮大的。所以这个私有协议了,看各位的这个人手够不够了,没有太多好方法,只能去模拟这样一个这个私有协议的客户端。
那传统的外部站点测出来是最简单的,无非就是先收集地址,然后测试一下常规有没有问题点,然后对这个业务功能进行测试一下。那业务功能也就是说我越权支付,然后用户密码找回验证码等等。好 API 接口了。那主要就是我们要把地址先拿到,拿到地址之后其实其他的测试方法都差不多。那么拿了这个地址了,我们有两种方式。第一种说从开发团队那边直接拿到一份 API 该的一个列表,然后并且搞得清楚他们每一个参数是做什么用的。然后对这些接口了去进行一些扫描测试以及一些逻辑性测试,和传统概念区别不大了。
第二个就是有可能我们从开发团队那边拿了不全对吧。所以我们可以用 reay 去打开一个端口,会使用这个 burp suite 打开一个端口。然后手机设置一下代理,把我们的数据包了从那边经过一下,然后把这个地址也收集一批。第三个就是比较麻烦了,刚才也讲到了,没办法轻易了解这个数据包的格式,然后比较麻烦。而且不好轻易去各做数据包,你必须通过程序的方式,你人工的是很没有办法去改数据的。但有些数据它就是这个十六进制的。那他不是说就是你看到的铭文说了你得模拟一个客户端,用于封装数据包。看你的这个人手够不够,人手不够的话,测了也没有太大意义。
2.4 案例输出
每次我们检测出漏洞,或者遇到应急响应事件可以将它录入到我们的安全系统中,方便我们积累经验
那这里有个图,就我们这个团队了,对公司的一些漏洞了一些整体情况。那有季度的一个报表,有这个部门的一个报表以及统计信息,就是它的漏洞类别的一些统计信息。
三、总结
那今天主要就分享这四点内容,从这个培训到这样一个钩子的制作以及这个代码审计,那最后以及安全测试。那么这一次的话题就讲到这里了,那希望对大家有所帮助。再见。