本文由东塔网络安全学院学员---张同学 投稿。

1 漏洞描述

通达OA是一套使用比较广泛的办公系统。该漏洞因为使用uid作为身份标识,攻击者通过构造恶意请求,可以直接绕过登录验证逻辑,伪装为系统管理员身份登录OA系统。通达OA官方于2020年4月17日发布安全更新。

2 影响版本

通达OA < 11.5.200417版本

通达OA 2017版本

3 漏洞原理

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

/ispirit/login_code.php

/general/login_code_scan.php

/ispirit/login_code_check.php

/general/index.php

首先说明,通达OA源码使用zend5加密,这里推荐一款解密工具:SeayDzend,工具使用也很简单,创建两个目录,一个存放加密文件,另一个用来输出解密结果。

/ispirit/login_code.php:

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

/general/login_code_scan.php:

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

/ispirit/login_code_check.php:

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

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

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

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

4 漏洞复现

环境搭建:

下载源码直接安装即可,注意在安装完毕检测端口是否占用;

这里使用80端口,成功访问,环境搭建完成:

手工抓包复现:

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

通过返回包获取codeuid

而后使用POST方式访问/general/login_code_scan.php

提交相关参数,其中codeuid需要改为上一步中返回的值。

payload:uid=1&codeuid={2448FFAD-A63E-F010-653B-8814A083440A}&type=confirm&source=pc&username=admin

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

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

POC自动获取复现:

直接在python环境下运行POC,-u指定url,-v指定版本,返回cookie

替换浏览器存储的cookie,成功以管理员身份登录OA系统。

Poc:https://github.com/NS-Sp4ce/TongDaOA-Fake-User

通达oa php漏洞,通达OA前台任意用户登录漏洞相关推荐

  1. 通达OA前台任意用户登录漏洞+RCE漏洞复现

    声明 本文仅用于技术交流,请勿用于非法用途 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任. 文章作者拥有对此文章的修改和解释权.如 ...

  2. 通达OA 前台任意用户登录漏洞getshell

    前言    本次文章可以分为两部分,第一部分通达OA前台管理员伪造登录,第二部分后台附件getshell.作为一个笔记吧. 漏洞复现 管理员伪造登录 找到后台登录地址抓包修改url 删除cookie目 ...

  3. 【漏洞复现】通达OA v11.7 在线任意用户登录漏洞

    0x00 前言 通达OA V11.7版本存在这任意用户登录漏洞,该漏洞需要管理员在线才可以登录系统,另外一个方面就是编译在线的uid值进行判断. 具体fofa语法放在下面: app="TDX ...

  4. 通达OA任意用户登录漏洞复现

    目录 通达OA任意用户登录漏洞 漏洞描述 影响范围 漏洞复现 通达OA任意用户登录漏洞

  5. 通达OA V11.3 代码审计 (文件上传、文件包含、任意用户登录漏洞)

    因为这段时间比较忙,抽出时间写博客很不容易,所以就简单的吧印象笔记里面的内容站上俩,没有写太多具体的分析过程,尽量都在截图中说明了 附件 通达OA11.3源码(未解码,可以自己去下SeayDzend解 ...

  6. 浪潮ClusterEngineV4.0 任意用户登录漏洞

    文章目录 漏洞名称 漏洞描述 影响版本 fofa 漏洞复现 第一步 登录页面 第二步 成功登录后台 摘抄 漏洞名称 浪潮ClusterEngineV4.0 存在任意用户登录漏洞, 漏洞描述 浪潮Clu ...

  7. 安恒 明御WEB应用防火墙 report.php 任意用户登录漏洞

    安恒 明御WEB应用防火墙 report.php 任意用户登录漏洞 一.漏洞描述 二.漏洞影响 三.网络测绘 四.漏洞复现 总结: 五.修复建议 一.漏洞描述 安恒 明御WEB应用防火墙 report ...

  8. 齐治堡垒机任意用户登录漏洞

    声明:仅供漏洞检测和学习,勿用于非法测试 漏洞信息 浙江齐治科技股份有限公司是一家主要经营计算机软硬件.网络产品的技术开发等项目的公司,近日,HW期间情报齐治运维堡垒机服务端存在任意用户登录系统漏洞, ...

  9. 通达OA 任意用户登录漏洞复现

    0x00 漏洞描述 该漏洞类型为任意用户伪造,未经授权的远程攻击者可以通过精心构造的请求包进行任意用户伪造登录. 0x01 影响版本 通达OA < 11.5.200417 版本 通达OA 201 ...

  10. 通达OA CMS后台任意用户登录漏洞复现

    访问172.168.20.222/general/login_code.php拦截发送到重发器 发送后获取CODEUID 打开http://172.168.20.222/logincheck_code ...

最新文章

  1. 优秀的Java程序员必须了解GC的工作原理
  2. android Too many open files 解决
  3. java知识百科全书--强烈推荐
  4. Cloud一分钟 | 阿里云将在英国大区设立数据中心
  5. Python 元组tuple - Python零基础入门教程
  6. 用python提取图片主要颜色_Python可视化|09-使用python和R提取图片颜色绘图(五-颜色使用完结篇)...
  7. Manjaro下显卡相关的命令搜集
  8. 『教程』笔记本win7下自建Wifi热点–便于手机Wifi上网 (转 )
  9. st7789 照片转数组软件_干货 | 新闻人实用软件安利
  10. JavaScript--eval
  11. 我的记事本(VB6)
  12. 现代操作系统(原书第四版)课后题答案 —— 第一章 引论
  13. macOS Mojave下解决wine中文乱码问题
  14. 网络安全2:各种经典渗透方式合集
  15. RK3588超强8K视频输出NRV边缘计算盒 AI人工智能
  16. html常用长度度量单位,度量长度的单位是什么 毫米以下的五个计量单位分别是什么?...
  17. GPU架构与管线总结
  18. kaggle phone verify 收不到手机验证码(2021.06亲测可行)
  19. 如何解读测试结果出现负数
  20. 使用Locust进行性能测试,Locust启动失败

热门文章

  1. logback控制台彩色日志输出
  2. VS运行程序时遇到0xc0150002的问题
  3. 游戏场景设计探究:空间潜意识
  4. 淘宝旺旺代码生成页面
  5. 【Python】Scrapy抓取多玩Gif图片
  6. troublemaker中文谐音_troublemaker歌词, trouble maker 音译中文歌词
  7. matlab负反馈传函,已知负反馈系统开环传函求阶跃传函
  8. 给c++程序员的一份礼物——常用工具集
  9. 记录一个扫描二维码报错问题
  10. Android app使用TextToSpeech实现文字转换语音