2019-2020-2 20175322周弋鸿 《网络对抗技术》Exp9 Web安全基础

一、实践目标

实践对象

  • Kali Linux

实践内容

  • Webgoat实践下相关实验
  • 理解常用网络攻击技术的基本原理

实践要求

  • 包括(SQL,XSS,CSRF)不少于7个题目

二、实践步骤

任务一:WebGoat

  • 下载JDK安装包
  • 建立目录,将下载的jdk复制过去并解压
sudo mkdir -p /usr/local/java
sudo cp jdk-8u161-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar xzvf jdk-8u161-linux-x64.tar.gz
  • 配置环境变量
sudo vim /etc/profile
###复制以下代码到文件结尾
JAVA_HOME=/usr/local/java/jdk1.8.0_161
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_161/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_161/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_161/bin/javaws" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_161/bin/javaws" 1
  • 设置默认JDK
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_161/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_161/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_161/bin/javaws
  • 重新载入profile
source /etc/profile
  • 通过java -version以及javac -version即可看到是否安装完成

  • 下载webgoat-container-7.0.1-war-exec.jar文件

  • 因WebGoat默认使用8080端口,所以开启前先用netstat -tupln | grep 8080查看端口是否被占用,如果被占用,用kill 进程号终止占用8080端口的进程

  • 普通安装,需要在含有webgoat-container-7.0.1-war-exec.jar文件的目录下执行java -jar webgoat-container-7.0.1-war-exec.jar

  • 浏览器打开WebGoat,输入http://localhost:8080/WebGoat进入WebGoat登录界面

  • 用默认用户名密码登录

任务二:SQL注入攻击(Injection Flaws)

命令注入(Command Injection)

  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改

  • 在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加"&&ifconfig"

  • 点击view,可以看到执行指令后的网络端口使用情况和IP地址,攻击成功

数字型注入(Numeric SQL Injection)

  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改

  • 在选中的城市编号Value值中添加or 1=1

  • 显示所有城市的天气情况,攻击成功

日志欺骗(Log Spoofing)

  • 在 username 中填入Zyh%0d%0aLogin Succeeded for username: admin,密码随意,可以看到登陆成功

  • 这种漏洞可以被攻击者利用以添加恶意脚本,脚本的返回信息管理员能够通过浏览器看到

字符串注入(String SQL Injection)

  • 姓名框输入Smith' or 1=1--,执行后可以看到所有人的卡号等信息

数据库后门Database Backdoors

  • 输入101查看现有的信息

  • 使用101; update employee set salary=100000,执行两条语句,第一条用于查看信息,后面的update则将薪水更新为100000

  • 使用101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20175322@hackme.com'WHERE userid = NEW.userid在每行插入前修改邮箱为指定邮箱

任务三:XSS攻击

XSS 钓鱼(Phishing with XSS)

  • 编写好表单代码,在搜索框输入代码,页面增加一个表单

  • 输入用户名和密码信息,攻击者就可以通过WebGoat获取这些信息

存储型XSS攻击(Stored XSS Attacks)

  • title中随意输入,留言板中输入<script>alert("I'm 20175322!");</script>
  • 下方Message List中会新增刚输入的Tile名字的链接,点击链接

反射型XSS攻击(Reflected XSS Attacks)

  • 输入<script>alert(" 20175322!");</script>,之后提交

任务四:CSRF攻击

跨站请求伪造(Cross Site Request Forgery (CSRF))

  • 根据自己参数的实际情况,在message中使用<img src="http://localhost:8080/WebGoat/attack?Screen=321&menu=900&transferFunds=5000" width="1" height="1" />
  • 点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元

绕过 CSRF 确认( CSRF Prompt By‐Pass)

  • 根据自己参数的实际情况,在message中使用
<iframe src="attack?Screen=329&menu=900&transferFunds=1000"> </iframe>
<iframe src="attack?Screen=329&menu=900&transferFunds=CONFIRM"> </iframe>
  • 点击Submit提交,攻击成功

三、实践报告

基础问题

1.SQL注入攻击原理,如何防御

  • 原理:Web应用对后台数据库查询语句处理存在的安全漏洞。通过把SQL命令插入到Web表单等查询字符串中,使服务器执行语句时执行攻击者输入的恶意SQL命令。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作。
  • 防御:
    • 后台控制输入的长度或者禁止用户输入一些特殊符号
    • 加密数据库中的内容

2.XSS攻击的原理,如何防御

  • 原理:将一些恶意html标签或者javascript脚本插入到Web页面中,当用户浏览该页时,控制用户浏览器。攻击者利用用户对原网站的信任,执行用户不期望的命令。
  • 防御:
    • 用户提高防范意识,不要轻易输入个人信息
    • 限制用户输入,筛选字符
    • 运用转义安全字符手段消除潜在的威胁的字符

3.CSRF攻击原理,如何防御

  • 原理:跨站请求伪造,冒名登录。伪装来自受信任用户的请求来利用受信任的网站(钓鱼网站)。
  • 防御:
    • 用户提高防范意识,不要轻易输入个人信息
    • 验证请求中的Token,并且每一个重要的post提交页面都使用一个验证码
    • 定期清理cookie或不使用cookie
    • 添加加随机验证,验证请求的来源是否是合法用户

实践感想

  • 这是本课程的最后一个实验,简单学习了SQL注入攻击、XSS攻击和CSRF攻击。实验进行地比较顺利,通过自己动手实践,发现周围的网络环境其实很不安全,平时要注意保护个人的信息安全。
  • 九次实验都顺利完成,知识面得到了极大的拓展,感觉自身收获很多。
posted @ 2020-05-24 22:24  20175322周弋鸿  阅读(157)  评论(0编辑  收藏  举报