2018-2019-2 20189206 《网络攻防实践》 第五周作业

#2018-2019-2 20189206 《网络攻防实践》第五次作业

课本内容

web应用程序体系结构及其安全威胁

web应用体系结构

web应用程序是一种使用浏览器在互联网或企业内部网上进行访问操作的应用软件形态,也造就了B/S计算结构,提升了部署和应用的便捷性。web应用体系结构如图所示:

  • 浏览器:完成数据显示与展示渲染
  • 服务器:完成业务计算处理
    • web服务器软件、web应用程序以及后端数据库构成
    • 由三层架构(表示层、业务逻辑层和数据层)组织构建
  • 浏览器与服务器之间的通信通过因特网或内联网上HTTP/HTTPS应用层协议的请求与应答进行通信

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第1张图片

针对于上图对关键组件进行介绍:

  • 浏览器 使用HTTP/HTTPS协议、HTML语言与web服务器进行交互,获取信息
  • web服务器 不仅仅是一个HTTP守护程序,有对各种web动态编程语言的支持
  • web应用程序 即处于服务器端的业务逻辑
    • 最为常见的三层体系结构由 表示层、业务逻辑层和数据层组成
      • 表示层:接受web客户端的输入并显示结果
      • 业务逻辑层:从表示层接受输入并完成某些工作,需要数据层的协作,再将结果送回表示层
      • 数据层:以数据库或本地文件的形式,提供非易失的信息存储
  • 数据库
  • 传输协议HTTP/HTTPS 浏览器与web站点之间的通信传输协议时HTTP/HTTPS协议,HTTP协议默认使用TCP 80端口,该协议采用统一资源标识符URI对各种资源进行统一定义,采用请求/相应模式,请求资源。
    • SSL/TLS隧道技术,来实现加密传输的HTTPS协议。
web应用安全威胁
  • 针对浏览器和终端用户的web浏览安全威胁:网页木马、网站钓鱼等
  • 针对传输层的网络协议安全威胁:针对HTTP明文传输协议的敏感信息监听、拒绝服务攻击等
  • 系统层安全威胁:web站点的宿主操作系统
  • web服务器软件安全威胁:web服务器软件也存在着漏洞与弱点
  • web数据安全威胁:web站点中在web应用程序后台存储的关键数据内容。

web应用安全攻防技术概述

web应用信息收集

针对web应用的攻击也需要首先进行信息情报的收集,主要收集:服务器域名,IP地址和虚拟IP地址,web服务器端口与其他开放服务,web站点类型和版本,web应用程序类型及版本,web服务器及其存在的安全漏洞信息。

  • 手工审查web应用程序结构与源代码
    • 攻击web目标,首先手工浏览web应用的各个页面、菜单、目录,查看关键页面的源代码。
      • 查看静态和动态生成的页面
      • 目录结构 web服务器的存储目录结构
      • 辅助性文件
      • 输入表单 form是web应用程序接受用户输入的主要途径,通过手工审查页面源代码可以发现一些关键表单的位置
      • 查询参数字符串
    • 自动下载与镜像web站页面
    • Google hacking技术审查与探测web应用程序
    • web应用程序安全评估与漏洞审查
      • 针对web应用程序的攻击主要集中在身份验证、会话管理、数据库操作、输入数据合法/合理性检查。
      • 浏览器插件:可以实时查看和修改传递给远端web服务器的数据。
        • 原理:在浏览器中嵌入软件模块,监控要发送的请求,将其暂停交给分析人员,并为其提供修改请求的功能,之后再将修改后的请求发送出去。firefox浏览器的插件有——tamperData、Firebug、view source chart、Venkman JavaScript Debugger、Live HTTP Headers等。
      • 免费工具集
      • 商业web应用安全评估系统和漏洞扫描器
攻击web服务器软件

web服务器的安全漏洞主要分为以下几类:

  • 数据驱动的远程代码执行安全漏洞:web服务器软件作为网络服务守护进程,也会出现缓冲区溢出、不安全指针、格式化字符串等一系列数据驱动安全漏洞的远程攻击渗透攻击。
  • 服务器功能扩展模块漏洞
  • 样本文件安全漏洞
  • 源代码泄露
  • 资源解析攻击
攻击web应用程序

针对web应用安全威胁从攻击技术角度分为以下6类:

  • 针对认证机制的攻击:针对用来确认用户、服务或应用身份机制的攻击手段
  • 授权机制的攻击:针对用来确定用户、服务或应用是否具有执行请求动作必须权限机制的攻击手段
  • 客户端攻击:扰乱或渗透攻击web站点客户端用户的攻击手段
  • 命令执行攻击:在web站点执行远程命令的攻击手段
  • 信息暴露:获取web站点具体系统信息的攻击手段
  • 逻辑攻击:扰乱或渗透攻击web应用逻辑流程的攻击手段

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第2张图片

