通达OA是一种利用较为广泛的办公系统。由于使用uid作为身份标识,攻击者可以通过构造
恶意请求,直接绕过登录认证逻辑,将网站管理员身份伪装成登录OA系统。通达OA官方网站
安全补丁发布于今年4月17日。通达OA<11.5.200417版,通达OA2017版。
这次重现的2017版,则着重分析了这个版本,但是原理基本上是相同的,仅仅文件路径不一样
罢了。从POC的代码分析来看,该漏洞包括以下四个文件:
罢了。从POC的代码分析来看,该漏洞包括以下四个文件:
rcode.php/ispirit/login_rcode.php
General/login_rcode_scan.php是什么意思?
rcode_check.php/ispirit/login_rcode_login_check.php。
General/index.php
第一,通达OA源码利用了elipse5加密,这里推荐利用SeaneDelipse,这个软件利用也很简单
,创建两个目录,一个存放加密的文件,另一个用于输出解密结果。此文件用于获取rcodeuid
参数,如果不存在,则自动生成一个rcodeuid,并将其写到CODE_LDAun_PV缓存(通达OA利
用Redis缓存系统,它还提供对缓存的用法),但显示该参数到18行的位置,使用户能够获得该
参数的值,从而可以忽略后续的认证。
,创建两个目录,一个存放加密的文件,另一个用于输出解密结果。此文件用于获取rcodeuid
参数,如果不存在,则自动生成一个rcodeuid,并将其写到CODE_LDAun_PV缓存(通达OA利
用Redis缓存系统,它还提供对缓存的用法),但显示该参数到18行的位置,使用户能够获得该
参数的值,从而可以忽略后续的认证。
该文件允许用户控制输入的关键参数uid,在通达OA版本中存在漏洞,后台数据库中与uid对应
的用户是admin管理员帐户。由于我们在第一个文件中获得的rcodeuid存储在CODE_LDAun_
PV中,因此在返回时需要指出source变量是pc,而在这里,username是admin,type变量是co
nfirm,原因如下:在这里,我们利用了两个前面存储的缓存中的内容,一个获取rcodeuid,另
一个获取通过post传入的uid,而在前面的步骤中,需要利用type,这就是为什么需要将type设
置为confirm。
的用户是admin管理员帐户。由于我们在第一个文件中获得的rcodeuid存储在CODE_LDAun_
PV中,因此在返回时需要指出source变量是pc,而在这里,username是admin,type变量是co
nfirm,原因如下:在这里,我们利用了两个前面存储的缓存中的内容,一个获取rcodeuid,另
一个获取通过post传入的uid,而在前面的步骤中,需要利用type,这就是为什么需要将type设
置为confirm。