• 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攻击。实验进行地比较顺利,通过自己动手实践,发现周围的网络环境其实很不安全,平时要注意保护个人的信息安全。
    • 九次实验都顺利完成,知识面得到了极大的拓展,感觉自身收获很多。
  • 相关阅读:
    openmp 循环并行化循环嵌套内部无法并行
    c++:strcat潜在的错误不报告
    script php / phpfpm /
    webserver waf / WAF 2.0 / ASERVER/1.2.9
    web test LoadRunner FTP / vsftpd / vsftp / WebUploader 0.1.5 / shangchuan
    my ReadTravel_Singapore / singapore / xinjiapo / lvyou / travel
    OS Security var_log_secure / services / port
    EF操作数据库的步骤和一些简单操作语句
    (大快人心,必须转啊)中国体操男队完美逆转卫冕 日本申诉成功获银牌
    [置顶] 【C/C++学习】之一、指针和引用的区别
  • 原文地址:https://www.cnblogs.com/zyh5322/p/12944868.html
Copyright © 2020-2023  润新知