Exp9 Web安全基础

20154305 齐帅

一、实验要求

本实践的目标理解常用网络攻击技术的基本原理。

Webgoat实践下相关实验:

【目录】

【第一部分 WebGoat 8.0】

  • 1.WebGot

  • 2.BurpSuite

  • 3.Injection Flaws

  • 4.Cross-Site Scripting

【第二部分 WebGoat 7.1】

  • 1.Injection Flaws

      1.1 Numeric Injection
    
      1.2 LAB:SQL Injection
    
      1.3 String SQL Injection
    
      1.4 Log Spoofing
    
      1.5 Database Backdoors
    
      1.6 Blind Numeric SQL Injection
  • 2.Cross-Site Scripting (XSS)

      2.1 Phishing with XSS
    
      2.2 Stored XSS Attacks
    
      2.3 Reflected XSS Attacks
  • 3.Cross Site Request Forgery(CSRF)

  • 4.CSRF Prompt By-Pass

二、实践过程

【第一部分】

1.安装WebGoat 8.0

WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来讲授Web应用程序安全课程的。这个应用程序提供了一个逼真的教学环境,为用户完成课程提供了有关的线索。
因为WebGoat是基于java开发的软件,所以需要JDK环境,还需要下载一个WebGoat.jar包.

至于下载这个WebGoat.jar包真的费了好久时间,因为网上找到的下载链接都被墙了,这个链接你可以试一下,最后费了九牛二虎之力翻了一下墙,下载好的jar包和JDK我放在了百度云。

看一眼哈,我真的FQ了,现在可是严打的情况,我免费FQ也不容易啊~

FQ软件叫蓝灯,还挺靠谱的,哈哈哈~

jar包下载好了以后放到kali里面,键入java -jar *.jar 等着就可啦,*为文件名。

打开火狐,键入127.0.0.1:8080/WebGoat (注意大小写),注册一个用户就可以啦~

sad,是全英文的,我真的头大了~还需要依靠翻译软件理解不是人话的东西。。。

2.Injection Flaws

这个题就是你输入姓名会得到相关信息

如上,用万能公式弄一下就得到了所有人的信息啦~注意这个是字符串注入。

下一题是输入用户ID得到信息,同样输入一个永真式,数字注入,得到所有人的信息。

SQL注入进阶:

本题要求通过Smith的信息联合得到Dave的密码,根据提示信息可以得到存储用户密码的表名为 user_system_data,列为password。

先键入Smith' order by 7--,如下,可以得到正确的反馈信息

键入Smith' order by 8--,得到错误反馈,说明列数为7。

根据以上信息,键入Smith' union select null,null,null,null,null,null,null from user_system_data --联合查询判断数据回显位置。

键入Smith' union select null,user_name,password,null,null,null,null from user_system_data -- 获取Dave的密码。

输入Dave的密码,正确~

3.BurpSuite

BurpSuite是用于攻击web应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。
通过代理服务器可以截获http报文进行修改。

kali自己带这个东西,程序里面搜索一下就行了,开启。

配置本机BurpSuite,在Proxy->Option中选择add添加项:

设置浏览器,进行代理:

4.Cross-Site Scripting

这个题就是要你打开两个相同的网页,然后插入一段JS代码,显示cookie,比较两个值是否相同:

经过比较,两个值是相同的,所以输入yes,通过~!

此题第一步是要求你在一个购物车支付界面面找到优惠券的代码,给你自己打折

如上,我们查看网页源代码,找到判断优惠券的函数。

找到优惠券具体函数:

查看优惠券的值:PLATINUM

在支付界面输入优惠券代码,完成第一步:

第二步,要求全单免费,直接把值改成0呀,哈哈哈。

可以看到真的不要钱了,完成。很神奇~

【第二部分】

因为第一部分WebGoat8.0版本题型进行了更新,再加上我的三脚猫英语真的做不来了,我认输,so,我下载了一个WebGoat 7.1版本,进行试验

1. Injection Flaws

1.1 Numeric Injection

要求能够显示所有地方的天气,与8.0版本不同,这个是下拉框的,所以不能直接在网页注入,需要修改网页代码。

搜索 Columbia,找到value,修改value=“101 or 1=1”,注入一个永真式,成功!

1.2 LAB:SQL Injection

Stage 1:String SQL Injection

此题通过注入实现免密码登录,根据老师课上的演示,直接修改长度限制,然后进行注入

密码栏输入' or 1=1 --

成功!

Stage 3:Numeric SQL Injection

用员工账号登陆,进入员工页面后再通过SQL注入来查看老板的账户信息。

