从几个方向进行Web渗透测试

1.SQL Injection(SQL注入)

  (1)如何进行SQL注入测试?

首先找到带有参数传递的URL页面,如 搜索页面,登录页面,提交评论页面等等。

  • 对于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递,在<FORM> 和</FORM>的标签中间的每一个参数传递都有可能被利用。

1

2

3

4

5

6

7

8

9

10

11

12

13

<form id="form_search" action="/search/" method="get">

 

<div>

 

<input type="text" name="q" id="search_q" value="" />

 

<input name="search" type="image" src="/media/images/site/search_btn.gif" />

 

<a href="/search/" class="fl">Gamefinder</a>

 

</div>

 

</form>

  

  • 当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=10

其次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入HTTP://DOMAIN /INDEX.ASP?USERNAME='HI' OR 1=1

根据实际情况,SQL注入请求可以使用以下语句:


1

2

3

4

5

6

' or 1=1- -

" or 1=1- -

or 1=1- -

' or 'a'='a

" or "a"="a

'or ('a'='a

  

为什么是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)来进行测试:

<scrīpt>alert(document.cookie)</scrī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,

4.Email Header Injection(邮件标头注入)  

Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题),我们要验证subject中应能escape掉“\n”标识。

因为“\n”是新行,如果在subject中输入“hello\ncc:spamvictim@example.com”,可能会形成以下


1

2

Subject: hello

cc: spamvictim@example.com

如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用 户发送垃圾邮件。

 

5.Directory Traversal(目录遍历)

(1)如何进行目录遍历测试?

目录遍历产生的原因是:程序中没有过滤用户输入的“../”和“./”之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

测试方法:在URL中输入一定数量的“../”和“./”,验证系统是否ESCAPE掉了这些目录跳转符。

(2)如何预防目录遍历?

限制Web应用在服务器上的运行

进 行严格的输入验证,控制用户输入非法路径

6.exposed error messages(错误信息)

(1)如何进行测试?

首 先找到一些错误页面,比如404,或500页面。

验证在调试未开通过的情况下,是否给出了友好的错误提示信息比如“你访问的页面不存 在”等,而并非曝露一些程序代码。

(2)如何预防?

测试人员在进行需求检查时,应该对出错信息 进行详细查,比如是否给出了出错信息,是否给出了正确的出错信息。

 

时间: 2024-09-16 08:54:24

从几个方向进行Web渗透测试的相关文章

kali linux web渗透测试学习笔记

    kali linux web渗透测试学习笔记 metasploit使用方法: 启动: 第一步:启用Postgresql服务.service postgresql start 第二步:启用metasploit服务.service matasploit start 第三步:启动框架.msfconsole 一个ASP站点的sql注入 测试数字型注入点 1.网址:asp?ID+13,后面加',看看是什么数据库,然后输入1=1,1=2,得到数据库是microsoft acess 2.转用sqlma

黑客组织匿名者Anonymous发布操作系统,提供各种Web渗透测试工具

3月15日消息,Windows 8消费者预览版发布后不久,全球知名黑客组织匿名者(Anonymous)就发布了命名为Anonymous-OS的操作系统,并在其官网上给出了公开下载地址. Anonymous发布名为Anonymous-OS的操作系统 据悉,Anonymous-OS操作系统基于Ubuntu11.10,提供了各种Web渗透测试工具,包括: 1.ParolaPass Password Generator(ParolaPass密码发生器) 2.Find Host IP(查找主机IP) 3.

做一名安静的Web渗透测试人员必备的8种素质和技能

无疑,Web安全测试工程师或Web渗透测试工程师的任务就是审计公司的Web应用程序.Web服务.Web服务器的安全性.那么,公司如何才能请到优秀的Web应用安全专家而不是纸上谈兵的"赵括"?下面的这八项素质或技能可以为公司选聘Web渗透测试人员提供参考: 1. Web渗透测试人员拥有一定的开发背景(知道如何编码) 公司不可能聘用一位连编写代码都不懂人成为渗透测试人员.公司的Web渗透测试者应首先是开发者,在此基础上才考虑对Web漏洞扫描器的掌握技能,其好处有五个方面: · 了解所开发W

