SNMP RCE
SNMP RCE
SNMP는 관리자가 장치나 서버의 기본 구성을 간과할 경우 공격자에게 악용될 수 있습니다. Linux 운영 체제에서 **쓰기 권한 (rwcommunity)**이 있는 SNMP 커뮤니티를 악용함으로써 공격자는 서버에서 명령을 실행할 수 있습니다.
추가 명령으로 서비스 확장하기
SNMP 서비스를 확장하고 추가 명령을 추가하기 위해 "nsExtendObjects" 테이블에 새로운 행을 추가할 수 있습니다. 이는 snmpset
명령을 사용하여 필요한 매개변수를 제공하면서 실행 파일의 절대 경로와 실행할 명령을 포함시킴으로써 달성할 수 있습니다:
명령어 주입을 위한 명령어 실행
SNMP 서비스에서 명령어를 주입하여 실행하려면 호출된 이진 파일/스크립트의 존재와 실행 가능성이 필요합니다. **NET-SNMP-EXTEND-MIB
**는 실행 파일의 절대 경로를 제공해야 합니다.
주입된 명령어의 실행을 확인하기 위해 snmpwalk
명령어를 사용하여 SNMP 서비스를 열거할 수 있습니다. 출력에는 명령어와 해당하는 세부 정보가 포함되며, 절대 경로도 표시됩니다:
주입된 명령 실행하기
주입된 명령이 읽히면 실행됩니다. 이 동작은 **run-on-read()
**로 알려져 있습니다. 명령의 실행은 snmpwalk 읽기 중에 관찰될 수 있습니다.
SNMP를 사용하여 서버 쉘 획득하기
서버를 제어하고 서버 쉘을 얻기 위해 mxrch가 개발한 파이썬 스크립트를 사용할 수 있습니다. https://github.com/mxrch/snmp-shell.git에서 이용할 수 있습니다.
또는, SNMP에 특정 명령을 주입하여 역쉘을 수동으로 생성할 수도 있습니다. 이 명령은 snmpwalk에 의해 트리거되며, 공격자의 기기로 역쉘 연결을 설정하여 피해자 기기를 제어할 수 있게 합니다. 이를 실행하기 위해 사전 요구사항을 설치할 수 있습니다:
또는 리버스 쉘:
참고 자료
Last updated