2018-2019-2 20189212 《网络攻防技术》第五周做业

1、《网络攻防技术与实践》

第11章 Web应用程序安全攻防


1、Web应用程序体系结构及其安全威胁

1.Web应用体系结构
php

2.Web应用安全威胁java

  • 针对浏览器和终端用户的Web浏览安全威胁,如网页木马,Phishing网站钓鱼
  • 针对传输网络的网络协议安全威胁
  • 系统层安全威胁
  • Web服务器软件安全威胁
  • Web应用程序安全威胁
  • Web数据安全威胁

2、Web应用安全攻防技术概述

1.Web应用的信息收集
  与系统和网络攻击相似,针对Web应用的攻击也须要首先进行信息情报的收集,对目标Web应用服务进行发现与剖析,标识出它的基本轮廓,具体包括服务器域名、IP地址和虚拟IP地址,Web服务器端口与其余开放服务,Web站点类型和版本,Web应用程序类型与版本,以及Web服务器和Web应用程序中存在的安全漏洞信息等。python

  • 手工审查Web应用程序结构与源代码
  • 自动下载与镜像Web站点页面
  • 使用Google Hacking技术审查与探测Web应用程序
  • Web应用程序安全评估与漏洞探测

2.攻击Web服务器软件
  Web服务器软件做为Web应用的层载体,也成为攻击者对Web应用实施攻击的首要目标之一。mysql

  • 数据驱动的远程代码执行安全漏洞
  • 服务器功能扩展模块漏洞
  • 样本文件安全漏洞
  • 源代码泄露
  • 资源解析攻击

3.攻击Web应用程序
  在Web应用各个层次上,目前安全最薄弱的环节在于Web应用程序。在2004年发布的《WASC Web安全威胁分类v1.0》将Web应用程序安全威胁从攻击技术角度分为以下6类。
(1)针对认证机制的攻击:针对用来确认用户、服务或应用身份机制的攻击手段,包括暴力枚举、利用认证机制不完善弱点、攻击口令恢复验证机制等;
(2)受权机制的攻击:针对用来确认用户、服务或应用是否具备执行请求动做必须权限限制的攻击手段,包括信任/会话预测、利用受权机制不完善弱点、利用会话失效机制不完善弱点、会话身份窃取攻击等;
(3)客户端攻击:扰乱或者渗透攻击Web站点客户端用户的攻击手段,包括内容欺骗、跨站脚本攻击等;
(4)命令执行攻击:在Web站点上执行远程命令的攻击手段,包括缓冲区溢出、格式化字符串、LDAP注入、操做系统命令注入、SQL注入、SSI注入等;
(5)信息暴露:获取Web站点具体系统信息的攻击手段,包括目录枚举、信息泄露、路径遍历、资源位置可预测等;
(6)逻辑攻击:扰乱或者渗透攻击Web应用逻辑流程的攻击手段,包括功能滥用、拒绝服务攻击、对抗自动程序不完善、处理验证过程不完善等。
下图是在2010年最新发布的《WASC Web安全威胁分类v2.0》文档中安全威胁列举:
linux

4.攻击Web数据内容git

  • 安全敏感数据泄露
  • 网站篡改
  • 不良信息内容上传

5.Web应用安全防范措施web

  • Web站点网络传输安全设防措施
    (1)尽可能使用HTTPS来保障Web站点传输时的保密性、完整性与身份真实性,至少要对登陆过程进行加密保护
    (2)经过加密的链接通道来官网Web站点,避免使用未经加密的telnet、FTP、HTTP来进行Web后台管理,而使用SSH、SFTP等安全协议。
    (3)对关键的Web服务器,设置静态绑定MAC-IP映射,在服务网段内进行ARP等各种欺骗攻击的检测与MAC封禁机制,在网关位置部署防火墙与入侵检测系统对Web服务器实施保护与安全检测,采用冗余等机制来应对拒绝服务攻击。
  • Web站点操做系统及服务安全设防措施
  • Web应用程序安全设防措施
  • Web站点数据安全设防措施

