如何进行Web渗透测试

简介:

Web渗透测试可以从以下几个方面考虑:
  1.SQL Injection(SQL注入)
  (1)如何进行SQL注入测试?
  首先找到带有参数传递的URL页面,如 搜索页面,登录页面,提交评论页面等等.
  注1:对 于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在

和的标签中间的每一个参数传递都有可能被利用.
  
  

  
  
   Gamefinder
  

  
  注 2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如 HTTP://DOMAIN/INDEX.ASP?ID=10
  其 次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入 HTTP://DOMAIN /INDEX.ASP?USERNAME='HI' OR 1=1
  注1:根据实际情况,SQL注入请求可以使用以下语句:
  ' or 1=1- -
  " or 1=1- -
  or 1=1- -
  ' or 'a'='a
  " or "a"="a
  ') or ('a'='a
  注2:为什么是OR, 以及',――是特殊的字符呢?
  例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password'
  如 输入 http://duck/index.asp?username=admin' or 1='1&pwd=11,SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11'
  ' 与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行.
  接 下来是OR查询条件,OR是一个逻辑运 算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是 说我们绕过了密码验证,我们只用用户名就可以登录.
  如 输入 http://duck/index.asp?username=admin'--&pwd=11,SQL语 句会变成以下sql=select * from user where name='admin' --' and pasword='11',
  '与admin前面的'组成了一个查 询条件,即username='admin',接下来的语句将按下一个查询条件来执行
  接下来是"--"查询条件,“--”是忽略或注释,上 述通过连接符注释掉后面的密码验证(注:对ACCESS数据库无 效).
  最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器 的相关信息;如果 能说明存在SQL安 全漏洞.
  试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增删改的操 作,这样造成的后果是非常严重的.
  (2)如何预防SQL注入?
  从应用程序的角度来讲,我们要做以下三项工作:
  转义敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”><=!-*/()|”,和”空格”).
 屏蔽出错信息:阻止攻击者知道攻击的结果
  在服务端正式处理之前提交数据的合法性(合法性检查主要包括三 项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客 户端的输入合法之前,服务端拒绝进行关键性的处理操作.
  从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:
  需求中应说明表单中某一FIELD的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符)
  需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示.
  当然在执行测试的过程中,我们也需求对上述两项内容进行测试.
  2.Cross-site scritping(XSS):(跨站点脚本攻击)
  (1)如何进行XSS测试?
   首先,找到带有参数传递的URL,如 登录页面,搜索页面,提交评论,发表留言 页面等等。
   其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:
  alert(document.cookie)īpt>
  最后,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的cookie串,这就说明该网站存在XSS漏洞。
  试想如果我们注入的不是以上这个简单的测试代码,而是一段经常精心设计的恶意脚本,当用户浏览此帖时,cookie信息就可能成功的被 攻击者获取。此时浏览者的帐号就很容易被攻击者掌控了。
  (2)如何预防XSS漏洞?
  从应用程序的角度来讲,要进行以下几项预防:
  对Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等 语句或脚本进行转义.
  在 服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端 拒绝进行关键性的处理操作.
  从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查:
  在需求检查过程中对各输入项或输出项进行类型、长度以及取 值范围进行验证,着重验证是否对HTML或脚本代码进行了转义。
  执行测试过程中也应对上述项进行检查。
  3.CSRF:(跨站点伪造请求)
  CSRF尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。
  XSS是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
  XSS也好,CSRF也好,它的目的在于窃取用户的信息,如SESSION 和 COOKIES,
  (1)如何进行CSRF测试?
  目前主要通过安全性测试工具来进行检查。
  (2)如何预防CSRF漏洞?
  这个我们在这就不细谈了
  4.Email Header Injection(邮件标头注入)
  Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题),我们要验证subject中应能escape掉“n”标识。
   因为“n”是新行,如果在subject中输入“helloncc:spamvictim@example.com”,可能会形成以下
  Subject: hello
  cc: spamvictim@example.com
   如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用 户发送垃圾邮件。
  5.Directory Traversal(目录遍历)
  (1)如何进行目录遍历测试?
  目录遍历产生的原因是:程序中没有过滤用户输入的“../”和“./”之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
  测试方法:在URL中输入一定数量的“../”和“./”,验证系统是否ESCAPE掉了这些目录跳转符。
  (2)如何预防目录遍历?
  限制Web应用在服务器上的运行
  进 行严格的输入验证,控制用户输入非法路径
  6.exposed error messages(错误信息)
  (1)如何进行测试?
  首 先找到一些错误页面,比如404,或500页面。
  验证在调试未开通过的情况下,是否给出了友好的错误提示信息比如“你访问的页面不存 在”等,而并非曝露一些程序代码。
  (2)如何预防?
  测试人员在进行需求检查时,应该对出错信息 进行详细查,比如是否给出了出错信息,是否给出了正确的出错信息。

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
9天前
|
SQL 安全 测试技术
Web应用程序安全测试
Web应用程序安全测试
|
9天前
|
Web App开发 编解码 前端开发
面试题22:如何测试Web浏览器的兼容性?
面试题22:如何测试Web浏览器的兼容性?
|
9天前
|
存储 缓存 监控
Web 应用程序性能测试核心步骤
Web 应用程序性能测试核心步骤
|
7天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
20 2
|
7天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
13 0
|
9天前
|
存储 人工智能 测试技术
python自动化测试实战 —— CSDN的Web页面自动化测试
python自动化测试实战 —— CSDN的Web页面自动化测试
|
9天前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
146 3
|
9天前
|
JSON 监控 安全
LabVIEW测试和调试Web服务
LabVIEW测试和调试Web服务
21 1
|
9天前
|
SQL 安全 数据处理
Web 测试神器:HackBar 保姆级教程
Web 测试神器:HackBar 保姆级教程
|
9天前
|
XML Web App开发 测试技术
python的Web自动化测试
【4月更文挑战第16天】Python在Web自动化测试中广泛应用,借助Selenium(支持多浏览器交互)、BeautifulSoup(解析HTML/XML)、Requests(发送HTTP请求)和Unittest(测试框架)等工具。测试步骤包括环境搭建、编写测试用例、初始化浏览器、访问页面、操作元素、验证结果、关闭浏览器及运行报告。注意浏览器兼容性、动态内容处理和错误处理。这些组合能提升测试效率和质量。
18 6