1505758-20190331181241322-152561477.png

攻击web数据内容
  • 安全敏感数据泄露
    • web服务器存在目录遍历漏洞或不安全的目录文件枚举配置
    • 利用web服务器的上传目录临时中转文件
    • 在web站点公开的文档资料中包含个人隐私、企业秘密
  • 网站篡改
    • 利用特定攻击手段入侵网站后,将网站页面内容进行替换,表达入侵成功或某种观点诉求。
  • 不良信息内容上传

SQL注入

代码注入利用web应用程序的输入验证不完善漏洞,使得web应用程序执行由攻击者所注入的恶意指令和代码。

代码注入根据攻击目标不同分为:

  • 恶意读取、修改与操纵数据库的SQL注入攻击;
  • 在web服务器端安装、执行Webshaell等恶意脚本的PHP注入或ASP注入攻击;
  • 在web服务器端恶意执行操作系统命令的shell注入攻击;
  • 其他多种注入攻击
SQL注入攻击原理

利用web应用程序的数据层存在的输入验证不完善性安全漏洞实施的代码注入攻击技术。由于用户输入没有被正确地过滤以消除SQL语言中的转义字符,或没有进行严格的类型判断,使得用户可以输入并执行一些非预期的SQL指令代码。

SQL注入攻击步骤和过程
  • 发现SQL注入点
    • 在动态网页中存在http://SITE/xxx.asp?some_rec=yyy的动态网页,当some_rec字段为整形参数,通过不同的三种字符串可判断该动态页面是否存在SQL注入点。
      • yyy修改为yyy' 造成SQL出错,动态页面返回错误提示信息
      • yyy修改为yyy and 1=1 不对查询条件造成任何影响,返回正常页面
      • yyy修改为yyy and 1=2 查询不到任何信息
      • 存在以上三种情况认为web应用存在注入点
    • some_rec为字符型参数时,通过三种不同的字符串确定是否存在SQL注入点
      • yyy修改为yyy'输入引号不匹配造成SQL语句错误
      • yyy修改为yyy'and'1'='1'不对查询语句造成任何影响
      • yyy修改为yyy' and '1'='2'查询不到任何信息,返回空白页面或错误提示信息
  • 判断后台数据库类型
    • 利用数据库服务器的系统变量
    • 利用数据库服务器的系统表进行判断
    • 后台数据库管理员用户口令猜解
      • 猜解表名
      • 猜解字段名
      • 用户名与口令猜解
  • 上传ASP后门,得到默认账户权限
    • 在破解得到web应用管理员用户名和口令后,通过找出后台管理界面登录,攻击者就可以通过后台管理界面通常所提供的的下载上传文件等功能上传ASP后门,对web站点进行远程控制。
  • 本地权限提升
  • 利用数据库扩展存储过程执行shell命令
SQL注入攻击工具
  • Wposion在动态文档中找出SQL注入漏洞
  • wieliekoek.pl找出含有表单的页面,允许在配置文件中对注入字符串进行修改,进行SQL注入漏洞探测
  • SPIKE Proxy允许使用者在配置文件中对待注入字符串进行定制,执行自动化注入测试
  • SPI Toolkit

URL字符转义

+     URL 中+号表示空格               %2B   
空格   URL中的空格可以用+号或者编码    %20 
/     分隔目录和子目录                %2F 
?     分隔实际的URL和参数             %3F 
%     指定特殊字符                    %25 
#     表示书签                       %23 
&URL  中指定的参数间的分隔符          %26 
=URL  中指定参数的值                 %3D

XSS跨脚本攻击

XSS跨站脚本攻击的最终目标不是提供服务的web应用程序而是使用web应用程序的用户。XSS的漏洞存在于web应用程序中,使得攻击者可以在web页面中插入恶意代码(HTML或JavaScript)用户在浏览网页时,浏览器会解析这些插入的代码,造成获取用户敏感信息、客户端渗透攻击等危害后果。

XSS攻击技术原理

web应用程序对用户输入内容的安全验证与过滤不够完善,用户提交的内容可以包括HTML、JAVAScript及其他脚本代码。例如在name变量填写为,这段客户端代码将会被包含在留言浏览页面中,其他用户访问时将会执行代码。

