반응형

일상 576

안드로이드 필수 구성 요소

안드로이드는 액티비티(Activity), 서비스(Service), 콘텐츠 프로바이더(Content Provider), 브로드캐스트 리시버(BroadCast Reciver)라는 네 가지 주요 기능으로 구성되어 있다. 1. 액티비티(Activity) 액티비티는 사용자에게 보어주는 디바이스의 인터페이스다. 화면은 메뉴를 클릭하거나 버튼을 클릭하는 등과 같은 특정한 액션에 의해 전화되는데, 각 화면이 모두 액티비티라고 할 수 있다. 안드로이드 환경에서 액티비티는 대체로 하나의 화면에서 표시된다. 예를 들어 메인 화면(Main Activity)에서 하나의 버턴을 클릭하면 다음 페이지(Second Activity)로 접근할 수 있으며, 그 다음에 다른 액션에 의해 다른 엑티비티들이 실행되어 사용자 화면에 나타난다...

Server-side Template Injection(SSTI) template 별 점검 방법

Template 별 점검 방법 * Smarty (unsecured) - PHP - 기본 Injection 확인 구문 >> {5*5} //연산 결과 : 25 >> a{*comment*}b //주석 결과 : ab - PHP 코드를 사용하는 구문 {php}$d="bHM=";system(base64_decode(str_pad(strtr($d,'-_','+/'), strlen($d)%4,'=',STR_PAD_RIGHT)));{/php} >> ls 명령어를 base64로 인코딩하여 명령어 실행 - Smarty 문법 구문 >> {include file = '/etc/passwd'} >> {include_php file='/etc/passwd'} * Twig(> {{5*5}} // 연산 결과 : 25 >> {{5*"5..

Server-side Template Injection 취약점 (SSTI)

* Server-side Template이란? 정적 웹페이지 - 서버에 미리 저장된 정보(HTML, 이미지, JS등)를 별다른 가공 없이 바로 보여주는 페이지 동적 웹페이지 - 서버 내 정보를 스크립트로 가공한 이후 전달되는 페이지 Server-side Template Engine - 서버에서 DB 혹은 API에서 가져온 데이터를 미리 정의된 Template에 넣어 최종 페이지(html)를 완성한 이후 클라이언트에서 전달해주는 역할 - Html 코드에 고정적으로 사용하는 부분은 Template으로 만들고 동적 생성해야 하는 부분만 Template의 특정 장소에 끼워 넣는 방식으로 동작 >> 사용자가 입력하는 데이터와 미리 정의된 템플릿을 조합하여 사용자에게 보여주는 방식 Server-side Templa..

Spring Framework 취약점 진단

Spring Framework Spring Framework는 2002년부터 사용된 Java 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 Spring이라고도 하며, Java 기반 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공 공공기고나의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로 사용됨 Spring Framework 파일구조 Servlet-context.xml : 서버 요청과 관련된 객체 정의 (URL 관련된 controller나, 어노이테이션 등의 설정) root-context.xml : 비즈니스 로직을 위한 설정(ex. 회원가입 과정-아이디 중복여부 확인) / DB에 접속하기 위한 정보 기술(id, pw) views(디렉터리) : Sprin..

OpenSSL 취약점 점검 가이드

SSL(Secure Sockets Layer) / TLS(Transport Layer Security) 인터넷 상의 보안 통신 표준, 데이터를 암호화 하는 프로토콜 네트워크 구간에서의 데이터를 암호화 하여 중간에 데이터가 탈취되거나 도청될 때 데이터를 주고받는 당사자 외에는 복호화 할 수 없음. 인증 - 무결성 - 기밀성을 보장함 OpenSSL C언어로 되어 있는 공개 암호화 라이브러리, 비밀키 암호화/공개키 암호화/MAC/키 관리 SSL,TLS에서 사용되는 거의 모든 암호화 알고리즘이 구현되어 있음 오픈소스 프로젝트로 개발되어 여러 사람들에게 안정성이 인증되었고, 무료로 사용할 수 있을 뿐만 아니라 제공되는 기능들은 많은 소프트웨어에서 사용할 정도의 보안성을 가지고 있음 발생하는 취약점 리스트 - He..

