无参数读文件和RCE的利用研究
无参数读文件和RCE的利用研究
NEURON SAINTSEC 2025-01-31 10:02
点击上方
蓝字关注我们
最近研究了一个以前的题目,涉及到无参数RCE
所以写了一篇文章来记录
首先来看原理
根据代码,可以发现,这里例如
a(b(c()));
可以使用,但是
a(‘b’)
含有参数不能使用
正常情况下,
print_r(scandir(‘.’));
可以用来查看当前目录所有文件名
但是要怎么构造参数里这个点呢
这里就需要使用到
localeconv()
函数
localeconv()返回一包含本地数字及货币格式信息的数组。而数组第一项就是”.”
这里还有一个知识点,就是从数组中取得数据,可以用到如下函数
这样我们就可以获取数组的第一项
这样就成功打印了当前目录
那么我们可以利用getallheaders()来达成RCE,但是该函数只能在
Apache
环境下使用
这样我们在headers中输入命令内容,使用getallheaders来获取就达成了简单的RCE
利用的方法还有很多。。。。
为了更好的理解,我们来看一个以前的赛题
题目代码如下
访问
?action=go
通过获取headers的方式,可以设置ua来传入字符串,成功执行命令。
由于disable_classes和disable_functions的设置,导致后面open_baseidr完全没办法绕过,但我们可以用glob协议读取目录
这里涉及到一个知识点,对于不同的请求来说,
open_basedir
都是不同的,那么服务端就需要获取请求的地址,然后做解析,这部分的配置一般是由apache来做的,但如果请求的host中不包含这个sha1的字符串,那么就可以让后端无法获取到这个字符串,就会将
open_basedir
设置为
/var/www/sandbox
,就可以读取这个目录下的文件了。