워게임/Bandit (Linux Wargame)

[OverTheWire:Bandit] Level 15 → Level 16

crypsec 2023. 11. 28. 19:12
반응형

2023.11.26 - [워게임/Bandit (Linux 초보자들을 위한 워게임)] - [OverTheWire:Bandit] Level 14 → Level 15

Bandit Level 15

컴퓨터의 사용자 이름( 계정명 ): bandit15
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt (2023.11 기준)

PS> ssh bandit15@bandit.labs.overthewire.org -p 2220

문제 및 해설

쓸데없이 긴 문제

 

문제해석: 다음 단계의 비밀번호는 현재 단계의 비밀번호를 SSL 암호화를 사용하여 로컬 호스트의 포트 30001로 전송하면 검색할 수 있습니다.

 

해당 문제는 openssl의 heartbleed 취약점을 이용한 것이고 해답은 openssl cookbook 링크의 설명을 읽어봐도 좋습니다.

 

보안에 관심있는 분들이라면 꼭 아래 링크들을 읽어보시길 권장드립니다.

 

 

하트블리드 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 하트블리드심장출혈을 나타내는 로고이다. 이 로고와 "하트블리드"라는 이름은 이 문제에 대한 대중의 인식을 이끌어내는데 기여했다.[1][2]CVE 식별자CVE-2014-0160

ko.wikipedia.org

 

 

[Consulting Insight] Heart Bleed 원인 및 대응방안

  정보통신서비스제공자와 사용자간 송수신되는 정보를 암호화하기 위한 목적으로 사용하는 OpenSS...

blog.naver.com

 

[Focus on Issue] 잔인한 4월, 하트블리드(HeartBleed)의 습격

OpenSSL 취약점 발견 및 대응 T.S 엘리엇이 시 ‘황무지’에서 표현했듯이 보안 업계도 ‘잔인한 4월’을 보..

www.ahnlab.com

반응형
 

OpenSSL Cookbook 3rd Edition - 2.17  Testing for Heartbleed

 

www.feistyduck.com

 

풀이에 들어가자면 앞 단계에서 openssl s_client에 대해 간단하게 언급했었는데 SSL encryption이라는 단어를 보자마자 떠올렸다면 좋고 아니어도 배워가면 되는 거니 다시 읽어보시면 좋을 것 같니다.

 

s_client는 OpenSSL 라이브러리를 사용하여 SSL/TLS 프로토콜을 통해 서버에 연결하는 명령어입니다. 이 명령어는 일반적으로 TLS/SSL 연결을 디버깅하거나 서버의 인증서 정보를 확인하기 위해 사용됩니다.

 

로컬 호스트의 포트 30001과 관련이 있는 걸로 보아 아래와 같이 연결하면 될 것 같습니다.

$ openssl s_client localhost:30001
# openssl s_client -connect localhost:30001

s_client

 

출력을 쭉 내려보면 아래 그림과 같이 프로그램이 중단되지 않고 입력을 기다리고 있습니다.

read R BLOCK

 

이제 해당 계정으로 접속할 때 입력했던 비밀번호 jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt 를 입력하면 다음 단계로 가기 위한 비밀번호 JQttfApK4SeyHwDlI9SXGR50qclOAil1이 출력된다.

해답

 

Level 16 접속정보

컴퓨터의 사용자 이름( 계정명 ): bandit16
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: JQttfApK4SeyHwDlI9SXGR50qclOAil1 (2023.11 기준)

 
bandit Level 16로 가기 위한 비밀번호:  JQttfApK4SeyHwDlI9SXGR50qclOAil1
 
마지막으로 exit 명령어를 입력하여 서버에서 bandit16 계정을 로그아웃하겠습니다.

 


예전에는 힌트에서 처럼 -ign_eof 라는 옵션을 붙여 파일 끝에 도달해도 프로그램이 중단되는 것을 막아주는 옵션이 필요했던 것 같은데 의외로 별생각 없이 풀 수 있었어서 당황스러웠다.

$ openssl s_client -connect localhost:30001 -ign_eof

 

다시 보니 openssl 버전이 예전과 다른 것 같다. 원래 openssl 버전이 1.0 버전 대였는데 어느새 3.0 버전을 사용하고 있었다. 버전에 따라 약간씩 기능이 다른 게 이유인 것으로 보인다.

openssl version

 

반응형