用上一步的方法进入员工账号:

修改网页源代码,把其中的value值改为101 or 1=1 order by salary desc --,此方法很巧妙,按照工资高低排序

点击viewprofile按键

成功!

1.3 String SQL Injection

SQL注入查看所有人的信息,简单的万能注入:

成功!

1.4 Log Spoofing

此题目的是通过注入恶意字符串,按照规则伪造出一条日志:

在username输入:zh%0d%0aLogin Succeeded for username: admin



成功!

1.5 Database Backdoors

此题的要求是修改后台数据库数据给自己涨工资,然后在数据库中给自己造一个后门,把所有用户的邮箱换成自己的。

在输入userid的地方输入 101; update employee set salary=20154305

成功!

建后门:在输入框注入如下语句101;creat TRIGGER lxmBackDoor BEFORE insert on employee FOR EACH ROW BEGIN update employee SET email='20154305@besti.edu.cn' WHERE userid = NEW.userid

成功!

1.6 Blind Numeric SQL Injection

盲注,就是结果只有真和假,需要自己构合适的注入语句去暴力猜测:

输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 4000 );

根据返回结果可知,pin值小于4000.

修改值,根据返回结果逐步求精:

pin值大于2000.

继续。。。

其实 BurpSuite 提供了暴力破解工具,但是我这个好像有点问题,抓不到包

最后结果是2364,当然不是一个一个试的啦~~

成功!

2. Cross-Site Scripting (XSS)

2.1 Phishing with XSS

此题要我们在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/WebGoat/catcher?PROPERTY=yes

输入用户名和密码:

成功!

2.2 Stored XSS Attacks

此题用户A可以任意输入,然后用户B点击用户A的留言,触发XSS

title可以任意输入,Message输入消息,可以嵌入一段js代码,用户点击后即可触发,例如输入:<script>alert("Welcome Qsss");</script>

成功!

2.3 Reflected XSS Attacks

此题是一个反射型XSS攻击

在enter your three digit access code:处输入 <script>alert("Qsss attack succeed!");</script>

成功!

3. Cross Site Request Forgery(CSRF)

此题是要写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件

在Message里输入恶意代码:<iframe src="attack?Screen=282&amp;menu=900&amp;transferFunds=6666"></iframe>

点击提交,会出现这个消息,点击这个消息

成功!

4. CSRF Prompt By-Pass (不懂-_-)

此题包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)

此题参照了学姐的步骤,但是没有出现进入转账的请求界面,参考答案给了一段代码,但是出来的是这个结果,有点蒙蒙的~~

至此,实验结束~~

三、漏洞原理及预防

1.SQL注入

- 原理

就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

- 防御

(1)检查变量数据类型和格式

如果你的SQL语句是类似where id={$id}这种形式,数据库里所有的id都是数字,那么就应该在SQL被执行前,检查确保变量id是int类型;如果是接受邮箱,那就应该检查并严格确保变量一定是邮箱的格式,其他的类型比如日期、时间等也是一个道理。总结起来:只要是有固定格式的变量,在SQL语句执行前,应该严格按照固定格式去检查,确保变量是我们预想的格式,这样很大程度上可以避免SQL注入攻击。

(2)过滤特殊符号

