通达OA任意用户登录漏洞复现(POC+手工方式实现)

本文首发于我的个人博客,记录了我在实验室学习渗透测试所做的第七个漏洞复现。

漏洞概述

通达OA是一套国内常用的办公系统,在V11.X<V11.5和通达OA 2017版本中存在任意用户登录漏洞。攻击者在远程且未经授权的情况下,通过此漏洞可以以任意用户身份登录到系统(包括系统管理员)。复现此漏洞可以使用已有的POC脚本,也可以手工复现。

实验工具与环境

实验工具:通达OA2017 v10.13.18,Burp Suite

实验环境:Windows 10

利用POC复现

1. 工具安装配置

下载好通达OA2017后安装,所有选项默认即可。

2. 登录

初始用户名:admin,密码为空,直接登录。

001

登录后,可以发现管理员后台地址都为如下格式:

http://网站/general/index.php?isIE=0&modify_pwd=0

复制该地址,关闭网页,清除掉该网页的cookie,之后再次直接访问该地址,可以看到此时提示我们用户未登录。

002

3. 生成并替换cookie

下载poc,在命令行中通过该poc生成我们的cookie,即COOKIE:后分号前的一段字符串。

python POC.py -v 11 -u http://本机IP

003

复制该字符串,在刚才的网页打开F12进行cookie的替换。点击应用程序,找到cookie,选择本地地址,将PHPSESSID的值替换成刚才生成的cookie。

004

替换后刷新页面,可以看到已经进入了登录成功的界面。这说明,已经成功利用cookie登录了进来。

手工复现

1. 抓包

使用Burp Suite抓包:在Proxy一栏下,选择Intercept,首先点击“Open Browser”打开内置浏览器(谷歌),然后在“Intercept is off”状态下打开http://localhost,然后使“Intercept is on”,在账号密码均为空的情况下点击登录,此时能看到已经抓取到了我们需要的包。

005

2. 修改请求

点击“Action-->Send to Repeater”,然后就可以在Repeater一栏下看到这个包。点击左上角的Send后,会在右侧的Response下看到服务器的返回结果。如果状态码是200,说明成功了。

006

然后修改几个地方:

  • 首行的地址改为/logincheck_code.php
  • 删除Cookie一行
  • 尾行最后加上&UID=1

修改好后,再次发送,在Response中可以找到Set-Cookie,后面即为我们需要替换的cookie。

007

3. 验证

清除Cookie,直接打开前面提到的链接,还是提示用户未登录,按F12,替换cookie后刷新页面,登录成功。

008

参考文章

原文地址:https://www.cnblogs.com/Alleyn180400524/p/13593759.html