Nginx解析漏洞复现以及哥斯拉连接Webshell实践

1. 环境

  kali linux

  docker+vulhub

  nginx(1.19.6)+php(7.4.15)

2. 过程

2.1 vulhub镜像拉取

  vulhub安装的话去官网上有安装教程

  https://vulhub.org/

  安装好之后进入到对应的目录下

  运行docker-compose up -d

  完成之后docker ps -a可以查看容器信息

2.2 漏洞利用

  正常访问80端口,是一个文件上传点,后面webshell就可以走这里上传



  再去看看官网给出的示例,访问http://192.168.197.128/uploadfiles/nginx.png



  使用Burpsuite抓包看看返回值,发现图片后加了一句phpinfo



  访问http://192.168.197.128/uploadfiles/nginx.png/.php



  添加/.php后会被解析成php文件,漏洞的成因下面会说,到这里的话vulhub官网上的漏洞已经复现完成了,下面的内容主要是使用哥斯拉连接Webshell。

2.3 webshell上传

  哥斯拉地址:https://github.com/BeichenDream/Godzilla/releases/tag/v1.00-godzilla

  这里就不多介绍了,主要功能就是生成Webshell,连接Webshell(废话),流量加密通信,以及后续的Shell管理。

  点击管理-生成就可以生成Shell,密码的话就是通信时候的参数名称,密钥的话就是加密通信的密钥,这两个参数可以自定义,需要记好,后续连接webshell时需要提供。有效载荷的话就选择PHP。



  输个文件名选择目录就可以生成了



  生成结果如下



  查看Webshell内容



  Webshell生成好了之后下面就是上传了

  ①首先直接修改文件后缀上传



  上传失败,后缀与MIME的值都没用

  ②制作图片

  既然后缀与MIME都不管用,那应该就是校验的文件头(既然存在解析漏洞,其他的各种绕过就不去试了),直接做一个图片木马



  生成图片内容如下



  直接上传图片,返回路径

2.4 哥斯拉Webshell连接

  点击目标-添加,把之前的配置再输一遍就行,注意url这里填的的存在解析漏洞的路径,也就是/.php,这里使用http代理,走8080端口,这样就可以用Burpsuite抓包了。



  配置完之后右键点击进入,就连上了(实际情况在这里猛踩坑)



  成功界面如下



  到这里的话流程就走完了,拿到了Webshell,下一步就开始提权了,那就是另外的一回事了。

3. 原理分析

  这一漏洞是因为Nginx中php配置不当造成的,与Nginx版本无关

  ①cgi.fix_pathinfo=1

  这个参数值为1,表示开启,即当解析遇到不存在的路径时,就会去掉该项,继续依次解析,所以当aaa.jpg/.php被解析时,便会去掉/.php,继续解析aaa.jpg

  ②security.limit_extensions = .php .jpg

  这个参数限制了可执行文件的后缀,默认只允许执行.php文件,配置不当的话就会执行jpg文件。

4. 踩坑

4.1 Webshell连接不上

  开心上传Webshell后,竟然连不上去,用Burpsuite抓包查看报了这个错误,具体的原因没有深究,百度了一下解决方法就是修改php.ini配置文件中的session.auto_start = 1



  之前的phpinfo内有相关路径(/usr/local/etc/php/conf.d/php.ini)



  docker exec -t -i nginx_parsing_vulnerability_php_1进入php容器

  进去之后发现conf.d目录下没有php.ini文件,然后把上级目录下的php.ini-development这个文件拷贝过去cp php.ini-development /usr/local/etc/php/conf.d/php.ini

  拷贝过去之后准备编辑文件,发现docker没有vim,然后一顿操作apt-get updateapt-get install vim把vim装好

  修改其中的session.auto_start = 1



  (修改完之后准备开心连Webshell时,突然想起来这个配置要更新一下,但是之前很少使用docker,也不晓得怎么重启容器内环境,就手贱docker restart了php容器,至此前面的所有工作全部白费,再重来一遍)

  由于安装的是php-fpm,支持USER2信号,这个信号用于重新加载配置文件

  容器内部执行kill -USR2 10

  容器外部执行docker exec -it nginx_parsing_vulnerability_php_1 ps auxdocker exec -it nginx_parsing_vulnerability_php_1 kill -USR2 10

  这里的1这个值就是进程号了,使用ps aux|grep php查看,这里又出现了一个问题,docker内也没有ps,所以想要在容器内部执行这条命令的话需要apt-get install procps安装一下,如果是在容器外部执行命令的话应该没这个问题



  这里看到进程号就是10,然后执行kill -USR2 10



  到这里的话配置就更新完毕

  再次返回Bursuite发包查看返回信息,发现之前的WARNING变成了NOTICE



  再次使用哥斯拉就可以连上Webshell了

