常见的安全测试类型
登录失败提示信息
需要模糊提示,如“用户名或密码错误”,不能精确提示
登录失败次数限制或验证码刷新
登录失败后需要自动刷新验证码;达到一定失败次数后需要限制登录
登入登出前后,session值需要发生变化
Chrome如何查看sessionID:高级设置–内容设置–Cookie
目录遍历
- 只输入系统IP,在后面添加…/…/,查看是否能回到上级目录
- 网址后面加上./WEB-INF/web.xml,检查是否能访问
不安全的HTTP方法
登录时拦截请求,修改POST请求为OPTIONS请求,释放请求,查看返回的headers信息中是否包含不安全的HTTP方法(如DELETE、PUT、TRACE、MOVE、COPY)
存储型XSS漏洞
在输入框中输入 '/><script>alert(aaa)</script> 并提交,查看页面是否存在弹出框
垂直越权
低权限用户直接访问高权限用户才有的链接或请求,如能正常访问且可提交请求,则存在该漏洞
水平越权
水平越权是指能通过拦截并修改请求去获取或操作其它用户的信息。
页面级隐藏功能
对于页面按钮或信息等去掉 disabled 属性,如能正常提交信息,则存在漏洞
安全测试工具
burpsuite
代理配置
1)打开浏览器,手动配置代理并启用,与 burpsuite 中的 IP 一致,这里以搜狗浏览器为例
2)配置完成后,进入Proxy模块,开启拦截
"Intercept is on"表示开启拦截,"Intercept is off"表示关闭
3)打开页面,查看是否拦截请求。在搜狗浏览器中输入网址,点击跳转,可以看到请求被拦截
数据抓取
拦截请求后,我们需要的主要是请求地址和Cookie中的参数。因为请求已经被拦截,所以网页不会打开,如果需要继续请求,点击“Forward”进行释放,如果要丢弃这个请求,则点击“Drop”。
Action
Action可以把请求发送到各个模块进行交互
- Send to Intruder
用于**,将请求发送到Intruder中
在Positions中设置要替换的参数(加上$符号),Payloads中粘贴用于替换的数据,Options中可设置线程数
- Send to Repeater
用于实时查看请求响应结果,可实时修改请求并查看返回,不会在页面上真实请求
实例
例1
用户 a,b 分别为某公司A,B两个部门的秘书,均只可查看自己部门下的员工信息,a在查询员工信息时,通过 burpsuite 拦截请求,发现该请求为 get 请求,且该请求中带有员工 id,于是 a 将请求中的 id 改为 B 部门某员工的id,释放请求,发现可以查看该员工信息,此时即发生了水平越权
例2
用户 a,b 分别为某公司A,B两个部门的秘书,a 具有修改部门信息的权限而 b 不具有,分别用不同的浏览器登录a,b账号,a 账号进入修改部门信息页面,发现该url地址为 http://…/company/department/modify.html ,b 账号登录后的url地址为 http://…/company.html,将a账号的url复制,粘贴到 b 的地址中,发现 b 可以正常跳转到修改部门信息的页面,此时发生水平越权。