[모의해킹 프로젝트] R Com : 모의해킹 #1

2024. 3. 20. 00:32normaltic 취업반 5기/모의해킹 프로젝트

 

모의해킹 프로젝트 : R Com

 

  • 취약점 점검 대상 : R Com
  • 취약점 점검 대상 도메인 : http://ctf.segfaulthub.com:1505/login.html
  • 취약점 판단 기준 : 전자금융기반시설 보안 취약점 평가기준
  • 취약점 점검 툴 : Burp Suite, Wireshark, python

 

취약점 : SQL Injection

 

[판단 기준]

 

  사용자가 간섭 가능한 매개변수(URL 파라미터, XML 등)에 의해 SQL 질의문이 완성되는 점을 이용하여, 해당 매개변수 변조를 통해 비정상 질의 가능 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/index.php?page= search_value Main > SEARCH
order Main > SEARCH
http://ctf.segfaulthub.com:1505/file_board.php ?page= search_value File > SEARCH
order File > SEARCH
http://ctf.segfaulthub.com:1505/anonymous_b oard.php?page= search_value Anonymous > SEARCH
order Anonymous   > SEARCH

 

[취약점 발견 검증 과정]

Union Based SQL Injection

1) URL : /index.php?page= , 파라미터 : search_value

 

 

  BOARD 페이지에 접속하여 Date를 Author로 변경한다. 이는 게시물 검색 기준을 날짜에서 작성자로 바꾼다는 의미다. 그리고 옆에 게시물 검색 입력 칸에는 abcd를 입력 후 SEARCH 버튼을 클릭한다.(abcd 말고도 조건에 맞는 게시물에 맞게 다른 문자열을 입력해도 무방하다.)

 

 

  Author가 abcd인 게시글만 출력되는 것을 확인할 수 있다. 해당 페이지를 프록시툴을 사용하여 확인하면 order 파라미터와 search_value 파라미터가 전달되는 것을 확인할 수 있는데 order 파라미터는 게시물 검색 기준이며 search_value 파라미터는 게시물 검색 시 일치하는 문자열인 것을 확인할 수 있다.

 

페이로드 : abcd%' #

 

  게시물 검색 입력 칸에 위와 같은 페이로드를 입력하고 SEARCH 버튼을 클릭한다. 해당 페이로드를 입력하였을 시 이전 단계와 같은 게시글이 출력된다면 SQL Injection 공격이 가능하다는 의미이다.

 

 

  같은 게시글이 출력되는 것으로 보아 게시물 검색 파라미터인 search_value 파라미터에서 SQL Injection 공격이 가능하다는 것을 확인하였다.

 

페이로드 : abcd%' union select 1,2,3,4,5,6,7 #

 

  SQL Injection 공격 중 SQL 구문 조회 결과가 웹 페이지에 출력되는 것으로 보아 Union Based SQL Injection 공격이 가능하다. 게시물 검색 입력 칸에 위와 같은 페이로드를 입력하고 SEARCH 버튼을 클릭한다. 해당 페이로드는 BOARD 페이지에서 컬럼의 위치에 따라 데이터가 어디에 출력되는지 확인하기 위해 사용된다.

 

 

  BOARD 페이지 맨 아래에 숫자로 표시된 게시글이 출력되었으며 이는 Title 컬럼은 2번째 위치, Author 컬럼은 5번째 위치 등으로 컬럼에 위치를 확인할 수 있다.

 

페이로드 : abcd%' union select 1,database(),3,4,5,6,7 #

 

  게시글 검색 입력 칸에 위와 같은 페이로드를 입력하고 SEARCH 버튼을 클릭한다. 해당 페이로드는 웹 애플리케이션과 연결된 DB 이름을 알 수 있는 SQL 구문이다.

 

 

  DB 이름이 test라는 것을 확인하였다.

 

Blind SQL Injection

1) URL : /index.php?page= , 파라미터 : order

 

 

  BOARD 페이지에 접속하여 Date를 Author로 변경한다. 이는 게시물 검색 기준을 날짜에서 작성자로 바꾼다는 의미다. 그리고 옆에 게시물 검색 입력 칸에는 abcd를 입력 후 SEARCH 버튼을 클릭한다.(abcd 말고도 조건에 맞는 게시물에 맞게

다른 문자열을 입력해도 무방하다.)

 

 

  Author가 abcd인 게시글만 출력되는 것을 확인할 수 있다. 해당 페이지를 프록시툴을 사용하여 확인하면 order 파라미터와 search_value 파라미터가 전달되는 것을 확인할 수 있는데 order 파라미터는 게시물 검색 기준이며 search_value 파라미터는 게시물 검색 시 일치하는 문자열인 것을 확인할 수 있다.

 

