基于appscan测试结果分析:

一、XSS跨站脚本

指的是攻击者往Web页面里插入恶意html代码,通常是JavaScript编写的恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。是最常见的Web应用程序安全漏洞之一

JavaScript可以用来获取用户的cookie、改变网页内容、URL调转,存在XSS漏洞的网站,可以盗取用户cookie、黑掉页面、导航到恶意网站

攻击的主要途径:

1.对普通的用户输入,页面原样内容输出

2.在代码区里有用户输入的内容(代码区中,绝对不应含有用户输入的东西)

3.允许用户输入HTML标签的页面

攻击解决办法:(过滤输入和转义输出) 

1.在输入方面对所有用户提交内容进行可靠的输入验证,不要信赖客户输入(URL、查询关键字、http头、post数据等)

2.在输出方面,在用户输内容中使用<XMP>标签。标签内的内容不会解释,直接显示。

3.严格执行字符输入字数控制。

4.在脚本执行区中,绝不可以让用户输入

Eg:

1、用户名、密码等敏感输入字段未经加密就进行了传递

整改建议:在被测应用与服务器交互过程中,对密码等敏感信息进行加密传输。

2. 未对用户输入正确执行危险字符清理

整改建议:在被测应用与服务器交互过程中,对所有用户提交内容进行可靠的输入验证或编码。

二、URL 重定向包含网络钓鱼

重定向:客户端跳转之后浏览器URL改变,并且服务器无法传递参数。客户端跳转通常会使用response.sendRedirect()方法,也可以使用JavaScript跳转

攻击预防:

1.严格判断包含中的参数是否外部可控

2.路径限制:限制被包含的文件只能在某一文件夹内,一定要禁止目录跳转字符

3.包含文件验证:验证被包含的文件是否是白名单中的一员

4.尽量不要使用动态包含,可以在需要包含的页面固定写好

Eg:

1、Web 应用程序执行指向外部站点的重定向

整改建议:在被测应用与服务器交互过程中,参数外部不可控或可控禁止目录跳转字符或加密。

三、注销后会话未失效

测试响应与原始有效响应完全相同,注销后仍有可能访问受保护资源,用的是“会话固定”技术,会强制用户的会话标识变成显式值

Eg:

1.用户注销时使相关会话标识失效

手工验证:退出系统后,点击浏览器上的后退按钮,看是否可以退到系统中。

整改建议:注销后,浏览器后退按钮改为不可用或设session失效。

四、会话标识未更新

“会话标识未更新”是中危漏洞,AppScan会扫描“登录行为”前后的Cookie,会对其中的JSESSIONOID(JSP)或者 ASP.NET_SessionId(ASP)进行记录。在登录行为发生后,如果cookie中这个值没有发生变化,则判定为“会话标识未更新”漏洞

攻击方式:

在于攻击者通过某种方式(如XSS)将自己的Id置入了被攻击者的浏览器,将会话标识改为某个攻击者预设的值,被攻击者正常登陆,若服务器接收了这个预设值,那么相当于攻击者获得了被攻击者登录后的权限。

攻击预防:

1.始终生成新的会话,供用户成功认证时登录。

2.防止用户操纵会话标识。不要接受用户浏览器登录时所提供的会话标识

3.在登录按钮点击后,确认登录前,加入3行代码对Cookie进行清空已达到重置SessionId的效果。

protected void btnLogin_Click(object sender, EventArgs e)

