Hacking/[Web]Natas

OverTheWire [Natas Level 9]

양선규 2023. 3. 13. 23:37
728x90
반응형

Natas Level 9 입니다.

 

 

Level 9

 

Level 9 메인 페이지 입니다.

입력한 단어가 포함된 검색을 할 수 있습니다.

 

 

"aa" 입력

 

"aa" 를 입력했더니, aa가 포함된 단어들이 출력되었습니다.

오른쪽 View sourcecode를 눌러봅시다.

 

 

PHP 코드

 

역시 PHP코드가 있네요.

needle 은 입력 폼 이름입니다.

입력받은 값을 key 변수에 저장하고, 저장한 값을 grep 명령어의 인자로 사용하네요.

passthru는 외부 명령어를 실행하는 함수입니다. 여기선 리눅스 명령어를 호출하고 있구요

만약 우리가 "HACK" 이라는 문자열을 입력하면, 명령어는

grep -i HACK dictionary.txt  가 됩니다.

 

dictionary.txt 파일 안에 password가 있는건가 싶어, natas, pass, password 등등 검색해 보았으나

존재하지 않았습니다. dictionary.txt 파일의 내용을 전부 확인하는데에 제한사항도 없습니다.

그렇다는 건, password는 해당 파일 안에 없을 확률이 높다는 것이겠죠.

 

passthru같은 외부 명령어 호출 함수는, 매우 고마운 친구입니다. 해킹하는데에 이만한 역할을 해주는 친구도 없죠.

이런 친구를 grep 명령어에만 쓴다? 아니죠. 아깝습니다.

 

 

/etc/passwd 파일 조회

 

;(세미콜론) 을 사용해 grep이 아닌 다른 명령어를 시도해 봅시다!!

;(세미콜론)은 한 줄에 여러개의 명령어를 실행할 수 있게 해줍니다.

만약 앞의 명령어가 실패하더라도, 뒤의 명령을 수행합니다.

뒤에까지 ; 를 붙인 이유는, PHP코드상 뒤에 dictionary.txt 라는 문자열이 있기 때문에 방해받지 않기 위함입니다.

 

참고로 저렇게 입력할 경우 최종 명령어는

grep -i ; cat /etc/passwd; dictionary.txt   입니다.

 

grep -i 는 옵션은 있지만 인자가 없어서 실패할 것이고

dictionary.txt는 애초에 명령어가 아니기 때문에 실패할 것이고

결국 가운데에 있는, cat /etc/passwd 만 실행될 것입니다. 

 

 

/etc/passwd

 

짠~ 조회 성공!!

/etc/passwd 파일은, 리눅스 시스템에 등록된 모든 계정정보가 담겨있는 파일입니다. 보안상 매우 중요하고, 비슷한 친구로 /etc/shadow 파일도 있죠.

어쨌든, 같은 방식으로 다른 명령어도 실행할 수 있겠습니다.

이건 쉘을 얻은 것이나 다름이 없군요. 지금부턴 매우 쉽죠.

natas10 의 password 가 저장된 곳을 찾으면 됩니다.

 

 

natas10 소유의 파일 검색

 

입력한 명령어는

; find / -user natas10 2>/dev/null ;

입니다.

 

 

natas10 소유의 파일들

 

/etc/natas_webpass/natas10 파일 보이시나요? 매우 수상하군요.

이전 레벨에서 password가 저장되어 있던 위치이기도 합니다.

저 파일을 읽어봅니다.

 

 

natas10 읽기

 

입력한 명령어는

; cat /etc/natas_webpass/natas10 ;

입니다.

 

 

password 획득

 

/etc/natas_webpass/natas10 파일에 password가 있었습니다.

이번 문제는 리눅스 ; 를 이용한 다중 명령어 실행 문제였습니다.

기본적인 리눅스 명령어를 알고 있어야 풀 수 있는 문제였네요.

 

해당 문제처럼 외부 명령어를 호출해야 할 때 ; 같은 특수문자를 필터링하지 않으면 매우 위험할 수 있습니다.

Command Injection 이라고도 하죠.

SQL Injection 공격도 비슷한 원리를 가지고 있습니다. 저도 SQL Injection 에서 힌트를 얻어 문제를 풀 수 있었답니다.

728x90
반응형

'Hacking > [Web]Natas' 카테고리의 다른 글

OverTheWire [Natas Level 11]  (2) 2023.03.16
OverTheWire [Natas Level 10]  (0) 2023.03.15
OverTheWire [Natas Level 8]  (0) 2023.03.13
OverTheWire [Natas Level 7]  (0) 2023.03.10
OverTheWire [Natas Level 6]  (0) 2023.03.10