페이로드 : '1'='1'+and+author

 

  order 파라미터에 위와 같은 페이로드를 입력한 결과가 이전 단계와 같은 게시글을 출력하는지 확인한다.

 

페이로드 : '1'='2'+and+author

 

  order 파라미터에 위와 같은 페이로드를 입력한 결과가 이전 단계와 다른 게시글을 출력하는지 확인한다. 그 결과가 다르다면 order 파라미터를 통해 참과 거짓의 결과를 이용하는 Blind SQL Injection 공격이 가능하다.

 

 

취약점 : 부적절한 이용자 인가 여부

 

[판단 기준]

 

  접근 권한에 대한 검증 과정이 구현되지 않아 다른 이용자의 민감한 정보나 권한이 노출될 수 있으므로 이에 대한 검증절차 존재 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/upload_board.php author Main > WRITE
File > WRITE
idx Main > 게시글 > Edit
File > 게시글 > Edit
http://ctf.segfaulthub.com:1505/edit_post.php idx Main > 게시글 > Delete
File > 게시글 > Delete
http://ctf.segfaulthub.com:1505/info_edit_process.php username
password
re_password
My Page > EDIT

 

[취약점 발견 검증 과정]

 

1) URL : /upload_board.php , 파라미터 : author

 

 

  BOARD 페이지에 접속하여 WRITE 버튼을 클릭한다.

 

 

  파라미터를 변조하기 위해 프록시툴의 인터셉트 기능을 켜놓는다. 그리고 TITLE 입력 칸과 CONTENT 입력 칸에 임의의 내용을 입력 후 POST 버튼을 클릭한다.

 

 

  author 파라미터 값을 vanhart에서 TEST NAME으로 변경 후 인터셉트 기능을 끈다.

 

 

  Author가 TEST NAME인 게시글이 성공적으로 작성됐는지 확인한다.

 

 

2) URL : /edit_post , 파라미터 : idx

 

 

  BOARD 페이지에 접속하여 게시글 삭제 대상 게시글을 작성한다. 그리고 해당 게시글의 제목을 클릭하여 상세정보 페이지로 이동한다.

 

 

  게시글 상세 정보 페이지에 접속한 후 URL을 확인하면 해당 게시글의 idx 파라미터 값을 알 수 있다. 해당 게시글의 idx 파라미터 값은 721이다.

 

 

  게시글 삭제 대상 게시글을 작성한 계정과 다른 계정으로 게시글 삭제 공격 주체 게시글을 작성한다. 그리고 해당 게시글의 제목을 클릭하여 상세 정보 페이지로 접속한다.

 

 

  프록시툴의 인터셉트 기능을 켜놓고 게시글 상세 정보 페이지에서 Delete 버튼을 클릭한다.

 

 

  idx 파라미터 값을 723에서 이전 단계에서 확인한 게시글 삭제 대상 게시글의 idx 파라미터 값인 721로 변경한다. 그리고 인터셉트 기능을 끈다.

 

 

  BOARD 페이지에 접속하여 성공적으로 삭제되었는지 확인한다.

 

 

3) URL : /info_edit_process.php  , 파라미터 : username, password, re_password

 

 

  로그인 페이지에 접속하여 개인정보 변경 대상 계정인 vanhart2의 비밀번호가 1234인 것을 확인한다.

 

 

  다시 로그인 페이지에 접속하여 공격 주체 계정인 vanhart로 로그인합니다. 로그인 후 BOARD 페이지 오른쪽 상단의 My Page 버튼을 클릭한다.

 

 

  프록시툴의 인터셉트 기능을 켜놓고 Password와 Check Password 입력 칸에 변경할 비밀번호를 입력 후 EDIT 버튼을 클릭한다. 변경할 비밀번호는 123456789이다.

 

 

  username 파라미터 값을 vanhart에서 개인정보 변경 대상 계정의 username인 vanhart2로 변경 후 인터셉트 기능을 끈다.

 

 

  로그인 페이지에 접속하여 Username 입력 칸에 개인정보 변경 대상인 vanhart2를 입력 후 Password 입력 칸에는 변경한 비밀번호는 123456789를 입력한다. 그리고 Log in 버튼을 클릭한다.

 

 

  vanhart2 계정으로 성공적으로 로그인 됐는지 확인한다.

 

 

취약점 : 유추가능한 인증정보 이용

 

