靶机下载地址:戳我

This machine was made for Jordan’s Top hacker 2018 CTF , we tried to make it simulate a real world attacks “as much as possible” in order to improve your penetration testing skills , also we but a little tricky techniques on it so you can learn more about some unique skills.

0x00 前期工作

使用kali探测存活主机,得到W34kn3ss:1靶机的ip为192.168.58.142

探测端口的开放情况:

0x01 信息收集

  • 80端口

Apache/2.4.29,默认欢迎界面。

  • 22端口

弱口令爆破失败。

  • Nikto扫描结果
  • dirb目录扫描结果

0x02 获取权限

上个步骤使用nikto扫描粗来了/test/目录,访问一哈:

555 keys…keys是啥0.0

后来想到还有443端口,于是查看了无效证书,在这里发现了一点信息:

将域名和IP添加到了hosts文件:

访问后得到该页面,注意这里由一个n30:

使用dirb获取敏感目录:

访问敏感目录http://weakness.jth/private/,得到两个文件:

mykey.pub(公钥):

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DOqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMOfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu0O0QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw== root@targetcluster

notes.txt:

this key was generated by openssl 0.9.8c-1

这个版本的Openssl是存在漏洞的:

cat /usr/share/exploitdb/exploits/linux/remote/5622.txt

得到该漏洞的使用方法:

解压后发现好大(。

  • 在整个文件夹内搜索mykey.pub的内容:
  • 得到4161de56829de2fe64b9055711f531c1-2537.pub,将后缀名去掉就是私钥。
  • 接下来使用私钥登录ssh,用户名为之前得到的n30:

初步怀疑user.txt是一个md5,但是解不开。接下来分析code。使用file命令可以得知它是一个python2文件,但是打开我看不懂任何内容,应该是被编译了。

使用python3 -m http.server 8043起了个文件共享,将code下载到本地上,然后反编译。得到以下内容:

#! /usr/bin/env python 2.7 (62211)
#coding=utf-8
# Compiled at: 2018-05-08 10:50:54
#Powered by BugScaner
#http://tools.bugscaner.com/
#如果觉得不错,请分享给你朋友使用吧!
import os, socket, time, 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'

得到n30用户的密码:dMASDNB!!#B!#!#33

输入sudo -l命令查看此用户拥有的特殊权限,发现可以直接提权为root。输入sudo -i可进入root用户下,提权成功。