{

//重置SessionId

Session.Clear();

Session.Abandon();

Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

//登录判断

if (check(txtName.Text,txtPassword.Text))

{

FormsAuthentication.SetAuthCookie("admin", false);

Response.Redirect("Default.aspx");

}

Eg:

1.登录之后未更改会话标识符值

手工验证:用fiddler抓取登录前后的包。对比两边的cookie值。如相同,则存在漏洞,如不同,则无漏洞。

整改建议:在被测应用与服务器交互过程中,不要采用登录前的cookie值,要更新。

五、CSRF漏洞

CSRF:是指跨站请求伪造,攻击者在用户未察觉的情况下,迫使用户的浏览器发起未预见的请求,其结果往往损害用户本身的利益。CSRF攻击大多利用web应用的XSS漏洞,也有很多CSRF攻击没有利用XSS而是利用了HTML标签的特性

当网站同时存在XSS、CSRF漏洞时,Token防御机制将会失效,攻击者可以通过JavaScript获取Token值

攻击预防:

1.使用post,不使用get修改信息

2.二次确认

3.Token认证

Eg:

1. 应用程序使用的认证方法不充分

手工验证:burpsuite抓包,修改包后发送,看服务器返回是否为200。若为200,则存在漏洞。

整改建议:在被测应用与服务器交互过程中,二次确认。

六、SQL注入

注入:往往是应用程序缺少对输入进行安全性检查所引起的,攻击者把一些包含指令的数据发送给解释器,解释器会把收到的数据转换成指令执行

注入漏洞分类:数字型和字符型

攻击者对数据库注入归为:

查询数据

读写文件

执行命令

防止SQL注入:

1、严格的数据类型

2、特殊字符转义

3、使用预编译语句

4、框架技术

5、存储过程

七、上传漏洞

上传漏洞与注入相比,风险更大,只要Web应用程序可以上传文件,就有可能存在文件上传漏洞

上传漏洞形成:

1.目录过滤不严,攻击者可能建立畸形目录

2.文件未重名,攻击者可能利用Web容器解析漏洞

防止上传漏洞:

客户端检测:客户端使用javascript检测,在文件未上传时,就对文件进行验证

服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,是否嵌入恶意代码

八、已解密的登录请求

整改建议:通过SSL传输密码或用MD5加密

九、不充分的账户封锁

手工验证:在输入正确账号后,多次输入错误密码。看账号是否会被封。

整改建议:错误登录次数设置。

十、登录错误消息枚举

手工验证:输入错误登录名或密码、看系统给出的错误提示是否一样。若一样,则无该漏洞。若不同,则存在漏洞。

整改建议:将输入错误用户名或密码的提示语设置相同。

web端常见安全漏洞测试结果分析-- appscan的更多相关文章

  1. web端常见测试点

    由于web端应用于用户直接相关,又通常需要承受长时间的大量操作,因此web项目的功能和性能都必须经过可靠的验证.web端测试常见的有界面测试.功能测试.性能测试.可用性(接口)测试.兼容性测试.安全性 ...

  2. web端和手机端测试有什么不同

    面试中经常被问到web端测试和手机端测试有什么相同点和区别呢?现在总结一下这个问题,如有不对敬请指正 web端和手机端测试有什么区别 1.相同点 不管是web测试还是手机App测试,都离不开测试的相关 ...

  3. web端常见测试

    一.登录注册功能 1.页面调转 2.tab键与enter键 3.密码加密显示,是否支持复制粘贴 4.账号密码校验 5.刷新页面,更新验证码 二.界面测试 1.样式.颜色.整体布局风格 2.最大化.最小 ...

  4. 技术分享 | WEB 端常见 Bug 解析

    对于 WEB 产品来说,有一些常见的 Bug,本章节挑选一些比较典型的 Bug 进行举例介绍. UI Bug 页面展示的时候,需要根据长度的边界值去设计用例进行验证.   一般来说都会有超长内容的验证 ...

  5. Web端服务器推送技术原理分析及dwr框架简单的使用

    1 背景 “服务器推送技术”(ServerPushing)是最近Web技术中最热门的一个流行术语.它是继“Ajax”之后又一个倍受追捧的Web技术.“服务器推送技术”最近的流行跟“Ajax ”有着密切 ...

  6. Web端server推送技术原理分析及dwr框架简单的使用

    1 背景 "server推送技术"(ServerPushing)是近期Web技术中最热门的一个流行术语.它是继"Ajax"之后又一个倍受追捧的Web技术.&qu ...

  7. web 应用常见安全漏洞

    1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令. SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化. 原因 当使用外部不可 ...

  8. Web系统常见安全漏洞及解决方案-SQL盲注

    关于web安全测试,目前主要有以下几种攻击方法: 1.XSS 2.SQL注入 3.跨目录访问 4.缓冲区溢出 5.cookies修改 6.Htth方法篡改(包括隐藏字段修改和参数修改) 7.CSRF ...

  9. Web开发常见的漏洞

    SQL注入漏洞 跨站脚本攻击漏洞 登陆后台管理页面 IIS短文件/文件夹漏洞 系统敏感信息泄露

随机推荐

  1. XML读取两种方法

    //第一种SAX方法解析 package a20170722.xmlex; import java.io.File; import java.util.ArrayList; import java.u ...

  2. Vijos 1011 清帝之惑之顺治 记忆录式的动态规划(记忆化搜索)

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  3. vijos1010题解

    题目: 话说乾隆带着他的宰相刘罗锅和你出巡江南,被杭州城府邀请去听戏,至于什么戏,那就不知了.乾隆很高兴,撒酒与君臣共享.三更欲回住处,可是乾隆这人挺怪,他首先要到西湖边散散步,而且命令不准有人跟着他 ...

  4. [UWP]浅谈按钮设计

    一时兴起想谈谈UWP按钮的设计. 按钮是UI中最重要的元素之一,可能也是用得最多的交互元素.好的按钮设计可以有效提高用户体验,构造让人眼前一亮的UI.而且按钮通常不会影响布局,小小的按钮无论怎么改也不 ...

  5. CJOJ 1131 机器分配 / Luogu 2066 机器分配 (动态规划)

    CJOJ 1131 机器分配 / Luogu 2066 机器分配 (动态规划) Description Luogu: 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国 ...

  6. RecyclerView线性分割线

    由于recyclerview默认是没有分割线的,需要显示分割线的话,可以在布局里添加一条有背景色的View标签,或者通过ItemDecoration来实现,本文以后者为例. ItemDecoratio ...

  7. STL—vector空间的动态增长

    vector空间的动态增长     当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间.vect ...

  8. Extjs4+PHP MVC模式一(入门)

    Extjs是一个js框架,可以实现大部分web页面的东西,个人理解是一款集html.css.js一体的框架,功能挺强大的.结合PHP和sql可以实现整个系统.现在来说说怎么用它.(我的项目是用的TP框 ...

  9. 华为OJ之放砝码

    题目描述: 现有一组砝码,重量互不相等,分别为m1.m2--mn:他们可取的最大数量分别为x1.x2--xn.现在要用这些砝码去称物体的重量,问能称出多少中不同的重量. 注: 称重重量包括0: 要对输 ...

  10. RabbitMq学习一入门篇(hello world)

    简介 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java,也是众多消息队列中表现不俗的一员,作用就是提高系统的并发 ...