安全测试
1.必要内容,包括:
- 隐私保护,声明用户数据、数据主体权利明示、敏感权限明示等。
- 个人数据、产品文档、禁止未声明的公网地址或未公开的接口。
- 禁止硬编码,整改成写到配置文件如yaml。
- 安全编码、安全的加密算法,如对称加密算法AES,非对称加密算法RSA、DSA、ECC。
- 不安全的第三方组件。
2.web渗透
3.安全改造:IP白名单、https协议加密传输、非查询类操作安全日志、数据备份和加密、异常告警等。
4.服务部署、目录配置检查。
5.数字签名
6.数据库、容器、操作系统级别的漏洞。
7.协议安全,DOS/DDOS攻击。
补充
需要匿名化的数据:密钥、身份证信息、护照号、银行卡号
日志级别一般包括:debug、warning、info、error
📌 登陆鉴权改造
1.密码是否明文发送
2.cookie有效时间
3.验证码的有效时间
4.忘记密码:绕过验证码或邮箱
5.密码复杂性
6.密码加密存储
7.直接输入登陆后的url地址,验证是否能重定向回登录
8.同一用户在同一终端多浏览器登录
9.同一用户先后在多台终端登录
📌 web黑盒渗透测试
🚁 CSRF
利用用户在受信任网站上已认证的身份(如cookie),去执行并非用户本意的恶意操作。
🔧 CSRF防御
1.token,在请求中放入攻击者无法伪造的信息(如csrfToken),且不能放在cookie内。
2.Referer记录请求的来源地址,Origin记录请求来源域名。
前者可能会泄露隐私,所以用户可以设置浏览器发送请求时不提供Rerferer。因此推荐用Origin进行校验。
3.重要请求时候要求身份验证。
4.设置Cookie的SameSite属性,参数值有:Strict、Lax、None。
测试步骤:通过代理工具重放,检查是否存在token、csrfToken;检查能否绕过Referer或Origin校验。
🚁 SSRF
通过存在漏洞的服务器,去访问内网中其他机器。可能造成1.敏感信息泄露;2.内网渗透;3.服务拒绝。
🔧 SSRF防御
1.使用安全协议如https,确保数据传输过程中的安全性,防止攻击者通过中间人攻击窃取数据。可以防止类似file://
、ftp://
等引起的问题。
2.使用白名单,限制请求的目标IP地址和端口。
3.对输入的URL或参数进行严格的验证和过滤,避免恶意请求的发生。
4.统一错误信息,避免根据错误信息来判断远程服务器的端口状态。
5.监控日志,定期监控服务器日志,及时发现异常访问行为,以便及时采取措施。
🚁 SQL注入
构造payload拼接成可执行的SQL语句。
1.最简单的如:<input type='password' value=''>
输入payload:1' or '1' = '1
,即拼接后结果为<input password='1' or '1' = '1'>
。
2.参数值加入单引号/双引号,检查是否因为SQL语法而出现错误,甚至错误页面暴露数据库相关信息。
3.输入'or 1=1--
页面有数据,输入'or 1=2--
页面无数据,则存在SQL注入。
4.输入payload拼接成联合查询,如http://xx.jsp?sex='male' union select 1,2,3,4%23
,如果结果不相同,则存在SQL注入。
🚁 XSS
跨站脚本攻击,但重点不是跨站,而是脚本的攻击。
1.反射性XSS:基于html和js代码构造payload,通过结束前面属性的弹窗,引入js脚本。
如<textarea></textarea>
,则输入payload:</textarea><script>alert(1)</script><textarea>
如<input type='text' value=''>
,则输入payload:'><script>alert(1)</script>
如<script>var a="输出点";</script>
,则输入payload:;alert(1);var b=
2.存储型XSS:提交的代码会存储在服务器(数据库、内存、文件系统等),典型例子留言板XSS。
"><img src=1 onerror="alert(/xss/)"/>
3.DOM型跨站攻击:涉及浏览器-服务器交互,利用js编写攻击,实现偷取用户cookie,进行内网嗅探、弹窗广告等行为。
js隐藏在url中,并在呈现时由页面的js取出,而非在提供服务时嵌入页面。
🔧 XSS防御
总体思路是对用户的输入和url参数进行过滤,对输出进行html编码。
1.对用户输入进行合法性验证,如检查输入是否符合格式、排除恶意字符、预处理等。
2.对用户输入的特殊字符进行转义,避免浏览器误解为标签等。
3.设置请求头,包括X-Content-Type-Options
、X-XSS-Protection
等,使浏览器拦截来自第三方资源的恶意脚本。
4.使用脚本过滤器,如jQuery库,检查和过滤用户输入。
5.限制cookie只能在https连接时使用,并使用HttpOnly标识等确保cookie不能通过js访问。
🚁 文件上传
1.直接上传jsp木马,内容如:<% Runtime.getRuntime().exec(request.getParameter("i")); %>
2.绕过客户端校验,使用代理工具如Burpsuite,拦截合法的上传请求进行篡改
- 修改文件扩展名为.jsp。
- 文件扩展名大小写:1.jsP
- 文件扩展名修改为编码(ASCII码,%20是空格):1.%6A%73&70、1.jsp%20
- 根据服务器特性:如1.php3、1.jsp/1.jpg
- 绕过MIME类型检测,将请求头Content-Type的值如
text/plain
修改为image/gif
3.跨目录上传,拦截合法请求修改为filename='../../1.jsp'
,或尝试..\
、ASCII编码%2e%2e%2f
、Unicode编码%u002e%u002e%u2215
等变体。
4.上传高压缩比文件,进行服务拒绝攻击。压缩命令为:
dd if=/dev/zero count=$((1024*1024)) bs=1024 | zip -9 big.zip
5.webshell,“shell”的含义是取得对服务器某种程度上操作权限,然后使用蚁剑、菜刀等软件连接。
通过如图片中注入恶意代码,绕过校验。
1.php内容为<?php @eval($_POST['attack']);?>
cmd命令制作图片木马:copy 1.jpg/b+1.php/a 2.jpg
🚁 文件下载
跨目录下载,拦截合法请求修改为filename='../etc/passwd'
,或尝试..\
、ASCII编码%2e%2e%2f
、Unicode编码%u002e%u002e%u2215
等变体。
🚁 DDE
excel表格出现如:=cmd | '/C calc'! A0
,用户无意识状态下点击“是”,会执行cmd命令弹出计算器。
测试步骤:找到可入库可导出excel文件的页面,使上述payload入库。导出后打开文件检查是否会执行恶意代码。
🚁 越权
1.横向越权,同权限用户访问其他用户的资源。
2.纵向越权,低权限用户访问高权限用户的资源。
3.未认证的会话访问系统资源。