3、SQL注入

代码注入根据攻击目标的不一样又分为:sql

  • 恶意读取、修改与操纵数据库的SQL注入攻击;
  • 在Web服务器端安装、执行Webshell等恶意脚本的PHP注入或ASP注入攻击;
  • 在Web服务器恶意执行操做系统命令的Shell注入攻击;
  • 其余多种多样的注入攻击,如LDAP注入、邮件命令注入、空字节注入、SSI注入、XPath注入、XML注入、XQuery注入等。
    在这多种类型的代码注入攻击中,SQL注入是目前最多见的,也是较为直观的一种攻击技术。

1.SQL注入攻击原理
  SQL注入是利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术。这类被攻击的漏洞被称为SQL注入漏洞,是因为用于输入没有被正确地过滤以消除SQL语言中的字符串转义字符,如引号(')、双引号(")、反引号(`)、分号(;)、百分号(%)、井号(#)、双减号(--)、双下画线(__)等,或者没有进行严格的类型判断,如未判断输入参数是否合法整数类型等,从而使得用户能够输入并执行一些非预期的SQL指令代码。
  SQL注入攻击的原理是向Web应用程序提供的用户输入接口输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操做行为。
2.SQL注入攻击步骤和过程
  在攻击者真正对万维网的一些Web应用站点实施SQL注入攻击等,每每是按照以下的攻击步骤与过程。
(1)发现SQL注入点
(2)判断后台数据库类型shell

  • 利用数据库服务器的系统变量进行判断
  • 利用数据库服务器的系统变量进行判断
  • 利用数据库服务器的系统表进行判断

(3)后台数据库中管理员用户口令字猜解数据库

  • 猜解表名
  • 猜解字段名
  • 用户名与口令猜解

(4)上传ASP后门,获得默认帐户权限
(5)本地权限上升
(6)利用数据库扩展存储过程执行Shell命令
3.SQL注入攻击工具
国外工具:
  Wposion可以在动态Web文档中找出SQL注入漏洞;wieliekoek.pl可以以并以网站镜像工具生成的输出为输入,找出含有表单页面,容许在配置文件中对注入字符串进行修改,进行SQL注入漏洞探测;SPIKE Proxy工具容许使用则对待注入的字符串进行定制,并执行自动化的SQL注入测试;SPI Tooklit工具包中也包含一个名叫“SQL Injector”的自动化SQL注入测试工具。
国内工具:
  CSC、NBSI、HDSI、阿D注入工具、WED、Domain、Pangolin等
4.SQL注入攻击防范措施
(1)使用类型安全的参数编码机制
(2)凡是来自外部的用户输入,必须进行完备检查
(3)将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象
(4)增强SQL数据库服务器的配置与链接

4、XSS跨站脚本攻击

  XSS攻击的根源一样是Web应用程序对用户输入内容的安全验证与过滤不够完善,在许多流行的Web论坛、博客、留言本及其余容许用户交互的Web应用程序中,用户提交内容中能够包含HTML、JavaScript及其余脚本代码,而一旦Web应用程序没有对这些输入的合法性进行有效检查与过滤,就颇有可能让这些恶意代码逻辑包含在服务器动态产生或更新的网页中。
  而与代码注入不一样的是,XSS攻击的最终目标并不是Web服务器,Web服务器上的应用程序在XSS攻击场景中发挥的角色是“帮凶”,而非“受害者”,真正的“受害者”则是访问这些Web服务器的其余用户。攻击者能够利用Web应用程序中的安全漏洞,在服务器端网页中插入一些恶意的客户端脚本代码,在Web服务器上产生一些恶意攻击页面。
XSS攻击类型:持久性XSS攻击和非持久性XSS攻击
XSS攻击步骤:
(1)攻击者构造出一个包含恶意脚本的bank.com登陆请求连接,并经过Email/HTTP等方式将该攻击连接发送给其余bank.com网站用户;
(2)受害用户点击攻击连接后,将会把恶意连接中包含的恶意脚本当作用户名参数提交给bank.com的登陆处理网页;
(3)因为bank.com登陆处理页面存在XSS漏洞,将会在反馈的欢迎页面中包含恶意客户端脚本;
(4)攻击者的恶意客户端脚本在受害用户浏览器中执行,一般会驱动浏览器向攻击者发送会话令牌,如会话ID、Cookie信息等;
(5)攻击者得到用户会话令牌以后,就能够劫持用户会话,或者伪造用户登陆bank.com,并可实施进一步攻击。

XSS攻击防范措施

  • 输入验证
  • 输出净化
  • 消除危险的输入点

第12章 Web浏览器安全攻防


1.Web浏览器的技术发展与安全威胁

现代浏览器的基本结构与机理

Web浏览器软件的安全困境三要素
(1)复杂性:现代浏览器软件的复杂性意味着更多的错误和安全缺陷,也就致使了目前浏览器软件中存在着可被渗透攻击所利用的大量安全漏洞。
(2)可扩展性:现代Web浏览器可能最突出可扩展特性支持的软件类型,目前几乎全部的现代浏览器软件都支持第三方插件扩展机制。而第三方扩展插件的开发过程缺少安全保证,出现安全漏洞的状况更为广泛。
(3)连通性:现代Web浏览器自己就是为用户实现“随时随地浏览互联网”这一目标而存在的,所以浏览器软件始终工做在联网状态,一旦其中存在安全漏洞,就很容易被网络上的威胁源所利用与攻击。
Web浏览安全威胁位置

  • 针对传输网络的网络协议安全威胁
  • 针对Web浏览端系统平台的安全威胁
  • 针对Web浏览器软件及插件程序的渗透攻击威胁
  • 针对互联网用户的社会工程学攻击威胁

2.Web浏览器的渗透攻击威胁——网页木马

网页木马存在的技术基础——Web浏览端安全漏洞
网页木马的特性:
(1)网页木马所攻击的安全漏洞的存在位置很是多样化。
(2)除了微软操做系统平台软件自己的安全漏洞以外,网页木马近年来也在不断地发掘和利用其它流行应用软件中的安全漏洞。
(3)一些影响范围广的安全漏洞。

网页木马的机理分析

  • 网页木马的定义特征
      经过对网页木马起源背景和存在技术基础的分析,咱们能够认知到网页木马从本质特征上利用了现代Web浏览器软件中所支持的客户端脚本执行能力,针对Web浏览端软件安全漏洞实施客户端渗透攻击,从而取得在客户端主机的远程代码执行权限来植入恶意程序。
  • 网页木马的本质核心——浏览器渗透攻击
    网页木马的本质核心是利用Web浏览端软件安全漏洞的渗透攻击代码。
  • 网页挂马机制
    (1)内嵌HTML标签
    (2)恶意Script脚本
    (3)内嵌对象连接
    (4)ARP欺骗挂马
  • 混淆机制
    除了引入中间跳转节点进行嵌套连接,并集成多种渗透攻击代码以外,网页木马攻击网络中每每采用了大量的混淆技术,来对抗反病毒软件的检测,并提升反病毒工程师的分析难度,从而使得网页木马攻击网络更难被检测和摧毁,这些混淆技术也被称为“免杀”。

3.网页木马的检测与分析技术

  • 基于特征码匹配的传统检测方法
  • 基于统计与机器学习的静态分析方法
  • 基于动态行为结果断定的检测分析方法
  • 基于模拟浏览器环境的动态分析检测方法

2、Kali视频学习(16-20)


16.KaliSecurity——漏洞分析之数据库评估(一)

Kali下的数据库漏洞分析工具一览:

1.bbqsql
  bbqsql是一个Python编写的盲注工具(blind SQL injection framework),当检测可疑的注入漏洞时会颇有用。同时它也是一个半自动工具,容许客户自定义参数。
2.dbpwaudit
数据库用户名密码枚举工具。
DBPwAudit — DataBase Password Audit
功能:经过挂载字典对目标数据库进行密码暴力猜解,
目前支持的数据库包括SQLServer、MySQL、Oracle、DB2
程序位置:/pentest/database/dbpwaudit/
驱动位置:/pentest/database/dbpwaudit/jdbc/
破解SQLServer数据库命令实例

./dbpwaudit.sh -s IP -d master -D mssql -U username -P password

破解MySQL数据库命令实例

./dbpwaudit.sh -s IP -d mysql -D mysql -U username -P password

3.HexorBase:
图形化的密码破解与链接工具,开源。

4.jsql
  JSQL是一款轻量级安全测试工具,能够检测SQL注入漏洞。它跨平台(windows,linux,mac os x,solaris),开源且免费。将存在注入漏洞的URL贴进来便可进行响应的漏洞利用。
  它能够很方便的查看数据库内容,读取文件,写入文件等

5.MDBTools

包括MDB-Export,MDB-Dump,mdb-parsecsv,mdb-sql,mdb-tables等子工具。主要是针对mdb数据库的,具体环境具体使用

6. oscanner

Oscanner是一个用java开发的oracle评估工具,它是基于插件的结构,当前由两个插件能够作:

  • Sid列举
  • 口令测试
  • 列举oracle版本
  • 列举帐号角色
  • 列举帐号特权
  • 列举帐号哈希
  • 列举审计信息
  • 列举口令策略
  • 列举数据库连接

7. SIDGusser
针对Oracle的SID进行暴力枚举;SID为Oracle链接字符串:实例名+用户+密码

8. SqIDICT(用户名密码枚举工具)
经过wine运行。

17.KaliSecurity——漏洞分析之数据库评估(二)

1. tnscmd10g
  这个工具容许咱们向oracle数据库中注入命令

2. Sqlsus
  sqlsus是一个开放源代码的MySQL注入和接管工具,Sqlsus使用perl编写,基于命令行界面。Sqlsus能够获取数据库结构,注入本身的SQL语句,从服务器下载文件。爬行Web站点可写目录,上传和控制后门,克隆数据库等等。最好用的亮点就是注射获取数据速度很是快,另一个最大的特色就是自动搜索可写目录。

  • 获取表:sqlsus> get tables
  • 生成配置文件:sqlsus -g test.conf
  • 编辑配置文件:vi test,conf
  • 修改our $url_start = ""
  • 启动并测试:sqlsus test.conf
  • 获取数据库数据,查看所有数据库名字:sqlsus> get databases
  • 设定数据库:sqlsus> set databases database = "mysql"

3. Sqlninja
  是一款perl编写的专门针对Microsoft SQL Server的sql注入工具。和市面上其余注入工具不一样,sqlninja没有将精力用在跑数据库上,而是侧重于得到一个shell。
优势:

  • 专门针对Microsoft SQL Server的sql注入工具;
  • 能够找到远程SQL服务器的标志和特征(版本、用户执行的查询、身份验证模式等);
  • sa口令的强力攻击,找到口令后,就将特权提高到“sa”;
  • 若是原始的xp_cmdshell被禁用,就建立一个定制的xp_cmdshell。

18.Kali漏洞分析之Web应用代理

1. Burp Suite
  用于攻击web应用程序的集成平台,经过默认端口8080运行,它带有一个代理,能够截获并修改从客户端到web应用程序的数据包。
  使用Burp Suite截获数据包

  • 设置浏览器代理地址为127.0.0.1,端口8080
    preferences>network proxy

    用浏览器访问baidu,发现没法跳转,打开Burp Suite发现如下信息:

2. OWASP ZAP
  攻击代理,查找网页应用程序漏洞的综合类渗透测试工具,包含拦截代理、自动代理、被动代理、暴力破解、端口扫描及蜘蛛搜索等功能。是会话类调试工具。

3. Vega
  开源的web应用程序安全测试平台,Vega能帮助验证SQL注入、跨站脚本(XSS)、敏感信息泄露和其余一些安全漏洞。Vega使用java编写,有GUI,能够在多平台下运行。Vega相似于Paros Proxy, Fiddler, Skipfish and ZAproxy。

4. Paros
  paros,是一个对Web应用程序的漏洞进行评估的代理工具,即一个基于Java的Web代理程序,能够评估Web应用程序的漏洞。它支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段等项目。它包括一个Web通讯记录程序,Web圈套程序(spider),hash计算器,还有一个能够测试常见的Web应用程序攻击(如SQL注入式攻击和跨站脚本攻击)的扫描器。该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等。

5. proxystrike
  Web会话安全分析工具ProxyStrike
  在Web应用中,客户端发出一次请求,服务器响应一次。这构成一个完整的会话。经过分析请求和响应的数据,能够发现Web应用存在的漏洞。Kali Linux提供一款专用工具ProxyStrike。该工具提供HTTP代理功能,能够跟踪HTTP会话信息,并进行分析统计。同时,该工具也提供拦截功能,安全人员能够对每一个会话进行分析和修改,以获取服务器的不一样响应。
  该工具还经过插件模式,提供安全扫描功能。该工具默认集成SQL注入和XSS两个插件。在捕获会话的同时,该工具会自动进行安全检测,以发现目标服务器存在的漏洞。安全人员也可使用该工具对目标网站进行爬取,以搜集更多的网站资源,并同时进行安全检测。

19.Kali漏洞分析之BurpSuite

  Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。全部的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。

工具箱:

  • Proxy--是一个拦截HTTP/S的代理服务器,做为一个在浏览器和目标应用程序之间的中间人,容许你拦截,查看,修改在两个方向上的原始数据流。
  • Spider--是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
  • Scanner[仅限专业版]--是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。
  • Intruder--是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
  • Repeater--是一个靠手动操做来补发单独的HTTP 请求,并分析应用程序响应的工具。
  • Sequencer--是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
  • Decoder--是一个进行手动执行或对应用程序数据者智能解码编码的工具。
  • Comparer--是一个实用的工具,一般是经过一些相关的请求和响应获得两项数据的一个可视化的"差别"。
  • Intruder是Burp套件的优点,它提供一组特别有用的功能。它能够自动实施各类攻击,包括:资源枚举、数据提取、模糊测试等常见漏洞。在各类有效的扫描工具中,它可以以最细化、最简单的方式访问它生产的请求与响应,容许组合利用我的智能与该工具的控制优势。

(1)首先配置监听端口,配置浏览器

(2)而后就能够查看全部请求的数据包

(3)点击数据包,能够查看包内容

(4)右键单击包,选择“send to intruder”,便可进行攻击

20.Kali漏洞分析之Fuzz工具

Fuzz是模糊测试的工具,是模糊测试时漏洞挖掘过程当中的重要一步。

1. Bed.pl
  Bed(Bruteforce Exploit Detector)是一个纯文本协议的Fuzz工具,可以检查常见的漏洞,如缓冲区溢出,格式串漏洞,整数溢出等。
使用参数以下:
-s 针对FTP协议,FTP参数
-t 目标IP地址
-p 目标端口
-o timeout 发送一连串畸形数据包,尝试使程序报错,进行判断。

2. Fuzz_ipv6
  Fuzz_ipv6是THC出品的针对IPV6协议的模糊测试工具

3. Ohrwurm
ohrwurm 是一个小巧而简单的RTP模糊器,它已经在少许的SIP**上测试过了,它们都没有经受voip分析工具包的模糊测试

4. Powerfuzzer
Powerfuzzer做为Fuzz请求的工具 ,BurpSuit等Web代理工具也具备相应Fuzz能力。

5. Wfuzz
  针对Web应用的模糊测试工具,能够进行Web应用暴力猜解,也支持对网站目录、登陆信息、应用资源文件等的暴力猜解,还能够进行get及post参数的猜解,sql注入、xss漏洞测试等。该工具全部功能依赖于字典。

  • 登陆get请求,登陆页面口令猜解
    wfuzz -c -z file,users.txt -z file,pass.txt -hc
    页面数目猜解
  • wfuzz -c -z range,1-10 --hc=BBB

3、实践练习

SQL注入实验


相关知识

  • SQL语言
    SQL(Structured Query Language,结构化查询语言):是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

  • SQL注入
    SQL注入:SQL注入能使攻击者绕过认证机制,彻底控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎全部的Web应用在后台都使用某种SQL数据库。跟大多数语言同样,SQL语法容许数据库命令和用户数据混杂在一块儿的。若是开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不只能向Web应用输入数据,并且还能够在数据库上执行任意命令了。

  • SQL注入危害
    一、非法读取、篡改、添加、删除数据库中的数据。
    二、盗取用户的各种敏感信息,获取利益。
    三、经过修改数据库来修改网页上的内容。
    四、私自添加或删除帐号。
    五、注入木马等等。

  • SQL注入攻击防范措施
    1.使用类型安全的参数编码机制
    2.凡是来自外部的用户输入,必须进行完备检查
    3.将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象
    4.增强SQL数据库服务器的配置与链接

环境搭建

启动mysql:sudo mysqld_safe

启动apache服务器:sudo service apache2 start

配置DNS:sudo vim /etc/hosts
上述的URL仅仅在镜像内部能够访问,由于修改了/etc/hosts文件使http://www.sqllabmysqlphpbb.com指向本机IP127.0.0.1。若是须要在其余机器访问,应该修改hosts文件,使URL映射到phpBB2所在机器的IP。

配置网站文件:sudo vim /etc/apache2/conf.d/lab.conf

关闭对抗措施

PHP提供了自动对抗SQL注入的机制,被称为magic quote,咱们须要关闭它:sudo vim /etc/php5/apache2/php.ini

  • 找到/etc/php5/apache2/php.ini
  • 找到magic_quotes_gpc = On这一行
  • 改成magic_quotes_gpc = Off
  • 重启Apache:”sudo service apache2 restart”

对select的攻击

系统会要求你登录。这个登录认证由服务器上的login.php实现,须要用户输入用户名和密码来经过认证。
在用户名输入ted'#,密码空着就行,ted是一个已经存在的用户名,用单引号结束这个字符串,用#转义掉后面的语句。

对update的攻击

当用户想要在phpBB2中修改他们的资料时,能够点击Profile,而后填写表单修改。用户发送修改请求后,会执行include/usercp_register.php中的一条UPDATE SQL语句。在这条语句中一样有一个SQL注入漏洞,能够用它来达到如下目标:在不知道其余人密码的状况下修改其资料。


XSS攻击实验


XSS攻击步骤:
(1)攻击者构造出一个包括恶意脚本的bank.com登陆请求连接,并经过Email/HTTP等方式将攻击连接发送给其它bank.com的网站用户;
(2)受害用户点击攻击连接后,将会把恶意连接中包含的恶意脚本当作用户名参数提交给bank.com的登录处理网页;
(3)因为bank.com登陆处理页面存在XSS漏洞,将会在反馈的欢迎页面中包含恶意客户端脚本;
(4)攻击者的恶意客户端脚本在受害用户浏览中执行,一般会驱动浏览器向攻击者发送会话令牌。如会话ID、Cookie信息等;
(5)攻击者得到用户会话令牌以后,就能够劫持用户会话,或者伪造用户登陆bank.com,并可实施进一步攻击。

  • 测试xss漏洞
    在seed环境中的phpBB论坛上发布含有脚本“”的帖子,打开帖子后会出现下图所示页面,表示该论坛程序存在XSS漏洞

  • 显示用户会话Cookie

四《python 黑帽子》

  第四章码云连接

相关文章
相关标签/搜索