安全测试回顾(一)
零散的总觉一些回顾点吧
一、HTTP协议
超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议,应用与传输HTML网页和超文本数据,例如:图片、音频文件(MP3等)、视频文件(rm、avi等)、压缩包(zip、rar等)等。HTTP协议自身是无状态的。
http1.1 有最大的加载数
http2.0 多用复用
二、HTTP协议请求方法(重点方法)
GET - 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
比如说 我请你吃饭 只包含事件
POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
比如说 我请你吃饭,时间:今天晚上 地点:盘古 房间号:801 包含事件和参数
PUT - 向指定资源位置上传其最新内容。
post 都可以用put ,put 有幂等机制, 对于两条完全相同的请求,会触发幂等模式,不会去处理第二条请求
Delete 直接从服务器上删除一些资源
TRACE- 回显服务器收到的请求,主要用于测试或诊断
线上是不能出现 Delete 和trace 请求 ,不安全
三、HTTP状态码(常见的)
状态码 状态码英文名称 中文描述
200 OK 请求成功。一般用于GET与POST请求
202 Accepted 已接受。已经接受请求,但未处理完成 ////A对B 说 我今天请你吃饭,吃拉面 B:请吃饭没问题,回来再定 (接收,但没处理),队列机制,异步处理;电商,银行:如果实 /////时接口繁忙,会给你返回一个待对账状态
206 Partial Content 部分内容。服务器成功处理了部分GET请求 //////C对B说 我今天请你吃饭,那是不可能的 B:只听到了我请你吃饭,后面没听到(只接受部分请求,其他请求其他线程处理) //////迅雷下载
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
500 Internal Server Error 服务器内部错误,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 /////远端服务器没有问题,是你本地的服务器有问题
2 代表服务器接收
3 代表服务器返回并跳转
4 报错,服务器进行处理并报错
5 报错,服务器还没进行处理就报错
四、ip--端口:
我们可以把IP地址比作一栋房子,端口就是这栋房子里面的各个房间。端口是通过端口号来标记的,端口号只有整数,范围从0到65535
五、Web应用的三层架构
客户端 中间层 数据库
中间层:web服务器 前端;应用服务器 后端
六、WEB安全测试
1.
先验测试:根据常见的攻击类型,进行一些前置测试
后验测试:假设网站还有安全漏洞,我们改怎么办,比如说:session失效,“一号多登”策略,登录提醒
2.
双因子认证:1你知道什么(账号,密码) 2你有什么(手机验证码)
3.
验证性的 登录,注册,忘记密码等
授权 会话令牌
客户侧攻击 更改客户端数据
命令执行 xss,sql注入
信息暴露 隐私信息,详细系统信息(详细报错等)
逻辑攻击 流程上的验证
七、安全测试流程
1、解析、分析web应用
2、测试验证机制
3、测试会话管理
4、测试访问控制
5、测试基于输入的各种漏洞(sql注入,xss)
6、测试逻辑缺陷
7、总结分析
八、核心防御机制
Web应用程序的基本安全原则问题:所有用户输入均不可信
包括:url 参数 变量 cookie
用户权限:1验证机制 2会话管理 3权限控制
输入:1.入口,抵御不良参数的输入
2.出口,把不良输入的影响降低
后验措施:保证受到攻击的时候,程序还能正常运转
九、解析、分析web应用
本质上是用来分析制定测试计划的:
解析应用程序目的
制作一个策略表(作为安全测试的指导)
模块—页面—安全测试策略
(一)、 大体分模块
1. 先看详细设计文档 (划分模块)
2. 需求文档 (划分细节模块)--分析哪些功能重要,哪些功能次要
3. 测试用例查看
注: 最好列出基本页面
(二)、 查缺补漏阶段
1. spider 前面的模块是否完整,补充页面的链接(针对同一功能的不同页面)
1) 自动化获取大量页面
2) 通过手动方式补充页面
2. 发现隐藏内容(补充页面) 或可以直接去代码中捞
1) 暴力获取链接
2) 通过已发布来推测
3) 使用搜索引擎(site:)
1. 自动web抓取
使用Spider爬虫:分析html表单,并使用各种预设值或随机值将这些表单返回给应用程序,以扩大搜索范围,更有些工具会在抓取过程中遇到必填表单(如登录请求)要求使用者填写相关数据
工具:Burp Suite等
完全自动化抓取的限制
1) 工具无法正确处理使用复杂js代码建立的动态菜单、页面等
2) 无法解析在编译客户端对象(FLASH等)中的链接
3) 遇到复杂的输入输出检查无法使用工具自动提交的值跳过。
4) 自动化爬虫以URL作为标识符,但是我们网站中会有同一个链接返回不同的内容和功能。
5)复杂的身份验证机制、验证码等自动爬虫无法成功通过。
2. 用户指定的抓取
该技巧复杂且可控,半自动化抓取。用户通过浏览器以常规方式浏览应用程序,试图枚举应用程序的所有功能,生成的流量流入拦截服务器,并由爬虫监控。
工具:Burp Suite
3. 发现隐藏内容
应用程序常常包含一些没有直接链接以及无法通过可见的内容访问到的功能。常见隐藏内容包括:
1)测试、调试或开发过的但未在主程序中建立链接的功能
2)从服务中删除或被替换的旧版本文件
3)包含有效用户名、会话令牌等的日志文件
4)应用程序可能为不同类型不同权限级别的用户提供了不同的功能
发现隐藏内容之技巧篇
A. 蛮力技巧
在已确定内容基础上,使用工具自动向web服务器提出大量请求,尝试猜测隐藏功能。
B. 通过已发布内容推测
例如我们已知某网站忘记密码的url为:http://www.besttest.cn/auth/ForgetPassword.html
那么我们就可以推测是否具有AddPassword、GetPassword、ResetPassword、UpdatePassword等等
C. 利用搜索引擎
搜索引擎中具有强大的爬虫,能发现几乎所有内容的详细目录,并将这些内容保存在缓存中。
分析:
根据页面功能分析出可能出现哪种漏洞
客户端确认——服务器是否采取验证(绕过)
数据库交互——sql注入
文件上传与下载——存储式跨站脚本、验证(绕过)
显示用户提交的数据——跨站脚本
登录——用户名枚举、弱密码、蛮力攻击、SQL注入、绕过客户端,xss,验证机制,会话管理
多阶段登录——登录逻辑缺陷
会话状态——可推测的令牌、令牌处理
访问控制——用户伪装、权限提升
错误消息——信息泄露
邮件交互——绕过客户端、社会学攻击
十、安全漏洞原理
绕过控件、验证 --- 有验证,要修改
攻击验证机制 ---身份校验相关
攻击会话管理 ---身份认证 授权
Sql注入 --- 拼sql 跟数据库关联 增删查改 sql注入的漏洞
攻击访问控制 ---权限 做改动;页面显示
XSS攻击 ---有用户输入的地方
CSRF攻击 ---关键请求
社会学攻击
逻辑漏洞