通达OA任意用户登录和后台GetShell漏洞复现

本文仅为了学习交流,严禁非法使用!!!
(随笔仅为平时的学习记录,若有错误请大佬指出)

1.分析一下存在漏洞文件 logincheck_code.php



从代码中我们可以控制的有UID,CODEUID然后判断$login_codeuid是否存在,不存在或者为空就退出,然后将获取的UID,带入到sql语句进行查询,后面会验证查询的结果,如果信息核对正确,则将个人信息放入到SESSION中,UID=1的时候默认是管理员,而UID我们可以输入一个1,就可以满足查询ql,而我们现在要绕过if (!isset($login_codeuid) || empty($login_codeuid)){exit();},全局搜索一下$login_codeuid可不可以控制

2.分析一下/general/login_code.php,发现存在$login_codeuid


如果$login_codeuid为空,则给$login_codeuid赋一个随机值,并且使用echo打印出来

3.那我们的思路是:先去访问/general/login_code.php,获得$login_codeuid,再去访问logincheck_code.php,同时POST传入获取的$login_codeuidUID=1,获得返回包的PHPSESSID,在使用火狐浏览器伪造COOKiE,登录后台

4.漏洞复现

将获得的code_uid保存下来,进行下一步

将获取的PHPSESSID保存下来,使用火狐浏览器伪造COOKIE,同时访问/general/index.php,便可以进入后台

5.后台GetShell(靶机环境windows7 通道OA用的是MYOA2017)

依次点击系统管理-附件管理-添加存储目录,选择根目录

6.依次点击组织-系统管理员-附件(下图标注)

7.直接上传shell.php不能成功,开启抓包,上传shell.php.进行绕过,windows系统会自动去掉.,不符合windows的命名

8.使用冰蝎进行连接

9.实战(由以上的思路,进入到某站的OA后台管理系统)

10.修复建议
升级通达 OA 到最新版
参考文章
https://www.chabug.org/audit/1516.html
https://blog.csdn.net/sun1318578251/article/details/105728541/

此文档仅供学习,参与违法行为与笔者无关。

原文地址:https://www.cnblogs.com/lovequitepcs/p/12864203.html