做一名安静的Web渗透测试人员 要必备的8种素质和技能

无疑,Web安全测试工程师或Web渗透测试工程师的任务就是审计公司的Web应用程序.Web服务.Web服务器的安全性.那么,公司如何才能请到优秀的Web应用安全专家而不是纸上谈兵的"赵括"?下面的这八项素质或技能可以为公司选聘Web渗透测试人员提供参考: 1. Web渗透测试人员拥有一定的开发背景(知道如何编码) 公司不可能聘用一位连编写代码都不懂人成为渗透测试人员.公司的Web渗透测试者应首先是开发者,在此基础上才考虑对Web漏洞扫描器的掌握技能,其好处有五个方面: · 了解所开发W

如何进行Web渗透测试

Web渗透测试可以从以下几个方面考虑: 1.SQL Injection(SQL注入) (1)如何进行SQL注入测试? 首先找到带有参数传递的URL页面,如 搜索页面,登录页面,提交评论页面等等. 注1:对 于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在 和的标签中间的每一个参数传递都有可能被利用. Gamefinder 注 2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN

12款白帽子用于黑客渗透测试的操作系统

本文讲的是 : 12款白帽子用于黑客渗透测试的操作系统   , [IT168 技术]想知道什么样的操作系统的是白帽子黑客的最爱吗?本文我们将推荐12个操作系统,包括一些Linux发行版,如Kali Linux,Parrot安全操作系统,BlackArch等.这些以安全为重点的操作系统,可以帮助白帽子黑客进行渗透测试,检测系统或网络中的弱点. Kali Linux: 无需赘言,kali Linux发行版是目前最流行的安全操作系统;基于Debian的操作系统附带了600多个预安装的测试工具.这些多功

《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.5节构建渗透测试环境

1.5 构建渗透测试环境 在本书第1版中,收到很多关于为什么要让读者搭建和安装工具而不是创建脚本自动化完成这些工作的评论.主要原因是想让读者亲自经历这些步骤,这些工具都非常重要,搭建和安装的过程将有助于您知道武器库里都有什么工具.以Kali Linux为例,它包括大量工具,而且进行了很好的组织和归类,但是如果不知道这个工具已经安装了或者没使用它进行过单独的攻击,那么在紧急的情况下很难正确使用这个工具. 1.5.1 安装一个渗透测试环境 如果您根据本书第1版建立了测试环境,就可以跳过本节.众所周知

一个利用无人机进行渗透测试的“犯罪”故事

即便一台物理隔离的PC被恶意软件感染,如何与这台PC通信还是一个几乎无法解决的问题. 网络犯罪分子通过精心构造的鱼叉式钓鱼攻击,设法感染了 Contoso Ltd 公司设计部门的一台主机,现在需要与这台主机秘密的取得联系.问题是,Contoso的网络防御系统非常坚固,与恶意软件的通信会被检测出来. 为了躲避检测,因此犯罪分子需要一个不在该公司安全系统(超级钢铁卫士墙盾 2300,配合"军事级"双重数据防泄漏保护技术)监控范围内的通道. 他们考虑了几种可能的秘密通信方式,如无法听到的音频

渗透测试人员必备技能:实施渗透测试的HTTP方法

如果你没有积极地参与Web应用程序开发,几乎就不可能了解HTTP协议的内部工作机理,也几乎没有机会知道Web应用程序与数据库进行交互的不同方法,也无法真正知道,当用户点击了一个链接或在浏览器的URL中键入字符时会发生什么. 如果你以前并没有编程技能,也没有积极地参与Web应用程序的开发,就不可能有效地执行渗透测试.作为渗透测试人员,你需要Web应用程序和HTTP协议的基础知识. 作为渗透测试人员,理解信息流是如何从客户端达到服务器,再返回服务器是非常重要的.举个例子,一位给你修电视的技术人员在接