ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <WEB Hacking> Command Injection
    WEB Hacking 2021. 12. 22. 12:15

    ■Command Injection

    이용자의 입력을 시스템 명령어로 실행하게 하는 기법으로, 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생

    ex) Python으로 개발된 웹 애플리케이션에서 입력한 임의의 IP에 ping을 전송

    os.system("ping [user-input]")

    ex) Python으로 개발된 웹 애플리케이션에서 임의의 파일을 읽기

    os.system("cat [user-input]")

     

    위와 같은 함수를 사용할 때, 이용자의 입력을 제대로 검사하지 않으면 임의 명령어가 실행될 수 있음

    => 리눅스 셸 프로그램이 지원하는 다양한 메타 문자 때문

     

    ex) 메타 문자

    메타 문자 설명 ex
    `` 명령어 치환
    `` 안에 들어있는 명령어를 실행한 결과로 치환
    $ echo `echo woong` 
    woong
    $() 명령어 치환
    $()안에 들어있는 명령어를 실행한 결과로 치환
    위와 다르게 중복 사용이 가능
    $ echo $(echo woong)
    woong
    && 명령어 연속 실행
    한 줄에 여러 명령어를 사용하려 할 때 사용
    앞 명령어에서 에러가 발생하지 않아야 뒷 명령어 실행
    $ echo hi && echo woong
    hi
    woong
    || 명령어 연속 실행
    한 줄에 여러 명령어를 사용하려 할 때 사용
    앞 명령어에서 에러가 발생해야 뒷 명령어 실행
    $ cat / || echo woong
    /: Is a directory
    woong
    ; 명령어 구분자
    한줄에 여러 명령어를 사용하려 할 때 사용
    앞 명령어의 에러 유무에 상관없이 뒷 명령어 실행
    $ echo hi; echo woong
    hi
    woong
    | 파이프
    앞 명령어의 결과가 뒷 명령어의 입력으로 들어감
    $ cat /etc/passwd | grep mail
    각 계정 정보 중에서 mail이라는 문자열이 들어간 라인만 출력 

     

    이 취약점을 막기위해

    개발자는 입력 값에 대해 메타 문자의 유무를 철저히 검사하거나,

    시스템 메타 문자를 해석하지 않고 그대로 사용하는 함수를 사용해야 함

    'WEB Hacking' 카테고리의 다른 글

    <WEB Hacking> ServerSide: SSRF  (0) 2022.01.05
    <WEB Hacking> File Vulnerability  (0) 2021.12.23
    <WEB Hacking> NoSQL Injection  (0) 2021.12.20
    <WEB Hacking> SQL Injection  (0) 2021.12.20
    <WEB Hacking> ClientSide: CSRF  (0) 2021.12.17
Designed by Tistory.