3주차_Webhacking 과제3 ([root-me] File upload - Double extensions)

2023. 9. 28. 00:37SWLUG/web hacking

 

 

이제 세번째 문제를 풀어봐야겠다.

 

우와 신기하다.

 

emotes
apps
upload
devices
categories
actions

 

이렇게 6가지의 종류가 있는데 무엇을 의미하는지 생각하면서 문제를 풀어봐야겠다.

 

 

나의 사진도 업로드 해보라고 해서 업로드를 시도해봤다.

 

 

업로드한 사진

 

링크를 눌러봤더니 위에 사진이 떴다.

 

이렇게 업로드했는데 이 다음은 어떻게 해야할까 고민하다가 링크 끝에 php를 적어보았다.

 

혹시 무슨 변화가 있을까 기대하며 시도했지만, 아래와 같이 처음 상태로 돌아온 것 뿐인거 같았다.

 

 

 

제목이 두배로 키운다? 이중 확장? 이런 느낌인데 제목의 의미와 관련된 문제일 것 같다는 의심은 든다.

 

 

 

 

혹시몰라서 html로 들어와 사이즈를 두배 확장해았다. ( 그 확장이 아니었다. 그럼 php와 같은 확장자를 의미하는 건가? )

 

문제의 취지를 다시 한번 확인해보았다.

 

당신의 목표는 PHP 코드를 업로드하여 이 사진 갤러리를 해킹하는 것입니다.
응용 프로그램의 루트에 있는 .passwd 파일에서 유효성 검사 암호를 검색합니다.

 

이글을 보니까 사진뒤에 php를 붙여서 할 수있는게 아니면 아까처럼 메모장에서 글을 저장해서 파일을 받아야하는것인가 라는 생각이 들었다.

일단 해킹을 위한 파일을 업로드해야할 것같다.

 

여기서부터는 나혼자는 좀 어려울 것 같아 도움을 받아봐야겠다.

 

 

위와 같이 기본적으로 명령어를 사용할 수 있는 코드를 작성하였고, 간단하게 메모장을 통해 작성 후 확장자를 .php 로 붙여 저장해 주었다.

이렇게 생긴 파일은 처음본다. ( 코끼리 모양 신기 )

 

 

업로드했더니 Wrong file extension! 이라는 문구가 뜬다. 아마도 해당파일이 png 파일 같은 게 아니라서 일 것같다.

 

 

📌 참고내용

 

해당 문제는 파일 업로드 취약점과 관련이 있는데 파일 업로드 취약점이란 인가 받지 않은 악성 파일을 공격자가 웹 서버에 업로드하여 시스템 권한을 획득할 수 있는 취약점을 말한다.

보통 웹쉘(WebShell)이라는 것을 만들어서 업로드를 하는데 웹쉘을 업로드하게 되면 웹 페이지를 통해 운영체제 명령어를 입력할 수 있게 되기 때문에 아주 위험한 취약점이라고 한다.
보통 개발자들이 .asp, .php, .jsp 이런 확장자를 업도르 하지 못하게 막아놓는데,그 이유가 저런 확장자들이 서버에 업로드 될 경우, 서버의 일부로 동작이 되면서 웹쉘로서 기능을 하기 때문이라고 한다.

 

다시 문제로 돌아가서 내가 아까 만들었던 것이 php 언어를 이용해 웹쉘을 아주 간단하게 만든 것이다.

위 코드의 내용은 cmd 라는 변수의 값을 GET 메소드로 사용자에게 전달 받은 뒤, 운영체제에 전달받은 명령어를 실행시키고, 결과를 출력하는 것이다. 

 

문제에서 뜻하는 이중 확장은 이중으로 확장자를 쓰라는 거였다.

php와 jpg, png와 같은, 아까 예측했던대로 제목과 관련된 문제는 맞았다.

 

 

 

 

오 드디어 된거 같았지만  아니었고, 실행할 수 없다는 경고창이 뜬다.

 

아까 php 파일을 만들때 GET 메소드로 cmd 변수에 값을 넣어줘야 했으나 아직 안넣어줬기 때문에 운영체제 명령어를 실행할 수 없다고 에러가 나는 것이라고 한다.

URL 끝에 ?cmd=id 라고 입력해서 cmd 변수에 id 라는 값을 담아주면 system('id') 가 서버로 전달되어 id 명령어가 실행된다고 한다.

이제 ?cmd=ls -al /challenge/web-serveur/ch20/라고 명령어를 쳐줄 것이다.

 

 

📌 ?cmd=ls -al /challenge/web-serveur/ch20/ 의미

?cmd=ls -al /challenge/web-serveur/ch20/는 웹 서버에게 특정 명령을 실행하도록 요청하는 URL 쿼리이다.
이것은 일반적으로 웹 서버에게 외부 명령을 실행하도록 하는 취약점인 "Command Injection"의 시도로 간주될 수 있다.
해당 URL은 ls -al /challenge/web-serveur/ch20/이라는 명령을 실행하라고 웹 서버에게 지시한다.
이 명령은 Linux/Unix 시스템에서 디렉토리의 내용을 자세히 나열하는 명령어로, 여기서 -al은 "all" 및 "long format"을 나타내며, /challenge/web-serveur/ch20/는 목록을 표시할 디렉토리의 경로이다.

 

 

passwd에 관한 파일이 있는 거같은데, ?cmd=cat /challenge/web-serveur/ch20/.passwd 를 이용해 파일 내용을 출력시키면 된다.

 

 

📌 ?cmd=cat /challenge/web-serveur/ch20/.passwd 의 의미

 

?cmd=cat /challenge/web-serveur/ch20/.passwd는 웹 서버에게 특정 명령을 실행하도록 요청하는 URL 쿼리이다.
이것은 일반적으로 웹 서버에 대한 "Command Injection" 공격 시도로 간주된다.
해당 URL은 cat /challenge/web-serveur/ch20/.passwd라는 명령을 실행하라고 웹 서버에게 지시한다.
이 명령은 Unix/Linux 시스템에서 cat 명령을 사용하여 /challenge/web-serveur/ch20/.passwd 파일의 내용을 표시한다.
보통 .passwd는 사용자 계정과 관련된 암호화된 비밀번호 정보를 저장하는 파일일 수 있다.

 

 

 

passwd를 찾았다. 

 

 

이번 문제는 거의 8할 이상을 찾아보면서 풀었는데, 처음보는 문제 유형 + 리눅스 공부가 안되어있어서 그런거 같다.

현재 공부하고 있는 리눅스 공부를 열심히해야겠다는 생각이 들었다.

 

세번째 문제 끄읏~

 

 

 

[ 학습 참고 자료 ]

보안맨 (tistory.com)

 

[Root Me] File upload - Double extensions - 웹해킹 / WebShell

20점 짜리 웹해킹 문제 파일 업로드 취약점과 관련이 있따. 파일 업로드 취약점이란 인가 받지 않은 악성 파일을 공격자가 웹 서버에 업로드하여 시스템 권한을 획득할 수 있는 취약점을 말한다.

hackingstudypad.tistory.com