CS/정보보호

해킹 문제 풀이 실습 (http_hack) - 2

arsenic-dev 2025. 4. 3. 03:13

경희대학교 장대희 교수님의 정보보호 수업을 기반으로 정리한 글입니다.

실습 진행

HTTP8 - XSS Vulnerability Example

문제 설명

주어진 웹 애플리케이션에서 XSS 취약점을 찾아 실습하는 문제

  • Input을 넣을 때 XSS가 발생할 수 있도록 입력하여 알람창 띄우기

※ 알림창을 띄우는 게 XSS가 터짐을 알 수 있는 척도이다.

 

문제 풀이

▶ 입력할 수 있는 칸에 XSS payload 삽입

 

※ XSS payload: XSS 공격에 사용되는 악성 스크립트 코드로, 주로 JavaScript로 구성되어 사용자의 브라우저에서 실행된다.

▶ 사용자의 입력이 검증없이 렌더링되면서 임의의 JavaScript가 실행됨

 

결론

사용자의 입력 값을 검증 및 이스케이프 처리를 통해 XSS 공격을 방어해야 함 (필터링 기법)

 

XSS 취약점

임의의 자바스크립트가 사용자의 브라우저에서 실행되는 취약점으로 자바스크립트를 이용한 여러 함수를 사용하는 것이 가능하다. 

 

공격자는 XSS 취약점을 통해 document.cookie를 alert하여 사용자의 쿠키 값을 노출하는 등의 세션 쿠키 탈취, 혹은 피해자의 정보를 공격자의 서버로 전송하는 식의 공격도 가능하다. 또한, 악성 링크를 삽입하여 사용자가 원래 요청한 URL이 아닌, 공격자가 지정한 URL로 강제 이동시키는 리다이렉트(redirect)도 가능하다.

HTTP9 - Experience a CSRF victim scenario

문제 설명

주어진 웹 애플리케이션에서 CSRF victim을 체험하는 실습

 

실습 시작

▶ 주어진 Credential 정보를 이용해 login 

▶ Login 후 피싱 링크 "이게 뭘까?" 클릭

▶ 피싱 당해 CSRF로 user의 password가 임의로 변경됨

▶ 로그아웃 후 초기 비밀번호였던 guest로 로그인 시, 로그인 실패

  • guest의 세션에서 password 변경이 일어나 공격자가 사전에 세팅한 비밀번호로 변경됨

결론

CSRF 공격을 방어하기 위해 CSRF 토큰 등의 방어 기법이 필요함

 

※ 토큰: 인증이나 보안을 위해 사용하는 고유한 임시 문자열이다.

 

CSRF(Client-Side Request Forgery)

사용자의 의지와는 무관하게 공격자가 의도한 행위(데이터 수정, 삭제, 등록 등)를 웹사이트(서버)에 요청하게 하는 공격이다.

이 공격은 공격자가 사전에 서버의 요청 방법에 대해 미리 파악하고 있어야 한다.

HTTP10 - IDOR(Insecure Direct Object Reference)

문제 설명

주어진 웹 애플리케이션에서 특정 취약점을 찾아 숨겨진 Flag를 찾는 문제

  • User3의 Age를 알아내는 문제

문제 풀이

▶ 바로 user3에 접근 시 권한이 없어 user의 정보가 나타나지 않음

▶ 메인 화면으로 가면 현재의 계정이 user1임을 알 수 있음

▶ user1로 접근 시 이름/나이 정보를 확인할 수 있음

▶ 접근 가능 페이지와 불가능 페이지의 URL을 보면 차이가 있음을 알 수 있음

  • URL을 자세히 보면 profile 뒤에 user number를 통해 user의 정보를 보여줌을 확인

▶ IDOR을 이용해 URl을 조작하여 user3의 정보에 접근 시 성공적 확인 가능

 

결론

입력 값 검증 및 권한 확인 등을 통해 IDOR 공격을 방지하는 것이 필요

 

IDOR (Insecure Direct Object Reference)

Access Control(접근 권한)에서 발생하는 취약점 중, 외부에 노출되거나 제공되는 입력이 Object에 직접 참고하고 접근 가능할 때 발생하는 취약점이다. 이 취약점을 이용하여 사용자는 본인의 권한을 넘어서는 액션을 수행할 수 있다.

  • Horizontal privilege escalation (수형적 권한 이동)
  • Vertical privilege escalation (수직적 권한 상승 e.g., 관리자의 object)

HTTP11 - Directory Listing

