OverTheWire WriteUp

OverTheWire Natas [Level7] - WriteUp

Roronoa 2023. 6. 15. 17:43
반응형

문제 정보

Username: natas7
Password: jmxSiH3SP6Sonf8dv66ng8v1cIEdjXWr
URL:      http://natas7.natas.labs.overthewire.org

 

[그림 1] natas7 사이트 접속

그림 1은 natas7 사이트에 접속한 화면이다. Home, About 링크가 존재한다.

해당 사이트가 어떻게 구성되어 있는지 확인하기 위해 페이지 소스 보기를 통해 확인하였다.

 

[그림 2] 페이지 소스 보기

a태그로 page=로 링크 시켜준다.

아래에 힌트로 natas8의 비밀번호의 위치를 알려주고 있다.

natas8계정 비밀번호의 위치는 /etc/natas_webpass/natas8에 있다.

 

먼저 Home과 About을 눌러본다.

 

[그림 3] home 링크 클릭

home을 누르면 페이지가 page 매개변수에 home이라는 값을 담아서 요청하고 있다. 그리고 About을 눌렀을 때도 page 매개변수에 page라는 값은 담아서 요청한 후 결과를 response한다.

 

page의 값을 바꾸면 다른 파일로 접근이 가능할 것이다.

일단 '(싱글 쿼터)를 넣어서 데이터 베이스를 사용하고 있는지 sql injection을 진행하여 에러가 뜨는지 파악 하였다.

 

[그림 4] page 매개변수 값 조정시 에러 발생

해당 에러를 살펴보니 데이터베이스를 사용하는것 같지는 않다.

해당 에러는 파일 or 디렉토리를 찾지 못해서 발생하는 오류이다.

page 매개변수의 값을 받아서 입력한 값에 해당하는 파일을 찾아서 웹에 표시해줄것이라고 예측된다.

 

[그림 5] /etc/passwd 디렉토리 확인

그림 5는 page 매개변수에 /etc/passwd를 입력하여 요청을 진행한 결과이다.

요청을 한 후 /etc/passwd 파일의 내용을 웹에 출력해주고 있다.

그림 2에서 natas8의 비밀번호의 경로를 알려주었으니 해당 경로를 넣으면 natas8의 비밀번호를 얻을 수 있을것이다.

 

[그림 6] natas8 비밀번호

/etc/natas_Webpass/natas8 경로로 요청을 진행하니 natas8의 비밀번호를 출력하였다.

 

natas8 Credentials

Username : natas8

Password : a6bZCNYwdKqN5cGP11ZdtPg0iImQQhAB

 

결론

해당 페이지는 파일 인클루전 취약점이 존재한다.

파일 인클루전 취약점은 주로 php에서 발생하며, php의 인클루드 기능인 include 함수를 사용하여 다른 파일을 소스코드에 직접 포함시킨다. 이때 인클루드 할 파일을 공격자가 원하는 파일로 지정할 경우 파일 인클루전 취약점이 존재하게되며, 공격자가 원하는 파일을 인클루드 시킬 수 있다.

 

대응방안

1. 외부 사용자가 입력한 파일 이름을 인클루드에 사용하지 않아야한다.

2. 파일 이름을 입력받을 경우 입력값 검증을 해야한다.

3. 디렉토리 트레버셜 공격을 위한 문자열 필터링

4. 화이트 리스트 검증 방식으로 인클루드가 필요한 파일 이름만 허용

반응형