Journey to Security/취약점진단|모의해킹 17

웹 취약점 진단/모의해킹을 위한 curl - 요청 조작부터 세션 유지까지

1. curl이란curl(Client URL)은 커맨드라인에서 URL을 통해 데이터를 전송하는 도구다.HTTP, HTTPS, FTP 등 다양한 프로토콜을 지원하며, 가장 흔한 용도는 웹 서버에 요청을 보내고 응답을 받는 것이다.# 가장 기본적인 사용: 웹 페이지의 HTML을 터미널에 출력curl http://example.com 브라우저가 내부적으로 하는 일, 즉 HTTP 요청을 구성하고, 서버에 보내고, 응답을 받아 처리하는 일을 curl을 이용해서 명령 한 줄로 수행할 수 있다. 브라우저와의 차이는 요청의 모든 요소를 옵션으로 직접 지정할 수 있다는 점이다. 2. 웹해킹 도구로서의 curl웹 모의해킹은 웹 애플리케이션을 대상으로 공격자 관점에서 요청을 보내 취약점을 찾아내는 행위다.이때 필요한 건 정..

[AWS]배포된 EC2 환경 외부 진단으로 취약점 찾기

지난 실습에서 IntraPortal(Spring Boot)을 EC2에 올렸다.앱 자체는 이전 시리즈에서 CSRF, BCrypt, 보안 헤더까지 시큐어코딩으로 하드닝을 해둔 상태다.여기서부터는 관점을 바꿔서 방어자가 아니라 공격자의 위치에서 Kali 한 대로 배포된 EC2를 외부에서 스캔하고 실제로 어느 지점에서 보안이 뚫리는지 확인한다.1. 진단 시나리오진단은 외부 공격자(Kali) 시점에서 EC2에 네트워크로 노출된 표면(attack surface)을 훑는 흐름이다.포트 스캔으로 열린 포트를 찾고, 열린 포트를 통해 전송 계층·인증·관리 경로를 순서대로 확인한다. Kali에서는 네트워크에 노출된 표면을 훑어 실제로 뚫리는 지점을 찾고, 내부 접속으로는 인스턴스가 탈취됐을 때 자격증명이 새어나갈 위험이..

다형성 셸코드(Polymorphic Shellcode) - 시그니처 기반 탐지를 무력화하는 셸코드 변형 기법

1. 셸코드(Shellcode)셸코드는 익스플로잇 성공 후 타겟 시스템에서 실행시키는 작은 기계어 코드 조각이다.초기에 /bin/sh 셸을 실행하는 용도로 주로 사용되었지만 현재는 리버스 셸, 파일 다운로드, 권한 상승 등 다양한 동작을 수행하는 페이로드를 통칭하는 용어로 확장되었다.버퍼 오버플로우 같은 메모리 취약점을 이용해 프로그램의 실행 흐름을 탈취한 뒤, 탈취한 제어권으로 무엇을 실행할 것인지를 담고 있는 것이 셸코드다. 2. 바이트 패턴과 시그니처 기반 탐지1️⃣ 바이트 패턴이란셸코드는 CPU가 직접 해석하는 기계어 명령의 나열이다.예를 들어 Linux x86에서 /bin/sh를 실행하는 셸코드는 다음과 같은 고정된 바이트 시퀀스로 구성된다.\x31\xc0\x50\x68\x2f\x2f\x73\x..

역직렬화 취약점 - 객체 복원과 동시에 공격 코드가 실행되는 원리

1. 직렬화와 역직렬화 직렬화(Serialization)는 메모리상의 객체를 저장하거나 전송할 수 있는 형태, 즉 바이트 스트림으로 변환하는 과정이다.역직렬화(Deserialization)는 그 반대로, 저장되거나 전송된 바이트 스트림을 다시 메모리상의 객체로 복원하는 과정이다.이 메커니즘은 객체를 파일로 저장했다가 다시 불러오거나, 네트워크를 통해 객체를 그대로 주고받을 때 사용된다.User 객체를 디스크에 저장하고 나중에 동일한 상태로 복원하는 작업이 대표적이다. 🟢 직렬화-역직렬화의 데이터 흐름객체는 직렬화를 거쳐 바이트 스트림이 되고, 이 바이트 스트림은 파일·소켓·데이터베이스 어디로든 옮겨질 수 있다.수신 측은 역직렬화를 통해 동일한 구조의 객체를 다시 만든다. 2. 역직렬화가 위험한 이유..

Spring Boot 사내 포털 모의침투 - 공격 체인을 끊는 4단계 패치

이전 글에서 IntraPortal을 정찰부터 데이터 유출까지 8단계로 침투하고, 각 공격이 시작된 소스코드 라인까지 매핑했다.이번 글에서는 그 매핑 테이블을 기반으로 하드닝을 진행한다.공격자가 처음 닿는 외부 표면부터 차단함으로써 초기 침투 사슬을 끊어서 후속 단계가 연쇄적으로 무력화되는 것을 검증하는 것이 목표다. 외부에서 접근 가능한 표면을 먼저 닫으면 그 표면에 의존하던 RCE도, RCE에 의존하던 권한 상승도 시작점을 잃는다.따라서 외부 표면 → RCE 경로 → 크레덴셜 → OS 순서로 패치를 진행한다.Phase대상 파일대응 기법1. 외부 표면Actuator 노출, CSRF, SQLiSecurityConfig.java, application.properties, LoginController.jav..

