- SQL注入攻击
- 文件上传
- 权限漏洞
- 暴力破解
- 敏感信息泄露
- 业务逻辑漏洞
- 安全配置缺陷
- 跨站脚本攻击 (XSS)
- 跨站点请求伪造 (CSRF)
SQL 注入攻击(SQL Injection),简称注入攻击、SQL 注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。由于在设计程序时,忽略了对输入字符串中夹带的 SQL 指令的检查,被数据库误认为是正常的 SQL 指令而运行,进而使数据库受到攻击,可能导致数据被窃取、更改、删除,甚至执行系统命令等,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
· 常见发生位置
URL 参数提交,主要为 GET 请求参数
表单提交,主要是 POST 请求、也包括 GET 请求
Cookie 参数提交
HTTP 请求头部的一些可修改的值,比如 Referer、User_Agent 等
一些边缘的输入点,比如 mp3 文件、图片文件的一些文件信息等
· 防御措施
使用预编译语句: 一般来说,防御 SQL 注入的最佳方式,就是使用预编译语句,绑定变量,对现有代码的改动量较大。
使用存储过程: 使用安全的存储过程可在一定程度上对抗 SQL 注入,但要注意采用此种方法无法保证 100% 安全。
严格检查用户数据:对用户传入的数据类型及内容进行严格的检查。对数据类型检查,如利用 ID 查询时判断是否为整型,输入邮箱时判断邮箱格式,输入时间、日期等必须严格按照时间、时期格式等;对数据内容进行检查,如严格检测用户提交数据中是否包含敏感字符或字符串,是否匹配某种注入规则,严格转义特殊字符等。此种方法虽然便于实施,但容易产生误报和漏报,且容易被绕过。
其他: 使用安全的编码函数、统一各数据层编码格式(如统一使用 UTF-8 格式等)、严格限制数据库用户权限、定期进行代码黑盒白盒扫描、避免将错误信息显示到页面等。
文件上传漏洞是指由于程序代码未对用户提交的文件进行严格的分析和检查,导致攻击者可以上传可执行的代码文件,从而获取 Web 应用的控制权限(Getshell)。
· 常见发生位置
所有使用到上传功能的位置
用户可自定义的头像、背景图片等
富文本编辑器中的文件上传功能
· 防御措施
将上传目录设置为不可执行。
严格判断文件类型,使用白名单而不是黑名单(注意大小写问题)。需要注意一些与 Web Server 相关的漏洞所造成的问题,如 Apache、IIS、Nginx 等 Web 服务器的文件解析漏洞。
使用随机数改写上传后的文件名和文件路径。
单独设置文件服务器及域名。
访问控制是指用户对系统所有访问的权限控制,通常包括水平权限和垂直权限。访问控制问题是所有业务系统都可能产生的逻辑类漏洞,很难通过日常的安全工具扫描或防护,通常会造成大量用户数据泄露事件。
水平越权: 同一权限(角色)级别的用户之间所产生的问题,如 A 用户可以未授权访问 B 用户的数据等。
垂直越权: 不同权限(角色)级别的用户之间所产生的问题,如普通用户可未授权进行管理操作,未登录用户可以访问需授权应用等。
· 常见发生位置
所有涉及到与用户相关数据的位置,如用户资料、地址、订单等
所有涉及到登录及权限控制的位置,如后台登录、当前用户权限校验等
· 防御措施
对于所有涉及到用户数据的操作,严格判断当前用户的身份。
对于所有需要权限控制的位置,严格校验用户权限级别。
暴力破解是指攻击者通过遍历或字典的方式,向目标发起大量请求,通过判断返回数据包的特征来找出正确的验证信息,从而绕过验证机制。随着互联网众多网站的数据库被泄露,攻击者选择的样本可以更具针对性,暴力破解的成功率也在不断上升。
· 常见发生位置
用户登录处的账号密码暴力破解
人机验证机制容易绕过,如使用较易识别的验证码
找回密码或二次身份验证等可能用到的手机短信验证码
· 防御措施
强制使用强密码,并定期修改。
限制密码错误尝试次数。
使用强人机验证机制。
限制一定时间内的高频访问次数。
敏感信息泄露是指包括用户信息、企业员工信息、内部资料等不应当被外部访问到的数据通过网站、接口、外部存储等途径被未授权泄露到外部的漏洞。信息泄露漏洞会导致大量用户或企业信息被恶意利用,进行诈骗、账户窃取等,给用户和企业带来严重的不良影响。并且信息一旦信息被泄露,影响会很难消除。
· 常见发生位置
获取用户、企业信息等数据的网站或客户端接口
企业可访问到的外部存储,如网盘、邮箱等
其他一切可能泄露数据的途径
· 防御措施
对数据接口进行严格的权限检查和访问限制。划分企业安全边界,限制内部数据外流,如禁止访问外部存储应用等。提高员工数据安全意识。
业务逻辑漏洞是指由于业务在设计时考虑不全所产生的流程或逻辑上的漏洞。如用户找回密码缺陷,攻击者可重置任意用户密码;如短信炸弹漏洞,攻击者可无限制利用接口发送短信,恶意消耗企业短信资费,骚扰用户等。由于业务逻辑漏洞跟业务问题贴合紧密,常规的安全设备无法有效检测出,多数需要人工根据业务场景及特点进行分析检测。
· 常见发生位置
所有涉及到用户交互的位置
· 防御措施
针对业务场景进行全面的检测。
安全配置缺陷包括文件遍历、源码泄露、配置文件泄露等。
· 常见发生位置
文件遍历:可以浏览服务器Web目录下的文件列表,可能会泄露重要文件。
源码泄露:可以查到的 Web 程序的源代码。
配置文件泄露:Web服务器及程度代码的配置文件泄露等。
· 防御措施
检查所有可能存在安全配置问题的点,在满足业务需求的情况下,最大化安全配置。
跨站脚本攻击(XSS, Cross Site Script)通常指黑客通过“HTML注入”方式篡改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击行为。XSS 漏洞可被用于用户身份窃取(特别是管理员)、行为劫持、挂马、蠕虫、钓鱼等。跨站脚本攻击是目前客户端 Web 安全中最重要的漏洞。
跨站脚本攻击按效果的不同可以分为三种:
反射 XSS: 页面仅把用户输入直接回显在页面或源码中,需要诱使用户点击才能成功。
存储 XSS: XSS 攻击代码会被存储在服务器中,由于用户可能会主动浏览被攻击页面,此种方法危害较大。
DOM XSS: 通过修改页面的 DOM 节点形成 XSS。
· 常见发生位置
所有涉及到用户可控的输入输出点,如个人信息、文章、留言等。
· 防御措施
对重要的 Cookie 字段使用 HTTPOnly 参数。
检查所有用户可控输入。对所有的输入点进行严格的检查,过滤或拦截所有不符合当前语境的输入。由于一般无法预期所有可能的输出点语境,此种方法效果较差。
检查所有用户输入的输出点。由于 XSS 攻击最终是发生在输出点,因此需要分析出用户输入数据的所有输出点的环境,是输入在 HTML 标签中,还是 HTML 属性、script 标签、事件、CSS 位置中,针对不同的输出位置,制定不同的转义或过滤规则。
处理富文本。在文章、论坛等需要用到富文本的地方,需要特别注意富文本与 XSS 的区分,严格禁止所有的危险标签及“事件”,原则上应当使用白名单过滤标签、事件及属性。
跨站点请求伪造(CSRF, Cross Site Request Forgery)。由于重要操作的所有参数都是可以被攻击者猜到,攻击者即可伪造请求,利用用户身份完成攻击操作,如发布文章、购买商品、转账、修改资料甚至密码等。
· 常见发生位置
所有由用户(包括管理员)发起的操作处
· 防御措施
使用验证码。验证码是对抗 CSRF 攻击最简洁有效的方法,但会影响用户的使用体验,并且不是所有的操作都可以添加验证码防护。因此,验证码只能作为辅助验证方法。
添加足够随机的 csrf_token 并每次更新,以防止参数被猜解到。使用 CSRF_token 是目前通用的防护方法。
验证 HTTP Referer,拒绝不安全的来源。但服务器并非在任何情况下都能获取到 Referer 值。
测试单元 | 测试内容 | |
---|---|---|
信息收集 |
真实IP |
√ |
开放端口 |
√ |
|
协议识别 |
√ |
|
whois信息 |
√ |
|
证书信息 |
√ |
|
SSL加密方式 |
√ |
|
错误信息 |
√ |
|
HTTP访问方式 |
√ |
|
HTTP头参数 |
√ |
|
操作系统 |
√ |
|
中间件 |
√ |
|
框架信息 |
√ |
|
脚本语言 |
√ |
|
数据库 |
√ |
|
CMS信息 |
√ |
|
插件信息 |
√ |
|
编辑器信息 |
√ |
|
内网IP |
√ |
|
绝对路径 |
√ |
|
目录扫描 |
目录遍历 |
√ |
IIS短文件名 |
√ |
|
.git源代码泄露 |
√ |
|
.svn源代码泄露 |
√ |
|
ds_store源代码泄露 |
√ |
|
测试页面 |
√ |
|
备份文件 |
√ |
|
配置文件 |
√ |
|
默认路径 |
√ |
|
数据库文件 |
√ |
|
访问限制绕过 |
√ |
|
报错页面 |
√ |
|
接口页面 |
√ |
|
管理页面 |
√ |
|
后台路径 |
√ |
|
身份认证测试 |
登录信息加密 |
√ |
加密方式逆向 |
√ |
|
注册限制绕过 |
√ |
|
短信轰炸 |
√ |
|
图形验证码有效性 |
√ |
|
短信验证码有效性 |
√ |
|
滑块/拼图等新型验证绕过 |
√ |
|
用户名判断 |
√ |
|
用户名枚举 |
√ |
|
口令枚举 |
√ |
|
认证绕过 |
√ |
|
弱口令 |
√ |
|
SSH弱口令 |
√ |
|
RDP弱口令 |
√ |
|
SMB弱口令 |
√ |
|
MySQL弱口令 |
√ |
|
SQLServer弱口令 |
√ |
|
Oracle弱口令 |
√ |
|
FTP弱口令 |
√ |
|
MongoDB弱口令 |
√ |
|
Memcached弱口令 |
√ |
|
PostgreSQL弱口令 |
√ |
|
Telnet弱口令 |
√ |
|
SMTP弱口令 |
√ |
|
VNC弱口令 |
√ |
|
Redis弱口令 |
√ |
|
默认口令 |
√ |
|
未授权访问 |
√ |
|
Zookeeper未授权访问 |
√ |
|
Redis未授权访问 |
√ |
|
JMX未授权访问 |
√ |
|
Druid未授权访问 |
√ |
|
通达OA未授权访问 |
√ |
|
MongoDB未授权访问 |
√ |
|
Hadoop未授权访问 |
√ |
|
致远OA未授权访问 |
√ |
|
Apache Spark未授权访问 |
√ |
|
Apache Flink Dashboard未授权访问 |
√ |
|
rsync未授权访问 |
√ |
|
匿名登录 |
√ |
|
找回密码绕过 |
√ |
|
宝塔 Phpmyadmin 未授权访问漏洞 |
√ |
|
会话测试 |
身份认证参数判定 |
√ |
参数加密还原 |
√ |
|
Cookie欺骗 |
√ |
|
Cookie伪造 |
√ |
|
HttpOnly属性 |
√ |
|
HTTP头参数分析 |
√ |
|
CSRF漏洞 |
√ |
|
逻辑测试 |
水平越权 |
√ |
垂直越权 |
√ |
|
支付漏洞 |
√ |
|
口令修改 |
√ |
|
业务逻辑 |
√ |
|
参数有效性测试 |
SQL注入-盲注 |
√ |
SQL注入-显错型 |
√ |
|
SQL注入-错误型 |
√ |
|
SQL注入-时间型 |
√ |
|
SQL注入-简单WAF绕过 |
√ |
|
XPath注入 |
√ |
|
XSS-反射型 |
√ |
|
XSS-存储型 |
√ |
|
XSS-DOM型 |
√ |
|
FlashXSS |
√ |
|
XSS-简单WAF绕过 |
√ |
|
X-Forwarded-For伪造 |
√ |
|
框架注入 |
√ |
|
命令执行 |
√ |
|
ThinkPHP远程命令执行 |
√ |
|
Spring远程命令执行 |
√ |
|
Struts2远程命令执行 |
√ |
|
ElasticSearch远程命令执行 |
√ |
|
rConfig远程命令执行 |
√ |
|
代码执行 |
√ |
|
HTTP HOST头攻击 |
√ |
|
文件上传 |
√ |
|
FCKeditor编辑器文件上传 |
√ |
|
Ueditor编辑器文件上传 |
√ |
|
文件上传-参数限制绕过 |
√ |
|
文件上传-文件类型绕过 |
√ |
|
文件上传-简单WAF绕过 |
√ |
|
任意文件读取 |
√ |
|
vCenter任意文件读取 |
√ |
|
IBM Integrated Solutions Console任意文件读取 |
√ |
|
任意文件删除 |
√ |
|
文件包含 |
√ |
|
SSRF |
√ |
|
反序列化 |
√ |
|
Shiro反序列化 |
√ |
|
WebLogic反序列化 |
√ |
|
Websphere反序列化 |
√ |
|
Jenkins反序列化 |
√ |
|
JBoss反序列化 |
√ |
|
Fastjson反序列化 |
√ |
|
XXE |
√ |
|
泛微OA E-cology远程代码执行漏洞 |
√ |
|
泛微OA管理系统RCE漏洞 |
√ |
|
禅道 11.6 sql注入漏洞 |
√ |
|
禅道 11.6 任意文件读取 |
√ |
|
禅道 11.6 远程命令执行漏洞 |
√ |
|
禅道8.2-9.2.1 注入GetShell |
√ |
|
其它测试 |
慢速DOS攻击 |
√ |
短信轰炸 |
√ |
|
邮件轰炸 |
√ |
|
条件竞争 |
√ |
|
历史漏洞(仅例举部分) |
中间件解析漏洞 |
√ |
MS17-010 |
√ |
|
MS15-034 |
√ |
|
CVE-2019-0708 |
√ |
|
CVE-2018-15919 |
√ |
|
CVE-2020-13933 |
√ |
|
CNVD-C-2019-48814 |
√ |
|
CNNVD-201906-596 |
√ |
|
CVE-2020-14882 |
√ |
|
CVE-2018-6389 |
√ |
|
CVE-2020-1938 |
√ |
|
CVE-2019-11043 |
√ |
|
CVE-2017-17562 |
√ |
|
CVE-2017-12629 |
√ |
|
CVE-2019-0192 |
√ |
|
CVE-2019-0193 |
√ |
|
CVE-2019-12409 |
√ |
|
CVE-2019-17558 |
√ |
信息系统安全渗透测试是从第三方角度对系统安全性进行检查,可帮助用户发现其信息业务系统的安全薄弱环节,以协助用户有效地了解当前降低风险的初始任务;
信息系统渗透测试报告有助于用户方管理者以案例形式说明当前业务系统的安全现状,凸显出系统风险中最严重安全问题,从而增强用户信息安全的认知程度;