1.信息收集
扫描端口:
通过目录扫描找到了一个图片,在/test/目录下。
图片上写”需要很多keys“。
用图片解析工具查看,没有得到任何有用信息:
回看nmap扫描结果,443端口给出了一个签发证书的域名地址:weakness.jth。编辑/etc
/hosts文件,把域名加入。
然后访问:http://weakness.jth/
对该网页进行目录扫描,发现了一个新目录/private
访问这个目录发现了两个文件:
第一个是mykey公钥,应该是用来登录ssh的。
第二个notes.txt的内容:
2.利用openssl漏洞爆破私钥
notes.txt提示密钥是由openssl 0.9.8c-1生成的。特意提示了版本信息,那说明这个版本可能存在漏洞:
注意到5720.py是一个暴力破解的脚本,把它复制过来:
这个exploits里注明了漏洞利用方法:
先下载文件debian_ssh_rsa_2048_x86.tar.bz2
然后把它解压在一个目录下,查看文件内容,这应该是一个个公钥和私钥对。
我们已经得到了mykey.pub文件,接下来就是找到与它配对的私钥。
在文件夹中找到了内容一致的公钥,它的同名文件即对应的私钥:4161de56829de2fe64b9055711f531c1-2537
现在有私钥了,那用户名呢?回看http://weakness.jth/ 的那只兔子,用户名为n30,隐藏在兔子里。
现在可以用以下命令连接ssh:
ssh -i 4161de56829de2fe64b9055711f531c1-2537 n30@weakness.jth
连接成功!
3.提权
目前用户为n30.获取user.txt
发现了一个名字很敏感的文件:code
查看了一下,是python编译的文件。
执行文件运行出现错误,但是输出了敏感信息:登录硬编码?
把这个文件下载到kali进行反编译,查看程序代码中是否有硬编码的登录信息:
把code移动到下载公钥的那个文件夹,或者用python开一个http服务都可以。
下载:
把code文件重新命名为code.pyc文件,上传到在线python反编译工具 :
反编译的代码:
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7
import os
import socket
import time
import hashlib
print '[+]System Started at : {0}'.format(time.ctime())
print '[+]This binary should generate unique hash for the hardcoded login info'
print '[+]Generating the hash ..'
inf = ''
inf += chr(ord('n'))
inf += chr(ord('3'))
inf += chr(ord('0'))
inf += chr(ord(':'))
inf += chr(ord('d'))
inf += chr(ord('M'))
inf += chr(ord('A'))
inf += chr(ord('S'))
inf += chr(ord('D'))
inf += chr(ord('N'))
inf += chr(ord('B'))
inf += chr(ord('!'))
inf += chr(ord('!'))
inf += chr(ord('#'))
inf += chr(ord('B'))
inf += chr(ord('!'))
inf += chr(ord('#'))
inf += chr(ord('!'))
inf += chr(ord('#'))
inf += chr(ord('3'))
inf += chr(ord('3'))
hashf = hashlib.sha256(inf + time.ctime()).hexdigest()
print '[+]Your new hash is : {0}'.format(hashf)
print '[+]Done'
从源码中可以看出来被hash计算前的字符串为:
n30:dMASDNB!!#B!#!#33
这可能是n30用户的系统密码,n30用户有sudo权限,尝试执行sudo:
用密码:dMASDNB!!#B!#!#33 登录成功!
获取到root用户的flag。
4.总结
本靶机主要考察以下知识点:
- 根据nmap扫描出的域名,访问获取线索;
- 所谓兔子洞中也可能有隐藏的线索(用户名);
- 利用openssl的版本漏洞,已知公钥获取私钥;
- python文件的反编译,解析源码中硬编码信息。