웹 서버에서 php 파일을 어떻게 실행할까요?
웹으로 요청을 하면 그 웹서버에서 실행 됩니다.
물론 php 파일이 실행되게끔 그 서버에 php가 설치되어 있어야겠죠.
php가 설치되어 있지 않은 서버에서는 .php가 실행되지 않습니다.
실행하기 위해선 정확한 경로, 파일이름을 알아야 합니다.
(생각보다 파일명을 바꿔서 저장하는 케이스가 많습니다.)
Image Web Shell 이 있다고 가정해 볼게요.
webshell.php.jpg는 어떻게 실행될까요?
> 불가능합니다. (실행될 수 없습니다.)
서버에서 php 코드는 실행될 수 있지만, jpg는 실행되지 않습니다.
그렇다면 실행이 가능한 경우는?
웹 애플리케이션 개발 시 파일 업로드(저장하는) 기능을 잘못 구현한 경우
webshell.jpg.php
첫번째 나오는 . 기준으로 스플릿 -> 검사 -> jpg니까 OK 통과!
확장자를 단순 눈속임 하는 경우
fileName.pdf.exe
(기본 확장자 숨김 처리 시) fileName.pdf 처럼 보임.
윈도우에선 기본 확장자가 숨김 처리 되어있는 점을 노린 케이스
NULL Byte Injection
webshell.php%00.jpg
리눅스(유닉스)에선 %00(혹은 '\0')을 만나면 파일 이름의 끝으로 인식합니다.
널 문자를 만났을 때 데이터나 코드의 끝이라고 인식해 조기에 종료시키는 기법이에요.
위 케이스에선 파일명을 webshell.php 로 인식하는거죠.
.htaccess
Apache 웹 서버에서 사용하는 설정 파일
서버에서 실행할 확장자를 변경할 수 있습니다. (특정 디렉토리에 대한 설정 지정)
예) .jpg 이더라도 php로 인식하게하여 실행하게끔 만듦.
AddType application/x-httpd-php .jpg
이를통해 이미지 파일로 가장한 php 파일을 실행할 수 있습니다.
web shell의 단점
웹 쉘은 HTTP 프로토콜로 동작해요.
HTTP는 상태를 유지하지 않는 (stateless) 프로토콜이기 때문에, 연결이 끊길 때마다 이전 상태의 정보가 유지 되지 않아요.
예를들어 ls+/ 를 하고, 다시 ls를 하면 최상위 디렉토리가 아닌, 애초에 그 폴더에서 ls를 한 게 돼요.
단발성, 휘발성이 있기 때문에, 침투테스트를 할 때는 Reverse Shell을 함께 이용해야해요.
'모의해킹 공부하기 > 모의해킹 수업 복습' 카테고리의 다른 글
| [15주차-3] File download 취약점 (0) | 2024.02.14 |
|---|---|
| [15주차-2] File Include 취약점 및 대응방안 (0) | 2024.02.14 |
| [7주차-1] Error Based SQL Injection (0) | 2024.02.08 |
| [14주차] File Upload 공격 및 대응 방안 (0) | 2024.02.07 |
| [6주차] SQL Injection으로 데이터 추출하기 (UNION SQL Injection) (1) | 2023.12.04 |