跳转至

安全测试

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-OptionsX-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.未认证的会话访问系统资源。

🚁 JAVA反序列化漏洞