一、安全测试概述
1.1.定义
安全测试是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程
1.2.概念
安全测试是检查系统对非法侵入渗透的防范能力
1.3.准则
理论上来讲,只要有足够的时间和资源,没有无法进入的系统。因此,系统安全设计的准则是使非法侵入的代价超过被保护信息的价值
1.4.目标
通过对系统进行全面的脆弱性安全测试,发现系统未知的安全隐患并提出相关建议,确保系统的安全性。安全性一般分为应用程序级别和系统级别,区别如下:
应用程序级别:包括对应数据或业务功能的访问,核实应用程序的用户权限只能操作被授权访问的那些功能或数。
系统级别:包括对操作系统的目录或远程访问,主要核实具备系统和应用程序访问权限的操作者才能访问系统和应用程序
二、安全漏洞
细分流程图,安全漏洞根据客户端与服务器端的分布
2.1.钓鱼
黑客构造一个跟知名网站很相似的网站,吸引用户登录,输入敏感信息,或通过邮件等验证方式,不知不觉中获得用户的登录密码之类的
2.2.暗链
其实“暗链”就是看不见的网站链接,“暗链”在网站中的链接做的非常隐蔽,短时间内不易被搜索引擎察觉。它和友情链接有相似之处,可以有效地提高PR值。但要注意一点PR值是对单独页面,而不是整个网站
2.3.xss
跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的
2.4.点击劫持
是一种视觉上的欺骗手段。大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义
2.5.CSRF
简单说, 攻击者盗用了你的身份,以你的名义发送恶意请求
限制的方式可以包括:
1)referer的限制
2)加入有效性验证Token
3、对跳转的地址没有做严格的校验
2.6.sql注入
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击
2.7.文件上传/文件包含
上传的附件没有进行过滤,当上传的文件为危险文件时,依然可以上传成功。 这样很容易服务器的后台被控制
2.8.暴力破解
使用一个好的字典,利用工具,暴力破解网站的登录名和密码
三、安全测试流程
提交申请
准备测试环境
收集基础信息
执行渗透测试
测试结果分析
编写测试报告
四、 测试特性
安全特性:操作系统安全、数据库安全、WEB安全、软件的发布和安装安全、协议与接口攻防、敏感数据保护、手机端安全、静态代码分析
4.1.操作系统安全
操作系统安全我们可以把它分为以下几块:
系统漏洞(操作系统补丁)、系统配置(安全加固)
工具Nessus,开源的工具可以使用OpenVAS。
4.2.数据库
数据库安全我们可以把它分为以下几块:
数据库漏洞(补丁)、数据库配置特产(安全加固)
工具可以使用Ngs
4.3.web安全
web安全我们可以把它分为以下几块:
身份验证、验证码、会话管理、权限管理、敏感信息传输、安全审计、信息泄露、输入校验、输出编码、上传下载、异常处理、注释代码等
容器的安全(tomcat)
应用软件安全(nginx、负载均衡软件、jquery等)
扫描工:appScan、awvs
1.身份验证
复杂度要求,必须由大写、小写、数字等组成
时效性要求,建议用户3个月更改一次口令
密码长度要求,最小8位,最大?位
管理员重置密码后密码必须在下次登录更改
强度要求,不能跟原密码一致,不能与用户名相似
必须要有验证码机制
手机验证码超时机制
2.弱密码
3.验证码
验证码字符生成算法的安全随机数
验证码字符不能被验证码识别工具识别
验证码必须是一次性的
验证码超时
4.会话管理
登录前后会话要有变化
安全退出会话注销
会话超时机制
会话标识的传输和存储
5.敏感信息传输及存储
敏感信息不能以get方式提交
传输通道使用https
严格安全传输HSTS
对用户保密的信息不能传输到客户端
含有敏感信息的页面需要设置不缓存
4.4.软件的发布与安装安全
发布件的完整性校验(签名、哈希)
防病毒:需要安装的软件需要经过常用的杀毒软件(如360、金山毒霸等)的扫描,保证没有病毒特种码,以免被杀软处理掉
4.5.协议与接口攻防
业务交互数据在网络中使用的协议安全性测试
协议测试工具:codenomical
对外开放的端口:系统对外开放的端口必须是必要的,禁止开放无用端口
端口扫描工具:Nmap,近端可以直接在服务器上使用命令查看
接口:接口接受的数据需要做严格的处理
4.6.敏感数据保护
识别敏感数据:密码、秘钥、会话标识;个人信息、商业机密、客户信息等
保护:加密、存储位置、传输方式;获取数据脱敏、匿名化
4.7.手机端安全
app的签名、反逆向,用户隐私,文件权限,网络通讯,升级
1、app的签名、反逆向
2、用户隐私
本地保存用户密码、无论加密与否,敏感信息隐私信息,如聊天记录、关系链、银行卡号等是否加密保存
配置文件等是否保存到外部设备上
保存到外部设备的信息加载前判断是否被篡改
3、文件权限
App所在目录不允许其他组成员读写
4、网络通讯
重要敏感数据传输加密
5、运行时解释保护
嵌有解释器的软件XSS、SQL注入等
外部连接的是否有URL欺骗等漏洞
6、组件权限保护
禁止App内部组件被任意第三方程序调用
调用外部组件先验证签名
7、升级
升级包完整性、合法性校验,避免被劫持
8、3rd库
跟进第三方库的更新
4.8.静态代码分析(白盒)
白盒测试主要是通过对代码的浏览来发现问题
1、危险函数
2、工具检测
3、逻辑漏洞
4.9.灰盒
需要的地方对代码进行动态调试查看。审计中思路可以考虑如下部分
1、涉及敏感数据的时候,检查是get、post哪种形式发送数据
2、提交铭感数据的时候是否有防止csrf的token、refer、验证码
3、sql注入
4、XS
我们用的antisamy只能过滤基于标签的XSS伪造,其他的无法过滤,需要做二次过滤
5、权限校验、越权
6、session会话管理 常规cookie及session形式,把token作为session的形式,特别注入登录用户和token的绑定关系
7、代码中使用的第三方插件、开源软件是否是最新、是否有安全漏洞
8、代码中所使用的加密算法,是否是安全的
9、跳转中的redirect(Spring MVC中redirect重定向)形式中不要带敏感信息,会被发回客户端重新请求的,相当于把这些参数放在了get请求中
10、SSRF服务端请求伪造,注意url中含有另外一个url的请求
11、加密算法的使用,是否使用的是不合场景的弱算法
五、 加密算法
5.1.弱算法
md2,md4,md5(2004年的国际密码学会议(Crypto’2004)王小云证明了MD5可以被碰撞,至此,MD5不再安全) ,sha1,blowfish
5.2. 推荐算法
sha256,aes128
5.3. 可逆的加密算法
des 3des aes128
5.4. 可逆加密算法 “对称式”和“非对称式”
对称式加密特点
加密和解密使用同一个密钥,通常称之为“Session Key ”
DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES
非对称式加密特点
加密和解密所使用的不是同一个密钥,而是两个密钥:一个称为“公钥”,另一个称为“私钥”;它们两个必须配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则只能由持有人本人知道。
常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
不可逆加密算法:sha256 sha512 md5
不可逆加密算法的特征是,加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文。这种加密后的数据是无法被解密的,只有重新输入明文
常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-
SHA1
MD5输出128bit
SHA1输出160bit
SHA256输出256bit
另外还有SHA244,SHA512
分别输出244bit,512bit
六、 常用工具
AppScan
一款安全漏洞扫描工具,支持Web和移动,现在安全测试做漏洞扫描非常适用,它相当于是"探索"和"测试"的过程,最终生成很直观的测试报告,有助于研发人员分析和修复通常安全测试工具用这个,扫描一些安全漏洞,用起来比较方便,网上资料比较多,适合很多测试同学用,资料广阔,大家可以尝试下。 官网:https://www.ibm.com/developerworks/downloads/r/appscan/ 参考:https://www.cnblogs.com/benpao1314/p/8065720.html
Burp Suite
一款信息安全从业人员必备的集 成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了 Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer等工具模块;Proxy功能可以拦截HTTP/S的代理服务器(手机和web);Spide功能-智能感应的网络爬虫;Intruder功能可以对web应用程序进行自动化攻击等,非常适合做安全测试。通 过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人员的一把必备的瑞士军刀。
官网:https://portswigger.net/burp/
参考:https://www.cnblogs.com/nieliangcai/p/6692296.html
Acunetix
一款网络漏洞扫描软件,它可以检测网络的安全漏洞。 官网:https://www.acunetix.com/
Nmap
一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。 官网:https://nmap.org/ 参考:https://blog.csdn.net/m0_37268841/article/details/80404613
sqlmap
一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。 官方网站:http://sqlmap.org/, 下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master 演示视频:https://asciinema.org/a/46601 教程:http://www.youtube.com/user/inquisb/videos 参考:https://www.freebuf.com/sectool/164608.html
OpenVAS
一个开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。OpenVas服务端只允许安装在Linux系统上,接下来我们来介绍一下使用二进制搭建OpenVas的方法以及基础的使用。 官网:http://www.openvas.org/ 参考:https://www.freebuf.com/column/158357.html
msfvenom
参考:https://www.offensive-security.com/metasploit-unleashed/msfvenom/
fortify
静态代码检查工具 官网:http://www.fortify.net/README.html 参考:https://www.cnblogs.com/eyesmoon/p/7421477.html 参考:https://www.freebuf.com/sectool/95683.html
Drozer
MWR Labs开发的一款Android安全测试框架。是目前最好的Android安全测试工具之一。官网:https://labs.mwrinfosecurity.com/publications/ 参考:https://www.cnblogs.com/lsdb/p/9441813.html
nessus
一款号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。Nessus也是渗透测试重要工具之一。所以,本章将介绍安装、配置并启动Nessus。 官网:https://www.tenable.com/downloads/nessus 参考:https://www.cnblogs.com/cheyunhua/p/8084459.html
zap
OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,由数百名国际志愿者积极维护。它可以帮助您在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。 官网:https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project 参考:https://www.fujieace.com/kali-linux/owasp-zed-zap.html
七、安全测试流程
一、静态代码分析工具
- Fortify
- 特点:Micro Focus 提供,使用灵活的交付模型执行端到端测试,包括静态代码分析和移动 App 扫描,支持多种平台(如 Windows、iOS、Android)。
- CodifiedSecurity
- 特点:支持 Android 和 iOS 平台,遵循程序化方法进行安全测试,提供实时反馈,支持静态和动态测试,能在不获取源代码的情况下测试移动 App。
二、动态分析与渗透测试工具
- Drozer
- 特点:由 MWR InfoSecurity 开发,专注于 Android 设备的安全漏洞检测,是一款开源工具,支持真实的 Android 设备和模拟器,通过自动化和复杂活动快速评估 Android 安全相关复杂性。
- MobSF (Mobile Security Framework)
- 特点:自动化移动 App 安全测试工具,适用于 iOS 和 Android,支持动态、静态分析和 Web API 测试,可托管在本地环境,保护重要数据不与云交互。
- AppScan
- 特点:IBM 提供的安全漏洞扫描工具,支持 Web 和移动应用,生成直观的测试报告,帮助研发人员分析和修复漏洞。
- Burp Suite
- 特点:集成型的渗透测试工具,包含 Proxy、Spider、Scanner、Intruder 等多个工具模块,支持 HTTP/HTTPS 数据包的拦截、修改和重放,是 web 安全人员的必备工具。
- Acunetix
- 特点:网络漏洞扫描软件,能够检测网络的安全漏洞。
三、综合安全测试平台
- WhiteHat Sentinel Mobile Express
- 特点:基于云的安全平台,提供移动 App 和 Web App 的安全测试和基于计算机的培训解决方案,支持 iOS 和 Android 平台,能轻松检测漏洞,提供完整的项目状况信息。
- Veracode
- 特点:提供基于云的自动化服务,为移动应用程序和 Web 安全提供解决方案,其 MAST(移动应用程序安全测试)服务能确定移动 App 中的安全问题并立即采取行动。
四、漏洞管理和扫描工具
- Vulnerability Manager Plus
- 特点:集成的威胁和漏洞管理解决方案,通过即时检测发现并修复漏洞,保护企业网络免受攻击。
- OpenVAS
- 特点:包含多种威胁测试服务和工具的框架,提供全面且高效的漏洞扫描和漏洞管理解决方案。
- Metasploit
- 特点:主要用于针对远程目标设备开发和执行漏洞利用代码的网络安全工具,包含 Opcode 数据库、shellcode 归档及相关威胁研究资料。