XSS攻击技术分类
  • 持久性XSS漏洞
    • 通常出现在一些可以将用户输入持久性地保存在web服务器端,在页面中持续显示,从而影响所有访问这些页面的用户。通常在于留言本、BBS论坛、博客等web应用程序中,这些恶意脚本将被永久性地包含在网站页面中。
  • 非持久性XSS漏洞

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第3张图片

  • 攻击者构造一个包含恶意脚本的bank.com登录请求连接,通过email等方式将该攻击发送给其他用户
  • 用户点击登录连接后会将恶意连接中包含的恶意脚本当做用户名参数提交给bank.com登陆处理页面
  • 网站将会在反馈的欢迎页面中包含恶意客户端脚本
  • 攻击者的恶意客户端在受害者浏览器中执行,会驱动浏览器发送会话令牌
  • 攻击者获得用户会话令牌后,可以劫持用户会话,伪造用户登录进一步实施攻击
XSS攻击实例

在SEED实验环境中的PHPBB论坛程序中引入XSS安全漏洞,我们利用如下步骤来测试与利用该漏洞。

  • 通过http://www.sqllabmysqlphpbb.com访问,首先需要运行Apache service

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第4张图片

  • 测试XSS漏洞,在phpbb论坛发布含有脚本的帖子,验证该论坛程序存在XSS安全漏洞,修改如下代码,不需要密码就可以登录相应的账号。

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第5张图片

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第6张图片

  • 显示用户的会话Cookie

将发布帖子中的脚本换为

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第7张图片

  • 窃取用户的会话Cookie

攻击者可以进一步利用XSS漏洞进行用户会话Cookie的窃取。攻击者首先架设一个服务器,该服务器将所有收到的HTPP请求显示在屏幕中,然后在论坛中发布帖子。当其他用户访问到该帖子页面时,植入脚本会在浏览器中自动执行。

  • 利用Cookie信息假冒其他用户发表与修改帖子
  • 实现XSS蠕虫

web浏览器的技术发展与安全威胁

web浏览器软件的安全威胁
  • 复杂性:现代web浏览器软件由于需要支持HTTP HTTPS FTP等多种类型的应用层协议浏览,符合HTML XHTML CSS等一系列的页面标准规范,支持多种客户端执行环境,满足大量用户的浏览需求,变得非常庞大和复杂。也就导致了浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
  • 可扩展性:现代浏览器软件都支持第三方插件扩展机制,但第三方扩展插件的开发过程缺乏安全保证,出现安全漏洞的情况更为普遍。
  • 连通性:浏览器始终工作在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源利用与攻击。

web浏览器安全威胁位置

  • 针对传输网络的网络协议安全威胁
  • 针对web浏览器端系统平台的安全威胁——桌面操作系统所存在的安全漏洞使得web浏览器环境存在着被攻击的风险。
  • 针对web浏览器软件及插件程序的渗透攻击威胁
  • 针对互联网用户的社会工程学攻击威胁

web浏览器端的渗透攻击威胁——网页木马

被隐蔽地挂接在一些提供真实内容的网页上,用户在访问这些网页时,网页木马会神不知鬼不觉地向用户计算机中植入恶意程序,与传统木马程序相比,网页木马还是具有较大的差异性,并体现出更高的复杂性。

网页木马的本质核心就是利用脚本语言实现对web浏览器软件安全漏洞的渗透攻击,从而向客户端主机中植入恶意程序。我们定义网页木马是对web浏览器端软件进行客户端渗透攻击的一类恶意移动代码,通常以网页脚本语言或flash、PDF等恶意构造的web文件形式存在,通过利用web浏览器端软件中存在的安全漏洞,获得客户端计算机的控制权限以植入恶意程序。

对网页木马机理的理解

由于网页木马采用客户端渗透攻击的形式,需要web浏览器端软件访问恶意构造的web页面内容,才可能触发渗透攻击过程。因此网页木马的攻击是被动式的,需要一些技术方法诱使互联网用户来访问网页木马页面。

2018-2019-2 20189206 《网络攻防实践》 第五周作业_第8张图片

网页挂马机制

在编写完成网页木马渗透攻击代码之后,为了使得能够有终端用户使他们可能存在安全漏洞的web浏览端软件来访问网页木马,攻击者还需要将网页木马挂接到一些拥有客户访问流量的网站页面上,这一过程称为网页挂马。

  • 内嵌HTML标签

iframe标签的功能是在页面中创建一个内嵌的框架,用于包含和显示其他文档页面,当包含页面被浏览器打开时,被包含的页面也会同时被请求并显示在内嵌框架中。