一个HTTP请求,把网站打裂开了!

news/2024/5/12 19:53:38/文章来源:https://hollis.blog.csdn.net/article/details/120928690

今天给大家看一段神奇的代码。

利用这几行神奇的代码,居然能把网站打崩溃,这是怎么一回事呢?

就是下面这个函数,根据传进来的开始和结束位置,读取文件数据:

char* Read(int fd, int start, int end) {unsigned int length = end - start + 1;if (length > 1024)return NULL;return ReadFile(fd, start, end);
}

函数中最大只支持一次读取1024个字节,所以增加了一个判断逻辑。

现在请大家思考一下,这个函数有没有什么问题?

---思---

---考---

---5---

---秒---

---钟---

来思考一下,假设我像这样来调用这个函数:

Read(0, 0, 4294967295);

会发生什么事呢?

你可能已经注意到了,这里传了一个很特殊的参数过去,这个数乍一看很大,远远超过了1024,按理说会通不过函数内部的检查对吧?

但事情不是这么简单,这个特殊的数字——4294967295,是32位无符号整数所能表示的最大范围。

但是请注意Read这个函数的参数,startend都是int型变量,把4294967295传递给end的时候,会被当作有符号的整数解析,也就是 -1

现在来看Read函数中计算长度的这行代码:

unsigned int length = end - start + 1;

计算结果就是-1 - 0 + 1 = 0!

length的结果会是0!

很自然逃过了下面对长度的检查:

if (length > 1024)return NULL;

上面这段代码不只是一个假想的模型,实际上,它曾经真实存在过!

它的漏洞编号是:CVE-2015-1635

这是一个微软的互联网服务器IIS中的一个漏洞,更要命的是,这个漏洞位于IIS处理HTTP请求的HTTP.sys驱动程序中。

你知道的,驱动程序是运行在操作系统内核之中,一旦内核驱动执行出现异常,那后果,轻则蓝屏崩溃,重则直接被攻击者远程执行代码,控制服务器!

在HTTP 1.1版本的协议中,可以通过请求头中的Range字段,请求或上传指定资源的部分内容,比如像这样:

