您当前的位置: 首页 > 

Z3eyOnd

暂无认证

  • 2浏览

    0关注

    117博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

再探LFI的新姿势

Z3eyOnd 发布时间:2022-04-28 21:12:55 ,浏览量:2

前言

以前的LFI,就是利用一些基本的php伪协议或者日志文件包含来getshell,这儿总结一下一些进阶的一些LFI

PHPSESSION文件包含 原理:

配置session.upload_progress.enabled = on表示upload_progress功能开始,也意味着当浏览器向服务器上传一个文件时,php将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中

我们通过PHP_SESSION_UPLOAD_PROGRESS将恶意语句写入session的文件,得知session的文件名,就可以再次包含实现getshell

因为session.upload_progress.cleanup = on导致文件上传后,session文件内容立即清空

所以进行条件竞争来RCE

详见:https://blog.csdn.net/unexpectedthing/article/details/122888905

通过/proc/self/environ

关于/proc的知识,看看这篇

当然/proc/self/environ就可以得到当前进程的环境变量

具体的操作流程:

如果/proc/self/environ文件可以通过LFI访问,那么在这种情况下RCE可以通过请求文件结合写入HTTP User-Agent字段的payload来实现。

GET lfi.php?file=../../../proc/self/environ HTTP/1.1
User-Agent: 

现在,如果攻击者将上述 http 请求发送到 Web 服务器,那么:

  • 首先将 User-Agent 字段上的数据写入/proc/self/environ文件。
  • 然后页面请求lfi.php?file=../../../proc/self/environ会将/proc/self/environ文件的内容包含到输出页面中,并且我们的有效负载被执行。

可以看看这篇

利用临时文件来getshell 通过PHPINFO特性包含临时文件 利用php7 Segment Fault包含临时文件

懒得自己写了,下面这个写得比较清楚了

直接上链接

compress.zip://产生临时文件

主要作用是:compress.zip://上传文件的话,可以保持http长链接竞争保存临时文件。当然 我们也可以上传大文件来增长产生临时文件的时间。

看看这个题(includer):https://blog.zeddyu.info/2020/01/08/36c3-web/#get-flag

思路很好,利用点就是

  1. 利用 compress.zlib://http://orcompress.zlib://ftp:// 来上传任意文件,并保持 HTTP 长链接竞争保存我们的临时文件
  2. 利用超长的 name 溢出 output buffer 得到 sandbox 路径
  3. 利用 Nginx 配置错误,通过 .well-known../files/sandbox/来获取我们 tmp 文件的文件名
  4. 发送另一个请求包含我们的 tmp 文件,此时并没有 PHP 代码
  5. 绕过 WAF 判断后,发送 PHP 代码段,包含我们的 PHP 代码拿到 Flag
Nginx中的技巧生成临时文件

原理:

  • Nginx 在后端 Fastcgi 响应过大 或 请求正文 body 过大时会产生临时文件
  • 通过多重链接绕过 PHP LFI stat 限制完成 LFI

从中还介绍了利用/proc/self/fd来找到进程下删除的文件

php源码分析 require_once 绕过不能重复包含文件的限制

利用多次重复 / proc/self/root 绕过

            
关注
打赏
1651657201
查看更多评论
0.0464s