欢迎光临
我们一直在努力

LFI Getshell Without Uploadpage

0x00

一般来说,遇到有上传点的本地文件包含,用相对路径去包含一下图片就ok,但是在没有上传点的情况下,一般采用包含日志、session等来包含我们可控内容的文件,正好前段时间sctf上用到,总结一下各种方法好了。

0x01

先说一下sctf的session包含,先猜一下apache配置的路径,然后看一下虚拟主机的配置,正好有session文件保存位置,然后

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

然后讲道理的话,这个session文件会把我们在登录时username保存下来(写过系统应该明白,这个session用户名可以在登录后界面用来写”欢迎xxx”什么的,操作不当还容易引发二次注入)。

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

开始包含是空白的,后来发现session文件有自己的保存格式,加上sess_的前缀就好了。

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

0x02

上面是一个session包含的例子,当时看了一些资料,后来也在本地测过一些方法,正好总结一下

  • logs包含

最先想到的肯定是logs包含,如果有apache的accesslog的权限,就可以考虑包含一下这个文件

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

但是存在一个问题,这个文件一般比较大,有可能出现在php运行时间内没有把我们访问的那一行包含进来,开始想说可以考虑选择errorlog,但是看了一下本地error log竟然两个G,当我没说。。。

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

此外还可以选择mysql的general log,那里会记录mysql的操作记录,你创建一个用户肯定会有一个insert语句的,包含进来也能getshell。

这里重要注意一点,被url编码了的shell是不能执行的,可以用burp让我们访问的连接不被浏览器自动编码。

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

  • /proc/self/environ包含

很多情况下是没有这个文件的访问权限的,但是服务器配置不当的话可以用这种方法。这个文件里面会记录访问者的user_agent信息。

抓包改一下user_agent,然后把文件包含进来就ok了,简单直接,没有遇到编码问题。

  • session包含

和上面的例子类似,最主要的就是要找到session文件的保存位置,有时候能找到apache的配置文件的话可能会写在里面。没有看到配置的话可以试一下/tmp/、/var/lib/php/session/、/var/lib/php/session/目录。

  • phpinfo包含临时文件

LFI在可以读到phpinfo的情况下可以考虑这个方法,原理是php服务端接受到客户端提交的type为multipart/form-data提交上来的文件表单时,当即会对文件作出处理,产生一个临时文件。一般开发时写文件上传功能的时候则是从$_FILES这个全局变量中取到上传的文件详情,然后进行保存等操作。phpinfo中则是会记录这个$_FILES中所要操作的临时文件的名字和路径。

所以问题的关键在于,无论你的服务器前端是否提供了上传表单、后端是否对上传的文件进行处理,只要客户端提交了满足格式的数据,php解析器都会对文件进行处理,创建一个临时文件。

因此LFI要做的就是在服务器删除掉这个临时文件前包含进来,进行操作。问题是这个临时文件存在的时间太短了,所以一般可以采用用无用的数据填充、大量请求等来延长php处理临时文件的时间。phpinfo里面找到这个超全局变量file的值就可以成功的包含临时文件了。

LFI-Getshell-Without-Uploadpage LFI Getshell Without Uploadpage

具体可以参考国外用写的包含用的python脚本,里面优化了提交文件的方法,可以拖延一下下临时文件被删除的时间。

参考链接:

https://www.insomniasec.com/downloads/publications/LFI%20With%20PHPInfo%20Assistance.pdf

  • EXTRA

其他则是发挥想象空间,找到服务器上内容可控的文件。比如开启了ftp服务,则包含ftp的登录日志;还有开发人员写的一些文件中专,或者记录登录者IP的文件等等。。。

未经允许不得转载:杂术馆 » LFI Getshell Without Uploadpage
分享到: 更多 (0)