安全测试在做什么?
答:扫描是安全测试的很重要的一部分,扫描可以快速有效的发现问题。扫描工具的易用性、方便性决定了重要地位。但是扫描工具的局限性、程序的不够灵活等缺点也是显而易见的。不管是扫描报告的分析、漏洞的深度挖掘、测试的组织等等的工作都离不开安全测试人员,所以只能说扫描工具减轻了测试人员的工作量,是安全测试的一种手段。
敏感数据:
敏感数据取决于产品具体的应用场景,产品应根据风险进行分析和判断。典型的敏感数据包括口令、银行帐号、大批量个人数据、用户通信内容和密钥等。
个人数据:
指直接通过该数据或者结合该数据与其他的信息,可以识别出自然人的信息。
匿名化:
指对个人数据进行的更改(例如单向散列、截短、替换等,如需保留个人数据真实值与替换值之间的对应关系,可以使用对称加密或映射表方式,但密钥/映射表必须由数据所有者控制),使原来有关个人的信息不再能归属到一个可识别的自然人,或推理这种归属需要耗费过多、不相称的时间、费用和精力。
测试的特性
操作系统安全:操作系统安全我们可以把它分为以下几块:
系统漏洞(操作系统补丁)、系统配置(安全加固) 工具:Nessus
使用方法:具体请看大佬博客(一切都不再遥远):https://blog.csdn.net/weixin_45398346/article/details/103728989
点击new scan 新建扫描。
点击Advanced Scan ,配置扫描
写入:名字,描述,要扫描的地址,“,”英文逗号分开,-连续地址
如:192.168.1.1,192.168.1.3 扫描1.1和1.3
192.168.1.1-18 扫描1.1一直到1.18
向下翻找到save
点击启动扫描。
扫描结束,导出报告。网页模式或表格模式。
导出的错误信息:名字 协议 端口 漏洞名字 漏洞危害 参考解决方法。
数据库安全:详见:(blogcccc)大佬的https://www.cnblogs.com/blogst/p/9241952.html
WEB安全:身份验证、验证码、权限管理、敏感信息传输、信息泄露、输入校验、输出编码、上传下载、异常处理、注释代码等
扫描工具:appScan、awvs
静态代码分析
1、涉及敏感数据的时候,检查是get、post哪种形式发送数据
Get传输的数据会被记录在代理、浏览器、web容器tomcat等的日志中
2、提交敏感数据的时候是否有防止csrf的token、refer、验证码等
3、sql注入
1)Statement和preparestatement
2)mybitas框架 #和$
4、XSS
我们用的antisamy只能过滤基于标签的XSS伪造,其他的无法过滤,需要做二次过滤
5、逻辑
此处是指,逻辑思路不合理,不符合安全的一些思想,如权限最小化等等
6、参数范围是否造成dos或者影响系统性能
7、权限校验、越权
8、session会话管理
9、参数是否是简单形式,是否可以造成遍历
10、代码中使用的第三方插件、开源软件是否是最新、是否有安全漏洞
11、代码中所使用的加密算法,是否是安全的
12、跳转中的redirect形式中不要带敏感信息,会被发回客户端重新请求的,相当于把这些参数放在了get请求中
13、SSRF服务端请求伪造,注意url中含有另外一个url的请求
1)源码中使用urlconnection 支持的协议除了http和https以外,还有file、ftp、jar、mailto等
request、httpurlconnecttion、httpClient、URL等发起网络请求
14、加密算法的使用,是否使用的是不合场景的弱算法
15、数据插入自增Id攻击
数据传入过来做插入动作,并且使用spring自动绑定对象方法获取数据,之后使用生成的插入sql
此时自动增长id不要写到更新语句中,如果写入可能造成恶意注入integer范围最大值2147483647,使功能不可用dos
16、Spring自动绑定参数,参数扩展攻击
后台使用的对象参数自动绑定获取,相应的sql使用了自动的if是否为null和为空的判断条件,前台可以根据猜测
注入队形的相应的属性实现非预料结果
攻击的类型:
阻塞类攻击
强制占有信道资源,网络连接资源,存储空间资源,例如拒绝服务攻击,破坏CIA可用性,三次握手拒绝最后一次握手,使服务器忙
控制类攻击
获得对目标机器的控制权
口令截获与破解
特洛伊木马
探测类攻击
收集目标系统的各种网络安全有关信息
欺骗累攻击
IP欺骗,ARP欺骗,电子邮件欺骗
漏洞性攻击
硬件或者软件的漏洞,缓冲区溢出
破坏类攻击
计算机病毒,逻辑炸弹
常见漏洞解决方法:
SQL注入:输入框输入一个SQL语句获取信息
敏感信息泄露:不安全密钥
跨站脚本(xss):提交html/js/jsp