读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况。

Web应用程序的发展历程

早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检索和显示那些文档,但这些信息只是由服务器单向传送给浏览器,并不需要验证用户的合法性,所有用户同等,提供同样的信息。

所以当时一个Web站点的安全威胁主要来自于Web服务器系统与相关软件的(诸多)漏洞。攻击者入侵站点后并不能得到敏感信息,至多修改一下服务器上的静态文件,歪曲站点的内容,或者利用服务器本身做一些“非法的事情”。

经过几十年的发展,而今的万维网和早期的万维网早已不可同日而语,Web上的大多数站点实际上就是应用程序,它们功能强大,在服务器与浏览器之间进行双向信息传送。“注册,登录,金融交易,搜索,内容创作”等等这些内容以动态的方式成为解决用户特殊需求的方案,它们处理诸多信息包括私密和高度敏感的信息,因此,安全问题变的至关重要:如果人们认为Web应用程序会将他们的信息泄露给未授权的访问者,他们就会拒绝这个Web应用程序。

Web应用程序的常见功能

创建Web应用程序的目的是执行可以在线完成的任何有用功能:

  1. 购物(Taobao,JD,Amazon)
  2. 社交网络(BBS,SNS)
  3. 微博(Weibo)
  4. 博客(Bloggers)
  5. 银行服务(BOC,ICBC)
  6. Web搜索(Baidu)
  7. Web邮件(QQmail,企业Mail)
  8. 交互信息(Dingding,QQ,iMassges)

企业内部已广泛使用Web应用程序来支持关键业务功能,这类应用程序可以访问各种高度敏感的数据和功能:

  1. 使用HR应用程序,访问工资信息,绩效反馈。
  2. 连接关键体系架构的管理接口:Web和邮件服务器。
  3. 共享文档,管理工作流程,项目跟踪。
  4. ERP软件通过Web浏览器访问。

为降低成本,企业圈内开始推崇所谓“云计算”业务,并将此业务开发交于外包企业实施和托管,将ERP搬至网上。在这些所谓的“云”解决方案中,业务关键功能和数据向数目更庞大的潜在攻击者开发,而组织却越来越多地依赖于不受其控制的安全防御。

Web应用程序的优点

  1. HTTP是用于访问万维网的核心通信协议,它是轻量级的,无须连接,这提供了对通信错误的容错性。这使得用户可以在任何网络配置下进行安全通信。
  2. 每个Web用户在其PC端和移动端上都默认装有浏览器,而Web应用程序可以在任何浏览器上运行。
  3. 现今的Web界面使用标准的导航和输入控件,这保证了用户不需要通过学习就可以即时熟悉这些功能。
  4. 用于开发Web应用程序的核心技术和语言工具相对简单,并且有大量的开源代码和资源可供整合。

Web应用程序安全

应用程序各不相同,所包含的漏洞也各不相同,许多应用程序是由开发人员独立开发,还有许多开发人员对自己所编写的代码可能引起的安全问题略知一二,于是一些开发人员从未在开发应用时未曾考虑到的攻击方式在使用过程当中相继出现了,而新技术的开发也会引入新的漏洞。

针对Web应用程序最严重的攻击,是那些能够绕到后端系统的无限访问权限的攻击。

在Web应用程序的整个发展过程中,直到今天,甚至可预见的未来,攻击者与防御者的战斗仍然在继续,且没有解决的迹象。

“本站点是安全的”

大多数网站声称自己使用128位安全套接层(Secure Socket Layer, SSL)技术设计,遵循支付卡行业(PCI)标准,来证明自己的加密协议是无懈可击的。

但实际上,大多数Web应用程序不安全,不仅仅是技术应用上的,还有开发人员在基础设计上的漏洞:

  1. 不完善的身份验证措施
  2. 不完善的访问控制措施
  3. SQL注入
  4. 跨站点脚本
  5. 信息泄露
  6. 跨站点请求伪造

SSL在机密性与安全性上是出色的技术,但它的问题在于它并不能抵御直接针对某个应用程序的服务器或客户端组件的攻击,而许多成功的攻击都恰恰属于这种类型。

所以SSL并不能阻止上述任何漏洞或许多其他使应用程序受到威胁的漏洞。

核心安全问题:用户可提交任意输入

Web应用程序有个根本性问题,即无法控制客户端,所以用户几乎可向服务器端提交任意输入。所以应用程序必须假设用户输入的都是恶意信息。

这个核心问题表现在多个方面:

  1. 用户可干预客户端与服务器间传送的所有数据。
  2. 用户可按任何顺序发送请求,并可在应用程序要求之外的不同阶段不止一次提交或根本不提交参数。
  3. 用户交不限于使用一种Web浏览器访问应用程序,这导致大量各种各样的工具可以协助攻击Web应用程序。

绝大多数针对Web应用程序的攻击都涉及向服务器提交信息:

  1. 更改隐藏的HTML表单字段提交的产品价格,以更低价格欺诈性购买。
  2. 修改在HTTP Cookie中的会话令牌,支持另一个验证用户的会话。
  3. 利用应用程序处理过程中的逻辑错误删除某些正常提交的数据。
  4. 改变由后端数据库处理的某个输入,从而注入一个恶意数据库查询以访问敏感数据。

关键问题因素

  1. 不成熟的安全意识
  2. 独立开发
  3. 欺骗性的简化
  4. 迅速发展的威胁形势
  5. 资源与时间限制
  6. 技术上强其所难
  7. 对功能的需求不断增强

开发人员的技术能力,开发时间的限制,开发资源的有限利用,单一框架多程序开发使用,大量增加第三方插件,为实现功能对数据库或程序直接进行二次开发而忽视二开的安全措施,以上这些种种行为大大增加了安全问题的出现率。

