20154324 刘康权 Exp9 Web安全基础

一、实践目标与内容

  1. 理解常用网络攻击技术的基本原理。
  2. 在Webgoat,实践相关实验。
  • SQL注入攻击
  • XSS攻击
  • CSRF攻击

二、实践过程与步骤

1.环境配置

1.1下载webgoat-container-7.1-exec.jar和jdk-8u172-linux-x64.tar.gz,解压jdk-8u172-linux-x64.tar.gz,并配置JDK的环境后,重载Profile文件,输入命令java -version`就可以看到我们的JAVA的版本已经更新了

1.2.因为我的文件目录里面只有webgoat的jar,所以输入以下命令,等待一会就可以看到webgoat运行成功了(如果有多个jar文件,只需要把*改成文件名就行了)

java -jar *.jar

1.3打开Firefox,输入http://127.0.0.1:8080/WebGoat/login.mvc访问webgoat,因为我的webgoat是7.1,不需要注册,只需要使用网页页面下面的管理员用户登录就行了

1.4 在Firefox页面中点击右上角,选择Add-ons,搜索Firebug就能找到这个插件并安装,然后就可以开整了Firebug相关介绍

2.SQL注入攻击

2.1 命令注入(Command Injection)目标:能够在目标主机上执行系统命令

2.1.1右键网页,点击inspect Element,查看并编辑网页源代码,查找BasicAuthentication.help,在旁边加上"& netstat -an & ipconfig"

2.1.2点击网页中的view按钮,就能在网页下面看到系统的网络连接情况了

2.2 数字型SQL注入(Numeric SQL Injection)目标:注入一条SQL字符串,以显示所有显示的天气数据

2.2.1右键网页,点击inspect Element,查看并编辑网页源代码,查找New York,在option value中加入恒等真式or 1=1

2.2.2点击go就可以看到所有的天气数据了

2.3 日志欺骗(Log Spoofing)目标:通过在日志文件中添加一个脚本像用户名“admin”成功登录

2.3.1在user name中输入lkq%0d%0aLogin Succeeded for username: admin,,其中%0d是回车,%0a是换行符
2.3.2点击login in就可以看到成功啦

2.4 XPATH注入(XPATH Injection)目标:作为迈克,尝试查看其他员工的数据

2.4.1在User Name中输入永真式lkq ' or 1=1 or 'a' ='a
2.4.2点击submit就可以看到所有员工的数据了

2.5 字符串SQL注入(String SQL Injection)目标:作为Smith,注入一个SQL字符串,显示所有信用卡号

2.5.1输入永真式Smith ' or '1'='1
2.5.2点击Go!,就可以查看所有信用卡号了

2.6 字符串SQL注入(String SQL Injection)目标:使用SQL注入作为老板(“Neville”)登录,并使用所有功能

2.6.1第一次作为老板,在password中输入永真式,登录,发现失败了,经过查看源代码,找到原因为:password最大长度不够,于是再源代码中修改最大长度

2.6.2输入永真式' or 1=1 --,其中--是将后面的代码注释掉,就能够登录成功了

2.7 盲数字SQL注入(Blind Numeric SQL Injection)目标:在表格中找到字段pin的值

2.7.1输入以下代码,判断pin的值是否大于2500,发现无效,于是推断pin的值小于等于2500

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500);

2.7.2使用二分法进行反复猜测,最终找到pin的值为2364

3.XSS攻击

3.1 网络钓鱼和XSS(Phishing with XSS)目标:使用XSS和HTML插入,将html插入到该请求凭证中,添加javascript来实际收集凭证

3.1.1在search框中输入写好的html代码,代码如下:




  • This feature requires account login:



    Enter Username:

    Enter Password:




3.1.2点击search后,下拉网页就可以看到输入框了,在里面输入任意字符,点击login,就可以看到攻击成功了

3.2 存储的跨站点脚本(XSS)攻击(Stored XSS)目标:在搜索人员页面上使用一个漏洞来创建包含反射XSS攻击的URL。确认另一个使用该链接的员工受到攻击的影响。

3.2.1作为tom登录,点击ViewProfile查看配置文件后,点击EditProfile进行编辑,将任意一栏数据修改为:

<script>alert('20154324');</script>

3.2.2保存后登出,作为jerry登录,点击Search For User查找Tom,就可以看到攻击成功了

3.3 执行反射的XSS攻击(Reflected XSS)目标:执行反射XSS攻击,在搜索人员页面上使用一个漏洞来创建包含反射XSS攻击的URL。确认另一个使用该链接的员工受到攻击的影响

3.3.1作为Tom登录后,点击Search For User
3.3.2在搜索框中输入以下代码:<script>alert('lkq');</script>,就可以看到攻击成功了

4.CSRF攻击

4.1跨站请求伪造(CSRF)目标:给新闻组发邮件。电子邮件包含一个URL指向恶意请求的图像。在这节课中,URL应该指向“攻击”servlet,其中包含了“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,它具有任意的数值

4.1.1查看自己电脑的Screen和menu的值

4.1.2Title中任意输入,在Message中输入写好的代码,点击Submit后,点击下方的链接,就可以看到攻击成功了

<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>

4.2 CSRF Prompt By-Pass 目标:输入代码,第一个为转帐的请求,第二个请求确认第一个请求触发的提示

4.2.1查看自己电脑的Screen和menu的值

4.2.2Title中任意输入,在Message中输入写好的代码,点击Submit后,点击下方的链接,就可以看到攻击成功了,代码如下:




三、基础问题与回答

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

  • 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。
  • 防御方法
  1. 普通用户与系统管理员用户的权限进行严格的区分。
  2. 不使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
  3. 加强对用户输入的验证
  4. 多多使用SQL Server数据库自带的安全参数
  5. 必要的情况下使用专业的漏洞扫描工具来寻找可能被攻击的点

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

  • 攻击原理:在编写代码的时候,没有对用户输入数据的合法性进行判断,攻击者通过对网页注入可执行代码且成功地被浏览器执行,这些代码包括HTML代码和客户端脚本,达到攻击的目的,形成了一次有效XSS攻击
  • 防御方法
  1. 在表单提交或者url参数传递前,对需要的参数进行过滤
  2. 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等
  3. 检查输出,严格控制输出

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

  • 攻击原理:是一种对网站的恶意利用也就是人们所知道的钓鱼网站,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站,是一种依赖web浏览器的、被混淆过的代理人攻击
  • 防御方法
  1. 在form中包含秘密信息、用户指定的代号作为cookie之外的验证
  2. 验证 HTTP Referer 字段,根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。
  3. 在请求地址中添加 token 并验证,可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

四、心得体会

  • 这是最后一次实验了,通过webgoat深入理解并运用了多种攻击,尝试了很多东西,这九次实验,可以说是非常有意思了(除了调试环境、调试bug),收获良多,虽然不能成功攻击他人,但是能够认识并且做出相应的防范了。学习到了不少的东西,也进行了多次的实践与尝试。
posted @ 2018-05-29 15:28  20154324  阅读(164)  评论(0编辑  收藏