wordpress 취약점 진단 방법

정보 수집부터 보호 대책 까지 1. wordpress 사용 확인 : 점검을 수행할 대상에서 wordpress를 사용하고 있는지 확인한다. - 메인 페이지나 특정(plugin을 사용하는) 페이지 접근 시 페이지 내 소스코드 또는 주석으로 wordpress 버번과 사용중인 plugin 이름, 버전 정보를 확인 할 수 있음. - style 부분에서 사용중인 theme 정보를 확인할 수 있음 2. 정보수집 1) cve 정보 수집 - wordpress theme vulnerabilities 2) nmap nse - http-wordpress-enum -> plugin, theme 정보 스캔 > 명령어 : nmap -sV -p 80 --script http-wordpress-enum 3) wpscan : WPSca..

JWT(Json web token) 취약점 점검

이전 작성 참고 내용 https://itinformation.tistory.com/527 JWT(Json Web Token) 보안 특성 및 대처 방안 JWT 란? - JWT는 상호간의 정보를 안전하게 전송하는데 사용되는 기술 - 주로 신원(identity) 정보와 클라이언트의 요청과 관련된 정보를 운반하는데 사용 - 토큰은 인증(authentication)을 통해서 생성 -> itinformation.tistory.com JWT 장점 - JWT는 쿠키 등에 저장되므로 서버에서 인증을 위한 세션 저장소가 필요 없음 - 다른 서비스 인증에서도 공통적으로 사용할 수 있어 확장성이 뛰어남 - REST 서비스로 제공 가능 JWT 단점 - 필드가 추가되면 토큰 크기가 증가 - Header나 payload는 단순히 ..

취약점 점검을 위한 자바스크립트 분석 유형

1. Client Side 검증 우회 - 데이터를 서버로 보내기 전에 클라이언트에서 먼저 검증하여 사용자의 실수로 발생하는 통신의 낭비를 줄일 수 있음 - 서버에서 값이 유효한지 확인하는 과정이 없어 사용자에게 더 빠른 오류 피드백을 줄 수 있음 - 단점 > 클라이언트에서만 값을 확인할 경우, 서버에서 데이터를 빼가는 등의 악영향을 미칠 수 있음 > E2E 암호화를 하지 않는 경우 전송되는 데이터를 손쉽게 바꿀 수 있음 > 클라이언트에서 검증하는 로직은 공격자가 확인하고 우회할 수 있음 2. 보안 프로그램 설치 탐지 우회 - 보안 프로그램은 로컬에서 동작하는 웹 서버 구조를 가지고 있음 - 자바 스크립트로 보안 프로그램에 요청을 보내고 요청에 따라 암호화, 전자 서명 등을 진행 - 대책 > 난독화를 통한..

iOS 정적분석을 위한 바이너리 추출

App 바이너리 추출 1. App Directory > App 설치된 Bundle 경로에서 FTP와 같은 방법(3utool도 가능)으로 바이너리 추출 > /var/containers/Bundle/Application/[app_id]/[app_name]/ 2. 메모리 덤프를 통한 바이너리 추출 > App Store에서 앱을 설치 시 앱이 암호화되어 복호화가 필요 > 앱 실행 시 앱이 메모리에 복호화되어 로그되었을 때 이를 덤프하여 바이너리를 추출하는 방법 > Clutch tool을 이용해 복호화과정을 자동화 시킬 수 있음 (12,13에서는 동작하지 않을수 있음) App Store 설치 앱과 IPA 설치파일 차이 - App Store에서 설치된 앱은 실행 Binary가 암호화 되어있음 - IPA 파일을 설치..

Smail code 타입 및 코드 예시

안드로이드 모바일 앱 분석 시 사용하는 Smali code에 대한 설명입니다. Smali 자료형 타입 I > int F > float J > Long S > short Z > Boolean C > char D > duoble V > void Smail 명령어 1. Register 간 데이터 이동 > move, move/from16, move-wide, move-wide/from16 2. 리턴값 세팅 및 처리 > move-result, move-result-wide, return-void, return-object 3. 예외 처리 > throw, move-exceoption 4. 레지스터에 상수 대입 > const/4, const/16, const, const-wide, const-string 5. 동기화..