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. 【noi 2.6_9284】盒子与小球之二(DP)

    题意:有N个有差别的盒子和分别为A个和B个的红球和蓝球,盒子内可空,问方案数. 解法:我自己打的直接用了求组合C的公式,把红球和蓝球分开看.对于红球,在N个盒子可放任意个数,便相当于除了A个红球还有N ...

  2. Codeforces Round #577 (Div. 2) C. Maximum Median (模拟,中位数)

    题意:给你一个长度为奇数\(n\)的序列.你可以对任意元素加上\(k\)次\(1\),求操作后的中位数最大. 题解:先对序列进行排序,然后对中位数相加,如果中位数和后面的元素相等,就对后面所有和当前中 ...

  3. L2-013 红色警报 (25分) 并查集复杂度

    代码: 1 /* 2 这道题也是简单并查集,并查集复杂度: 3 空间复杂度为O(N),建立一个集合的时间复杂度为O(1),N次合并M查找的时间复杂度为O(M Alpha(N)), 4 这里Alpha是 ...

  4. LeetCode刷题笔记 - 12. 整数转罗马数字

    学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...

  5. Excel添加超链接

    using Microsoft.Office.Interop.Excel; Worksheet sheet; public void AddLink(int row, int col, string ...

  6. python 3.7 利用socket文件传输

    参考:https://www.cnblogs.com/VseYoung/p/socket_1.html 参考 https://blog.csdn.net/a19990412/article/detai ...

  7. C# 类 (6) -继承

    继承 定义类的时候,public class Dog:Animal 表示 Dog 这个类是 继承自 Animal,冒号后面的是它的基类 继承后 的Dog 类,当调用Dog.Great() 的时候输出的 ...

  8. 三、mysql主从复制

    1 MySQL 主从复制 1.1 主从复制的含义 在 MySQL 多服务器的架构中,至少要有一个主节点(master),跟主节点相对的,我们把它叫做从节点(slave). 主从复制,就是把主节点的数据 ...

  9. HDU 4649 Professor Tian(概率DP)题解

    题意:一个表达式,n + 1个数,n个操作,每个操作Oi和数Ai+1对应,给出每个操作Oi和数Ai+1消失的概率,给出最后表达式值得期望.只有| , ^,&三个位操作 思路:显然位操作只对当前 ...

  10. 网站备案查询/ICP备案查询网

    网站备案查询/ICP备案查询网 互联网站备案信息全国公安机关互联网站安全服务平台http://www.beian.gov.cn/portal/index 1 http://www.miitbeian. ...