본문 바로가기

모의해킹/Dreamhack

phpMyRedis

728x90

문제 정보

 

redis 취약점을 활용하기 위해서는 redis 취약점이 뭔지 알아야한다.

 

Remote Dictionart Server(redis)

"키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스(NoSQL) 관리 시스템이다.

휘발성이 높은 메모리이기에 SAVE라는 config로 몇초에 몇번 파일이 변경되었을 때 저장을 하는 config가 있다.

 

1. redis에는 eval 명령어를 이용해 Lua script가 실행이 가능하다.

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"

2. redis는 일정 시간마다 메모리 데이터를 파일 시스템에 저장한다.(주기적으로 저장함)

 

https://docs.w3cub.com/redis/eval

 

Eval - Redis - W3cubDocs

EVAL EVAL script numkeys key [key ...] arg [arg ...] Introduction to EVAL EVAL and EVALSHA are used to evaluate scripts using the Lua interpreter built into Redis starting from version 2.6.0. The first argument of EVAL is a Lua 5.1 script. The script does

docs.w3cub.com

 

소스코드 분석

<?php 
    if(isset($_POST['cmd'])){
        $redis = new Redis();
        $redis->connect($REDIS_HOST);
        $ret = json_encode($redis->eval($_POST['cmd'])); // POST로 전달된 data를 redis->eval()에 넣어 결과값 출력
        echo '<h1 class="subtitle">Result</h1>';
        echo "<pre>$ret</pre>";
        if (!array_key_exists('history_cnt', $_SESSION)) {
            $_SESSION['history_cnt'] = 0;
        }
        $_SESSION['history_'.$_SESSION['history_cnt']] = $_POST['cmd'];
        $_SESSION['history_cnt'] += 1;

        if(isset($_POST['save'])){
            $path = './data/'. md5(session_id());
            $data = '> ' . $_POST['cmd'] . PHP_EOL . str_repeat('-',50) . PHP_EOL . $ret;
            file_put_contents($path, $data);
            echo "saved at : <a target='_blank' href='$path'>$path</a>";
        }
    }
?>

 

 

공격 시나리오

1. dir 명령어를 통해 메모리의 내용이 어떤 경로에 있는지 확인을 한다.

dir

var/www/html 경로에 존재하기 때문에 건들지 않아도 된다.

 

2. 파일이 저장되는 곳인 dbfilename 파일을 PHP로 조작을 한다.

dbfilename은 dump.rdb이 이다

메모리의 내용이 저장되는 파일인 dbfilename을 webshell.php로 설정을 해주면 php 파일에 저장이 된다.

 

save 10를 10 1로 설정해줘서 10초에 한번 번경되면 save 한다.

 

3. 메모리에 웹쉘을 삽입 한다.

 

'모의해킹 > Dreamhack' 카테고리의 다른 글

Relative Path Overwrite Advanced  (0) 2023.12.06
Relative Path Overwrite  (0) 2023.12.02
Client Side Template Injection  (0) 2023.11.25
CSP Bypass  (0) 2023.11.23
[wargame.kr] crack crack crack it  (0) 2023.11.20