新的安全边界

Web应用程序的广泛应用使得典型组织的安全边界发生了变化,以往我们关注防火墙与防御主机,而现在我们应该更关注Web应用程序本身。

Web应用程序接收用户输入的方式多式多样,数据传输的方式也多式多样,这每一步都是潜在攻击的关口,尤其是PHP,Java,JS这些语言和平台的“聚合”,每一个连接方式都成为了攻击关口。

于是站点的安全边界从服务器本身延伸到了第三方插件,聚合接口,API,某一行代码,跨域连接方式。

Web应用程序安全边界发生变化的另一原因,在于恶意攻击者利用一个良性的易受攻击的应用程序攻击任何访问它的用户,并控制用户的浏览器,如果用户位于企业内部,那么从用户的可信位置攻击者可向本网络改动攻击。

Web应用程序安全的未来

目前网络上的Web应用程序仍然充满了漏洞,整个行业也没有统一而成熟的意识。

但随意着行业的发展,各种漏洞也在被不断的修复,现有的漏洞也变得更难以发现和利用。

而攻击目标也由传统的服务器端应用程序转向用户应用程序。


版权所有,转载请注明出处。

转载自 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序 | XDY.ME@Dy大叔的日常

《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序的更多相关文章

  1. 黑客攻防技术宝典web实战篇:核心防御机制习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 黑客攻防技术宝典web实战篇是一本非常不错的书,它的著作人之一是burpsuite的作者,课后的习题值得关注 ...

  2. 黑客攻防技术宝典web实战篇:解析应用程序习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 当解析一个应用程序时,会遇到以下 URL:https://wahh-app.com/Coo ...

  3. 黑客攻防技术宝典web实战篇:工具web服务器习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 在什么情况下 Web 服务器会显示目录列表? 如果请求某目录的 URL 且满足以下条件,W ...

  4. 黑客攻防技术宝典Web实战篇(二)工具篇DVWA Web漏洞学习

    DVWA是一个学习Web漏洞的很好的工具. DVWA全程是Damn Vulnerable Web Application,还有一个跟它一样好的工具尽在http://www.360doc.com/con ...

  5. 黑客攻防技术宝典Web实战篇(二)工具篇

    扫描工具.中间攻击工具.加密解密工具等. 1 TM Thread Module 2 burpsuite 代理.中间攻击.repeatur.spider.暴力破解(intrude).加密.解密.扫描器 ...

  6. 黑客攻防技术宝典Web实战篇(一)Web应用程序技术基础

    在开展Web应用程序渗透测试之前请先了解下面列出的这些内容,如果不是很懂的话,请读David Gourley & Brian Totty的HTTP权威指南也叫HTTP:The Definiti ...

  7. 黑客攻防技术宝典web实战篇:攻击应用程序架构习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 假设受攻击的应用程序使用两台不同的服务器:一台应用程序服务器和一台数据库服务器.已经发现一 ...

  8. 黑客攻防技术宝典web实战篇:攻击其他用户习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 在应用程序的行为中,有什么“明显特征”可用于确定大多数 XSS 漏洞? 用户提交的输入在应 ...

  9. 黑客攻防技术宝典Web实战篇(三)web攻击方式总结

    web攻击的手段无非就是使服务器资源耗尽,使服务器无法接收正常请求. 一.DDos攻击 二.DRDos攻击 三.慢攻击 与Ddos攻击相反,慢攻击并不是以多取胜,而是靠保持连接.

随机推荐

  1. 任务十七:零基础JavaScript编码(五)

    任务目的 在上一任务基础上继续JavaScript的体验 接触更加复杂的表单对象 实现页面上的一个完整交互功能 用DOM实现一个柱状图图表 任务描述 参考以下示例代码,原始数据包含几个城市的空气质量指 ...

  2. ArcGIS 10.1 如何连接数据库(转载)

    ArcGIS 10.1如何连接数据库 最近在使用ArcGIS 10.1的数据库,在使用的过程中发现了跟以往不太一样的地方,在这里将自己的心得和想法跟大家分享一下(使用Postgresql),根据使用过 ...

  3. dubbo学习总结二 服务端

    服务端主要执行对底层数据库的操作 主要分层为 api +dao+ filter+ util+... 首先 dubbo 服务端有一个dubbo配置文件 dubbo:application 定义应用名称 ...

  4. 命令行模式(CMD)下mysql查询中文显示乱码问题

    mysql的默认编码已经设置为utf-8,用其他工具(代码,mysql workbench)写入或读出时显示正常,但用cmd查询时显示为乱码. 2.原因:mysql的客户端根本无法以utf-8的形式返 ...

  5. P4python: python interface to Perforce API

    P4python is the python interface to Perforce API, it helps to do Perforce operations through python. ...

  6. Netty入门3之----Decoder和Encoder

    ​ Netty强大的地方,是他能方便的实现自定义协议的网络传输.在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器.在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务 ...

  7. java中复制数组的5种方法

    “=”,相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变.,这一种勉强算是吧 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点 ...

  8. centOS 7 简单设置(虚拟机)

    1.修改主机名 hostnamectl set-hostname 2.ssh连接慢的问题解决 vim /etc/ssh/sshd_config UseDNS=no GSSAPIAuthenticati ...

  9. linux oom-killer

    本人从事UTM的开发工作,最近遇到out of memory killer.这里整理一下资料. 简述 当系统内存不足时,系统会触发 oom-killer.oom-killer的机制就是选择杀掉最适合的 ...

  10. Struts2学习-Ioc学习

    网址:http://blog.csdn.net/qq_22654611/article/details/52606960可以在这个网址学学. 1.新建空项目,然后建立Java EE,在把Java EE ...