Nginx解析漏洞复现以及哥斯拉连接Webshell实践
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 update,apt-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 aux,docker 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实践的更多相关文章
- 15.Nginx 解析漏洞复现
Nginx 解析漏洞复现 Nginx解析漏洞复现. 版本信息: Nginx 1.x 最新版 PHP 7.x最新版 由此可知,该漏洞与Nginx.php版本无关,属于用户配置不当造成的解析漏洞. 使用d ...
- nginx解析漏洞复现
nginx解析漏洞复现 一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1. 由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件 ...
- Nginx 解析漏洞复现
一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1.由于nginx.conf的如下配置导致nginx把以'.php'结尾的文件交给fastcgi处理,为 ...
- nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- Nginx 解析漏洞
目录 漏洞复现 漏洞成因 修复方案 参考链接 该漏洞与Nginx.php版本无关,属于用户配置不当造成的解析漏洞. 漏洞复现 访问http://172.17.0.1/uploadfiles/nginx ...
- apache httpd多后缀解析漏洞复现
apache httpd多后缀解析漏洞复现 一.漏洞描述 Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析 ...
- Apache解析漏洞复现(CVE-2017-15715),可以绕过黑名单
照着P神的文章准备复现一下(总结一下经验) 环境的安装 这里面直接使用的vulhub里面的环境来进行安装的(为了方便吗) 基础环境如下  实际上Apache版本在2.4.0~2.4.29即可 i ...
- nginx解析漏洞
一个比较老的漏洞了,但是今天在一个交流群里大佬们有那么一个案例.就深入学习了一下其原理. Nginx当检查url最后的文件名为脚本的时候,他就会把整个程序当作脚本来执行,否则就当作非脚本执行. 正确上 ...
- nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现
nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现 一.漏洞描述 这个漏洞其实和代码执行没有太大的关系,主要原因是错误地解析了请求的URL,错误地获取到用户请求的文件名,导致出现权限绕过.代 ...
随机推荐
- Codeforces Round #652 (Div. 2) D. TediousLee(dp)
题目链接:https://codeforces.com/contest/1369/problem/D 题意 最初有一个结点,衍生规则如下: 如果结点 $u$ 没有子结点,添加 $1$ 个子结点 如果结 ...
- hdu3938 Portal
Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This im ...
- hdu-6699 Block Breaker
题意: 就是给你一个n行m列的矩形,后面将会有q次操作,每次操作会输入x,y表示要击碎第x行第y列的石块,当击碎它之后还去判断一下周围石块是否牢固 如果一个石块的左右两边至少一个已经被击碎且上下也至少 ...
- 对于kmp求next数组的理解
首先附上代码 1 void GetNext(char* p,int next[]) 2 { 3 int pLen = strlen(p); 4 next[0] = -1; 5 int k = -1; ...
- Makefile 赋值 函数定义 等小知识点
1.赋值 == 到用的时候实际才去赋值:= 立刻赋值?= 未赋值才赋值+= 2.多层变量 多层变量引用(各种复杂组合...)a =bb= cc= dd =1$($($($(a)))) 最终等于1 3. ...
- 解决: "E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ..."
解决: "E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?& ...
- 图解 Webpack 4.x 热更新原理
图解 Webpack 4.x 热更新原理 Webpack HMR ️ module.hot & module.hot.accept if (module.hot) { module.hot.a ...
- free online business card generator
free online business card generator 免费在线名片生成器 https://www.logaster.cn/business-card/ https://www.chu ...
- copyright@xgqfrms
copyright@xgqfrms copyright & seo ## refs *** <div> <a href="https://info.flagcoun ...
- Build your own React
Build your own React https://pomb.us/build-your-own-react/ https://github.com/pomber/didact demo htt ...