首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)

目录 0x01 漏洞介绍 0x02 漏洞影响 0x03 漏洞复现 0x01 漏洞介绍 在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现...,从而导致远程代码执行漏洞 在fpm_main.c文件的第1150行代码可以很明显的看出来,问题的所在 https://github.com/php/php-src/blob/master/sapi/...另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码执行: PHP 7.0 版本PHP 7.1 版本PHP 7.2 版本PHP 7.3 版本 ?...0x03 漏洞复现 在vulhub上已经有了可以利用的漏洞环境,直接pull下来进行复现即可 使用的exp是国外研究员的go版本的 https://github.com/neex/phuip-fpizdam...这里还需要注意一下,由于只有部分php-fpm子进程受到了污染,所以请多执行几次命令 扩展阅读 SQL server手工注入入门 MySQL手工注入简述 Linux权限详解 Linux文件查找命令详解

61710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)

    目录 0x01 漏洞介绍 0x02 漏洞影响 0x03 漏洞复现 0x01 漏洞介绍 在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现...,从而导致远程代码执行漏洞 在fpm_main.c文件的第1150行代码可以很明显的看出来,问题的所在 https://github.com/php/php-src/blob/master/sapi/fpm...PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } 另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码执行...0x03 漏洞复现 在vulhub上已经有了可以利用的漏洞环境,直接pull下来进行复现即可 使用的exp是国外研究员的go版本的 https://github.com/neex/phuip-fpizdam...这里还需要注意一下,由于只有部分php-fpm子进程受到了污染,所以请多执行几次命令

    85510

    【详解】TiDB 2.0 GA is here !

    2.0 版本规划 在 2.0 版本的规划阶段,我们对“这个版本需要做什么”进行了深入思考,我们根据现有用户的情况、技术发展趋势以及社区的声音,认为 2.0 版本需要聚焦在以下几点: 保证 TiDB 的稳定性以及正确性...优化 TiDB 的易用性和可维护性。TiDB 整套系统的复杂性比较高,运维及使用的难度要大于单机数据库,所以我们希望能提供尽可能方便的方案帮助用户使用 TiDB。...在 Chaos 测试上面,我们引入了更多的错误注入工具,例如使用 systemtap 对 I/O 进行 delay 等,也在代码特定的业务的逻辑进行错误注入测试,充分保证 TiDB 在异常条件下面也能稳定运行...OLAP 性能优化 在 2.0 版本中,我们重构了 SQL 优化器和执行引擎,希望能尽可能快的选择最优查询计划并且尽可能高效地执行查询计划。.../tpch.md 来看,所有的 Query 在 2.0 中都运行得更快,一些 Query 大多数都有几倍甚至数量级的提升,特别是一些 1.0 中跑不出结果的 Query 在 2.0 中都能顺利执行。

    99130

    为什么C代码比Python代码运行得更快?

    在本文中,我们将了解为什么 C 语言代码比 Python 运行得更快。 Guido Van Rossum开发了Python,这是最著名的编程语言之一。...因此,需要更多真实的 CPU 指令来执行给定的语句。 您可以通过将数字 1 添加到变量或将其与给定值进行比较来验证变量的值是否在 Python 代码中,以查看它是否小于、大于或精确等于该值。...解释代码总是比实际的机器代码慢,因为它需要更多的指令来实现指令,而不是执行实际的机器指令。 例 考虑表达式 x += 1。...这通常涉及编写汇编代码、将其传递给汇编程序以及让汇编程序创建特定于平台的目标文件,而不是使用字节码。 在程序连接到平台运行时之前,它尚未准备好使用。...结论 在本文中,我们了解了为什么 C 语言代码执行比 Python 更快的不同原因。

    1.4K30

    Java编程思想第五版(On Java8)(二十四)-并发编程

    这个问题产生在I/O密集型 并行 同时在多个地方完成多个任务。这解决了所谓的计算密集型问题,如果将程序分成多个部分并在不同的处理器上编辑不同的部分,程序可以运行得更快。...当编写这些类型的程序时,你永远不会被底层系统和工具屏蔽,甚至关于CPU缓存如何工作的细节。最后,如果你非常小心,你创作的东西在特定的情况下起作用,但它在其他情况下不起作用。...如果你只有一个处理器,那么任务切换的成本也由该处理器承担,将并发技术应用于你的系统会使它运行得更慢。 这可能会让你决定,在单个处理器的情况下,编写并发代码没有意义。...然而,在实践中,编写仅看起来可行的并发程序更为常见,但是在适当的条件下,将会失败。这些情况可能会发生,或者很少发生,你在测试期间从未看到它们。实际上,编写测试代码通常无法为并发程序生成故障条件。...如果有一种方法可以在更快的机器上运行你的程序,或者如果你可以对其进行分析并发现瓶颈并在该位置交换更快的算法,那么请执行此操作。只有在显然没有其他选择时才开始使用并发。

    35110

    如何成为无可替代的Linux运维工程师?

    所以我们不妨换一种说法:假如公司业务需要快速发展,最需要招募什么样的技术人员?如果公司业务下降,一百人的运维团队裁到只剩十个人,有哪些特质的运维工程师可以幸免于难?...第二,有强大的执行力和判断力。 执行力永远是职场进步的不二法门。在一个团队里,除了极个别的技术领导者,大部分人其实能力和经验差不多都是一个起点。...在我们的日常工作中,大部分的工作难度并不高。技术行业的从业壁垒并不高,很多人自学也可以干的很好,从来没有听说过做技术要求IQ在多少点以上的。所以,在同样的条件下,做事更快的无疑会倍受青睐。...我们自己的队伍检查无果,毫无头绪,于是让工程师上门,工程师从早干到半夜,敲着各种命令代码,运行各种脚本,修改各种参数配置服务,在我们成员的帮助下,到凌晨1点的时候,整个集群经过十几次的重启,终于,IB问题依旧...这三点都是很覆盖面很大的提升方向,要真正达成还需要非常细节化的规划和执行。传奇故事之外,必定充满着艰辛。 当然,以上都是我的个人意见,未免有不足。

    2.1K60

    看了这篇【JIT编译器】,你也能说你会java性能优化了!

    CPU 是计算机的核心,到时只能执行相对少而且特定的指令,例如 汇编码 和 二进制码 ,因此 CPU 所执行的程序都必须翻译成这种指令。 ?...因此被编译的代码需要具备以下特性: 代码是经常被调用的代码 运行很多次迭代的循环 而这些关键代码段被称为应用的热点,代码执行得越多就被认为是越热的。...这也是为了***优化***:JVM 执行特定方法或者循环的次数越多,它就会越了解这段代码,这样可以使 JVM 在编译代码时进行大量优化。...这意味着;在代码执行的开始阶段,client编译器比server编译器要快,因为他编译代码相比server编译器而言要多。...如果方法运行得足够频繁,它就会编译成级别4(级别3的代码就会被丢弃)。

    1.1K50

    深入剖析PyPy,解锁Python比C还快的秘诀

    来源丨网络 「如果想让代码运行得更快,您应该使用 PyPy。」 - Python 之父 Guido van Rossum 对于研究人员来说,迅速把想法代码化并查看其是否行得通至关重要。...运行结果如下: 运行时间 Python vs PyPy 这不是学术意义上的评估,但该结果是令人惊叹的。与大约需要 10 秒钟的默认 Python 解释器相比,PyPy 仅用 0.22 秒就完成了执行。...提前编译 C、C ++、Swift、Haskell、Rust 等编程语言通常是提前编译(AOT 编译)的。这意味着用这些语言编写代码之后,编译器会将源代码转换成特定计算机架构可读的机器码。...也就是说在执行程序时,执行的并不是原始源代码,而是机器码。...解释器逐行运行程序 即时编译 PyPy 是利用即时编译来执行 Python 代码的。即 PyPy 不同于解释器,它并不会逐行运行代码,而是在执行程序前先将部分代码编译成机器码。

    97920

    分享 7 个鲜为人知的JS数组方法

    end 参数是可选的: 2. at() 和 with() at() 首先出现,with() 在一年后的 2023 年出现。 它们是单元素数组修改和访问的函数式和不可变版本。...非常适合从结束位置搜索比使用 find() 产生更好性能的情况: 例子: 这是可行的,但由于我们的目标对象更接近数组的尾部,findLast() 应该运行得更快: findLast() 的另一个用例是当我们必须从末尾专门搜索数组以获得正确的元素时...好吧,也许 splice() 的使用不如其他方法那么多,但它们都会就地改变数组。 不变性为我们提供了可预测且更安全的代码;调试要容易得多,因为我们确定某些变量永远不会改变它们的值。...参数完全相同,但 splice() 和 toSpliced() 的返回值必须不同。 6.lastIndexOf() lastIndexOf() 方法返回可以在数组中找到特定元素的最后一个索引。...: 在数组上调用 flatMap() 与调用 map() 后跟深度为 1 的 flat() 执行相同的操作,但它比单独调用这两个方法更有效。

    20810

    凭什么 PyPy 为什么能让 Python 原地起飞,速度比 C 还快?

    Python 之父 Guido van Rossum曾经说过:如果想让代码运行得更快,应该使用 PyPy。 对于研究人员来说,迅速把想法代码化并查看其是否行得通至关重要。...运行时间 Python vs PyPy 这不是学术意义上的评估,但该结果是令人惊叹的。与大约需要 10 秒钟的默认 Python 解释器相比,PyPy 仅用 0.22 秒就完成了执行。...提前编译 C、C ++、Swift、Haskell、Rust 等编程语言通常是提前编译(AOT 编译)的。这意味着用这些语言编写代码之后,编译器会将源代码转换成特定计算机架构可读的机器码。...也就是说在执行程序时,执行的并不是原始源代码,而是机器码。 ?...解释器逐行运行程序 即时编译 PyPy 是利用即时编译来执行 Python 代码的。即 PyPy 不同于解释器,它并不会逐行运行代码,而是在执行程序前先将部分代码编译成机器码。 ?

    93940

    PyPy为什么能让Python比C还快?一文了解内在机制

    转自:机器之心,编辑:杜伟、陈萍 Python 之父 Guido van Rossum曾经说过:如果想让代码运行得更快,应该使用 PyPy。...运行结果如下: 运行时间 Python vs PyPy 这不是学术意义上的评估,但该结果是令人惊叹的。与大约需要 10 秒钟的默认 Python 解释器相比,PyPy 仅用 0.22 秒就完成了执行。...提前编译 C、C ++、Swift、Haskell、Rust 等编程语言通常是提前编译(AOT 编译)的。这意味着用这些语言编写代码之后,编译器会将源代码转换成特定计算机架构可读的机器码。...也就是说在执行程序时,执行的并不是原始源代码,而是机器码。...解释器逐行运行程序 即时编译 PyPy 是利用即时编译来执行 Python 代码的。即 PyPy 不同于解释器,它并不会逐行运行代码,而是在执行程序前先将部分代码编译成机器码。

    88120

    python学习一

    我们再来看看比较官方的区别: 编译型: 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。...缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。...可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。...规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。...而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。 独特的语法。

    45420

    性能测试成熟模型策略模型

    单元测试实现成本较低,执行速度快,容易与持续集成(CI)和敏捷开发实践结合。缺点:单元测试的对象是代码,可能与最终用户场景存在差距,即使达到了很高的代码覆盖率,也不一定能完全反映系统的真实性能。...执行端到端测试通常需要较多的资源投入,成本相对较高。冠军杯模型 (Trophy Model)优点:强调集成测试的重要性,既比单元测试提供了更高的有效性,又比端到端测试执行得更快。...在Web应用和服务端测试中特别适用,尤其是在基于RESTful的接口测试中,可以实现快速且有效的测试。维护成本较低,因为接口测试通常不会随着代码重构或bug修复而频繁变动。...负载测试 (Load Testing)优点通过逐步增加系统负载,可以帮助找到系统的性能拐点,验证系统在不同压力水平下的表现。可用于评估系统在预期或超出预期的负载条件下的稳定性和响应能力。...极限测试 (Stress Testing)优点:通过将系统置于极端条件下运行,可以发现系统在接近或超过其极限时的行为。有助于揭示系统的耐久性和恢复能力。

    11510

    低延迟系统的最佳实践

    低延迟意味着更快的响应时间,更快的性能,以下最佳实践大部分来自于Quora等问题提炼: 1....选择正确的语言 脚本语言不能使用,尽管它们可以运行得更快更快,当你寻找对几毫秒延迟都不能忍受时,就不能有解释语言的开销,你希望有一个强大的内存模型,能够无锁编程,可选语言有Java Scala和C 11...,需要进行松散化(Loose). 3....理想情况下,您的数据应该完全适合一台主机上内存。如果你需要多台主机上运行,你应该确保你的数据和请求得到正确的分区,满足特定的请求的所有必要的数据来都是在本地可用。 4....如果处理得当,则下一个数据在你需要它之前将永远首先存在L1高速缓存中。这个简单之道能够帮助处理大量数组或原始类型的重量级别使用。进一步说,应该不惜一切代价避免使用链表或通过对象的数组。

    1.1K20

    2021年11款最佳的开源 Kubernetes 工具

    它使得开发和运维人员能够通过标准化的 API 和有意义的抽象(如 Pod 或 ConfigMap)进行协作。...幸运的是,谷歌的好朋友们编写了 Skaffold,为我们提供了一些急需的脚手架。 不要误会我的意思:你仍然需要编写自己的代码、Dockerfile、清单文件以及与管道相关的所有服务。...Skaffold 提供的是一种干净的方法,可以在每次变更代码后重新运行部署管道。它的主页上引用了来自世界各地开发人员的语录,深受用户喜爱。...Tilt UI 具有非常简洁的错误捕捉功能,可以在 YAML 小错误变成重大部署错误之前就能指认出它们来。它还具有可定制的按钮,以提供特定于应用程序的独特功能,如在不同迭代之间刷新架构中的消息队列。...只需单击按钮,你就可以在 Lens 中执行 Kubernetes 能够执行的任何操作。

    75920

    解析C#类中的构造函数

    对类没有定义任何共有的或受保护的构造器,导致该类不能使用new在外部代码中实例化,此方式的作用:      (1).类仅用作某些静态成员或属性的容器,因此永远不会实例化它。...(2).静态构造函数运行原理: .NET运行库没有确保什么时候执行静态构造函数,所以不应该把要求在某个特定时刻执行的代码放在静态构造函数中。也不能预计不同类的静态构造函数按照什么顺序执行。...C#编译器不允许值类型(结构)定义无参数的构造器,所以编译器永远不会生成自动调用它的代码,没有无参数构造器,值类型(结构)的字段总是被初始化为0或null。...3. .JIT对调用的位置选择: “字段初始化前”语义是首选的,因为它使CLR能够自由选择调用类型构造器的时机,而CLR会尽可能地利用这一点来生成运行得更快的代码。...而显式类型构造器可能包含具有副作用的代码,所以需要在精确拿捏运行的时间】

    3.4K50

    python介绍

    这本已是一个不需要争议的问题,Python作为AI时代头牌语言的位置基本确立   自动化运维--每个Linux运维人员都必须要掌握的语言   金融分析--Python是金融分析,量化交易领域里用的最多的语言...(注意不是解释),所以可以显著提高python代码的运行速度   绝大部分python代码都可以在PyPy下运行,但是PyPy和CPython有一些不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果...,如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点   JPython   JPython是运行在Java平台上的python解释器,可以直接把Python代码编译成Java...有点:编译器一般会有预编译的过程对代码进行优化,因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行 缺点:编译之后如果需要修改就需要整个模块重新编译,编译的时候根据对应的运行环境生成机器码...(经过改动使它功能工作在不同平台上),如果你小心地避免使用依赖于系统的特性,那么你的所有python程序无需修改就几乎可以在市场上所有的系统平台上运行 5:可扩展性--如果你需要你的一段关键代码运行得更快或者希望某些算法不公开

    80510

    Swift入门: 常量和变量

    每个有用的程序都需要在某个时刻存储数据,在Swift中有两种方法:变量和常量。变量是一个可以随时更改其值的数据存储,而常量是一个可以设置一次且永远不会更改的数据存储。...如果它知道某个值永远不会更改,它就能够应用优化以使代码运行得更快。...删除除import UIKit行之外的所有内容(这是引入苹果核心iOS框架的一部分,以后需要),并添加该变量。你应该看看下面的图片。...Swift开发人员非常倾向于尽可能使用常量,因为它使您的代码更易于理解。事实上,在最新版本的Swift中,Xcode实际上会告诉你,如果你做了一个变量,那么永远不要改变它!...重要提示:变量和常量名称在代码中必须是唯一的。

    1.1K10

    Java避坑指南:不要在池大小有限的线程池中,执行有相互依赖的任务,防止线程饥饿锁导致故障

    33f18ac [Running, pool size = X, active threads = X, queued tasks = N, completed tasks = M] 大量任务被拒绝,由最后两行得知...,线程池和队列资源均已耗尽,一开始以为是线程池不够用,仔细查看代码,才发现是业务代码写的有问题,在线程池中提交的任务有相互之间依赖。...坑:在池大小有限的线程池中,执行有相互依赖的任务 ---- 抽象出问题的业务代码: 池大小有限的线程池定义: private static final ExecutorService poolExecutor...,子任务也被同一线程池调度执行,父任务在等待子任务完成的同时,占用的线程不会结束,如果流量足够,线程池里的线程都被此类父任务占用完而不会结束,那么在任务队列的子任务永远不会有线程去执行,从而出现了线程饥饿锁的出现...,在此条件下退化为之前的串行执行,使用CallerRunsPolicy。

    38720
    领券