Spring Boot 사내 포털 모의침투 - MITRE ATT&CK 기반 공격 시나리오

이번 실습에서는 의도적으로 취약하게 구성한 Spring Boot 기반의 사내 포털을 대상으로 nmap 스캔부터 데이터 유출까지 공격자의 동선을 그대로 재현해본다.실습 대상은 IntraPortal이라는 가상의 사내 포털이다.코드 골격은 Claude Code로 구현했다. (github.com/Cordilog/aws-pentest-lab에서 클론하여 구축할 수 있다.)공격의 흐름은 MITRE ATT&CK의 tactic 순서를 따르도록 설계했다. 8단계 공격 동선침투는 한 단계가 다음 단계의 전제 조건을 만들어주는 방식으로 이어진다.단계 ATT&CK ID 전술(Tactic) 행위 대상 1T1046Discovery포트 스캔 + 서비스 식별nmap → 8080/tcp open2T1190Initial Acces..

시스템 계정의 공격 표면과 차단 전략 - 대화형 로그인의 위험성

웹 서버 한 대가 뚫리는 것과 시스템 전체가 장악되는 것 사이에는 보통 "셸을 잡았는가"라는 분기점이 있다.공격자가 코드 실행에 성공해도, 거기서 대화형 셸을 띄울 수 없다면 공격 체인은 그 자리에서 멈춘다.시스템 계정의 로그인 셸 하나를 /sbin/nologin으로 바꾸는 단순한 작업이 방어선으로서 의미를 갖는 이유다.대화형 로그인의 정의부터 시스템 계정에 이것이 허용될 때 발생하는 구체적 위험, 그리고 실무에서의 차단 방법을 알아보자.1. 대화형 로그인 개념1️⃣ 대화형 로그인대화형 로그인(Interactive Login)은 사람이 터미널, 콘솔, SSH 등을 통해 키보드로 직접 인증하고 셸을 획득하는 방식이다. 인증에 성공하면 /bin/bash 같은 로그인 셸이 할당되고, 사용자는 그 셸에서 임의의..

DVWA 문제풀이: Command Injection

1. Command Injection 개념Command Injection은 사용자 입력값이 서버 측 OS 명령어 실행 함수(shell_exec, system, exec 등)에 그대로 전달될 때 발생하는 취약점이다.공격자는 ;, &&, | 같은 명령어 구분자(separator)를 이용해 의도하지 않은 명령어를 추가 실행시킨다. 구분자 동작 방식 ;앞 명령 결과와 무관하게 순차 실행&&앞 명령이 성공해야 뒤 명령 실행||앞 명령이 실패해야 뒤 명령 실행|앞 명령의 출력을 뒤 명령의 입력으로 전달 🔵 DVWA 실습 조건 : ping 기능 DVWA의 Command Injection 실습 화면을 보면 단순한 입력창 하나만 있다.IP 주소를 입력하면 서버가 해당 IP로 ping을 실행하고 결과를 브라우저에 출..

DVWA 문제풀이: Netcat을 이용한 Reverse Shell 공격

1. Reverse Shell이란?일반적인 원격 접속(Normal Shell)은 공격자가 피해 서버에 접속을 시도하는 방향이다.반면 Reverse Shell은 방향이 반대다.피해 서버가 공격자 쪽으로 먼저 연결을 맺는다. 이 방향 역전이 중요한 이유는 방화벽 정책 때문이다.대부분의 서버는 외부에서 들어오는 연결(Inbound)을 엄격하게 차단하지만, 서버가 외부로 나가는 연결(Outbound)은 상대적으로 허용하는 경우가 많다. Reverse Shell은 이 비대칭성을 이용한다. 2. Reverse Shell 실습Step 1️⃣ 공격자 PC(kali)에서 리스너 열기nc는 Netcat의 줄임말로, TCP/UDP 연결을 자유롭게 열고 닫을 수 있는 네트워크 유틸리티다.stdin/stdout을 네트워크 소켓..

DVWA 애플리케이션으로 웹 취약점 실습하기

1. DVWA란?DVWA(Damn Vulnerable Web Application)는 의도적으로 취약하게 설계된 PHP/MySQL 기반 웹 애플리케이션이다.합법적이고 통제된 환경에서 공격 기법과 도구를 테스트할 수 있도록 만들어졌으며, 보안 교육 플랫폼으로 활용된다.핵심 특징은 다음과 같다.Low / Medium / High / Impossible 4단계 난이도 제공SQL Injection, XSS, CSRF, Command Injection 등 주요 웹 취약점 포함각 레벨의 소스코드를 직접 비교할 수 있는 "View Source / Compare All Levels" 기능2. 환경 구성 docker run -d -p 80:80 vulnerables/web-dvwa *현재 서버에서 80번 포트가 사용중이..