W6 Command Injection

hyuun01·2022년 11월 9일
0

WebHacking

목록 보기
10/12

1. 시스템 함수

  • PHP : system
    ex) system(“cat /etc/passwd”)
  • Node JS : child_process
  • 파이썬 : os.system



2. 메타 문자

1) 명령어 치환

``

  • ``안에 들어있는 명령어를 실행한 결과로 치환됨
  • 중복 사용 불가
    $ echo \`echo theori\` theori $()

$()

  • $()안에 들어있는 명령어를 실행한 결과로 치환됨
  • 이 문자는 중복 사용이 가능
    (echo $(echo $(echo theori)))
    $ echo $(echo theori) theori

2) 명령어 연속 실행

&&

  • 한 줄에 여러 명령어를 사용하고 싶을 때 사용
  • logical AND
  • 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행함

$ echo hello && echo theori hello theori

||

  • 한 줄에 여러 명령어를 사용하고 싶을 때 사용
  • logical OR
  • 앞 명령어에서 에러가 발생해야 뒷 명령어를 실행
    $ cat / || echo theori cat: /: Is a directory theori

3) ; (명령어 구분자)

  • 한 줄에 여러 명령어를 사용하고 싶을 때 사용
  • ;은 단순히 명령어를 구분하기 위해 사용
  • 앞 명령어의 에러 유무와 관계 없이 뒷 명령어를 실행

$ echo hello ; echo theori hello theori

4) | (파이프)

  • 앞 명령어의 결과가 뒷 명령어의 입력으로 들어감
    $ echo id | /bin/sh uid=1001(theori) id=1001(theori) groups=1001(theori)



3. Command Injection

: 명령어를 실행해주는 함수를 잘못 실행해 발생하는 취약점

  • 인젝션(Injection)
    :악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법

해결책

  • 입력 값에 대해 메타 문자의 유무를 검사
  • 시스템 메타 문자를 해석 하지 않고 그대로 사용하는 함수를 사용

0개의 댓글