비박스를 활용한 웹 모의해킹 완벽 실습 - Base64 인코딩 복호화/HTML5 웹 저장소/중요 정보 텍스트 파일 저장

출처

인프런, 비박스를 활용한 웹 모의해킹 완벽 실습 18강 https://www.inflearn.com/course/%EB%B9%84%EB%B0%95%EC%8A%A4-%EB%AA%A8%EC%9D%98%ED%95%B4%ED%82%B9-%EC%8B%A4%EC%8A%B5/


민감 데이터 노출

  • 클라이언트와 서버 통신 시 암호화 프로토콜(SSL)을 사용하여 중요한 정보를 보호
  • 사용자의 민감한 정보 입력 시 암호화 후 저장
  • 데이터 처리 및 암호화 저장은 서버 기반에서 실행
  • 민감한 정보가 암호화되지 않거나 취약한 암호화 방식을 쓰는 예가 있음

image


Base64 Encoding (Secret)

image

BurpSuite로 확인한 Secret

image

Base64 인코딩

  • 8bit 데이터를 64진수 문자셋으로 변환하는 것
  • =로 인코딩의 끝을 알림

:----:


Base64 Encoding (Secret) (Medium)

image

  • secret=83785efbbef1b4cdf3260c5e6505f7d2261f738d

칼리리눅스의 hash-identifer로 암호화 알고리즘 확인

root@ming:~# hash-identifier
   #########################################################################
   #	 __  __ 		    __		 ______    _____	   #
   #	/\ \/\ \		   /\ \ 	/\__  _\  /\  _ `\	   #
   #	\ \ \_\ \     __      ____ \ \ \___	\/_/\ \/  \ \ \/\ \	   #
   #	 \ \  _  \  /'__`\   / ,__\ \ \  _ `\	   \ \ \   \ \ \ \ \	   #
   #	  \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \	    \_\ \__ \ \ \_\ \	   #
   #	   \ \_\ \_\ \___ \_\/\____/  \ \_\ \_\     /\_____\ \ \____/	   #
   #	    \/_/\/_/\/__/\/_/\/___/    \/_/\/_/     \/_____/  \/___/  v1.1 #
   #								 By Zion3R #
   #							www.Blackploit.com #
   #						       Root@Blackploit.com #
   #########################################################################

   -------------------------------------------------------------------------
 HASH: 83785efbbef1b4cdf3260c5e6505f7d2261f738d

Possible Hashs:
[+]  SHA-1
[+]  MySQL5 - SHA-1(SHA-1($pass))

Least Possible Hashs:
[+]  Tiger-160
[+]  Haval-160
[+]  RipeMD-160
[+]  SHA-1(HMAC)
[+]  Tiger-160(HMAC)
[+]  RipeMD-160(HMAC)
[+]  Haval-160(HMAC)
[+]  SHA-1(MaNGOS)
[+]  SHA-1(MaNGOS2)
[+]  sha1($pass.$salt)
[+]  sha1($salt.$pass)
[+]  sha1($salt.md5($pass))
[+]  sha1($salt.md5($pass).$salt)
[+]  sha1($salt.sha1($pass))
[+]  sha1($salt.sha1($salt.sha1($pass)))
[+]  sha1($username.$pass)
[+]  sha1($username.$pass.$salt)
[+]  sha1(md5($pass))
[+]  sha1(md5($pass).$salt)
[+]  sha1(md5(sha1($pass)))
[+]  sha1(sha1($pass))
[+]  sha1(sha1($pass).$salt)
[+]  sha1(sha1($pass).substr($pass,0,3))
[+]  sha1(sha1($salt.$pass))
[+]  sha1(sha1(sha1($pass)))
[+]  sha1(strtolower($username).$pass)
  • SHA-1으로 암호화되어 있음
  • SHA-1 Decoder
  • Decode 결과: Any bugs?

Base64 Encoding (Secret) (High)

image

  • secret=83785efbbef1b4cdf3260c5e6505f7d2261f738d
  • Medium이랑 secret 문자열이 같아 결국 High도 취약함을 알 수 있음

HTML5 Web Storage (Secret)

image

HTML5 Web Storage의 페이지 소스

<script>

if(typeof(Storage) !== "undefined")
{

    localStorage.login = "bee";
    localStorage.secret = "Any bugs?";

}
else
{

    alert("Sorry, your browser does not support web storage...");

}

</script>
  • 스크립트를 사용해서 로컬 스토리지에 있는 값을 가져오라는 것

HTML5 Storage는 로컬에서 데이터를 저장하는데 쿠키보다 더 큰 양을 저장하고 서버에 데이터를 보내지 않는다. 쿠키는 document.write(document.cookie)를 XSS로 나타나게 할 수 있었지만 HTML5 Storage에 저장된 값은 다른 스크립트가 필요하다.

