Preview 웹 브라우저들은 다양한 위치에 사용자 데이터를 저장한다. 사용자가 가진 권한, 특성, 클라이언트 측 설정 값(팝업 허용 여부, 자동로그인 설정 여부) 등 여러가지 값들을 저장해 두고 웹 페이지 방문 및 필요할 떄마다 이용한다. 데이터가 보관되는 위치에 따라 보관 기간, 오프라인 사용 가능 여부가 다르다. 이 글은 클라이언트에 저장되는 데이터의 종류와 특징에 대해서 알아본다. 그리고 공격자의 입장에서 이러한 데이터를 안전하게 사용할 수 있는 방법은 있는지 알아본다. Client-side storage? 먼저 웹은 정적(Static)과 동적(Dynamic)페이지로 구분한다. 정적 페이지는 단순 HTML 요청과 응답으로 구성되고, 동적 페이지는 사용자 요청 값을 포함한 다양한 값들을 가공, 랜더..
개요 Flutter에서 textFormField 를 통해 사용자에게 값을 입력받은 후 바깥을 터치했을 때 키보드를 내려서 다른 버튼입력을 받고 싶을 때 사용한다. GetstureDetector() 와 함께 onTap 메소드에 FocusScope.of(context).unfocus();를 사용하면 된다. GestureDetector( onTap: (){ FocusScope.of(context).unfocus(); }, child: Stack( children: [ //배경 Positioned( child: Container( height: 300, ... ) ) ] ), ) 원하는 구역을 터치했을 때 키보드가 사라진다. 출처 : 코딩셰프(https://www.youtube.com/channel/UC_2ge..
2FA(Two Factor Authentication)은 온라인 포털 등에서 사용자의 기기를 기반으로 하는 추가 인증 절차이다. 기존 ID와 Password을 이용하여 로그인하는 지식 기반 인증 과정에서 하나의 인증 수단을 추가한 것으로 OTP(One Time Password)나 지문인식 모듈을 이용한 인증 방식 등을 사용한다. 기존의 인증 우회 기법의 발전과 함께 2FA 인증 우회 기술 또한 꾸준히 연구되고 있다. 이 글은 2FA 인증 기술과 공격자의 관점에서 이를 우회하는 기법을 다룬다. 2FA의 동작 과정 2FA는 기존의 인증 절차에서 인증 로직을 추가한 것이다. 기존의 로그인 방식이 email 주소나 패스워드를 묻는 방식이었다면, 인증코드(verification code)를 추가로 요구하는 방식이..
들어가며 AFL Qemu를 Ubuntu 20.04 환경에 설치한다. AFL만 설치하면 구동되는 것이 아닌, 별도 작업이 필요하기 때문에 정리한다. 아무것도 설치되지 않은 Ubuntu 20.04 VM 이미지에 설치를 진행한다. [환경(VM)] Ubuntu 20.04 LTS 순서 1. pip 설치 2. 의존성 패키지 설치 3. AFL++ 설치 4. AFL-Qemu 설치 1. pip 설치 sudo apt install python3-pip 2. 의존성 패키지 설치 sudo apt-get update sudo apt-get install -y build-essential python3-dev automake git flex bison libglib2.0-dev libpixman-1-dev python3-setu..
들어가며 7-zip를 퍼징한다. 7-zip에서 발생하는 CVE-2016-2334을 분석한다. 그리고 발견한 크래시에서 코드 커버리지를 분석한다. CVE-2016-2334은 heap-based buffer overflow 취약점이다. 범위 밖의 데이터를 읽을 수 있다. 7-zip에서는 조작된 HFS+ 이미지 파일에서 발생한다. 준비 1-day 실습이므로 취약점이 발생했던 같은 환경을 준비한다. 또는 다음의 내용을 학습할 수 있다. Windows x64 1809 WinAFL(Fuzzer) Download and Build Windows 환경에서 AFL 퍼저의 실행은 WinAFL을 사용한다. 사전 설치 1. Visual Studio compiler 가 필요로하며 2019 버전의 설치를 권장한다. “Deskto..
들어가며 GIMP라는 이미지에디터를 퍼징한다. GIMP 2.8.16에서 발생하는 CVE-2016-4994을 분석한다. 그리고 발견한 크래시에서 코드 커버리지를 분석한다. CVE-2017-9048은 Use-After-Free 취약점이다. 동적할당된 heap을 free하고 다시 재사용할 때 취약점이 발생한다. GIMP에서는 조작된 XCF 파일에서 발생한다. 공격자는 유효한 데이터의 손상에서 임의 코드 실행까지 다양한 악의적인 행위를 할 수 있다. 준비 1-day 실습이므로 취약점이 발생했던 같은 환경을 준비한다. 또는 다음의 내용을 학습할 수 있다. Ubuntu 20.04(https://releases.ubuntu.com/20.04/) afl-fuzz(Fuzzer) GDB(크래시 분석 디버깅 도구) 다음의 ..
들어가며 LibXML2라는 XML파싱 라이브러리를 퍼징한다. LibXML2 2.9.4에서 발생하는 CVE-2017-9048을 분석한다. 그리고 발견한 크래시에서 코드 커버리지를 분석한다. CVE-2017-9048은 스택버퍼오버플로우 취약점이다. 실행중인 스택영역의 값을 덮어씌울 수 있으며, DTD 유효성 검사 함수에서 발생한다. 공격자는 바이너리의 컨텍스트 내에서 임의 코드를 실행할 수 있다. 준비 1-day 실습이므로 취약점이 발생했던 같은 환경을 준비한다. 또는 다음의 내용을 학습할 수 있다. Ubuntu 20.04(https://releases.ubuntu.com/20.04/) afl-fuzz(Fuzzer) GDB(크래시 분석 디버깅 도구) 다음의 내용을 학습한다. 새로운 실행 경로 탐색을 위한 커..
들어가며 웹 모의해킹, 취약점진단 실무를 하면서 다양한 구조로 개발된 웹 페이지들을 대상으로 한다. 그 중 가장 쉬운 공격이면서 크리티컬한 취약점 중 하나인 SQL Injection에 대해서 설명하고 정리한다. 공격을 위해서는 내가 삽입한 코드의 동작 원리를 이해하고 백엔드에서 어떻게 실행되는지 이해한 후에 다음 단계의 공격을 해야 한다. 모의해킹 직무 면접의 단골 질문이면서 필드에서 가장 크리티컬하게 만날 수 있는 취약점이다. 원리부터 대응방안까지 하나씩 살펴보자. SQL(Structured Query Language)? 왜 개발자들은 SQL을 사용할까? 웹 사이트를 운영하기 위해서는 많은 데이터의 관리가 필요하다. 쇼핑몰을 예로 들면 이용자의 회원정보, 물건의 판매정보, 상품 문의 게시글 등 시간이 ..
들어가며 LibTIFF라는 이미지 라이브러리를 퍼징한다. LiBTIFF 4.0.4에서 발생하는 CVE-2016-9297을 분석한다. 그리고 발견한 크래시에서 코드 커버리지를 분석한다. CVE-2016-9297는 OOB(Out-of-bounds) 취약점이다. 버퍼 범위 바깥의 인덱스에 접근할 때 발생하며, 조작된 TIFF_SETGET_C16ASCII 와 TIFF_SETGET_C32_ASCII 태그 값에서 발생한다. 공격자는 서비스 거부를 발생시키거나 프로세스 메모리에서 의도하지 않은 중요 정보를 탈취할 수 있다. 준비 1-day 실습이므로 취약점이 발생했던 같은 환경을 준비한다. 또는 다음의 내용을 학습할 수 있다. Ubuntu 20.04(https://releases.ubuntu.com/20.04/) a..
들어가며 TCPdump는 패킷 분석 도구이다. TCPdump 4.9.2에서 발생하는 CVE-2017-13028을 분석한다. CVE-2017-13028는 OOB(Out-of-bounds) 취약점이다. 버퍼 범위 바깥의 인덱스에 접근할 때 발생하며, BOOTP 패킷(Bootstrap Protocol)에서 발생한다. 공격자는 서비스 거부를 발생시키거나 프로세스 메모리에서 의도하지 않은 중요 정보를 탈취할 수 있다. 준비 1-day 실습이므로 취약점이 발생했던 같은 환경을 준비한다. 또는 다음의 내용을 학습할 수 있다. Ubuntu 20.04(https://releases.ubuntu.com/20.04/) afl-fuzz(Fuzzer) GDB(크래시 분석 디버깅 도구) 다음의 내용을 학습한다. ASAN(Addr..