[판단 기준]

 

  비인가자에 의한 인증정보 유추에 대응하기 위해, 인증정보(로그인 비밀번호, 계좌원장 비밀번호, PIN번호 등)의 등록 또는 변경 시 해당 값의 적절성 및 복잡성을 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/register.php password
password_re
LOGIN > here > REGISTER

 

[취약점 발견 검증 과정]

 

1) URL : /register.php , 파라미터 : password, password_re

 

 

  로그인 페이지에 접속하여 here! 버튼을 클릭한다.

 

 

  회원가입 페이지에 접속하여 새로운 계정을 만든다. Username 입력 칸에 vanhart_test1, Password와 Check Password 입력 칸에는 연속된 숫자로 이루어진 123456789를 입력한다. 나머지 입력 칸에는 임의의 내용을 입력 후 REGISTER 버튼을 클릭한다.

 

 

  성공적으로 회원가입 됐는지 확인한다.

 

 

  로그인 페이지에 접속하여 방금 회원가입한 vanhart_test1 계정으로 성공적으로 로그인되는지 확인한다.

 

 

  다시 로그인 페이지에 접속하여 here! 버튼을 클릭한다.

 

 

  회원가입 페이지에 접속하여 새로운 계정을 만든다. Username 입력 칸에 vanhart_test2, Password와 Check Password 입력 칸에는 동일한 숫자로 이루어진 11111111을 입력한다. 나머지 입력 칸에는 임의의 내용을 입력 후 REGISTER 버튼을 클릭한다.

 

 

  성공적으로 회원가입 됐는지 확인한다.

 

 

  로그인 페이지에 접속하여 방금 회원가입한 vanhart_test2 계정으로 성공적으로 로그인되는지 확인한다.

 

 

취약점 : 불충분한 이용자 인증

 

[판단 기준]

 

  민감한 데이터 또는 이용자 인증이 필요한 경로에 임의의 이용자가 접근할 수 있으므로 이에 대한 인증절차 존재 여부 및 우회 가능 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/mypage.php   1. Main > My Page
2. File > My Page
3. Anonymous > My Page

 

[취약점 발견 검증 과정]

 

1) URL : /mypage.php

 

 

  로그인 후 BOARD 페이지에 접속하여 오른쪽 상단에 My Page 버튼을 클릭한다. 프록시툴을 사용하여 요청 헤더의 Referer 헤더 값을 확인한다.

 

 

   FILE BOARD 페이지에 접속하여 오른쪽 상단에 My Page 버튼을 클릭한다. 프록시툴을 사용하여 요청 헤더의 Referer 헤더 값을 확인한다.

 

 

    ANONYMOUS BOARD 페이지에 접속하여 오른쪽 상단에 My Page 버튼을 클릭한다. 프록시툴을 사용하여 요청 헤더의 Referer 헤더 값을 확인한다.

 

 

취약점 : 자동화공격

 

[판단 기준]

 

  시스템 자원 고갈, 비용 발생 등 서비스 운영상 영향을 미칠 수 있는 기능(SMS, 이메일 발송, 계좌인증 호출, 글쓰기, 파일 업로드 등)에 대해 반복된 호출 가능 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/upload_board. php author
title
content
Main > WRITE
http://ctf.segfaulthub.com:1505/upload_anony _post.php author
title
password
content
Anonymous > WRITE

 

[취약점 발견 검증 과정]

 

1) URL : /upload_board. php  , 파라미터 : author, title, content

 

 

  python으로 BOARD 페이지에 게시글 작성 자동화 스크립트를 작성한다.

 

 

  BOARD 페이지에 접속하여 초기 게시글 수를 확인한다.

 

 

  자동화 스크립트를 실행하여 BOARD 페이지에 게시글 5개를 작성하는 요청을 보낸다.

 

 

  게시글이 성공적으로 작성됐는지 확인한다.

 

*자동화 코드

import requests

def auto_func() :
    URL = "http://ctf.segfaulthub.com:1505/upload_board.php"
    payload = {
      'author':'vanhart',
      'title':'auto test',
      'content':'test'
  }

  cookie= {
      "session":"60cd078d-682f-475b-b5a0-14a39584fda6.MtjaCS8l80duV348wrv9koOQQN0",
      "PHPSESSID":"ugle9ketkin76b4st1cc5lcfe4"
  }

  requests.post(URL, data = payload, cookies=cookie)

for i in range(5):
  auto_func()
  print(f"{i+1}개 게시글 작성 ")

print("코드 실행 완료")

 

  자동화 공격 코드는 python 언어로 작성하였다.

 

 

취약점 : 데이터 평문 전송

 

[판단 기준]

 

  네트워크 데이터 전송 시 중요정보 평문전송 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/login.php password LOGIN
