Web安全测试(文末送电子书)

今天小编找到了一本web安全测试的电子书,还不错。有喜欢看电子书的同学可以下载一下。看文末获取电子书方式.


来看看今天的文章吧

  常见问题: 

  1.XSS(CrossSite Script)跨站脚本攻击


  XSS(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注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符

  串,最终达到欺骗服务器执行恶意的SQL命令。


  测试方法:

  在需要进行查询的页面,输入正确查询条件 and 1=1等简单sql语句,查看应答结果,如与输入正确查询条件返回结果一致,表明应用程序对用户输入未进行过滤,可以初步判断此处存在SQL注入漏洞


  修改建议:

  对用户的输入进行校验,可以通过正则表达式,或限制长度;对以下关键字进行转换等;


  ||alert|and|exec|execute|insert|select|delete|update|count|drop|chr|mid|master|truncate|declare|sitename|netuser|xp_cmdshell|or|+|,|like'|and|exec|execute|insert|create|drop|table|from|grant|group_concat|column_name|information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|chr|mid|master|truncate|declare|or|--|+|,|like|//

  不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;


  不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;


  应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。


  4.登录认证测试


  4.1暴力破解

  暴力破解是目前最直接有效的攻击方式,特别对于金融业务来说,很多情况下口令都为6位纯数字,很容易被攻击。本测试项在于检查认证系统对暴力破解的防护性。


  测试方法:

  启动抓包工具,同时打开浏览器输入用户登录页面,输入用户名、密码以及验证码,进行登录,如果在抓包中存在明文的用户名和密码,说明存在弱点。


  修改建议:

  将请求方式从HTTP方式修改为HTTPS方式或者对输入的用户名和密码进行加密,在服务端对密码进行验证


  4.2代码注释

  开发版本的Web程序所带有的注释在发布版本中没有被去掉,而导致一些敏感信息的泄漏。我们要查看客户端能看到的页面源代码并发现此类安全隐患。


  测试方法:

  打开登陆页面(或者待测试页面),点击浏览器邮件,查看源代码,检查源代码注释部分是否有敏感信息泄露,敏感信息包括以下内容:字段文字描述、内网 IP 地址、SQL 语句以及物理路径等等。


  修改建议:

  请勿在HTML  注释中遗留任何重要信息(如文件名或文件路径)。

  从生产站点注释中除去以前(或未来)站点链接的跟踪信息。

  避免在HTML  注释中放置敏感信息。

  确保HTML  注释不包括源代码片段。


  4.3 用户名破解

  为了进行暴力破解,攻击者需要知道已存在的用户名,再对该用户名进行攻击。


  测试方法:

  在登录界面输入不存在的用户名和任意的口令,如果提示用户名不存在,则说明存在漏洞;使用正确的用户名和错误的口令进行登录,如果提示口令或密码错误,则说明存在漏洞。


  修改建议:

  服务器对所有的登陆错误原因进行统一的应答,不会提示准确的错误提示信息。


  4.4

  在缺少锁定策略和验证码设计有问题的情况下,攻击者可以通过枚举的方式来进行暴力猜解。


  测试方法:

  在登录页面,输入正确的用户名、错误的口令以及正确的验证码,提交表单,重复10

  次,如果系统没有返回类似账号锁定的信息,则说明存在漏洞。


  修改建议:

  在用户进行错误登录次数达到系统配置后,需要对该账号或者该IP进行临时锁定,到达解锁条件后再进行解锁。


  4.5

  查看是否有验证码机制,以及验证码机制是否完善,避免使用自动化工具重复登录和进行业务操作。


  测试方法:

  打开登陆页面查看是否存在验证码,如果不存在说明存在漏洞。


  输入正确的用户名和口令以及错误的验证码,如果只是提示验证码错误,则说明存在漏洞。


  选择验证码,点击右键,验证码是图片形式且在一张图片中,如果不是,则说明存在漏洞。


  观察验证码图片中背景是否存在无规律的点或线条,如果背景为纯色(例如只有白色)说明存在漏洞。


  修改建议:

  将验证码生成放在在一张进行了混淆处理的图片上。


  4.6

  测试方法:

  进入系统的口令修改界面,查看是否必须输入旧口令,如果不需要则存在漏洞。


  修改建议:

  用户修改密码时必须提供旧密码,且新密码不能与旧密码相同,密码要有一定复杂度,参见口令规则建议。


  4.7 默认账户名称设置

  一般系统均设有默认登录用户,以及超级管理员账号,如登录账号过于简单将易被破解,造成超级权限泄露。


  修改建议:

  上线系统清除超级管理员权限用户,或增加超级管理员登录名复杂度,不要设置成易猜测的admin、superadmin等名称。


  4.8 错误的页面信息

  404、500等错误或警告消息,可能会泄露敏感信息。


  修改建议:

  捕获异常跳转至统一错误页面,避免对外泄漏详细错误信息。


  5.会话管理测试未更新


  5.1会话标识测试


  查看登录成功后会话标识是否变更。如果未变更,那么攻击者就可以通过一些手段(如构造URL)为受害着确定一个会话标识,当受害者登录成功后,攻击者也可以利用这个

  会话标识冒充受害者访问系统。


  测试方法:

  启动抓包工具或浏览器自带开发者模式打开登录页面,输入正确的用户名、口令以及验证码,进行登录,登录后,进行任意一项业务操作。如果登录的SessionId和进行业务的SessionId没有变化,则说明存在漏洞。


  修改建议:

  对每次请求都从上次请求获得令牌,服务端对每次交互都进行验证

  查看是否存在浏览器窗口闲置超时后需重新登录的机制


  5.2会话超时测试


  测试方法:

  打开登录界面,输入正确的用户名和口令,进行登录,进行一项业务操作,将浏览器空闲超过30分钟,在进行其他业务操作,如果能够进行其他业务操作,则说明存在漏洞。


  修改建议:

  需要在后台进行配置Session的超时时间。


  5.3会话清除测试


  用户注销后会话信息需要清除,否则会导致用户在点击注销按钮之后还能继续访问注销之前才能访问的页面。


  测试方法:

  进入登录页面,输入正确的用户名和密码,登录成功后,进行一些业务操作,点击注销按钮,在浏览器输入地址,输入上面进行业务操作的地址,如果能够正常返回业务页面,则说明存在漏洞。


  修改建议:


  在用户注销后,必须将用户的Session信息以及缓存信息全部清空。

    6其他


  6.1文件目录测试


  目录列表能够造成信息泄漏,而且对于攻击者而言是非常容易进行的。所以在测试过程中,要注意目录列表漏洞。


  测试方法:


  通过浏览器访问web 服务器上的所有目录,检查是否返回目录结构,如果显示的是目录结构,则可能存在安全问题;


  或使用DirBuster软件进行测试;


  修改建议:


  1.针对每个Directory 域都使用Allow 、Deny 等指令设置,严格设定WEB服务器的目录访问权限;


  2.删除Options 指令下的Indexes 设置项;


  6.2文件上传漏洞


  文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。


  修改建议:


  严格限制和校验上传的文件类型、大小等,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。


  6.3http请求方法测试


  有些Web服务器默认情况下开放了一些不必要的HTTP方法(如DELETE、PUT、TRACE、MOVE、COPY),这样就增加了受攻击面。


  测试方法:


  使用SoapUI等工具,发送除get、post以外的方法请求,如接收应答为200ok,代表启用了不必要的方法。


  修改建议:


  在tomcat  web.xml中增加如下内容:


  

      

        /*

        PUT

        DELETE

        HEAD

        OPTIONS

        TRACE

      

      

      

  

  

    BASIC

  

  6.4 服务器安全策略


  1.服务器用户权限


  运行Web服务器的操作系统账号权限越高,那么Web遭到攻击产生的危害就越大。部署到生产环境运行时是不能用root等最高权限的,一切都给予以最小权限。


  2.关闭无关端口


  网络上被攻陷的大多数主机,是黑客用扫描工具大范围进行扫描而被瞄准上的。所以,为了避免被扫描到,除了必要的端口,例如 Web、FTP、SSH 等,其他的都应关闭。


  如:关闭 icmp 端口,并设置规则,丢弃 icmp 包。这样他人无法 Ping到服务器,服务器安全得到提升。


  修改方法:丢弃 icmp 包可在 iptables 中, 加入一条语句:-A INPUT -p icmp -j DROP


  3.更改默认端口


  如:默认的 SSH 端口是 22。建议改成 10000 以上。这样别人扫描到端口的机率也大大下降。


  举例修改方法:


  # 编辑 /etc/ssh/ssh_configvi /etc/ssh/ssh_config# 在 Host * 下 ,加入新的 Port 值。以 18439 为例(下同):Port 22 Port 18439

  # 编辑 /etc/ssh/sshd_configvi /etc/ssh/sshd_config#加入新的 Port 值Port 22Port 18439# 保存后,重启 SSH 服务:service sshd restart

  测试新端口连接正常后,删除 Port 22 的配置。同时从 iptables 中, 删除22端口,添加新配置的 18439,并重启 iptables。


  4.限制IP登录


  如能以固定 IP 方式连接服务器,那么,可以设置只允许某个特定的 IP 登录服务器。 设置如下:

  # 编辑 /etc/hosts.allowvi /etc/hosts.allow# 例如只允许 123.45.67.89 登录sshd:123.45.67.89


  5.使用证书登录 SSH


  相对于使用密码登录来说,使用证书更为安全,具体方法可参见网络资料。


  6.5 口令规则建议


  规则1:口令长度的取值范围为:0‐  个字符;口令的最短长度和最长长度可配置;口令的最短长度建议默认为6个字符。


  规则2:口令中至少需要包括一个大写字母(A‐Z)、一个小写字母(a‐z)、一个数字字符(0‐9);口令是否包含特殊字符要求可以配置。


  规则3:口令中允许同一字符连续出现的最大次数可配置,取值范围:0‐9,当取值为  0  时,表示无限制,建议默认为  3。


  规则4:口令须设置有效期,最短有效期的取值范围:0‐9999  分钟,当取值为0时,表示不做限制,建议默认:5  分钟;最长有效期的取值范围:0‐999 天,当取值为  0  时,表示口令永久有效,建议默认:90  天。


  规则5:在口令到期前,当用户登录时系统须进行提示,提前提示的天数可配置,取值范围:1‐99 天,建议默认:7  天。


  规则6:口令到达最长有效期后,用户再次登录成功但在进入系统前,系统强制更改口令,直至更改成功。


  规则7:口令历史记录数可配置,取值范围为:0‐;建议默认:3个。 — 


  规则8:管理员/操作员/最终用户修改自己的口令时,必须提供旧口令。


  规则9:初始口令为系统提供的默认口令、或者是由管理员设定时,则在用户/操作员使用初始口令成功登录后,要强制用户/操作员更改初始口令,直至更改成功。


  规则10:口令不能以明文的形式在界面上显示。


  规则11:口令不能以明文的形式保存,须加密保存;口令与用户名关联加密,即加密前的数据不仅包括口令,还包括用户名。


  规则12:只有当用户通过认证之后才可以修改口令。


  规则13:修改口令的帐号只能从服务器端的会话信息中获取,而不能由客户端指定。


  6.6  页面输入项校验建议


  对输入参数进行处理,建议过滤出所有以下字符:

  [1] |(竖线符号)

  [2] & (& 符号)

  [3];(分号)

  [4] $(美元符号)

  [5] %(百分比符号)

  [6] @(at 符号)

  [7] '(单引号)

  [8] "(引号)

  [9] \'(反斜杠转义单引号)

  [10] \"(反斜杠转义引号)

  [11] <>(尖括号)

  [12] ()(括号)

  [13] +(加号)

  [14] CR(回车符,ASCII 0x0d)

  [15] LF(换行,ASCII 0x0a)

  [16] ,(逗号)

  [17] \(反斜杠)

图文来自网络如有侵权,联系删除


  • 电子书截图

  • 电子书获取方式:

  • web安全测试电子书链接: https://pan.baidu.com/s/151y9QLNPnb1cpiTK4Jd8BQ 密码: ykv9


[WEB安全测试].(美)霍普.扫描版.pdf (美)霍普 等 著 傅鑫 等 译 出 版 社:清华大学出版社 ISBN:9787302219682 出版时间:2010-03-01 版  次:1 页  数:281 装  帧:平装 开  本:16开 所属分类:图书 > 计算机与互联网 > 计算机安全 内容简介   在你对Web应用所执行的测试中,安全测试可能是最重要的,但它却常常是最容易被忽略的。本书中的秘诀演示了开发和测试人员在进行单元测试、回归测试或探索性测试的同时,如何去检查最常见的Web安全问题。与即兴的安全评估不同的是,这些秘诀是可重复的、简洁的、系统的——可以完美地集成到你的常规测试套装中。   本书中的秘诀所覆盖的基础知识包括了从观察客户端和服务器之间的消息到使用脚本完成登录并执行Web应用功能的多阶段测试。在本书的最后,你将能够建立精确定位到Ajax函数的测试,以及适用于常见怀疑对象(跨站式脚本和注入攻击)的大型多级测试。   本书将帮助你:   ·获取、安装和配置有用的——且免费的——安全测试工具   ·理解你的应用如何与用户通信,这样你就可以在测试中更好地模拟攻击   ·从许多不同的模拟常见攻击(比如SQL注入、跨站式脚本和操纵隐藏表单域)的方法中进行选择   ·作为自动化测试的出发点,通过使用秘诀中的脚本和例子,使你的测试可重复   不用再担心午夜来电话告诉你站点被破坏了。通过本书和示例中所用的免费工具,你可以将安全因素加入到你的测试套装中,从而得以睡个安稳觉。 作者简介   Paco Hope,是Cigital公司的一名技术经理,《Mastering FreeBsD and 0penBsDsecurity》 (由O’Reilly出版)的合著者之一。他也发表过有关误用、滥用案例和PKI的文章。他曾被邀请到会议就软件安全需求、Web应用安全和嵌入式系统安全等话题发表演讲。在Cigital,他曾担任MasterCard Internationa!在安全策略方面的主题专家,而且曾协助一家世界500强的服务业公司编写软件安全策略。他也为软件开发和测试人员提供软件安全基础方面的培训。他还曾为博彩业和移动通信行业中的几家公司提出过软件安全方面的建议。Paco曾在威廉玛丽学院主修计算机科学和英语,并从弗吉尼亚大学获得计算机科学方面的理学硕士学位。   Ben Waltller,是Cigital公司的一名顾问,Edit C00kies工具的开发者之一。他同时参与标准质量保证和软件安全方面的工作。他日复一日地设计和执行测试一一因此他理解忙碌的QA领域对简单秘诀的需求。他也曾对开放式Web应用程序安全项目(0WAsP)的成员就w曲应用测试工具发表过演讲。 目录 序 1 前言 3 第1章 绪论 13 1.1 什么是安全测试 13 1.2 什么是Web应用 17 1.3 Web应用基础 21 1.4 Web应用安全测试 25 1.5 方法才是重点 26 第2章 安装免费工具 29 2.1 安装Firefox 29 2.2 安装Firefox扩展 30 2.3 安装Firebug 31 2.4 安装OWASP的WebScarab 32 2.5 在Windows上安装Perl及其软件包 33 2.6 在Linux, Unix或OS X上安装Perl和使用CPAN 34 2.7 安装CAL9000 35 2.8 安装ViewState Decoder 36 2.9 安装cURL 36 2.10 安装Pornzilla 37 2.11 安装Cygwin 38 2.12 安装Nikto 2 39 2.13 安装Burp Suite 40 2.14 安装Apache HTTP Server 41 第3章 基本观察 43 3.1 查看网页的HTML源代码 44 3.2 查看源代码,高级功能 45 3.3 使用Firebug观察实时的请求头 48 3.4 使用WebScarab观察实时的POST数据 52 3.5 查看隐藏表单域 55 3.6 使用TamperData观察实时的响应头 56 3.7 高亮显示JavaScript和注释 59 3.8 检测JavaScript事件 60 3.9 修改特定的元素属性 61 3.10 动态跟踪元素属性 63 3.11 结论 65 第4章 面向Web的数据编码 66 4.1 辨别二进制数据表示 67 4.2 使用Base-64 69 4.3 在网页中转换Base-36数字 71 4.4 在Perl中使用Base-36 71 4.5 使用以URL方式编码的数据 72 4.6 使用HTML实体数据 74 4.7 计算散列值 76 4.8 辨别时间格式 78 4.9 以编程方式对时间值进行编码 80 4.10 解码ASP.NET的视图状态 81 4.11 解码多重编码 83 第5章 篡改输入 85 5.1 截获和修改POST请求 86 5.2 绕过输入限制 89 5.3 篡改URL 90 5.4 自动篡改URL 93 5.5 测试对URL长度的处理 94 5.6 编辑Cookie 96 5.7 伪造浏览器头信息 99 5.8 上传带有恶意文件名的文件 101 5.9 上传大文件 104 5.10 上传恶意XML实体文件 105 5.11 上传恶意XML结构 107 5.12 上传恶意ZIP文件 109 5.13 上传样例病毒文件 110 5.14 绕过用户界面的限制 111 第6章 自动化批量扫描 114 6.1 使用WebScarab爬行网站 115 6.2 将爬行结果转换为清单 117 6.3 减少要测试的URL 120 6.4 使用电子表格程序来精简列表 120 6.5 使用LWP对网站做镜像 121 6.6 使用wget对网站做镜像 123 6.7 使用wget对特定的清单做镜像 124 6.8 使用Nikto扫描网站 125 6.9 理解Nikto的输出结果 127 6.10 使用Nikto扫描HTTPS站点 128 6.11 使用带身份验证的Nikto 129 6.12 在特定起始点启动Nikto 130 6.13 在Nikto中使用特定的会话Cookie 131 6.14 使用WSFuzzer测试Web服务 132 6.15 理解WSFuzzer的输出结果 134 第7章 使用cURL实现特定任务的自动化 137 7.1 使用cURL获取页面 138 7.2 获取URL的许多变体 139 7.3 自动跟踪重定向 140 7.4 使用cURL检查跨站式脚本 141 7.5 使用cURL检查目录遍历 144 7.6 冒充特定类型的网页浏览器或设备 147 7.7 以交互方式冒充另一种设备 149 7.8 使用cURL模仿搜索引擎 151 7.9 通过假造Referer头信息来伪造工作流程 152 7.10 仅获取HTTP头 153 7.11 使用cURL发POST请求 154 7.12 保持会话状态 156 7.13 操纵Cookie 157 7.14 使用cURL上传文件 158 7.15 建立多级测试用例 159 7.16 结论 164 第8章 使用LibWWWPerl实现自动化 166 8.1 编写简单的Perl脚本来获取页面 167 8.2 以编程方式更改参数 169 8.3 使用POST模仿表单输入 170 8.4 捕获和保存Cookie 172 8.5 检查会话过期 173 8.6 测试会话固定 175 8.7 发恶意Cookie值 177 8.8 上传恶意文件内容 179 8.9 上传带有恶意名称的文件 181 8.10 上传病毒到应用 182 8.11 使用Perl解析接收到的值 184 8.12 以编程方式来编辑页面 186 8.13 使用线程化提高性能 189 第9章 查找设计缺陷 191 9.1 绕过必需的导航 192 9.2 尝试特权操作 194 9.3 滥用密码恢复 195 9.4 滥用可预测的标识符 197 9.5 预测凭证 199 9.6 找出应用中的随机数 200 9.7 测试随机数 202 9.8 滥用可重复性 204 9.9 滥用高负载操作 206 9.10 滥用限制性的功能 208 9.11 滥用竞争条件 209 第10章 攻击AJAX 211 10.1 观察实时的AJAX请求 213 10.2 识别应用中的JavaScript 214 10.3 从AJAX活动回溯到源代码 215 10.4 截获和修改AJAX请求 216 10.5 截获和修改服务器响应 218 10.6 使用注入数据破坏AJAX 220 10.7 使用注入XML破坏AJAX 222 10.8 使用注入JSON破坏AJAX 223 10.9 破坏客户端状态 224 10.10 检查跨域访问 226 10.11 通过JSON劫持来读取私有数据 227 第11章 操纵会话 229 11.1 在Cookie中查找会话标识符 230 11.2 在请求中查找会话标识符 232 11.3 查找Authentication头 233 11.4 分析会话ID过期 235 11.5 使用Burp分析会话标识符 239 11.6 使用WebScarab分析会话随机性 240 11.7 更改会话以逃避限制 245 11.8 假扮其他用户 247 11.9 固定会话 248 11.10 测试跨站请求伪造 249 第12章 多层面的测试 251 12.1 使用XSS窃取Cookie 251 12.2 使用XSS创建覆盖 253 12.3 使用XSS产生HTTP请求 255 12.4 以交互方式尝试基于DOM的XSS 256 12.5 绕过字段长度限制(XSS) 258 12.6 以交互方式尝试跨站式跟踪 259 12.7 修改Host头 261 12.8 暴力猜测用户名和密码 263 12.9 以交互方式尝试PHP包含文件注入 265 12.10 制作解压缩炸弹 266 12.11 以交互方式尝试命令注入 268 12.12 系统地尝试命令注入 270 12.13 以交互方式尝试XPath注入 273 12.14 以交互方式尝试服务器端包含(SSI)注入 275 12.15 系统地尝试服务器端包含(SSI)注入 276 12.16 以交互方式尝试LDAP注入 278 12.17 以交互方式尝试日志注入 280
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值