• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

Linux Snowieee 2216次浏览 0个评论

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

目录

  • 1. 环境
  • 2. 过程
    • 2.1 vulhub镜像拉取
    • 2.2 漏洞利用
    • 2.3 webshell上传
    • 2.4 哥斯拉Webshell连接
  • 3. 原理分析
  • 4. 踩坑
    • 4.1 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可以查看容器信息
Nginx解析漏洞复现以及哥斯拉连接Webshell实践

2.2 漏洞利用

  正常访问80端口,是一个文件上传点,后面webshell就可以走这里上传
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  再去看看官网给出的示例,访问http://192.168.197.128/uploadfiles/nginx.png
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  使用Burpsuite抓包看看返回值,发现图片后加了一句phpinfo
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  访问http://192.168.197.128/uploadfiles/nginx.png/.php
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  添加/.php后会被解析成php文件,漏洞的成因下面会说,到这里的话vulhub官网上的漏洞已经复现完成了,下面的内容主要是使用哥斯拉连接Webshell。

2.3 webshell上传

  哥斯拉地址:https://github.com/BeichenDream/Godzilla/releases/tag/v1.00-godzilla
  这里就不多介绍了,主要功能就是生成Webshell,连接Webshell(废话),流量加密通信,以及后续的Shell管理。
  点击管理-生成就可以生成Shell,密码的话就是通信时候的参数名称,密钥的话就是加密通信的密钥,这两个参数可以自定义,需要记好,后续连接webshell时需要提供。有效载荷的话就选择PHP。
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  输个文件名选择目录就可以生成了
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  生成结果如下
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  查看Webshell内容
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  Webshell生成好了之后下面就是上传了
  ①首先直接修改文件后缀上传
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  上传失败,后缀与MIME的值都没用
  ②制作图片
  既然后缀与MIME都不管用,那应该就是校验的文件头(既然存在解析漏洞,其他的各种绕过就不去试了),直接做一个图片木马
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  生成图片内容如下
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  直接上传图片,返回路径
Nginx解析漏洞复现以及哥斯拉连接Webshell实践

2.4 哥斯拉Webshell连接

  点击目标-添加,把之前的配置再输一遍就行,注意url这里填的的存在解析漏洞的路径,也就是/.php,这里使用http代理,走8080端口,这样就可以用Burpsuite抓包了。
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  配置完之后右键点击进入,就连上了(实际情况在这里猛踩坑)
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  成功界面如下
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  到这里的话流程就走完了,拿到了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
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  之前的phpinfo内有相关路径(/usr/local/etc/php/conf.d/php.ini)
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  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
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  (修改完之后准备开心连Webshell时,突然想起来这个配置要更新一下,但是之前很少使用docker,也不晓得怎么重启容器内环境,就手贱docker restart了php容器,至此前面的所有工作全部白费,再重来一遍)
  由于安装的是php-fpm,支持USER2信号,这个信号用于重新加载配置文件
  容器内部执行
  kill -USR2 10
  容器外部执行
  docker exec -it nginx_parsing_vulnerability_php_1 ps aux
  docker exec -it nginx_parsing_vulnerability_php_1 kill -USR2 10
  这里的10这个值是PID,使用ps aux|grep php查看,这里又出现了一个问题,docker内也没有ps,所以想要在容器内部执行这条命令的话需要apt-get install procps安装一下,如果是在容器外部执行命令的话应该没这个问题
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  这里看到PID就是10,然后执行kill -USR2 10
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  到这里的话配置就更新完毕
  再次返回Bursuite发包查看返回信息,发现之前的WARNING变成了NOTICE
Nginx解析漏洞复现以及哥斯拉连接Webshell实践
  再次使用哥斯拉就可以连上Webshell了


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Nginx解析漏洞复现以及哥斯拉连接Webshell实践
喜欢 (0)

您必须 登录 才能发表评论!

加载中……