1.前言
最近在某个项目上天天挖洞,每天不是什么信息泄露就是xss,没有一个能getshell,愁的不行,感觉头顶都凉飕飕了。不知是早上出门时,没注意踩到狗屎,还是今天运气好,发现一处竟然有文件包含漏洞,百度一波getshell姿势,逐一尝试后,发现可以利用日志getshell。这里本地模拟一下当时情况,复现一下。同时就让我这个小菜鸡总结一下getshell方式,以便之后遇到文件包含漏洞更快的去拿shell。
1.1.本地复现
当时发现url中有一个参数file=/home/task.php,灵机一动,把/home/task.php替换成了../../../../../../etc/passwd
接着发送带有php代码的请求,先phpinfo试一试。
接着就是包含日志了,感觉马上就要起飞了,结果很突然,no such file了,又换了几个路径,还是这样。
没办法只是试试包含一下配置文件,结果….一样。
这可咋办,眼瞅着就要getshell了,没路径啊,突然想到还有一个ssh log可以尝试包含一下,立刻来了精神头,噼里啪啦一顿敲,食指放在回车键上,犹豫不决,豁出去了!只见我眼睛一闭,重重按下回车,当我慢慢睁开眼时,欣喜若狂,终于没有no such file 了
接下来就很简单了直接ssh连接:
包含ssh log文件,然后执行下命令:id。成功!
ssh \’\=eval(\$_REQUEST[1])?>\’\@remotehost
2.文件包含小知识
2.1.包含函数
1、PHP共有4个与文件包含相关的函数:
include
require
include_once
require_once
2、Include与include_once的区别:
(1)Include:会将指定的文件载入并执行里面的程序;重复引用的情况下加载多次。
例如: