본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 10. 민감한 데이터 노출 [Base64 인코딩 복호화 - Secret]

by Robert8478 2023. 12. 13.

민감한 데이터 노출은 클라이언트와 서버가 통신 시 암호화 프로토콜(SSL)을 사용하지 않아 발생하는 취약점이다.

 사용자가 민감한 정보를 입력할 때에는 암호화 저장되어야 하며 데이터처리와 암호화 저장은 서버 기반에서 실행되어야 한다. 암호화 저장이 이루어지지 않으면 공격자가 중간에서 정보를 탈취할 수 있다. 또한, 데이터 처리와 암호화 저장이 클라이언트에서 이루어지는 경우에도 공격자는 클라이언트 PC를 장악해서 정보 탈취가 가능하기에 반드시 서버측에서 이루어지도록 해야한다.

Base64 인코딩은 8비트 이진 데이터를 일종의 64진수 문자셋으로 변환하는 인코딩 기법이다. Base64는 이진 데이터를 6비트씩 표현한다. 아스키코드만으로 데이터를 인코딩하기에 플랫폼 제한 없이 사용할수 있으며, 이진 데이터가 6비트씩 나누어지지 않을때는 패딩 문자를 붙여 6비트를 채우는 형태이다.  8비트씩 인코딩하는 기법보다 데이터가 커지지만 다양한 플랫폼에서 전송한 데이터가 인코딩 기법이 달라 데이터가 깨지는 경우가 없기에 Base 64 인코딩 기법을 많이 사용한다.

[난이도 하]

이번 페이지는 쿠키값에 비밀번호 힌트를 포함하며 비밀번호는 Base64로 인코딩 되어있다. Secret 변수의 값을 복호화기로 복호화해보자.
https://dencode.com/

 

DenCode | Encoding & Decoding Online Tools

Encoding and Decoding site. e.g. HTML Escape / URL Encoding / Base64 / MD5 / SHA-1 / CRC32 / and many other String, Number, DateTime, Color, Hash formats!

dencode.com

그 결과 hello roberty라는 값이 나왔다. 이것은 저번에 변경했던 비밀번호 힌트 값인듯 하다.

[난이도 중,상]

난이도 중,상에서는 base64가 아닌 sha1 해시값이 적혀있다. 해시 값이 40자인것을 보면 sha1 해시값인 것을 알 수 있다.

sha1 해시의 복호화의 경우도 여러가지 사이트가 있다. 원문이 단순한 문자열일 경우 복호화가 될 수 있지만
hello roberty와 같은 구문의 해시값이라 그런것인지 결과값이 나오지 않았다. 하지만 sha1 함수도 안전하지 않기에 좀 더 안전한 해시 함수를 사용하는 것이 보안에 좋다.