当前位置: 首页 > 后端技术 > PHP

使用nginx日志结合本地漏洞GetShell

时间:2023-03-29 14:05:50 PHP

0前言在WEB渗透测试中,尤其是PHP,经常会发现LFI漏洞。我想要GETSHELL,但是没有办法上传文件。这是开始讨论的想法。施耐德电气最近爆出的漏洞首先得到了本地包含,这里以此为目标。1.本地获取思路umotion/themes/schneider/include/css.php?css=../../../../../../../etc/nginx&theme=ivory&version=110281.1获取nginx通过文件包含配置,通过枚举获取nginx的配置文件。在/etc/nginx/nginx.conf配置文件中获取nginx错误日志的路径,关闭访问日志。错误日志/var/log/nginx_error.log;access_log关闭;1.2利用思路整理那么我们就可以利用错误日志来构造合法的php代码,从而利用包含漏洞。这里有几个可以直观想到的问题:错误内容什么时候写入nginx错误日志。如何控制我们写的东西。遇到转义写法如何绕过。目前已知:目标系统为nginx+FastCGI+php架构。2.知道什么时候写入nginx错误日志。通过观察日志很容易发现,如果请求是404/403等异常错误码,或者FastCGI返回错误信息,都会记录在nginx错误日志中,2017/06/1517:27:37[error]23229#0:*29454open()"/web/html/favicon.ico"failed(2:Nosuchfileordirectory),client:3.Controllerwhatwewritecanbeeasilyfound,我们的requestPATH将写入错误日志(请求路径不存在)。并携带我们的IP信息,以及HTTP头的referrer。那么我们就可以利用这两点来构造。4.绕过转义写我们构造host/xx/?如果通过webkit内核浏览器访问,webkit会自动传输,直接通过curl发送。这里referrer用于将代码注入到错误日志中。幸运的是,nginx端没有逃脱。如果遇到逃逸,则需要见机行事,构建可用的payload。最后成功将注入的PHP代码写入错误日志。5.总结其实没什么技术含量,但是这种情况是经常遇到的,包括各种日志,apache,nginx等,这里只是一个思路。在设置站点权限时,可以注意这几点,包括读取日志获取敏感信息(后台、管理员信息等)。本文永久地址【使用nginx日志结合本地漏洞GetShell】,转载请注明出处。