小记PHP7的disable_functions绕过以及open_basedir()跨路径访问

小记PHP7的disable_functions绕过以及open_basedir()跨路径访问

主要针对PHP7版本


disable_functions绕过

一般而言,利用漏洞控制 web 启动新进程 a.bin(即便进程名无法让我随意指定),a.bin 内部调用系统函数 b(),b() 位于系统共享对象 c.so 中,所以系统为该进程加载共 c.so,想法在 c.so 前优先加载可控的 c_evil.so,c_evil.so 内含与 b() 同名的恶意函数,由于 c_evil.so 优先级较高,所以,a.bin 将调用到 c_evil.so 内 b() 而非系统的 c.so 内 b(),同时,c_evil.so 可控,达到执行恶意代码的目的。

甚至不要main()函数来劫持 getuid(),作者通过 LD_PRELOAD 劫持了启动进程:

具体链接:https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

利用backtracejson反序列化gc绕过disable_functions:
在这里插入图片描述
具体链接:
https://github.com/mm0r1/exploits

open_basedir()跨路径访问

open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也可用符号.来代表当前目录。注意用open_basedir指定的限制实际上是前缀,而不是目录名。
举例来说: 若open_basedir = /dir/user, 那么目录 /dir/user/dir/user1都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。例如设置成:
open_basedir = /dir/user/

open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用冒号分隔目录。
在这里插入图片描述当限制了目录后,通过chdir()ini_set()来进行跨路径访问:

查看根目录payload:

mkdir(%22/tmp/crispr%22);chdir(%27/tmp/crispr/%27);ini_set(%27open_basedir%27,%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);ini_set(%27open_basedir%27,%27/%27);print_r(scandir(%27.%27))

具体链接:
https://xz.aliyun.com/t/4720#toc-4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值