通达OA前台任意用户登录漏洞复现

admin 2024年11月21日11:16:36评论49 views字数 1766阅读5分53秒阅读模式

漏洞描述

通达OA是一套使用比较广泛的办公系统。该漏洞因为使用uid作为身份标识,攻击者在远程且未经授权的情况下,通过利用此漏洞,可以直接绕过登录验证逻辑,伪装为系统管理员身份登录OA系统。通达OA官方于2020年4月17日发布安全更新。

漏洞影响版本

通达OA < 11.5通达OA 2017版本

漏洞原理

本次复现为2017版本,则重点分析该版本,但原理都是基本相同的,只不过文件路径不同而已。根据POC的代码分析如下,该漏洞涉及的文件包含以下四个:

/ispirit/login_code.php/general/login_code_scan.php/ispirit/login_code_check.php/general/index.php

通达OA源码使用zend5加密 ,分析源码需要先进行解密

通达OA前台任意用户登录漏洞复现

使用的解密工具是:SeayDzend,工具使用很简单

通达OA前台任意用户登录漏洞复现

/ispirit/login_code.php:

通达OA前台任意用户登录漏洞复现

该文件用来获取codeuid参数,如果不存在,则会自动生成一个codeuid,并且将其写入CODE_LOGIN_PC缓存中(通达OA使用了缓存系统Redis,同时也提供了对缓存的使用方法),但是在18行位置将这个参数显示出来,导致用户可以获取这个参数的值,从而可以绕过后面的验证。

/general/login_code_scan.php:

通达OA前台任意用户登录漏洞复现

在这一文件中,用户可以控制输入的关键参数uid,在存在漏洞的通达OA版本中,后台数据库里uid对应的用户是admin管理员账户。并且将该数据存储在CODE_INFO_PC缓存中,因为我们在第一个文件中获取的codeuid存储在CODE_LOGIN_PC中,所以这里在复现时需要指明source变量为pc,这里的username则为admin,而type变量需要指明为confirm,原因在后面会进行解释。

/ispirit/login_code_check.php:

通达OA前台任意用户登录漏洞复现

这里使用之前存储的两个缓存中的内容,一个用来获取codeuid,一个用来获取通过post传入的uid等关键信息,这里红框就是为什么前一步需要将type设置为confirm。

通达OA前台任意用户登录漏洞复现

这里是最为关键的位置,代码获取用户可控的参数uid,并依次作为依据直接带入数据库进行查询

通达OA前台任意用户登录漏洞复现

通达OA前台任意用户登录漏洞复现

随后将查询的信息直接写入session中,通过这一步,session中包含的就是管理员的身份信息。

以上就是该漏洞的原理,V11版本原理类似,可用对照POC中的步骤进行分析复现。

漏洞复现

环境搭建

通达OA-TDOA11.4_2 建议在虚拟机环境下安装

下载地址:https://cdndown.tongda2000.com/oa/2019/TDOA11.4.exe

下载下来一路默认下一步就行!

通达OA前台任意用户登录漏洞复现

安装完成最后需要检测端口

通达OA前台任意用户登录漏洞复现

通达OA前台任意用户登录漏洞复现

最后点击确定就行

通达OA前台任意用户登录漏洞复现

最后点击确定就行

通达OA前台任意用户登录漏洞复现

漏洞利用

code1:手工利用

按照poc中的步骤,首先抓首页的包进行更改,
访问/ispirit/login_code.php

通过返回包获取codeuid

通达OA前台任意用户登录漏洞复现

而后使用POST方式访问/general/login_code_scan.php提交payload,其中codeuid需要改为上一步中返回的值。

uid=1&codeuid={3CD5FFC0-E64E-6E7E-123F-64A3578FF5A0}&type=confirm&source=pc&username=admin

通达OA前台任意用户登录漏洞复现

第三步使用GET方式访问/ispirit/login_code_check.php,带上参数codeuid,让后台进行代入查询,并返回携带管理员身份信息的凭证。

通达OA前台任意用户登录漏洞复现

经过这步后客户端已经拥有了管理员的身份信息,直接访问OA主页/general/index.php,放行该数据包,成功以管理员身份登录OA系统。

通达OA前台任意用户登录漏洞复现

通达OA前台任意用户登录漏洞复现

code2:POC利用

python3 .POC.py -v 2017 -url http://192.168.142.129/

通达OA前台任意用户登录漏洞复现

访问主页http://192.168.142.129/general/index.php

通达OA前台任意用户登录漏洞复现

修改cookie中PHPSESSID的值并刷新页面就会发现登录成功了

通达OA前台任意用户登录漏洞复现

最后修改cookie也可以在bp里面修改

通达OA前台任意用户登录漏洞复现

修复建议

更新最新版本

复现环境所需安装包以及工具在公众号回复通达OA11.4获取

通达OA前台任意用户登录漏洞复现

原文始发于微信公众号(网络安全学习爱好者):通达OA前台任意用户登录漏洞复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月21日11:16:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通达OA前台任意用户登录漏洞复现http://cn-sec.com/archives/3404427.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息