2019-2020-2 网络对抗技术 20175311胡济栋 Exp9 Web安全基础

2019-2020-2 网络对抗技术 20175311胡济栋 Exp9 Web安全基础

目录

  • 一、实验介绍与问题回答
  • 二、实验内容
    • 1.WebGoat安装
    • 2.SQL注入攻击:命令注入、数字型注入、日志欺骗、SQL注入、字符串型注入、数据库后门、数字型盲注入、字符串型盲注入
    • 3.XSS攻击:XSS钓鱼、XSS存储攻击、XSS反射攻击
    • 4.CSRF攻击:跨站请求伪造、绕过CSRF确认
  • 三、实验中遇到的问题
  • 四、实验感想

一、实验介绍与问题回答

1.实验介绍

  • 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目。包括(SQL,XSS,CSRF)

2.问题问答

问题一:SQL注入攻击原理,如何防御?

  • SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
  • 具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

具体防御方法有如下几种:

  • 1.定制黑名单:将常用的SQL注入字符写入到黑名单中,然后通过程序对用户提交的POST、GET请求以及请求中的各个字段都进行过滤检查,筛选威胁字符。
  • 2.限制查询长度:由于SQL注入过程中需要构造较长的SQL语句,因此,一些特定的程序可以使用限制用户提交的请求内容的长度来达到防御SQL注入的目的,但这种效果并不好。
  • 3.限制查询类型:限制用户请求内容中每个字段的类型,并在用户提交请求的时候进行检查,凡不符合该类型的提交就认为是非法请求。
  • 4.白名单法:该方法只对部分程序有效,对一些请求内容相对固定的程序,可以制定请求内容的白名单,如:某程序接受的请求只有数字,且数字为1至100,这样可以检查程序接受的请求内容是否匹配,如果不匹配,则认为是非法请求。
  • 5.设置数据库权限:根据程序要求为特定的表设置特定的权限,如:某段程序对某表只需具备select权限即可,这样即使程序存在问题,恶意用户也无法对表进行update或insert等写入操作。
  • 6.限制目录权限:WEB目录应至少遵循“可写目录不可执行,可执行目录不可写”的原则,在次基础上,对各目录进行必要的权限细化。

问题二:XSS攻击的原理,如何防御?

  • XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼,它带来的危害是巨大的,是web安全的头号大敌。
  • XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。

问题三:CSRF攻击的原理,如何防御?

  • CSRF攻击:是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,攻击者盗用了你的身份,以你的名义发送恶意请求。造成的问题包括:个人隐私泄露以及财产安全。
  • 主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码。

主要防御手段有以下几种:

  • 验证请求中的Token:token可以在用户登录之后放于session中,然后每次请求都从session中拿出,与请求中的token相比。
  • 验证 Referer:如果黑客使用的是CSRS攻击,他只能在自己网站来实施CSRS攻击,那么他发出的请求中referer就会指向黑客自己的网站,那么服务器就会拒绝访问。服务器只需要在每个动账请求中验证referer,如果指向的是以bank.example域名开发的地址,那么就代表是合法请求,反之,就可能是黑客的CSRS攻击,服务器拒绝该请求。

二、实验步骤

1.WebGoat安装

  • WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入、访问控制、隐藏字段、Cookie等。

  • 首先需要下载更新jdk,如果不下载打开WebGoat的效果是这样的,菜单栏里没有选项

  • WebGoat需要Java SE8的支持,因此可以在官网下载jdk-8u251-linux-x64.tar.gz,我这里使用的是同学的jdk。

  • 建立目录,将下载的jdk复制过去并解压,我这里用的jdk是8u181版本的,依次运行以下代码

sudo mkdir -p /usr/local/java
sudo cp jdk-8u181-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar xzvf jdk-8u181-linux-x64.tar.gz
  • 配置相关环境变量sudo vim /etc/profile,将下面代码复制进末尾
###复制以下代码到文件结尾
JAVA_HOME=/usr/local/java/jdk1.8.0_181
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

  • 通知系统java位置,依次运行下面每一条代码
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_181/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_181/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_181/bin/javaws" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_181/bin/javaws" 1
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_181/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_181/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_181/bin/javaws
  • 重新载入profilesource /etc/profile java -version

  • 可以看到已经安装完成

  • https://github.com/WebGoat/WebGoat/releases/tag/7.0.1下载webgoat-container-7.0.1-war-exec.jar,放到kali中。

  • 在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat,等待一小会后出现如下提示则运行成功

  • 在浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面

  • 使用页面下端任意一个账号密码进行登录,可以看到如下页面:

  • 接下来就是在左侧选择各种选项进行相应的测试。

2.SQL注入攻击

命令注入(Command Injection)

  • 命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。

猜你喜欢

转载自www.cnblogs.com/hujidong42/p/12956439.html