20155208徐子涵《网络对抗》Exp9 Web安全基础

实验要求

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

实验过程

最后一次了,没有选择尝试免考项目的我最后一次进行这个紧张刺激的活动了。

WebGoat

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

  • 首先我们在kali里面下载Webgoat,这是一个jar包,因为在虚拟机面下载速度太慢了,所以我在主机中下载之后复制到了虚拟机中,之后在工作目录提取文件,使用指令java -jar webgoat-server-8.0.0.M14.jar打开webgoat:

  • 然后在网页中输入http://localhost:8080/WebGoat进入登录界面:

  • 7.0.1版本会有默认的用户名和密码,直接登录开始练习

Phishing with XSS

这一练习是说:如果网页上存在已知的XSS攻击,本课程将举例说明网站如何支持网络钓鱼攻击

这里我们简单的使用一个登陆的代码,我们作为受害者输入用户名和密码时,会显示我们刚刚输入的信息,效果如下:

攻击成功!

Stored XSS Attacks

储存性XSS攻击:

清理所有输入,尤其是稍后将用作OS命令,脚本和数据库查询的参数的输入总是一个好习惯。 对于永久存储在应用程序某处的内容而言,这一点尤其重要。 用户不应该能够创建可能导致其他用户在检索到用户消息时加载不需要的页面或不需要的内容的消息内容。

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

操作步骤为:

在Litle里随便输入某些内容

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

<script>alert("attacked by xzh ");</script>

然后点开刚创建的贴子:

成功攻击!

Reflected XSS Attacks

反射型XSS

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

操作如下:

输入带有攻击性的URL作为输入源:

<script>alert(" attacked by xzh");</script>

攻击成功!

如果我们输入错误的用户信息,会返回错误内容。

Cross Site Request Forgery (CSRF)

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

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

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

提交后,会在消息列表中看到一个新的消息,点击该消息,就会看到你所想要让对方看到的新闻:

攻击成功!

CSRF Prompt By-Pass

目标是向包含多个恶意请求的新闻组发送电子邮件:第一个传输资金,第二个请求确认第一个请求触发的提示。 这些URL应通过此CSRF-prompt-by-pass课程的屏幕,菜单参数以及具有诸如“5000”之类的数值的额外参数“transferFunds”来指向攻击servlet以启动传输并且字符串值“CONFIRM” 完成它。 您可以从右侧的插图复制课程参数以创建格式为“攻击?屏幕= XXX&menu = YYY&transferFunds = ZZZ”的网址。 无论谁收到这封电子邮件并恰好在那个时候进行认证,他的资金都将被转移。 当您认为攻击成功时,刷新页面,您会在左侧菜单中找到绿色检查。

具体操作是:

先查看参数:

在message中添加代码:

 <iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

攻击成功如下:

Injection Flaws练习

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

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

下面我们来进行这一方面的练习:

Command Injection

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

"& netstat -an & ipconfig"

然后会发现框里的选项被修改了,这时点击view:

可以看到命令被执行,出现系统网络连接情况

Numeric SQL Injection

这个练习的要求是:下面的表单允许用户查看天气数据。尝试注入导致所有天气数据显示的SQL字符串。

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

依旧利用firebug,在任意一个值比如101旁边加上or 1=1(这个方法我们在实验八的时候用过,因为这是一个永真值):



OK成功!

Log Spoofing

这一练习是通过向日志文件添加脚本来提升攻击。

下面的灰色区域表示将在Web服务器的日志文件中记录的内容。

目标是使其像“admin”用户名登录成功。

具体操作是:

在User Name文本框中输入:

xzh%0d%0aLogin Succeeded for username: admin

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

点击登录:

攻击成功!

String SQL Injection

在密码栏中输入

' or 1=1 --

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

结果发现是网页设置的长度不够,我们要对长度限制进行修改:

OK,修改完之后再登录,成功:

SQL Injection(Stage 3:Numeric SQL Injection)

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

101 or 1=1 order by salary desc --

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

我们就可以看到老板的工资信息:



Database Backdoors

先看用户的信息:

然后输入注入语句:

101; update employee set salary=90000

可以修改工资为90000

实验后回答问题

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

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

防御:对于SQL注入攻击的防范,我觉得主要还是应该从代码上入手:

采用预编译语句集PreparedStatement,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。它的原理就是sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析准备,因此也就避免了sql注入问题;

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

采用字符串过滤的方法;

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

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

原理:

XSS是代码注入的一种,它允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。

防御:

一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤;

检查用户输入的内容中是否有非法内容,如尖括号、引号等,严格控制输出。

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

原理:在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息。而CSRF是借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。

防御:

通过referer、token或者验证码来检测用户提交;

尽量不要在页面的链接中暴露用户隐私信息,对于用户修改删除等操作最好都使用post操作;

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

实验心得

这是本学期的最后一次实验了,这次是在平台上进行多个练习,从各个方面加强对网络攻防的理解与实践,希望之后还可以多做一下这类的实践,可以进一步提高自己的水平。

20155208徐子涵《网络对抗》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. shell+Zabbix export应用之AD环境删除离职人员登录主机之资料

    以实际环境:维护环境172.30网段主机 Zabbix hosts export出主机信息至 /tmp/ip.txt shell筛选出ip [root@server ~]# cat /tmp/ip.t ...

  2. C++学习笔记:多态篇之虚析构函数

    动态多态中存在的问题:可能会产生内存泄漏! 以下通过一个例子向大家说明问什么会产生内存泄漏: class Shape//形状类 { public: Shape(); virtual double ca ...

  3. fiddler 4 设置代理

    Windows使用一种被称为“AppContainer”的隔离技术,它可能会干扰lmmersive应用程序和Edge浏览器的流量捕捉.使用进度Telerik Fiddler的工具栏上的WinConfi ...

  4. HTML、CSS(小笔记)

    这是我自己在学习html.css时觉得要记的东西太多总结一些较为常用的标签. HTML <p></p>段落标签 <hn></hn>标题标签n数值为1~6 ...

  5. 使用docker安装sentry

    一.安装docker yum -y install docker 更换docker镜像源为中科大的 在配置文件/etc/docker/daemon.json中加入 { "registry-m ...

  6. 根据不同访问设备跳转到PC页面或手机页面

    目前很多网站都是采用了响应式自适应页面的设计了,根据访问设备的不同,显示不同的内容.但是还是会有一些节奏比较慢的网站,还是PC页面和手机PAD页面不同的访问域名.正好我这里有个需要,同一个域名要根据不 ...

  7. eclipse起不起来web项目

    eclipse 启动java web项目tomcat无报错,但是项目没有启动成功,可能存在以下原因 1.Maven Dependecies 可能不存在 解决:点击Add将Maven Dependeci ...

  8. 解决linux root 认证失败的问题

    https://jingyan.baidu.com/article/3052f5a1f1b17c97f31f8688.html

  9. css之positon与z-index

    在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共有四种不同的定位方法,分别是static.fixed.re ...

  10. oracle 同义词synonym

    在A用户下,想访问B用户下的表,一遍需要用 “用户名.表名 ”的格式进行访问.如果想不加用户名,直接访问,需要建同义词. 同义词语法如下: CREATE [PUBLIC] SYNONYM synony ...