SSRF 302跳转攻击redis写入ssh公钥实现远程登录

目录

SSRF漏洞

SSRF攻击Redis 

302跳转

漏洞复现:

index.html:

index.php:

攻击步骤:

1.生成ssh公钥数据:

2.用SSH公钥数据伪造Redis数据:

3.在自己的服务器上写302跳转:

4.最后尝试在.ssh目录下登录:


SSRF漏洞

        SSRF(Server Side Request Forgery,服务器端请求伪造)是一种攻击者通过构造数据进而伪造服务器端发起请求的漏洞,因为求情是由服务器发出的,所以往往是利用SSRF漏洞攻击服务器所在网络内部系统。

SSRF攻击Redis 

         Redis是一个远程字典服务、Key-Value数据库,一般运行在内网中,使用者大多将其绑定在127.0.0.1:6379,而且Redis默认是无密码的。攻击者可以通过SSRF漏洞未授权访问内网Redis服务,可任意增、删、查、改其中的数据。因为Redis 一般是root启动的,所以可以利用且特殊身份和其导出功能(config set 可以设置保存路径,config set 可以设置保存文件名)向主机中写入shell脚本、比如写入Crontab、Webshell、SHH 公钥。

302跳转

        301、302都是http的状态码,都代表重定向,301是永久重定向,302是临时重定向,因为302是临时的,一般不会缓存数据,所以攻击者一般都会利用302重定向

        当浏览器收到的http状态码为302时,将自动从返回的http头中取出Location后的数据作为URL发出请求。但在web服务器中要让服务器自动跟随Location跳转,一般需要设置相关参数,比如php下需要设置如下:

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);  # $ch 为curl 句柄   表示会跟随Location 跳转,这里时以递归的形式

漏洞复现:

index.html:
<!DOCTYPE html>
<head>
        <meta charset="utf-8">
</head>
<form action='index.php' method='get'>
        input url: <input type="text" name="url"><br>
        <input type="submit" value="提交">
</form>
index.php:
<?php
        function check_ip($url)         #对ip进行限制,现在内网ip
        {
                $match_res=preg_match('/^(http|https)?:\/\/.*(\/)?.*$/',$url);
                if(!$match_res)
                {
                        echo 'url fomat erro';
                        exit();
                }
                try
                {
                        $url_parse=parse_url($url);
                }
                catch(Exception $e)
                {
                        echo 'url fomat error';
                        exi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值