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

nginx解析漏洞,配置不当,目录遍历漏洞复现

1.Ubuntu14.04安装nginx-php5-fpm

安装了nginx,需要安装以下依赖

sudo apt-get install libpcre3 libpcre3-dev

sudo apt-get install zlib1g.dev

sudo apt-get install libssl-dev

安装php:

apt-get install php5-fpm

apt-get install nginx

开启Nginx对php的支持,去掉配置文件中关于php的注释并重启Nginx即可

vim /etc/nginx/sites-available/default

aadc347881c1abb0e178390425c0a7e3.png

nginx网站目录

/usr/share/nginx/html

baf0a4ea3d907ce1fbc387c0a59e81dc.png

nginx解析php

nginx无法启动可以查看日记查找解决方法

vim /var/log/nginx

8bfbfa55380c89a45cd2d78804233a27.png

访问php文件403

在/etc/php5/fpm/pool.d/www.conf中编辑

listen = /var/run/php5-fpm.sock为127.0.0.1:9000

在/etg/nginx/sites-available/**.conf中编辑

fastcgi_pass/var/run/php5-fpm.sock为127.0.0.1:9000

后重启nginx,php5-fpm即可

重启服务命令

service php5-fpm restart

service nginx restart

a0e805689cdb4e3afea43e0a97d2c947.png

2.Nginx的文件解析漏洞复现

如果在访问test.jpg这个文件时以这种去访问/test.jpg/1.php,可能会被当做PHP代码去执行

用户配置不当造成的解析漏洞。 我们现在进行不当配置实现解析漏洞

vim /etc/php5/fpm/php.ini

修改cgi.fix_pathinfo为1

87fac5025e862df548f25e2ce9a497e1.png

vim /etc/php5/fpm/pool.d/www.conf

修改security.limit_extensions允许解析其他格式文件为PHP

afd332c3960ce13440cb527b68c54bae.png

解析漏洞成功

c0d6fd5c395861f1834edd88757a02e6.png

a497e828e50caa7951266fe6635d6893.png

3.Nginx目录遍历漏洞

vim /etc/nginx/sites-available/default

在location这里加上

autoindex on;

c5736d5ca7128df74b7039b7d138ad6b.png

1c85ad6550d3c5a11ee4b383b7c6c141.png

4.nginx目录穿越漏洞

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):

location /files {

alias /home/;

}

77d33b802559a0f6dcba95e3cf21916b.png

3f55910529302d8fde99279e03ae1f7b.png

2b10994d829347528392d38b9dcc204a.png

==遇到的坑==

5.Docker为什么刚运行就退出了

docker run -d -p 80:80 ubuntu

运行了一个简单的容器后,然后docker ps -a 进行查看, 会发现容器已经退出

f19b614c662e074a19569a6396eb62e0.png

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.

容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的

这个是docker的机制问题,比如你的web容器,我们以nginx和fpm为例,

正常情况下,我们配置启动服务只需要启动响应的service即可,例如

service nginx start && service php5-fpm start

但是,这样做,nginx和fpm均为后台进程模式运行,就导致docker前台没有运行的应用,

这样的容器,后台启动后,会立即自杀,因为他觉得他没事可做了.

解决方法:

1.最佳的解决方案是,将你要运行的程序以前台进程的形式运行,当然,如果你的容器需要同时启动多个进程,

那么也只需要,或者说只能将其中一个挂起到前台即可.

比如上面所说的web容器,我们只需要将启动指令修改为:

service php5-fpm start && nginx -g "daemon off;"

这样,fpm会在容器中以后台进程的方式运行,而nginx则挂起进程至前台运行,这样,就可以保持容器不会认为没事可做而自杀了.

2.对于有一些你可能不知道怎么前台运行的程序,提供一个投机方案,你只需要在你启动的命令之后,

添加类似于 tail top 这种可以前台运行的程序,这里特别推荐 tail ,然后持续输出你的log文件.

还是以上文的web容器为例,我们还可以写成:

service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log

把这条命令加到start.sh实现自启

参考链接

https://www.jianshu.com/p/13d5912a6417

https://blog.csdn.net/qq_32434307/article/details/79480036

https://blog.csdn.net/wang_quan_li/article/details/48003811

https://vulhub.org/#/environments/nginx/nginx_parsing_vulnerability/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值