对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。以PHP为例,通常是采用addslashes函数,它会在指定的预定义字符前添加反斜杠转义,这些预定义的字符是:单引号 (') 双引号 (") 反斜杠 () NULL。
(3)绑定变量,使用预编译语句
MySQL的mysqli驱动提供了预编译语句的支持,不同的程序语言,都分别有使用预编译语句的方法。这样做的好处就是,如果我输入密码:'or 1='1,那他也只会被当作密码来处理,不会和sql语句其他结构关联

2.XSS攻击

- 原理

恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。

- 防御

一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤
在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等
在输出方面,在用户输内容中使用 <XMP> 标签,标签内的内容不会解释,直接显示。
严格执行字符输入字数控制,因为XSS代码往往很多,所以要对字符数进行控制

3.CSRF

- 原理

跨站请求伪造,攻击者盗用了你的身份,以你的名义发送恶意请求。
CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账
造成的问题包括:个人隐私泄露以及财产安全。

- 防御

(1)验证码
可以在某些敏感操作过程中,加入验证码,以确认用户身份
(2)Token
CSRF能攻击成功,根本原因是:操作所带的参数均被攻击者猜测到。既然知道根本原因,我们就对症下药,利用Token。当向服务器传参数时,带上Token。这个Token是一个随机值,并且由服务器和用户同时持有。当用户提交表单时带上Token值,服务器就能验证表单和session中的Token是否一致。

四、实验总结与感想

WebGoat8.0链接, WebGoat 7.1链接JDK链接蓝灯FQ链接

本次实验也是最后一个实验,我觉得是这些实验里面最难的最难的最难的,首先因为页(我)面(的)是(英)英(语)文(太)的(烂),增加了实验的难度,完全靠翻译软件在生活,其次我的这个WebGoat版本比较新,没有了参考系,只能自己在那里刻苦钻研。最终我还是臣服了,换了一个WebGoat版本,重新再来吧。

做了这么多的网络攻防实验,真的收获很多,都是能看到实际效果的危险、漏洞、后门、病毒,网络安全真的需要我们重视起来,同时也增强了我的安全防范意识,自从做了那个后门的实验以后我就把我电脑摄像头粘起来了,同时这门课也激发了我对网络安全这方面的兴趣,日后的学习工作生活中也会更加关注这方面的信息和事件。

授之以鱼不如授之以渔~

Exp9 Web安全基础的更多相关文章

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

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  2. 20155312 张竞予 Exp9 Web安全基础

    Exp9 Web安全基础 目录 基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 实践过程记录 WebGoat准备工作 1.XSS攻 ...

  3. 20155205 郝博雅 Exp9 Web安全基础

    20155205 郝博雅 Exp9 Web安全基础 一.实验内容 一共做了13个题目. 1.WebGoat 输入java -jar webgoat-container-7.1-exec.jar 在浏览 ...

  4. 20155339 Exp9 Web安全基础

    Exp9 Web安全基础 基础问题回答 (1)SQL注入攻击原理,如何防御 原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到 ...

  5. 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础

    2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...

  6. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

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

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

  8. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  9. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

随机推荐

  1. Win10 远程桌面连接出现“要求的函数不受支持”的解决办法之修改注册表

    问题起因 笔者自己在阿里云上搞服务器,有一台 Windows Server 必须通过远程桌面连接来管理,由于没能完全关掉 Win10 自带的烦人的系统更新,导致昨天安装完更新后出现了连接远程桌面时“要 ...

  2. python数据类型及其详解

    一.数据类型介绍 1.字符串(string) 三种类型:单引号,双引号,三引号 a = 'jam' b = "JamHsiao" c = '''JAMHSIAO''' print( ...

  3. step_by_step_ABP规约模式

    一段时间没有在github 上浏览ABP项目,几天前看到ABP新增规约模式,开始了解并学习文档   记录一下 Introduction 介绍 Specification pattern is a pa ...

  4. SCRUM管理之KPI与OKRs结合

    以下内容是本人在担任ScrumMaster中的实际应用,供大家交流学习参考. 目录 1绩效考核原则 4 2绩效考核范围 4 3绩效计算 4 3.1KPI 4 3.1.1KPI指标评分表 4 3.1.2 ...

  5. sql yog出现2013错误

    首先用telnet检查一下你的防火墙端口,如果连接失败,配置防火墙. 配置防火墙,开启3306端口 find -name iptables vim /etc/sysconfig/iptables -A ...

  6. lets encrypt与openssl结合实现双认证

    lets encrypt,是一个免费的证书认证机构,不需要导入根证书.但是这个认证机构只能认证服务端的,如果想要实现双认证,lets encrypt就不行了. openssl可以自签发,可以进行双认证 ...

  7. asp.net 下载视频 保存视屏

    第一张图片为html,第一站图片为js上传视频并播放,限定大小,第三张图片是将视频保存到以字节流的方式保存到数据中,或者是将视频保存到项目中 String filename=this.Filevide ...

  8. 14. Redis配置统计字典

    14. Redis配置统计字典14.1 info系统状态说明14.1.1 命令说明14.1.2 详细说明14.2 standalone配置说明和分析14.2.1 总体配置14.2.2 最大内存及策略1 ...

  9. sqoop mysql导入hive 数值类型变成null的问题分析

    问题描述:mysql通过sqoop导入到hive表中,发现有个别数据类型为int或tinyint的列导入后数据为null.设置各种行分隔符,列分隔符都没有效果. 问题分析:hive中单独将有问题的那几 ...

  10. 通过maven-assembly-plugin将Springboot项目打包成tar.gz压缩包,在Linux环境可执行脚本直接安装成系统服务

    1.在pom.xml中添加maven-assembly-plugin依赖,同时需将默认生成的spring-boot-maven-plugin依赖删除,否则最终打出的发行包启动会有问题 <plug ...