티스토리 뷰
URL : http://natas13.natas.labs.overthewire.org/
id : natas13
password : lW3jYRI02ZKDBb8VtQBU1f6eDRo6WEj9
(2023. 04 기준)
12번 문제의 연장선입니다.
이미지 파일만 허용한다고 하네요.
소스 코드를 살펴봅시다.
실제로 이미지 파일인지를 체크하는 부분이 추가로 구현되어 있습니다.
이 문제를 해결하기 위해서는 이미지 파일의 구조와 php 의 exif_imagetype() 함수의 작동원리를 알아야 합니다.
natas12 에서 만들어놓은 shell.php 웹쉘을 이용해서 문제를 해결해보겠습니다.


이미지 파일이 아니라고 필터링 당하네요.
php 파일을 이미지 파일로 인식하게끔 해야할 것 같습니다.
exif_imagetype() 함수를 살펴보면 파일의 첫번째 바이트가 이미지 타입별 시그니쳐 값이 맞는지를
체크하는 것을 알수 있습니다.
기존에 작성한 php 파일을 바이트 단위로 변환하기 위해서 hex editor 툴을 이용해야 합니다.
에서 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 는 보안 학습을 위해 제작된 사이트로 취약점 탐색 행위를 하는것을 허용하게끔 설계되었고
그 영향력이 제한적이지만 동일한 방식으로 현실에 존재하는 개인/상업 사이트에 취약점 점검을 한다면
여러분은 법적인 책임을 지게 될 수 있습니다.
국내외 대부분의 사이트들은 침입탐지 시스템 등을 운영하고 이상 탐색 행위를 추적할 수 있습니다.
이곳에서는 웹보안에 대한 기본적인 개념을 익히는데 만족하고
그 외 다양한 시도는 사전 협의된 테스트 환경이나 본인이 감당할 수 있는 실험 환경 등에서만
진행하길 바랍니다.
'수업 노트 > 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
- find
- Natas
- Bandit
- 리터럴
- tar
- grep
- 리눅스
- 웹보안공부
- 웹보안
- BASE64
- Strings
- java
- X32
- 32bit
- bz2
- SSL
- OverTheWire
- ssh
- HTTPS
- OpenSSL
- solution
- Encode
- nc
- 풀이
- over the wire
- 압축파일
- natas7
- tr
- Linux
- gz
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |