论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
EdgeOne安全专项实践:上传文件漏洞攻击详解与防范步伐 ...
EdgeOne安全专项实践:上传文件漏洞攻击详解与防范步伐 ...
羊蹓狼
金牌会员
|
2025-1-12 21:36:22
|
显示全部楼层
|
阅读模式
楼主
主题
881
|
帖子
881
|
积分
2643
靶场搭建
当我们思量到攻击他人服务器属于违法行为时,我们须要思考怎样更好地掩护我们自己的服务器。为了测试和学习,我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料,供大家学习和参考,也可以自行探索相关内容。
利用腾讯云轻量应用服务器的Linux版本时,思量到环境要求较为严格,自行搭建大概存在诸多错误。可以简单地通过拉取他人封装好的docker镜像来快速摆设。
docker pull c0ny1/upload-labs
docker run -d -p 8289:80 c0ny1/upload-labs
在启动之后,请务必前去腾讯云控制台进行防火墙规则的设置,否则大概无法正常访问。你可以利用自己设置的IP地点和端口号更换访问地点:http://ip:8289。
体系可以正常启动。然而,当实验上传文件时,体系会提示找不到所需的upload目录。为相识决这个问题,须要通过docker容器控制台手动新增一个upload目录。
进去之后实行下下令:
mkdir upload
chmod 777 upload
当下一切运行正常,靶场已成功搭建!请牢记,在学习完成后,请勿攻击他人的服务器。这一点至关重要,牢记、牢记、牢记。
文件上传漏洞
靶场共设有20个关卡,每一个关卡都代表一个差别的漏洞案例。在这里,我将选择几个范例的案例与大家分享和学习。那么,我们如今就开始吧!
upload-labs靶场攻略
为了避免长篇文本对大家造成干扰,我已经准备了一张简明的流程图,帮助大家快速明白。请大家先看一下这张图,相信你们会以为一切都变得非常简单。如今我们准备出发了,请系好安全带。
接下来,我们的所有使命都依赖于上传一个或多个文件来访问服务器设置信息。攻击脚本的设计也极其简单,其目标同样明白:只需通过其他途径访问我们的攻击脚本并成功实行即可。
<?php
phpinfo();
?>
复制代码
当我们评论获取信息的用处时,是否可以用于攻击?实际上,我们的主要目标是实行脚本。对于脚本的内容并不重要,关键是能够顺利实行。你可以随意更换脚本的语句,例如像蚁剑的一句话脚原来获取shell。这里只是为了演示攻击的目标而已。
下面我们开始讲解一下怎样利用靶场,请注意每个页面都配备了查看源码和查看提示的功能。如果查看源码后仍不清楚怎样进行攻击,可以根据提示逐步闯关。那么,让我们开始吧。
前端页面校验漏洞
我们先看下源码:
当我们审阅这段代码时,可以注意到,这里仅仅是在前端进行了一个基本的后缀校验。
那么,我们可以选择在不依赖于工具的情况下,通过修改前端代码以移除这一验证步骤来实现上传,大概手动修改请求以将文件后缀改为.php的方式来进行。我们可以先从简单的方法开始。
接下来,进行删除利用并保存文件,随后再次上传我们的脚本文件。
请保存更改后,确保革新页面,以便接口能够识别我们上传的以.php结尾的文件。
由于这并非一张图片,因此它无法显示。因此,请右键复制图片路径以查看。利用已成功实行。
后端校验文件类型漏洞
当然,即使是最差劲的公司也不能仅仅依赖前端进行校验,因此第二个阶段就开始涉及后端利用。如今我们继承查看源代码;
后端的主要功能是获取上传文件的类型。要修改文件类型,我们须要利用Burp Suite工具进行拦截。仅仅改变文件后缀是不够的,由于这里传输的文件类型是通过Content-Type标头通报的,具体来说是application/octet-stream。
当体系后台基于文件类型进行判断时,我们只需调解文件类型以符合后台校验的要求,具体如下所示:
不出所料,我们依然会发现上传成功的情况。
剩下的步骤是右键点击打开图像文件的地点。在接下来的关卡中,我们不再须要演示查看PHP信息,只需通过验证即可确保我们的代码成功运行。
老版本文件后缀
这一关,如果发现无论怎样都无法有效进行校验,那么最好的做法是直接限定可上传文件的后缀名。然而,单纯依赖文件后缀名来进行限定也存在潜伏的安全隐患。让我们深入分析一下这个问题。
在早期的Web开辟阶段,PHP文件常以.php3结尾。这是由于旧版PHP仅支持.php3后缀,而不直接支持.php。尽管现代PHP版本不再逼迫要求特定的文件后缀,仍有一些网站由于历史或兼容性缘故原由仍在利用.php3后缀。为了支持这些老版本网站,Apache默认设置支持解析.php3后缀的PHP文件。
如今问题就变得非常简单了,我们只需上传那些不在后缀限定数组中的文件,然后一切搞定。
利用Apache设置文件
当谈到上述情况时,一些人大概已经认识到,不再可以随意利用简单的文件后缀名。我须要全面审查并加强这方面的限定,这样我们就进入了第四阶段。如今让我们来仔细查看源代码。
当然,我们不必局限于上传 PHP 文件。这次,我们可以利用另一个设置文件的漏洞进行攻击。
.htaccess 是一个用于设置 Apache Web 服务器的设置文件,其名称是 "hypertext access" 的缩写。它允许网站管理员在没有修改主设置文件(如 httpd.conf)的情况下,通过在网站根目录或特定目录下创建 .htaccess 文件来进行设置和控制网站的行为。
.htaccess 文件可以包含各种指令和规则,用于控制网站的访问权限、重定向 URL、设置自定义错误页面、启用压缩、禁止目录列表、限定访问速率等等。通过 .htaccess 文件,网站管理员可以在不须要服务器级别访问的情况下,实现对网站的机动设置和管理。
须要注意的是,.htaccess 文件只对 Apache Web 服务器有效,而且其设置大概会影响网站的性能,特殊是如果包含复杂的规则或须要频繁读取文件时。
那我们先写脚本后传文件。
<FilesMatch "loudong.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
复制代码
这句话的意思就是当访问到名为 loudong.jpg 的文件时,Apache Web 服务器会将其当作 PHP 脚原来处理,而不是简单地作为静态文件直接返回给用户。
继承上传jpg图片,尽管这个文件实际上是一个伪装成图片的攻击脚本。
大小写漏洞
当人员发现漏洞后,简单地添加一个限定即可解决问题。因此,第五关的解决方案是直接禁止上传.htaccess文件。
当然,他未能察觉到另一个问题。再次查看源代码。
文件名都是小写的,但是我们须要确认一下,PHP是否支持大写文件名。我们可以试一试直接拦截请求并修改文件名来测试。
空格漏洞
在检测大小写后,颠末详细查阅源代码后发现,没有对空格进行限定。如果确实没有空格限定,那么文件后缀的限定也将失效。
我们利用Burp Suite拦截请求进行发送。我在文件名背面自行添加了一个空格,由于默认情况下并没有文件名。
终极成功上传文件。关于绕过文件后缀查抄的方法另有很多,我们不打算逐一枚举。问题主要在于解析代码时的不严谨,通过利用此中的某个漏洞直接上传我们的脚本文件即可。
文件包含漏洞
当这张图片不再只是简单的视觉元素时,它前面看起来大概十分寻常,然而实际上它的后半部门包含了一段代码。
这一关的源码看下
当我们只读取前两个字节时,通常是为了获取图片文件的文件头信息,这些信息包含了关于文件类型和格式的重要数据。接下来,我们可以打开这三个图片文件,利用记事本编辑,来探索它们是否有共同的特征或属性。
这一部门另有另一个须要注意的地方,那就是文件包含漏洞。你知道文件包含漏洞指的是什么吗?
<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
include $file;
}else{
show_source(__file__);
}
?>
复制代码
由于直接利用 include 函数并且未对 $file 参数进行充分的过滤或验证,攻击者可以构造恶意请求,包含任意文件,甚至是远程的恶意文件。那么我们上传文件后,将文件地点拿到,然后通过这个文件包含漏洞试一下,效果显示确实存在此风险。
二次渲染绕过
这一关源代码很多,因此我决定仅复制并分享关键代码,供大家参考。
//使用上传的图片生成新的图片
$im = imagecreatefromjpeg($target_path);
//使用上传的图片生成新的图片
$im = imagecreatefrompng($target_path);
//使用上传的图片生成新的图片
$im = imagecreatefromgif($target_path);
复制代码
这一步骤的主要目标是确定用户上传的图片格式,并重新天生新的图片。在这个过程中须要特殊关注 GIF 图片的处理。GIF 图片在重新渲染后改动很小,主要缘故原由是其压缩算法的优化和格式的固定限定,使得大部门修改只影响到少量的数据部门,而不会对整个图像文件造成大幅度的变革。
我们须要对流程进行改进:起首,请确保不随意修改图片文件,而是先上传并下载图片,再与本地图片进行对比。识别未变革的部门,然后逐一复制粘贴代码,如有错误则调解位置。
末了我们在这里改下:
上传后继承利用文件包含漏洞:
条件并发竞争
在这个阶段,仅仅是将上传的文件保存下来,然后进行校验、重命名并移动文件。如果校验失败,则会将文件删除。表面看起来似乎没有问题,但实际上存在很多潜伏的漏洞。
起首,未进行文件类型验证便进行了保存利用,随后才进行验证并删除。这个漏洞为我们提供了攻击服务器的入口。我们可以利用Burp Suite拦截请求并发起集中攻击。只要在删除利用实行之前,我就能够访问到我上传的文件,便能实行脚本。如今开始行动。
当我们成功拦截了请求后,接下来的步骤是设置并发请求的开辟工作。我们计划从默认的10个并发开始进行攻击。
观察这里的攻击效果,尽管它们通常会被及时清除,但只要我们成功访问此中一个,攻击就可以算是成功的。让我们开始吧。
讲解完了怎样利用文件上传攻击服务器后,接下来的重点在于明白怎样有效防御这些攻击。在服务器端实行良好的防护步伐至关重要,由于防守胜过进攻。接下来,我们将根据上述经典案例来探讨怎样加强服务器的安全防护。
EdgeOne防护步伐
假设我们无法对程序员编写的代码进行查抄,大概我们本身没有进行代码审计的能力,那么我们只能依赖外部掩护步伐。在这种情况下,本日仍旧发起采用EdgeOne来解决这些问题。为了让大家更清楚地明白,我也简单绘制了一张图作为参考,看完图后问题就变得非常简单了,就像在架构中利用一个可插拔的中间件一样轻松应用即可。
文件漏洞防护手段
在前面我们详细讨论了多种攻击方法,如今让我们综述一下应该从哪些方面进行防护:
未限定文件类型:允许上传任何类型的文件,包罗可实行文件。
未进行文件内容查抄:未查抄文件内容是否包含恶意代码。
未限定文件上传频率:刚才我们演示的时间,可以看到通过频繁上传文件达到条件竞争的状态。
除了前面提到的步伐外,另有一个须要注意的地方,即文件大小的限定。思量到我们拥有的是自己的服务器资源,我们可以避免不须要的流量斲丧。因此,我们也须要在这方面进行适当的控制。
接下来,我们将逐一实行这些防护步伐,你将会看到,通过最小的调解,我们能够达到最佳的安全效果。
文件敏感后缀查抄
如果你打算上传Webshell,文件内容必定包含脚本内容。因此,我们须要确认EdgeOne是否提供相关的查抄和校验功能。一旦你购买了EdgeOne的尺度版,无需进行任何修改,即可立即上传文件并查抄其是否能够有效拦截。
在一般情况下,EdgeOne应该会拦截这类请求,但我们须要再次查看样本日志,确认是否确实有请求未被拦截。
当我们注意到这一点时,我们发现请求不仅被捕获,还被识别为防护规则,但实际上处于观察状态而非直接拦截状态。这一点很重要,由于默认情况下,EdgeOne仅观察并不会直接拦截请求。我们须要进一步查看这个规则的ID,相识其具体功能。
起首进到自己设置的站点后,找到安全防护->web防护->托管规则->筛选规则id
这个问题相当繁琐,由于在样本日志中,当前规则id的具体限定并不直接显示出来,须要我们自己去查找。不外,终极我们确实可以找到这些信息。通过这种方式,我们可以识别文件后缀,这样一来,前端和后端在处理文件后缀时就无需编写大量的限定代码了。
究竟上,前几个案例中的文件上传漏洞主要都是由于文件后缀问题导致的。EdgeOne技术能够通过一种简单的方法解决程序员代码不严谨的问题。
当涉及到相关的防护请求时,请记着关闭全局观察模式,这样可以让您单独设置每个规则的拦截方式。因此,如今我们将全局观察模式关闭。
那么让我们再次发起请求,以确认是否能够有效拦截这些请求。
岂非我们演出翻车了吗?怎么还是观察模式,我本以为我们应该处于拦截请求的状态,而不是仅仅处于观察模式。这涉及到一个防护等级的问题,我们须要检视一下,默认设置大概偏向宽松了一些。
那么我们须要调解防护等级,以确保它能够拦截那些不应该直接访问后台的请求。然而,请注意,我们不能单独设置一个规则,如果须要进行设置,也必须按照父类规则的方式进行设置。让我们仔细查看一下:
当然!那么我们如今可以实验上传一个文件,以便查看效果怎样。
在实际应用中效果非常显著。不再演示剩余的各种奇葩敏感后缀,由于终极的拦截效果都是一致的。对于企业或个人而言,只需简单利用两次按钮开关,利用体验也非常出色。
伪文件代码注入查抄
当我们试图规避后缀查抄时,我们制作了一个文件,其后缀名为.jpg,但实际上是一个伪装的图片文件。让我们起首验证一下这个简单的伪装文件是否有效。
当文件内容实际上是PHP脚本时,尽管我们的文件后缀被设置为.jpg并不属于敏感后缀文件,因此大概可以规避EdgeOne的后缀规则查抄。因此,我们可以实验上传并查看是否能够成功实行。
实验并未取得成功。那么我们来看看他被那个安全防护规则拦截住了。
当我们成功绕过了敏感后缀的防护查抄,那么如今须要进一步分析的是,这是哪一个具体的规则被规避了。
这防护步伐真的蛮不错,php脚本已经被拦截了。
那么,当我们测试更高级的伪装文件时,比如在一个看似正常的图片文件中嵌入代码脚本,防护规则是否能够检测到它们呢?在我们探讨绕过图片二次渲染的方法时,我们进行了实验,测试了在 GIF 文件中注入 PHP 代码的情况,具体如下图所示:
当然,我们可以看看是否有办法绕过这个防护步伐呢?不外看来防护步伐还是能够有效制止的。
看看这些样本日志,由于它们都属于同一个防护规则ID,我们就不再重复查看了,而是继承探索其他测试手段。
除了上述代码注入来防止图片渲染外,如果没有进行二次渲染,另一种方法是直接在图片末端添加内容。这种利用简单,接下来我们看看它是否能提供额外的防护效果。
演示固然出了点问题,但没关系。如果防护不住,也不要紧,我们还可以联系腾讯客服,赶紧反馈情况。我会把所有的测试文件和网站链接都交给他们,让他们测试一下,找出问题所在。
颠末长时间的深入沟通和分析,我们终极成功帮助他们发现了一个问题,剩下的就交给他们自行解决了。
这里为什么没有演示条件竞争防护呢?岂非不应该增长一个上传频率规则吗?我不确定大家是否还记得,条件竞争攻击是通过上传一个PHP脚本,然后在检验通过的短暂时间窗口内发动攻击的。起首,PHP脚本必须成功上传,但EdgeOne已经拦截了这种脚本,这样怎么能有效地实行后续的上传速率限定呢?
文件上传速率限定
之前我们讨论过避免演示条件竞争攻击,但如今为什么又有上传速率限定呢?这个限定是为了防止频繁的文件上传导致服务器网络IO非常拥堵。这实在涉及到两个问题:一方面,我们不是在评论通过脚本攻击服务器,而是用户大概通过频繁上传文件来占用服务器资源。只要上传足够频繁,就有大概使服务器无法响应其他用户的访问,进而导致网站宕机的情况发生。这种情况非常严重,影响大概相当恶劣。
话不多说,让我们来进行演示并设置一些限定。由于上传脚本文件会被拦截,因此我们将上传一个正常的图片来进行演示。同时,我们将利用Burp Suite来频繁测试文件上传攻击服务器,具体如图所示:
然后,我们直接发起并发请求。我们计划按照以下几个测试并发规则进行测试:每秒5、10、15、30和100次。起首,我们会利用10次每秒的并发量进行测试,然后再实验100次每秒的并发量。
我们多次发送请求后,请查看一下服务器资源的情况。
这里服务器的流量封装上涨,尽管网站仍可正常访问,但我们的目标已经实现,大量斲丧了网站的流量。
可以查看EdgeOne的统计分析,这次不仅限于Web安全分析,而是重点在指标分析上。我们可以观察到非常流量大量请求服务器,面对这种情况,我们应该接纳哪些步伐?
可以再看下面的请求分析。如图:
起首,通太过析该图,我们可以确定请求的IP地点及其对哪些URL进行了频繁请求,这些信息将为我们制定有效策略提供基础。
尽管这种方法并不是最优选择,但我们可以将客户的IP地点参加黑名单,以限定其访问我们的网站。这种方法固然笨拙,由于客户IP大概会变动,导致我们须要不停更新设置,但至少是一种可行的步伐。
然后,我们接下来要做的是将IP地点添加到黑名单中,这样可以简单地增长安全防护步伐。当然,你可以根据个人需求添加IP地点段。在这个示例中,我仅添加了一个IP地点作为演示。
好的,保存完毕。接下来,我们试试发送请求,看看是否已经被成功拦截。
当所有请求都被成功拦截后,我们可以再次查看一下样本日志。
没错,这个规则ID就是刚刚由我们天生的唯一标识符。
当思量到这一情况时,第二种方法即为限定请求的频率。
这里的限定过于宽松,我们须要收紧一些。一个人不大概请求得这么快。
当我们继承发送并发请求进行测试时,可以观察到EdgeOne已经能够识别到后续请求,并且利用了JavaScript挑战脚本,而非直接由服务器响应。
当我们检视样本日志时,同样可以观察到这一情况。
这是一个简单的全局限定。当然,某些企业用户的网站大概要求允许客户进行大量点击,这就须要思量了。但不用发急,我们可以精确控制这个过程。接下来我们来讨论怎样设置针对特定URL的请求限定。我们根据指标分析非常请求的地方,来设定相应的控制策略。你可以根据个人需求自行设置限定。
我在这里设置了所有涉及文件上传路径的限定。我们须要再确认一下是否已经完全拦截了所有这些路径。例如,/Pass-10/index.php。
看起来确实成功制止了潜伏的攻击。至于上传速率的问题,我们就到这里讨论吧。
文件大小限定
速率有限定,不能让客户上传过大的文件。我们只需上传图片,并非视频,所以设定个上限是公道的,比如不超过2M,这个范围应该适应大多数需求。如今我们来具体利用一下。须要注意的是,这个利用不是在Web防护层进行,而是在站点加速层进行的设置。
为了更好地进行演示,我不会利用全局设置,而是采用差别化设置的方式。这意味着我们会根据业务需求单独设置特定路径下的文件上传,具体如图所示。
当我们试着上传一个非常大的文件,以便测试上传过程。
效果是网站被拦截了,这让我感觉好像我的网站无法访问一样。看起来我须要设置一下自定义响应页面,以免让访问者误以为网站不稳定。
我们须要在这里进行响应页面的设置,内容十分简洁明了,完全遵循官方网站提供的示例进行展示。
上述页面已创建,但尚未与413状态码绑定。接下来,我们将进一步完善刚才提到的规则。请参考下图:
当我们再次审阅其效果时,可以使其看起来更加稳定,这里可以稍微美化一些,确保在满足自己需求的同时,表面也可以更为优美,具体如下图所示。
停止目前,针对文件上传的所有潜伏漏洞攻击已经得到有效防范,但是蹊径漫漫,修行需持之以恒,少年仍需不懈努力。
总结
通过本文,我们深入探讨了文件上传漏洞攻击的多种案例和防范步伐,以及在搭建攻击靶场时的实际利用。从前端和后端的校验漏洞,到利用Apache设置文件和文件包含漏洞的攻击方式,每一步都展示了安全防护的重要性。
在学习和实践过程中,我们不仅仅关注怎样进行攻击,更着重于怎样掩护自己的服务器免受此类攻击。我们利用了EdgeOne作为一个解决方案的示例,展示了怎样利用其提供的防护规则来有效防御文件上传漏洞。
无论是在靶场搭建过程中的细节利用,还是在攻击案例的分析过程中,安全意识和防护步伐的实行都显得至关重要。通过本文,希望读者能够更深入地明白和应用这些安全原则,以掩护自己的网络和服务器免受攻击的威胁。
在网络安全的蹊径上,学习永无止境。让我们共同努力,不停提升技能,保障网络环境的安全与稳定
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
羊蹓狼
金牌会员
这个人很懒什么都没写!
楼主热帖
让你成为网络世界中有破坏力的人-HTTP ...
一文带你走进【内存泄漏】
dolphinscheduler单机化改造
保举开源项目:LuCI App AdGuardHome - ...
一文搞懂static
邮件管理数据库设计--MySQL
day01-Tomcat框架分析
3. 视图-触发器-存储过程-索引 ...
读高性能MySQL(第4版)笔记04_操作系 ...
MySQL 8.0.29 instant DDL 数据腐化问 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表