WEB安全测试90196
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Web安全测试——手工安全测试方法及修改建议发表于:2017-7-17 11:47 作者:liqingxin 来源:51Testing软件测试网采编
字体: | | | | | 推荐标签:
常见问题
1.XSS(CrossSite Script)跨站脚本攻击
(CrossSite Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html 代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而达到恶意用户的特殊目的。
方法:
在数据输入界面,添加输入:,添加成功如果弹出对话框,表明此处存在一个XSS 。
或把url请求中参数改为,如果页面弹出对话框,表明此处存在一个XSS 漏洞
修改建议:
过滤掉用户输入中的危险字符。对输入数据进行客户端和程序级的校验(如通过正则表达式等)。
Eg:对用户输入的地方和变量有没有做长度和对”<”,”>”,”;”,”’”等字符是否做过滤
2.CSRF与跨站脚本(XSS)
CSRF与跨站脚本(XSS),是指请求迫使某个登录的向易受攻击的Web应用发送一个请求,然后以受害者的名义,为入侵者的利益进行所选择的行动。
测试方法:
同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功
使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应
该重新定位到错误界面或者登陆界面。
修改建议:
在不同的会话中两次发送同一请求并且收到相同的响应。这显示没有任何参数是动态的
(会话标识仅在cookie 中发送),因此应用程序易受到此问题攻击。因此解决的方法为
1.Cookie Hashing(所有表单都包含同一个伪随机值):
2. 验证码
3.One‐Time Tokens(不同的表单包含一个不同的伪随机值)客户端保护措施:应用防止
CSRF攻击的工具或插件。
3.注入测试
注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符
串,最终达到欺骗服务器执行恶意的SQL命令。
测试方法:
在需要进行查询的页面,输入正确查询条件and 1=1等简单sql语句,查看应答结果,
如与输入正确查询条件返回结果一致,表明应用程序对用户输入未进行过滤,可以初步判断
此处存在SQL注入漏洞
修改建议:
对用户的输入进行校验,可以通过正则表达式,或限制长度;对以下关键字进行转换等;
e|declare|sitename|netuser|xp_cmdshell|or|+|,|like'|and|exec|execute|insert|create|drop|table|from|grant|group_concat|column_name|information_schema.columns|table_不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存
取;
不要使用管理员权限的连接,为每个应用使用单独的权限有限的数据库连接;
应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。
4.登录认证测试
4.1暴力破解
暴力破解是目前最直接有效的攻击方式,特别对于金融业务来说,很多情况下口令都为6位纯数字,很容易被攻击。本测试项在于检查认证系统对暴力破解的防护性。
测试方法:
启动抓包工具,同时打开浏览器输入用户登录页面,输入用户名、密码以及验证码,进行登录,如果在抓包中存在明文的用户名和密码,说明存在弱点。
修改建议:
将请求方式从HTTP方式修改为HTTPS方式或者对输入的用户名和密码进行加密,在服务端对密码进行验证
4.2代码注释
开发版本的Web程序所带有的注释在发布版本中没有被去掉,而导致一些敏感信息的泄漏。我们要查看客户端能看到的页面源代码并发现此类安全隐患。
测试方法:
打开登陆页面(或者待测试页面),点击浏览器邮件,查看源代码,检查源代码注释部分是否有敏感信息泄露,敏感信息包括以下内容:字段文字描述、内网IP 地址、SQL 语句以及物理路径等等。
修改建议:
请勿在HTML 注释中遗留任何重要信息(如文件名或文件路径)。
从生产站点注释中除去以前(或未来)站点链接的跟踪信息。
避免在HTML 注释中放置敏感信息。
确保HTML 注释不包括源代码片段。
4.3 用户名破解
为了进行暴力破解,攻击者需要知道已存在的用户名,再对该用户名进行攻击。
测试方法:
在登录界面输入不存在的用户名和任意的口令,如果提示用户名不存在,则说明存在漏洞;使用正确的用户名和错误的口令进行登录,如果提示口令或密码错误,则说明存在漏洞。
修改建议:
服务器对所有的登陆错误原因进行统一的应答,不会提示准确的错误提示信息。
4.4
在缺少锁定策略和验证码设计有问题的情况下,攻击者可以通过枚举的方式来进行暴力猜解。
测试方法:
在登录页面,输入正确的用户名、错误的口令以及正确的验证码,提交表单,重复10 次,如果系统没有返回类似账号锁定的信息,则说明存在漏洞。
修改建议:
在用户进行错误登录次数达到系统配置后,需要对该账号或者该IP进行临时锁定,到达解锁条件后再进行解锁。
4.5
查看是否有验证码机制,以及验证码机制是否完善,避免使用自动化工具重复登录和进行业务操作。
测试方法: