[취업반 스터디 3달 1주차: 과제]

Minseok Jo·2024년 2월 18일
post-thumbnail

3달차 1주차 과제는 다음 3가지와 같다.

  1. XSS 내용정리
  2. XSS : CTF 문제 취약점 찾기 (alert 1 띄우기)
  3. 웹 개발
  • 내가 만든 웹 사이트에서 XSS 찾아보기

1번 복습 내용은 "스터디 정리" 카테고리에 기록해두었다.
따라서 2번 과제부터 정리하였다.


1. SQL Injection : CTF문제 풀기

[XSS1 : Stored]

주어진 문제는 다음과 같다.


1) 로그인 → 공지사항 → 글쓰기

(1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다.

(2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인
○ XSS 포인트 확인

(3) < ' " > 4개의 문자가 사용가능한지 확인
○ 제목 부분은 입력한 문자가 그대로 출력되지만, 내용 부분은 HTML Entity로 치환되고 있다.
● ∴ 제목부분에 XSS를 시도하였다.

(4) 제목 부분에 스크립트 입력

(5) XSS 공격 확인
○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습
● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다.



[XSS2 : Reflected]

주어진 문제는 다음과 같다.


1) 로그인 → 공지사항 → 글쓰기

(1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다.

(2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인

(3) < ' " > 4개의 문자가 사용가능한지 확인
○ 제목과 내용 부분 모두 HTML Entity 로 치환이 되고 있다.
● 따라서, 현재 페이지에서는 XSS가 불가능하다.


2) 로그인 → 공지사항 → 검색

(1) 글 목록 페이지에서 다음과 같이 입력한 후, 검색 버튼을 눌러보았다.

(2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인
○ XSS 포인트 확인

(3) POST방식을 GET방식으로 바꾸어, 요청 가능한지 확인
○ 기존 POST방식으로 되어있는 것을, URL 전달이 가능하도록 하기위해 GET방식으로 바꾸어 요청/응답이 가능한것을 확인하였다.

(4) < ' " > 4개의 문자가 사용가능한지 확인
○ <, > 두 문자가 HTML Entity로 치환되고 있어, 사용할 수 없다.
● 그러나 이미 script 태그 안에 데이터가 출력되고 있으므로, SQL Injection 때처럼 형식을 맞춰 스크립트를 작성해주었다.

(5) Repeater를 통해, 검색 부분에 스크립트 입력

(5) XSS 공격 확인
○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습
● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다.



[XSS3 : Reflected]

주어진 문제는 다음과 같다.


1) 로그인 → 마이페이지

(1) 로그인할 때 입력한 아이디가 페이지에 그대로 나타나고 있다

(2) Repeater에서 값을 변경하여도 서버 응답 값에 데이터가 그대로 포함되어 출력되는 것을 확인
○ XSS 포인트 확인

(3) < ' " > 4개의 문자가 사용가능한지 확인

(4) 파라미터 부분에 스크립트 입력

(5) XSS 공격 확인
○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습
● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다.



[XSS4 : Stored]

주어진 문제는 다음과 같다.


1) 로그인 → 공지사항 → 글쓰기

(1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다.

(2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인
○ XSS 포인트 확인

(3) < ' " > 4개의 문자가 사용가능한지 확인

(4) 제목 부분에 스크립트 입력

(5) XSS 공격 확인
○ 응답값에 script와 alert 글자가 없는 것을 보아 필터링되어있다고 생각해볼 수 있다.
● 따라서 두 단어의 필터링을 우회하도록 하였다.

(6) 필터링 우회
○ script 태그는 대소문자 혼용으로 필터링 우회
● alert 태그는 단어가 필터링되며 alert가 합쳐지도록 필터링 우회

(7) XSS 공격 재확인
○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습
● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다.



[XSS5 : Stored]

주어진 문제는 다음과 같다.


1) 로그인 → 공지사항 → 글쓰기

(1) 글 작성 페이지에서 제목과 내용을 다음과 같이 입력하였다.

(2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인
○ XSS 포인트 확인

(3) < ' " > 4개의 문자가 사용가능한지 확인
○ < 와 > 두 문자가 HTML Entity로 치환되고 있다.
● notice_update.php 에서 자바스크립트를 통해 치환을 하고 있었고, 따라서 스크립트를 조작해 우회하고자 한다.

(4) notice_update.php 에서 Intercept 후, 자바스크립트 조작
○ HTML Entity 값으로 치환하도록 작성된 것을 무시하도록 재작성

(5) 스크립트 재작성
○ 내용 입력칸에 POC 코드 작성

(6) XSS 공격 확인
○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습
● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다.



[XSS6 : Reflected]

주어진 문제는 다음과 같다.


1) 로그인 페이지

(1) 로그인 페이지에서 없는 아이디 입력

(2) 서버 응답 값에 방금 입력한 데이터가 그대로 출력되는 것을 확인

(3) GET 방식으로 전달방식 변경 후, 요청/응답이 유효한지 확인
○ XSS 포인트 확인

(3) < ' " > 4개의 문자가 사용가능한지 확인
● 이미 script 태그 안에 데이터가 출력되고 있으므로, SQL Injection 때처럼 형식을 맞춰 스크립트를 작성해주면 된다.

(4) id 값에 스크립트를 포함하여 입력

(5) XSS 공격 확인
○ 사진1. 서버의 응답값에 입력한 스크립트가 출력되는 모습
● 사진2. 해당 URL을 복사해서 요청을 보내본 결과, 브라우저에서 스크립트가 동작하였다.


이렇게 두번째 과제인 'CTF 문제 풀기' 과제가 완료되었다.


0개의 댓글