HTML5 Storage를 불러오는 스크립트

<script>
try {
  var result = "";
  for(Var key in localStorage) {
    result += key + "=" + localStorage.getItem(key) + ";";
  }
  alert(result);
}

catch(error) {
  alert(error.message);
}
</script>

<script>
for (var key in localStorage) {
  document.write(key + " : " + localStorage[key] + "<br>");
}
</script>
  • 이 스크립트를 XSS - Reflected (Get) 입력 칸에 입력

XSS - Reflected (Get)에 스크립트 입력 결과

image


HTML5 Web Storage (Secret) (High)

  • Low와 마찬가지 작업을 하면 secret이 나오는데 SHA-1으로 해시하였기 때문에 문제가 있음

Text Files (Accounts)

image

  • bee와 bug를 입력하고 다운로드 파일을 누르면 bee와 bug가 입력된 창이 뜨게 됨
  • Medium에서는 bee와 해시 값이 나타남
  • 칼리리눅스에 확인하면 이 해시도 똑같이 SHA-1임
  • High에서는 bee와 해시 값이 나타나는데 이를 칼리리눅스에서 확인하면 SHA-256임
  • salt가 있어서 미리 계산되어 해시 값과 비교하는 rainbow table로 해시를 맞출 수가 없음

Text Files (Accounts) (High)에서 bee와 bug를 입력했을 때 나타나는 값

image

'bee', '87da9d0c5c399e35ab68b30e409738d7839644fd55da966a068f32d4cf69952d', 'salt:b5e09011547a133af46d3543e5c31099'
root@ming:~# hash-identifier
   #########################################################################
   #	 __  __ 		    __		 ______    _____	   #
   #	/\ \/\ \		   /\ \ 	/\__  _\  /\  _ `\	   #
   #	\ \ \_\ \     __      ____ \ \ \___	\/_/\ \/  \ \ \/\ \	   #
   #	 \ \  _  \  /'__`\   / ,__\ \ \  _ `\	   \ \ \   \ \ \ \ \	   #
   #	  \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \	    \_\ \__ \ \ \_\ \	   #
   #	   \ \_\ \_\ \___ \_\/\____/  \ \_\ \_\     /\_____\ \ \____/	   #
   #	    \/_/\/_/\/__/\/_/\/___/    \/_/\/_/     \/_____/  \/___/  v1.1 #
   #								 By Zion3R #
   #							www.Blackploit.com #
   #						       Root@Blackploit.com #
   #########################################################################

   -------------------------------------------------------------------------
 HASH: 87da9d0c5c399e35ab68b30e409738d7839644fd55da966a068f32d4cf69952d

Possible Hashs:
[+]  SHA-256
[+]  Haval-256

Least Possible Hashs:
[+]  GOST R 34.11-94
[+]  RipeMD-256
[+]  SNEFRU-256
[+]  SHA-256(HMAC)
[+]  Haval-256(HMAC)
[+]  RipeMD-256(HMAC)
[+]  SNEFRU-256(HMAC)
[+]  SHA-256(md5($pass))
[+]  SHA-256(sha1($pass))

   -------------------------------------------------------------------------

John the Ripper로 Text Files (Accounts) (High)의 해시를 맞춰보기

root@ming:~# hashid -j 87da9d0c5c399e35ab68b30e409738d7839644fd55da966a068f32d4cf69952d
Analyzing '87da9d0c5c399e35ab68b30e409738d7839644fd55da966a068f32d4cf69952d'
[+] Snefru-256 [JtR Format: snefru-256]
[+] SHA-256 [JtR Format: raw-sha256]
[+] RIPEMD-256 
[+] Haval-256 [JtR Format: haval-256-3]
[+] GOST R 34.11-94 [JtR Format: gost]
[+] GOST CryptoPro S-Box 
[+] SHA3-256 [JtR Format: raw-keccak-256]
[+] Skein-256 [JtR Format: skein-256]
[+] Skein-512(256) 
root@ming:~# cat > passwd.txt
87da9d0c5c399e35ab68b30e409738d7839644fd55da966a068f32d4cf69952d
root@ming:~# john --format:raw-sha256 ./passwd.txt --salt:b5e09011547a133af46d3543e5c31099
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-SHA256 [SHA256 128/128 AVX 4x])
Press 'q' or Ctrl-C to abort, almost any other key for status

cat > 파일명 엔터 후 내용 입력 후 ctrl+d하면 터미널로 파일 내용 채우면서 파일 쓰기가 가능하다.

Comments