문제 설명

주어진 웹 애플리케이션에서 특정 취약점을 찾아 숨겨진 Flag를 찾는 문제

 

문제 풀이

▶ 개발자 도구 Elements(요소) 패널을 확인하면 이미지 파일의 경로가 나옴

▶ Elements(요소) 패널을 확인한 경로로 접근하면 디렉토리 리스팅이 활성화된 것을 확인할 수 있음

▶ flag.txt를 클릭 후 flag 획득

 

결론

디렉토리 리스팅을 비활성화하는 등 서버 보안 설정 필요

 

디렉토리 리스팅

웹 서버의 특정 경로에 있는 파일들을 웹 서비스를 통해 디렉토리 형식으로 볼 수 있는 것으로, 웹 서버가 디렉토리 목록을 노출하여 사용자가 파일 목록을 볼 수 있게 하는 취약점이다.

 

의도치 않게 서버에 있는 자료가 노출될 수 있고, 공격자는 이를 통해 서버의 파일 구조를 파악하고 악용할 수 있다.

HTTP12 - Creating an Exploit Using Python Code

문제 설명

주어진 웹 애플리케이션에서 특정 취약점을 찾아 숨겨진 Flag를 찾는 문제

  • Requests 모듈을 사용해 HTTP 통신을 사용한 풀이를 스크립트로 작성
  • Python 코드를 통하여 HTTP 요청을 자동화하여 서버에 패킷 날리기

문제 풀이

▶ PHP 코드 분석

  • 지정된 파일의 내용을 일어와서 변수 '$flag'dp wjwkd
  • 매개 변수로 전달된 'i' 값이 없으면 '$i'를 0으로 설정하고 있으면 '$_GET['i']' 값을 '$i'에 할당
  • '$i'가 '$flag' 문자열의 길이보다 크거나 같을 경우, '$i'를 문자열의 마지막 인덱스로 설정
  • '$flag'의 '$i'번째 인덱스 값의 아스키 코드 값과 'a'의 아스키 코드 값의 차를 출력
    • 이때 출력된 숫자가 5

※ echo: 출력

import requests

result = ""
for param_value in range(32):
    response = requests.get("http://localhost:9010/http12", params={'i': param_value})
    character = response.text.split()[0]
    ascii_value = int(character) + ord('a')
    character = chr(ascii_value)
    print(f"Current character: {character}")  # 한 글자씩 출력
    result += character

print(f"Final result: {result}")  # 최종 결과 출력

▶ sol.py

  • GET 파라미터 'i'를 반복문으로 증가시키며 요청을 보내 'flag'를 획득할 수 있음
  • 파라미터 'i'로 설정한 GET 요청을 서버로 전송
  • 응답받은 텍스트의 첫 글자를 인덱싱하여 추출
  • 'a'의 아스키코드 값을 추출한 글자의 아스키코드 값과 더한 후 chr 타입으로 변경

▶ 작성한 스크립트를 실행하여 flag 획득

 

결론

복잡한 HTTP 요청을 보내고, 응답을 분석하기 위해 python coding을 사용하면 수월히 분석 및 exploit 가능

 

Webhacking.kr

old-01

▶ 쿠키에 있는 유저 레벨이 4 이상이면 1로 돌아가고, 3보다 커야 풀림을 알 수 있음

  • 3 < 쿠키에 있는 유저 레벨 < 4

▶ 개발자 도구를 통해 쿠키의 유저 레벨 값 변경

▶ '새로고침' 누르면 풀렸다고 뜸

 

※ 웹 해킹 = 소스 코드 분석

old-14

▶ ul == pw 여야 함을 알 수 있음

 

이때 URL을 확인해 보면,

https://webhacking.kr/challenge/web-01/ 이므로

ul.indexOF(".kr")의 값은 18이고,

최종 ul은 ul*30이므로 18*30 = 540 이다.

 

※ indexOf 함수: 문자열에서 특정 문자열의 index 반환하는 함수이다.

▶ 540 입력

▶ 'check' 버튼 누르면 풀렸다고 뜸

'CS > 정보보호' 카테고리의 다른 글

해킹 문제 풀이 실습 (Crypto) - 1  (0) 2025.04.17
3. 인터넷 프로토콜과 웹 보안  (0) 2025.04.14
2. 보안을 위한 네트워크 이론  (2) 2025.04.04
해킹 문제 풀이 실습 (http_hack) - 1  (0) 2025.04.02
1. Introduction  (0) 2025.04.02