GET /bg-upper.png HTTP/1.1
User-Agent: curl/7.35.0
Host: 127.0.0.1:8180
Accept: */*
Range: bytes=0-10

其中的Range字段格式如下:

Range: bytes=start-end

微软的IIS为了提高性能,将HTTP协议的解析放在了内核驱动HTTP.sys中实现。

而其中对range字段的处理,就存在我们文章开头的那个逻辑错误,不同的是,我们上面的那个示例是一个32位整数的版本,而IIS这个真实的漏洞是64位整数产生的问题,但原理是一样的。

通过向存在漏洞的IIS服务器发送对应的HTTP请求,即可将目标服务器打蓝屏,实现DOS——拒绝服务攻击。

这种攻击方式就是——整数溢出攻击

接下来,咱们在搭建一个环境来验证一下。

在虚拟机中搭建一个IIS7的Web服务器:

db47a35c069ec8ab7cd2c9bb5ece7f6c.png

64位无符号整数能表示的最大数是:18446744073709551615,通过向服务器发送包含range参数的请求,有很大可能会导致服务器蓝屏。

使用神器metasploit来利用这个漏洞发起攻击:

a2b0b62d869c21f5b43403048601dc96.png

现在来看,服务器已经挂了:

26b0aa38f203ee9e29e8e6117d782217.png

为什么是很大可能,而不是一定蓝屏呢,如何实现稳定把服务器打蓝屏呢?这就需要进一步了解这个漏洞更详细的情况。

实际上这个漏洞原理比文章开头的那个逻辑要更复杂一些,这里只是做了一个简单入门介绍,关于这个漏洞的更详细情况,大家可以看一下360大神MJ0011当年写的一篇技术分析(PS:有点硬核,想要看懂得反复多看几次):

《MS15-034/CVE-2015-1635 HTTP远程代码执行漏洞分析》

https://blogs.360.cn/post/cve_2015_6135_http_rce_analysis.html

我们平时在编程的时候,一定要注意变量的数据类型,特别是涉及到数据类型转换的地方要格外留神。比如符号数与无符号数的互转,32位整数和64位整数的转换等等。

在处理外界传入的参数处理时,要慎之又慎,一个小小的变量类型可能就会给服务器计算机造成毁灭性打击。

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

a34d2722aeebb215d45d5118e93b9961.png

好文章,我在看❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_709059.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速构建网站或移动端页面:关于Bootstrap的学习笔记

最近在设计官网,并进行一些项目的原型设计和开发,寻找了很久,想找到一个更简单、快速的方式,基于一些已有的模板或框架进行快速建设,结果发现很多时间都是徒劳,走过的路分享给大家,以防再度踩坑…

SEO那些事:一句代码一键分享网站

这是很久以前就已经写过的笔记了,有一个习惯,每次遇到一个问题,都会进行百度,然后把解决问题的关键点记录下来,有人问我,为什么更新频率如此之快,大部分都是从前积累的知识点。 其实每天工作所涉…

华为云云容器快速搭建网站实践随记—利用公有镜像搭建WordPress

一、华为云云容器简单介绍: 云容器引擎 CCE 是基于 K8S 和 Docker 的企业级容器服务,为企业应用提供快速部署、自动化运维、弹性伸缩等容器生命周期管理能力。 这个实践是通过 docker 容器以及云容器引擎 CCE 平台快速实现了网站搭建,体验到…

华为云云容器快速搭建网站实践随记—利用私有镜像搭建GuestBook

一、华为云云容器简单介绍: 云容器引擎 CCE 是基于 K8S 和 Docker 的企业级容器服务,为企业应用提供快速部署、自动化运维、弹性伸缩等容器生命周期管理能力。 这个实践是通过 docker 容器以及云容器引擎 CCE 平台快速实现了网站搭建,体验到…

资源 | 想进行数据科学项目却没有数据集?26个数据集网站汇总

导读:如果用一个句子总结学习数据科学的本质,那就是:学习数据科学的最佳方法就是应用数据科学。如果你是初学者,那么每完成一个项目你的能力就会大大提高。如果你是有经验的数据科学从业者,那么你应该懂这个道理。但是…

这11个免费学习的网站,个个堪称神器,不收后悔!

导读:神奇的网站有很多,今天推荐11个和学习有关的,而且都是免费的,希望对大家有所帮助。01 Ruby regular expression editor正则表达式编辑器rubular.com正则表达式太复杂了总也写不对?Rubular是一个Ruby-based的正则 表达式在线…

开源小程序CMS网站, JeeWx-App-CMS 1.0 首版本发布

JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的小程序公司官网。项目结构简单,逻辑清晰,代码规范,非常适合作为小程序开发的入门项目。 当前…

JEECG-P3首个开源插件诞生!CMS网站插件 Jeecg-p3-biz-cms1.0版本发布!

Jeecg-P3-Biz-Cms ( JEECG 首个微服务插件,支持小程序的CMS系统)是基于JEECG-P3 微服务框架开发的CMS建站系统,可轻量级集成进jeecg系统,定制各类网站模板,维护网站的广告、栏目、文章内容,让…

开源小程序CMS网站,JeeWx-App-CMS 持续更新ing~

JeeWx-App-CMS开源小程序CMS网站,持续更新ing~ JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的小程序公司官网。项目结构简单,逻辑清晰,代…

入侵网站的黑客被我抓到了!

转自:小白学黑客今天在知乎看到一个提问:在下面回答区,我看到网友分享的真实案例,大家可以看一下,顺便了解一下网络溯源是怎么一回事,也给大家一些启示。我朋友在创业,听说他公司被人搞了&#…

一群参与境内外赌博网站的开发的程序员被抓,网友:切勿面向监狱编程...

近期,广州警方侦破一宗为赌博团伙提供黑灰产业链支撑帮助信息网络犯罪活动专案,抓获嫌疑人91名。据悉,该案是广州市近年来打击跨境网络赌博生态犯罪中,涉及黑灰产环节最多、地域跨度最广、链条最完整的案件。今年1月,从…

phpcms网站搬家至服务器

phpcms网站搬家至服务器 想要自己的网站让人们看到那就要上传服务器空间后,这样才会通过搜索域名进行网页访问。 但是在上传的过程中肯定会有很多东西要修改,例如数据库怎么上传、路径怎么修改等。。。。。这些对于生手可能会慌乱,不用害怕&a…

故宫首开夜场门票秒空官网崩溃:7本书让网站挺住

导读:明天就是元宵节了,先祝大家节日快乐,阖家幸福! 相信你已经了解到了,今年元宵节你有一个新“过法”,那就是——夜游故宫!这是故宫94年来首开夜场,而且免费! 但是&…

网站扛住 100 亿次请求?我们来压测试一试

来源:http://mtw.so/63aU0y1. 前言2. 背景知识3. 确定目标4. 基础软件和硬件5. 技术分析和实现6. 代码实现及分析7. 实践8. 分析数据总结1. 前言 前几天,偶然看到了 《扛住100亿次请求——如何做一个“有把握”的春晚红包系统”》(url&#x…

SugarHosts糖果主机香港虚拟主机cPanel面板建站入门推荐

SugarHosts,又称糖果主机。从2009年开始就推出虚拟主机业务,在当下大部分虚拟主机商都被收购、关闭、丢弃的时候,SugarHosts商家一直在稳定发展。可以说目前如果需要选择海外虚拟主机商家,糖果主机SugarHosts是必选择商家之一&…

Apple商业网站封锁Firefox浏览器

Hollis的新书限时折扣中,一本深入讲解Java基础的干货笔记!出品 | OSC开源社区(ID:oschina2013)据外媒 Ghacks 报道,用户在 Mozilla Firefox 浏览器中打开 Apple 的商业网站 business.apple.com 时&#xff…

建站用什么cms_我想做独立站,我应该用什么建站工具?

听说现在独立站很火,我想做独立站,但是上网一搜,五花八门,我该使用什么建站?那么我今天在这里给大家介绍一下使用过的建站工具,分别有什么区别?到目前为止,我使用过的建站工具有Mage…

气数已尽!运营 23 年,昔日“国内第一大电商网站”黄了。。。

Hollis的新书限时折扣中,一本深入讲解Java基础的干货笔记!7月23日消息,电商网站易趣网络平台发布了关闭公告,决定停止易趣网络平台运营,关闭易趣网站。2022年8月12日24:00,易趣网将关闭网站所有商品、商铺的…

原始数据哪里找?这些网站要用好!200个国内外数据网站大全

导读:资料搜集是个相当繁琐与累的工作,也是数据分析入门的基本,良好的信息资料搜集能力有利于我们快速了解基本情况,为后续的调研及一手资料的获得打下较好的基础。作者:王术,发表于知乎来源:ht…

制作钓鱼网站(克隆网站)

克隆网站主要指模仿相关网页的页面格式,自己制作页面颜色、标识均与原网站视觉效果相同,且域名差别不大,被用于谋取利益的非法网站。 利用social-enginner-toolkit(set)可制作多种钓鱼网站,下面是其中一种:获取用户凭证信息的网站。 准备:kali linux(IP192.168.xx…