CVE-2018-12613Phpmyadmin后台 任意文件包含漏洞复现

环境:php 5.5.30

工具:phpstudy(小皮面板)

这个漏洞是源于phpmyadmin中的index.php,下面是源码:

以上进行一下分析:
1.传入的target不能为空
2.必须是一个字符串
3.不能以index开头
4.不能再数组target_blacklist中
5.且经过checkPageValidit检查后为真

首先前三个都很好理解
我们先看一下第四个
黑名单为:

在index.php中,已经事先定义了target_blacklist的值,即import.php和export.php,只要不等于这两个值就可以。
在看一下定义了checkPageValidit的地方:
通过seay(代码审计工具)自带的全局搜索发现:

 这里简单的说明一下:
首先checkPageValidit里面有两个形参,第一个是我们传入的target,第二个whitelist则有默认形参(也就是空的数组)
1.进入函数看看,首先会判断 w h i t e l i s t 是 否 为 空 , 是 的 话 , 就 将 定 义 的 whitelist是否为空,是的话,就将定义的 whitelist是否为空,是的话,就将定义的goto_whitelist赋值给whitelist(因为确实为空,我们只传进去一个target),
看一下$goto_whitelist有什么吧

 太多了只截取了,一小部分。
继续分析下一个if,是要求target必须存在,且为字符串,用处不大
下一个if,要求target在数组 w h i t e l i s t 就 会 返 回 t r u e 再 看 看 下 一 个 : 这 里 面 对 t a r g e t 做 了 判 断 , 因 为 可 能 后 面 有 " ? " ( 主 要 应 对 ? t a r g e t = i n d e x . p h p ? i d = 1 这 种 情 况 , 这 也 是 漏 洞 的 成 因 ) , 可 以 传 参 数 , 于 是 将 ? 前 的 东 西 都 取 出 来 判 断 , 看 看 是 否 在 whitelist就会返回true 再看看下一个: 这里面对 target做了判断,因为可能后面有"?"(主要应对?target=index.php?id=1这种情况,这也是漏洞的成因),可以传参数,于是将?前的东西都取出来判断,看看是否在 whitelist就会返回true再看看下一个:这里面对target做了判断,因为可能后面有"?"(主要应对?target=index.php?id=1这种情况,这也是漏洞的成因),可以传参数,于是将?前的东西都取出来判断,看看是否在whitelist中。

下面一个意思一样,只是将$target先解码一下。

综上我们要求,target不为空、是字符串、不在黑名单中、且经过切割后再白名单中。。
这里面涉及一个知识:双重编码,比如你将?双重编码的话,经过包含时你包含的文件会被当成一个目录:
下面是测试:

payload为:localhost/index232.php?Mikasa=8888.php%253f/…/Mikasa.txt

成功!!因为将8888.php当成一个目录,所以需要多一个…/去跨目录。
同理,phpmyadmin的payload为 http://localhost/phpmyadmin/index.php?target=db_datadict.php%3f/../../Mikasa.txt

这个db_datadict.php可以变,只要是在白名单中的就行了!!

好了接下来说一下getshell的方法,,,很多可以看看general_log
general_log
然后,这样就可以了直接包含了,当然也不需要用到这个漏洞。

还有一个更简单的

就是包含当前用户的session文件:默认在 phpStudy\tmp\tmp目录下

session文件名就是:sess_和你当前用户的session,查看方法如下:

 上一个phpmyadmin的是我做的另一个实验,不是当前的。。

执行以下SQL语句:

 

 发现这个文件将我们的输入全都放进里面了!!!

嘿嘿,在弄个phpinfo()实验一下

payload为:http://localhost/phpmyadmin/index.php?target=db_sql.php%3f/../../../tmp/tmp/sess_2jj9dsb38oc9l8emu7pghors09bq9u0b

 

 

到此,算是结束了

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值