티스토리 뷰

수업 노트/natas

natas13 solution

오리지날초이 2023. 4. 20. 10:22

URL : http://natas13.natas.labs.overthewire.org/

id : natas13

password : lW3jYRI02ZKDBb8VtQBU1f6eDRo6WEj9

(2023. 04 기준)

 

 

12번 문제의 연장선입니다. 

이미지 파일만 허용한다고 하네요.

 

소스 코드를 살펴봅시다.

 

실제로 이미지 파일인지를 체크하는 부분이 추가로 구현되어 있습니다.

 

이 문제를 해결하기 위해서는 이미지 파일의 구조와 php 의 exif_imagetype() 함수의 작동원리를 알아야 합니다.

jpeg 파일구조

exif_imagetype() 함수 원리

 

 

더보기

natas12 에서 만들어놓은 shell.php 웹쉘을 이용해서 문제를 해결해보겠습니다. 

 

이미지 파일이 아니라고 필터링 당하네요.

 

php 파일을 이미지 파일로 인식하게끔 해야할 것 같습니다.

exif_imagetype()  함수를 살펴보면 파일의 첫번째 바이트가 이미지 타입별 시그니쳐 값이 맞는지를

체크하는 것을 알수 있습니다.

 

기존에 작성한 php 파일을 바이트 단위로 변환하기 위해서 hex editor 툴을 이용해야 합니다.

https://mh-nexus.de/en/hxd/

에서 hxd 프로그램을 다운받고 설치해주세요

 

hxd 프로그램으로 shell.php 파일을 불러오면 아래와 같이 hex 데이터로 파일을 편집할 있습니다.

 

메모장에 JPG 타입의 첫 바이트 값인 FF 를 적고 클리보드에 복사한 후 

해당 데이터를 붙어넣기 삽입으로 넣어주세요

 

기존 데이터 변경이 아닌 새 데이터 추가가 되어야 합니다.

 

JPG 파일의 첫번째 시그니쳐 필드인 FF 값이 잘 반영되었습니다.

저장하고 빠져나옵니다.

 

변조한 파일을 업로드하면 jpg 로 인식이 되고 파일명도 jpg 로 변환되어서 업로드가 됩니다.

 

그러나 natas11 과 마찬가지로 php 문법이 담긴 webshell 임에도

웹브라우저가 jpg 파일로 인식해서 ?data=ls -al 식의 파라미터 전달이 불가합니다.

 

업로드 직전에 클라이언트 코드 변조를 통해 jpg 를 php 로 변경해야합니다.

 

php 로 바뀐 확장자로 업로드 되었습니다.

 

해당경로로 접속하면 data 값이 전달되지 않은 에러 페이지가 나타나지만

 data 필드에 명령어를 전달해주면 

문자로 표기가 불가능한 최초 1바이트 뒷부분부터 패스워드가 나타나는 것을 확인할 수 있습니다.

 

 

 

 

 

natas 사이트에서 통하는 취약점은 실제로 아주 오래전에는 통했을지도 몰라도

지금은 먹히지 않는게 대부분입니다.

 

혹시라도 natas 에서 배운 기법을 활용해서 현실세계에서 웹취약점을 탐색하는 행위는

하지 않기를 강력하게 권고합니다.

 

natas 는 보안 학습을 위해 제작된 사이트로 취약점 탐색 행위를 하는것을 허용하게끔 설계되었고

그 영향력이 제한적이지만 동일한 방식으로 현실에 존재하는 개인/상업 사이트에 취약점 점검을 한다면

여러분은 법적인 책임을 지게 될 수 있습니다.

 

국내외 대부분의 사이트들은 침입탐지 시스템 등을 운영하고 이상 탐색 행위를 추적할 수 있습니다.

 

이곳에서는 웹보안에 대한 기본적인 개념을 익히는데 만족하고

그 외 다양한 시도는 사전 협의된 테스트 환경이나 본인이 감당할 수 있는 실험 환경 등에서만

진행하길 바랍니다.

 


 

728x90
반응형

'수업 노트 > natas' 카테고리의 다른 글

natas15 solution  (0) 2023.05.29
natas14 solution  (0) 2023.05.23
natas12 solution  (0) 2023.04.19
natas11 solution  (0) 2023.04.09
natas10 solution  (0) 2023.04.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함