서버 생성 / 문제 파일 다운로드
페이지를 살펴보면 지난 시간에 푼 image-storage 와 동일하게 파일을 업로드할 수 있는 화면이 등장하게 됩니다
지난 시간에 제작한 test.php을 업로드해 봤는데 이번에는 php 확장자로 업로드할 수 없다고 나오네요
아마 내부에서 특정 확장자를 막아둔 거 같습니다
<?php
$deniedExts = array("php", "php3", "php4", "php5", "pht", "phtml");
if (isset($_FILES)) {
$file = $_FILES["file"];
$error = $file["error"];
$name = $file["name"];
$tmp_name = $file["tmp_name"];
if ( $error > 0 ) {
echo "Error: " . $error . "<br>";
}else {
$temp = explode(".", $name);
$extension = end($temp);
if(in_array($extension, $deniedExts)){
die($extension . " extension file is not allowed to upload ! ");
}else{
move_uploaded_file($tmp_name, "upload/" . $name);
echo "Stored in: <a href='/upload/{$name}'>/upload/{$name}</a>";
}
}
}else {
echo "File is not selected";
}
?>
다운로드한 소스 코드에서 upload.php 코드 내부를 살펴보면 $deniedExts 변수에 php, php3, php4, php5, pht, phtml 확장자를 넣어두고 업로드된 파일의 확장자와 일치하면 업로드가 불가능하게 짜여 있습니다
그래서 php 파일 확장자를 inc 파일로 우회하여 업로드해 보겠습니다
inc 파일로 교체했을 때는 업로드는 가능하지만 내부에서 문자열로 출력되기 때문에 코드 실행이 불가능했습니다
따로 널(%00)문자를 이용하여 php 확장자를 우회하면 페이지 접근이 불가능해서 WebShell을 실행하지 못했습니다
다른 방법을 생각하는 도중 문제 제목이 Apache htaccess 이여서 htaccess관한 내용을 찾아봤습니다
.htaccess이란?
Hypertext access의 약자로 파일명 앞의 .을 숨긴 파일을 의미하고, htaccess을 사용하면 디렉터리에 대한 설정 옵션을 변경할 수 있습니다
즉 아파치 같은 웹 서버에서 웹 브라우저에 접근할 때 어떤 식으로 서비스를 제공할지 apace2.conf와 sites-enabled 가상 호스트 설정 파일을 통해 결정된다고 합니다
이를 통해 .htaccess 파일 내부에 우리가 사용할 특정 확장자를 php로 실행시키게 설정할 수 있습니다
.musa라는 특정 확장자를 php로 실행시킬 수 있게 .htaccess 파일을 작성해 줍니다
이후 해당 파일을 업로드하고 .musa라는 확장자 파일을 다시 업로드해 주면 .htaccess로 인해 .musa 파일이 php로 실행되게 됩니다(test.musa 파일은 image-storage 때 사용한 test.php 내용과 동일합니다)
그다음 test.musa 파일을 업로드하여 제대로 작동하는지 확인하기 위해 파라미터를 입력해 봅시다
'ls /' 명령어를 입력하여 루트 경로에 있는 디렉터리를 살펴보니 flag 파일이 있습니다
하지만 'cat /flag' 명령어를 작동시켜도 아무런 반응이 없어 루트(/) 디렉터리로 이동 후 flag 파일을 실행시켜야 됩니다
cd / 명령어와 flag 파일을 실행시키기 위해 2개의 명령어를 사용해야 하는데 WebShell에서 2개 이상의 연속 명령어를 사용하기 위해서는 [command1];[commad2] 방식으로 루트 디렉터리 이동 후 현재 경로에 있는 flag 파일을 실행시킬 수 있습니다
[ 선수 학습 내용 ]
'Kali Linux/Linux' 카테고리의 글 목록
死死死死死死
mu-sa.tistory.com
[Dreamhack] image-storage 문제 풀이
서버 생성 / 문제 파일 받기 페이지를 살펴보면 Upload 항목에 파일을 업로드할 수 있습니다 여기에 드림핵 이미지를 업로드하면 이미지가 업로드된 위치를 반환합니다 이 위치에 방문하면 우리
mu-sa.tistory.com
파일 업로드 취약점(File Upload Vulnerability)
Web Directory 웹 디렉터리는 웹 사이트의 온라인 카테고리입니다 웹 검색 엔진과 다른 역할을 가지는데 웹 검색 엔진은 사용자가 특정 키워드로 정보를 검색할 때 관련된 웹 페이지를 찾는 반면 웹
mu-sa.tistory.com
HTTP 헤더 구조와 GET과 POST 메소드 방식
이번에는 HTTP 헤더 구조에 대해 살펴보겠습니다 HTTP 헤더 구조 HTTP는 브라우저와 서버가 통신할 수 있도록 하는 프로토콜입니다 이때 HTTP는 서버에 요청(Request) 할 때 요청 행과, 요청 헤더, 메시
mu-sa.tistory.com
[ 참고 자료 ]
WebHacking - File Upload 취약점 (우회), Web SHell(웹 쉘)
저번 글에서 파일 업로드 취약점을 공략하다가 .php 파일 확장자 업로드에서 막혀있었다. 오늘은 이러한 경우 우회할 수 있다는 가능성을 이해해보겠다. 저번 글에서 로컬설정 파일에 대한 이해
code1018.tistory.com
.htaccess 파일이란?
.htaccess란? "hypertext access"의 약자로, 파일명 앞의 점은 숨긴파일을 뜻한다. 해당 파일은 디렉토리에 대한 설정 옵션을 제공한다. 즉, 아파치 같은 웹 서버에서 브라우저 같은 클라이언트에서 접근
power-girl0-0.tistory.com