http://ctf.segfaulthub.com:1505/upload_anony _post.php password Anonymous > WRITE

 

[취약점 발견 검증 과정]

 

1) URL : /login.php   , 파라미터 : password

 

 

  로그인 페이지에 접속하여 로그인 가능한 계정 정보를 입력 후 Log in 버튼을 클릭한다.

 

 

  Wireshark로 로그인 시 전달되는 데이터를 확인하여 해당 계정의 비밀번호를 확인한다.

 

 

취약점 : 시스템 운영정보 노출 여부

 

[판단 기준]

 

  웹 서버의 소스 코드 및 오류 메시지를 통한 정보 노출 가능성이 존재하며, 시스템 운영정보 노출 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
http://ctf.segfaulthub.com:1505/404test    

 

[취약점 발견 검증 과정]

 

1) URL : /404test 

 

 

  대상 도메인에 접속하여 웹 브라우저 주소창에 http://ctf.segfaulthub.com:1505/404test URL을 입력한다. 해당 URL을 웹 브라우저 주소창에 입력하면 대상 도메인 웹 서버 내에 존재하지 않는 파일을 요청하여 의도적으로 에러를 발생시킨다.

 

 

  에러가 발생하게 되면 에러 페이지가 출력되며 해당 페이지에 웹 서버 버전 정보를 확인할 수 있다.

 

 

취약점 : XSS

 

[판단 기준]

 

  공격자가 업로드한 스크립트가 타 이용자의 사용환경(브라우저, 웹뷰 등)에서의 실행 가능 여부를 점검

 

[발견된 취약점 정보]

 

URL 파라미터 메뉴
[form page]
http://ctf.segfaulthub.com:1505/write_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
1.http://ctf.segfaulthub.com:1505/index.php?page=
2.http://ctf.segfaulthub.com:1505/article.php?idx=
title [form page]
Main > WRITE

[view page]
1.Main author
2.Main > 게시글
author
[form page]
http://ctf.segfaulthub.com:1505/write_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
1.http://ctf.segfaulthub.com:1505/file_board.php?page=
2.http://ctf.segfaulthub.com:1505/file_article.php?idx=
title [form page]
File > WRITE

[view page]
1.File
2.File > 게시글
author
[form page]
http://ctf.segfaulthub.com:1505/write_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
http://ctf.segfaulthub.com:1505/article.php?idx=
content [form page]
Main > WRITE

[view page]
Main > 게시글
[form page]
http://ctf.segfaulthub.com:1505/write_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
http://ctf.segfaulthub.com:1505/file_article.php?idx=
content [form page]
File > WRITE

[view page]
File > 게시글
[form page]
http://ctf.segfaulthub.com:1505/edit_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
1.http://ctf.segfaulthub.com:1505/index.php?page=
2.http://ctf.segfaulthub.com:1505/article.php?idx=
title [form page]
Main > 게시글 > Edit

[view page]
1.Main
2.Main > 게시글
[form page]
http://ctf.segfaulthub.com:1505/file_edit_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
1.http://ctf.segfaulthub.com:1505/file_board.php?page=
2.http://ctf.segfaulthub.com:1505/file_article.php?idx=
title [form page]
File > 게시글 > Edit

[view page]
1.File
2.File > 게시글
[form page]
http://ctf.segfaulthub.com:1505/edit_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
http://ctf.segfaulthub.com:1505/article.php?idx=
content [form page]
Main > 게시글 > Edit

[view page]
Main > 게시글
[form page]
http://ctf.segfaulthub.com:1505/file_edit_post.php

[process page]
http://ctf.segfaulthub.com:1505/upload_board.php

[view page]
http://ctf.segfaulthub.com:1505/file_article.php?idx=
content [form page]
File > 게시글 > Edit

[view page]
File > 게시글

 

[취약점 발견 검증 과정]

Stored XSS

1) URL : [form page] /write_post.php, [process page] /upload_board.php, [view page] 1./index.php?page=
2./article.php?idx=, 파라미터 : title

 

 

  BOARD 페이지에 접속하여 WRITE 버튼을 클릭한다.

 

페이로드 : XSS TEST<script>alert(1);</script>

 

  TITLE 입력 칸에 위와 같은 페이로드를 입력한다. CONTENT 입력 칸에는 임의의 내용을 입력한 후 POST 버튼을 클릭한다.

 

 

  BOARD 페이지에 접속하여 스크립트가 작동하는지 확인한다.

 

 

  해당 게시글 상세 정보 페이지에 접속하여 스크립트가 작동하는지 확인한다.