java网站渗透测试_如何进行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)
最后,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的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中输入“hello\ncc: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)如何预防?
测试人员在进行需求检查时,应该对出错信息 进行详细查,比如是否给出了出错信息,是否给出了正确的出错信息。
English »AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBengaliBelarusianBulgarianCatalanChinese (Simp)Chinese (Trad)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKannadaKoreanLaoLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishTamilTeluguThaiTurkishUkrainianUrduVietnameseWelshYiddish
Text-to-speech function is limited to 100 characters
posted on 2014-10-30 10:41 顺其自然EVO 阅读(181) 评论(0) 编辑 收藏 所属分类: 测试学习专栏
java网站渗透测试_如何进行Web渗透测试相关推荐
- spock测试_将Spock 1.3测试迁移到Spock 2.0
spock测试 了解Spock 2.0 M1(基于JUnit 5)的期望,如何在Gradle和Maven中迁移到它以及为什么报告发现的问题很重要:). 重要说明 . 我绝对不建议您永久将您的现实项目迁 ...
- 什么是端到端训练测试_为什么端到端测试对您的团队很重要
什么是端到端训练测试 by Phong Huynh 由Phong Huynh 为什么端到端测试对您的团队很重要 (Why End-to-End Testing is Important for You ...
- 左右声道测试_小说:少年参加测试,直接挑战十只狗恐兽,众人见了惊呼:SS级...
穿过那个奇怪的走廊,韩意将那个队长给他的卡交给了走廊尽头转角边上的与刚才那几个人穿着一样,十六七岁左右,一脸浓妆,身材那是该挺的挺,该翘的翘,在加上那一抹媚笑,让整个看起来有些不伦不类的女子. 原本对 ...
- ddr老化测试_塑胶类材料老化测试(Aging Test )常用的测试标准
材料或者产品的老化目前已经越来越被关注,在日常生活中我们也会经常会碰到,一些涂料在户外使用过程中出现变色.起泡.粉化之类的现象:一些家电外壳如空调的白色外壳,使用一段时间会变黄,同时性能也变差,很容易 ...
- 网站本地调试工具_一款Web调试代理工具:Fiddler
前言 在移动软件开发工作中,我们经常需要对APP软件进行调试及问题定位. 在我们检查定位问题的时候,很多情况下需要查看接口的请求情况,当我们没有在调试模式的情况下,如何才能有效快捷的得到各个接口的请求 ...
- java ajax面试题_几道Web/Ajax的笔试题
一.说说你常用的几个jsp隐式对象,例如PageContext等, 二.简述你对Java Web MVC设计模式的理解. 三.如果接触过webwork2.spring开源框架,简单评诉对它们的理解. ...
- java 网站开发实例_完整的javaweb项目
[实例简介] 主要功能有以下几个: 1.用户注册 2.用户登录 3.用户列表展示 4.用户信息修改 5.用户信息删除 [实例截图] [核心代码] javaweb └── javaweb ├── src ...
- jmeter负载测试测试_使用Apache JMeter负载测试Web应用程序
jmeter负载测试测试 Apache JMeter是用于模拟Web应用程序上的用户负载以测试性能的出色工具. 您可以通过指定用户数量和请求间隔来轻松地构建测试计划,然后JMeter将为每个用户生成一 ...
- java 网站统计工具_基于B/S模式下的JAVA网站流量统计系统
今日思考,完成一个网站流量统计系统项目,需要实现哪些功能? 此类项目常见描述如下: 传统的网站只是在页面上使用计数器进行简单的访问者数量的统计.随着网站运营规模的扩大,依靠这种简单的数量统计并不能真正 ...
- java 网速测试_简易的网速测试 - 梦想游戏 - OSCHINA - 中文开源技术交流社区
基本原理是访问稳定的网页来测试速度,或者利用稳定的下载地址来测速,比如QQ.EXE 网页粒度小 测试没有 下载地址 稳定准确 界面MFC完成,网络API使用CURL HttpClient.cpp #i ...
最新文章
- Nat. Biotechnol. | 人工智能药物研发在中国蓬勃发展
- 十、探索性数据分析的图形化探索
- java中的数组、队列、堆栈
- Stack(nowcoder 11253-K)
- vscode自动加前缀_详解VScode自动补全CSS3前缀插件以及配置无效的解决办法
- axios发post请求,后端接收不到参数的问题
- 防火墙状态检测及会话表技术
- Linux 中 用cat 输出文件内容
- 事务方法调用事务方法_实现系统调用的几种方法
- wps excel连接MySQL数据库可刷新实时读取数据
- PowerApps中应用如何显示用户详细信息
- 如何写一个NES模拟器(三)——精灵的显示
- matlab怎么画loess拟合,matlab smooth loess
- pytorch中批量归一化BatchNorm1d和BatchNorm2d函数
- 电信4g网络问题及恢复方案
- 本博客早已废除。请移步新地址
- windows系统开启虚拟化
- C++的STL中accumulate函数用法
- 【验证工具类-ValidateUtil-java】
- 腾讯Flink实践:实时计算平台Oceanus建设历程