Nginx解析漏洞复现以及哥斯拉连接Webshell实践的更多相关文章

  1. 15.Nginx 解析漏洞复现

    Nginx 解析漏洞复现 Nginx解析漏洞复现. 版本信息: Nginx 1.x 最新版 PHP 7.x最新版 由此可知,该漏洞与Nginx.php版本无关,属于用户配置不当造成的解析漏洞. 使用d ...

  2. nginx解析漏洞复现

    nginx解析漏洞复现 一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1. 由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件 ...

  3. Nginx 解析漏洞复现

    一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1.由于nginx.conf的如下配置导致nginx把以'.php'结尾的文件交给fastcgi处理,为 ...

  4. nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现

    nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...

  5. Nginx 解析漏洞

    目录 漏洞复现 漏洞成因 修复方案 参考链接 该漏洞与Nginx.php版本无关,属于用户配置不当造成的解析漏洞. 漏洞复现 访问http://172.17.0.1/uploadfiles/nginx ...

  6. apache httpd多后缀解析漏洞复现

    apache httpd多后缀解析漏洞复现 一.漏洞描述 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析 ...

  7. Apache解析漏洞复现(CVE-2017-15715),可以绕过黑名单

    照着P神的文章准备复现一下(总结一下经验) 环境的安装 这里面直接使用的vulhub里面的环境来进行安装的(为了方便吗) 基础环境如下    实际上Apache版本在2.4.0~2.4.29即可 i ...

  8. nginx解析漏洞

    一个比较老的漏洞了,但是今天在一个交流群里大佬们有那么一个案例.就深入学习了一下其原理. Nginx当检查url最后的文件名为脚本的时候,他就会把整个程序当作脚本来执行,否则就当作非脚本执行. 正确上 ...

  9. nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现

    nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现 一.漏洞描述 这个漏洞其实和代码执行没有太大的关系,主要原因是错误地解析了请求的URL,错误地获取到用户请求的文件名,导致出现权限绕过.代 ...

随机推荐

  1. Warm up HDU - 4612 树的直径

    题意:给出n个点和m条边的无向图,存在重边,问加一条边以后,剩下的桥的数量最少为多少. 题解: 你把这个无向图缩点后会得到一个只由桥来连接的图(可以说这个图中的所有边都是桥,相当于一棵树),然后我们只 ...

  2. UVA 796 - Critical Links 无向图字典序输出桥

    题目:传送门 题意:给你一个无向图,你需要找出里面的桥,并把所有桥按字典序输出 这一道题就是用无向图求桥的模板就可以了. 我一直错就是因为我在输入路径的时候少考虑一点 错误代码+原因: 1 #incl ...

  3. HDU - 1789 dp

    题意: 众所周知lyb根本不学习.但是期末到了,平时不写作业的他现在有很多作业要做. CUC的老师很严格,每个老师都会给他一个DDL(deadline). 如果lyb在DDL后交作业,老师就会扣他的分 ...

  4. HTTP的传输编码(Transfer-Encoding:chunked) / net::ERR_INVALID_CHUNKED_ENCODING

    https://blog.csdn.net/m0_37668842/article/details/89138733 https://www.cnblogs.com/jamesvoid/p/11297 ...

  5. codeforces 5D

    D. Follow Traffic Rules time limit per test 1 second memory limit per test 64 megabytes input standa ...

  6. 操作系统 part4

    1.操作系统的启动 CPU加电后,执行BIOS(基本IO处理系统).BIOS会进行硬件的自检和初始化,然后把加载程序(BootLoader)从磁盘上的引导扇区中加载到指定位置0x7c00.然后控制权交 ...

  7. apache 解析漏洞(CVE-2017-15715)

    在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下 0x01 正则表达式中的 '$' apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾 ...

  8. SSL 数据加密原理简述

    最近调试mqtt协议,为了保证数据安全性和将来客户端的对云的兼容性选择了openssl作为安全加密中间层,而没有使用私有的加密方式.所以花了点时间学习了一下ssl 加密流程整理如下: 因为正常正式使用 ...

  9. u-boot 移植 --->5、友善之臂Tiny210底板王网卡驱动移植

    网卡芯片的工作原理 DM9000AE具有以下主要性能: ①48管脚的LQFP封装,管脚少体积小: ②支持8/16位数据总线: ③适用于10Base-T和100Base-T,10/100M自适应,适应不 ...

  10. <U+200B> for, Zero Width Space ❌

    <U+200B> for, Zero Width Space zsh, bash https://www.cnblogs.com/xgqfrms/p/14233264.html#47944 ...