개요 정보 수집이나 파일 다운로드 자동화를 위해 크롤링을 사용한다. 주로 파이썬의 requests 모듈을 이용하여 수집했는데, 대상 사이트에서 응답코드 403(Forbidden)을 반환하면서 데이터를 가져올 수 없었다. 문제를 발견하고 해결하는 과정이다. 문제 식별 cloudflare에서 차단 정책을 도입하여 봇의 접근을 차단하고 있었다. 영문으로는 'Cloudflare challenge page'로 언급하는데 자동화된 접근이나 스크래핑 봇을 차단하기 위해 사용한다. 작동 방식은 브라우저에서만 실행할 수 있는 자바스크립트 구문을 사이트 본문에 삽입하여 실행 여부를 검사하는 방식을 포함하여 사용자의 상호작용이 필요한 버튼을 추가(캡차 등)하는 다양한 방법이 존재한다. 대상 페이지의 경우 명령..
Introduction 웹 공격에는 다양한 취약점 탐지 방법이 연구되고 있다. 클라우드 환경 웹 취약점 진단 중 Server-Side에서 다른 내부 서버로 요청이 필요할 때 파라미터를 변조할 경우 공격 성공 여부를 확인하는 방법을 찾던 중 OOB Testing에 대해 간략하게 정리한다. OAST(Out-of-Band Application Security Testing) OAST는 DAST(Dynamic Application Security Testing)을 보완하기 위한 모델이며, 외부 서버를 이용해서 보이지 않는 취약점을 찾을 수 있다. 진단자가 제어하는 인프라로 대상을 강제로 호출하여 웹 애플리케이션에서 악용 가능한 취약점을 찾는 방법이다. 동적 테스트 만으로 탐지하기 어려운 경우(blind, 비동기..
PKI에서는 인증기관, 등록기관, 그리고 사용자 간의 각종 인증서 업무를 처리하기 위한 표준적인 통신 프로토콜이 필요하다. 이를 CMP(Certificate Management Protocols)라 하며, 인증서 발급/갱신/폐지 요청 및 응답 처리에 사용된다. 인증서 관리 프로토콜은 PKI 구성요소 간의 온라인 상호연동 뿐만 아니라, 상호인증 하려는 두 인증기관 사이에서도 사용될 수 있다. 대한민국의 행정전자서명인증체계에서는 RFC4210을 준용하여 인증서 관리를 수행하며, 그에 필요한 메시지는 RFC4211의 메시지 형태를 사용한다. 인증서 관리 규격들은 다음의 문서에서 표준을 명시하고 있다. ■ RFC 4210 Internet X.509 Public Key Infrastructure Certifica..
HTTP Cookie에 대하여 HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버에서 사용자의 웹 브라우저로 전송한 작은 데이터 조각이다. 브라우저는 나중에 보낼 요청에 대비하여 저장해둔다. HTTP 통신은 상태를 저장하지 않는 stateless 통신이기 때문에 동일한 연결에 대해 연속적인 요청이 발생하지 않는다. 예를 들어 쇼핑몰을 이용할 때 장바구니에 담긴 물건 정보를 통신할 때마다 유지하지 않는다. 이렇게 상태를 저장하지 않는 대신에 쿠키를 이용하여 '세션'을 저장한다. 헤더에 쿠키를 사용하도록 설정하여 HTTP 쿠키가 패킷에 추가되어 각 HTTP 요청에 대해서 동일한 컨텍스트인지, 어떠한 상태를 가지고 있었는지 나타낼 수 있다. 쿠키는 크게 세 가지 목적으로 동작한다. 세션 관리(Session man..
Preview 웹 브라우저들은 다양한 위치에 사용자 데이터를 저장한다. 사용자가 가진 권한, 특성, 클라이언트 측 설정 값(팝업 허용 여부, 자동로그인 설정 여부) 등 여러가지 값들을 저장해 두고 웹 페이지 방문 및 필요할 떄마다 이용한다. 데이터가 보관되는 위치에 따라 보관 기간, 오프라인 사용 가능 여부가 다르다. 이 글은 클라이언트에 저장되는 데이터의 종류와 특징에 대해서 알아본다. 그리고 공격자의 입장에서 이러한 데이터를 안전하게 사용할 수 있는 방법은 있는지 알아본다. Client-side storage? 먼저 웹은 정적(Static)과 동적(Dynamic)페이지로 구분한다. 정적 페이지는 단순 HTML 요청과 응답으로 구성되고, 동적 페이지는 사용자 요청 값을 포함한 다양한 값들을 가공, 랜더..
2FA(Two Factor Authentication)은 온라인 포털 등에서 사용자의 기기를 기반으로 하는 추가 인증 절차이다. 기존 ID와 Password을 이용하여 로그인하는 지식 기반 인증 과정에서 하나의 인증 수단을 추가한 것으로 OTP(One Time Password)나 지문인식 모듈을 이용한 인증 방식 등을 사용한다. 기존의 인증 우회 기법의 발전과 함께 2FA 인증 우회 기술 또한 꾸준히 연구되고 있다. 이 글은 2FA 인증 기술과 공격자의 관점에서 이를 우회하는 기법을 다룬다. 2FA의 동작 과정 2FA는 기존의 인증 절차에서 인증 로직을 추가한 것이다. 기존의 로그인 방식이 email 주소나 패스워드를 묻는 방식이었다면, 인증코드(verification code)를 추가로 요구하는 방식이..
들어가며 웹 모의해킹, 취약점진단 실무를 하면서 다양한 구조로 개발된 웹 페이지들을 대상으로 한다. 그 중 가장 쉬운 공격이면서 크리티컬한 취약점 중 하나인 SQL Injection에 대해서 설명하고 정리한다. 공격을 위해서는 내가 삽입한 코드의 동작 원리를 이해하고 백엔드에서 어떻게 실행되는지 이해한 후에 다음 단계의 공격을 해야 한다. 모의해킹 직무 면접의 단골 질문이면서 필드에서 가장 크리티컬하게 만날 수 있는 취약점이다. 원리부터 대응방안까지 하나씩 살펴보자. SQL(Structured Query Language)? 왜 개발자들은 SQL을 사용할까? 웹 사이트를 운영하기 위해서는 많은 데이터의 관리가 필요하다. 쇼핑몰을 예로 들면 이용자의 회원정보, 물건의 판매정보, 상품 문의 게시글 등 시간이 ..
배너 그래빙(Banner Grabbing) 대상 서버나 시스템의 운영체제를 탐지하기 위한 기술에 대해 설명한다. 배너그래빙은 서버로부터 서비스 또는 애플리케이션 정보, 운영체제 정보를 수집한다. 애플리케이션 버전 탐지 등에 활용된다. 대상과 직접 네트워크 연결을 맺어서 운영체제 정보나 서비스 및 애플리케이션 정보를 담고 있는 배너를 받아오는 방법이다. 배너에서 필요한 부분만을 파싱한 결과에 관련 정보가 담겨있는 경우, 간단하게 버전을 확인할 수 있다. 배너그래빙은 포트에서 실행 중인 운영 체제 정보 및 서비스를 해당 버전을 획득하기 위한 작업이다. 실행 중인 서비스의 버전이 취약하고 모든 사용자가 볼 수 있는 경우 공격자가 원격 호스트 시스템 전체를 처리할 수 있기 때문에 원격 호스트 시스템에 침투할 수..
GitHub - lwzSoviet/CVE-2021-3281 GitHub - lwzSoviet/CVE-2021-3281 Contribute to lwzSoviet/CVE-2021-3281 development by creating an account on GitHub. github.com django.utils.archive.py의 TarArchive 클래스, 171번 라인에서 발생하는 Path Traversal 취약성이다. 이 함수는 os.path.join(to_path, name)를 사용하며, 'name' 파라미터에 대한 검증을 실시하지 않는다. 사용자가 이 함수를 윈도우 환경에서 사용할 경우 Directory Traversal 취약성이 발생할 수 있다. POC는 아래와 같다. from django.u..
데이터 평문 전송 데이터 평문 전송 취약점은 서버와 클라이언트 간 통신 시 중요 정보(계정정보, 주민등록번호, 신용정보 등)가 평문으로 노출되는 취약점입니다. 주의! 데이터 평문 전송 취약점을 애플리케이션 계층 진단 도구인 프록시로 진단하지 않도록 한다. 복호화가 완료된 이후의 데이터가 보이기 때문에 꼭 전송 계층의 진단 도구인 스니핑 툴(와이어 샤크)로 진단한다. No 실습 위치 비고 1 http://localhost/login 로그인 Step1. 로그인 시 발생하는 패킷을 Wireshark로 확인해보면 입력한 계정정보가 평문으로 전송되는 것을 확인할 수 있습니다. 데이터를 평문으로 전송했을 시 스니핑 공격시 계정 노출의 위험이 있으므로 암호화하여 전송해야 합니다. 또한 개인정보보호법과 정보통신망 이용..