Vulnhub W34KN3SS Walkthrough


Vulnhub W34KN3SS Walkthrough

前言

最近的时间确实是比较的充裕,所以说有时间静下心来继续干这些靶机什么的,虽然说现在这些靶机的难度实在是有些难登大雅之堂,但总是会偶尔有些小惊喜。文章的行文安排如下:

  • 主机发现和端口扫描
  • 浏览网站
  • 目录遍历
  • 更改 hosts 文件
  • 访问 weakness.jth
  • 目录遍历
  • searchsploit
  • 解密公钥
  • ssh 登陆
  • 解码 pyc 文件
  • 提权
  • flag

主机发现和端口扫描

先从主机发现开始。

确定了目标主机的地址之后就开始对其进行端口扫描确定其开放的端口与对应的服务,这都是信息收集的常用套路。

可以看出,这里的主机开放了 22/80/443 端口,其中在 443 端口发现了一个可以的网址,按照经验来说,出现这种陌生的域名还是加到 hosts 文件中。一般来说出现这种陌生的东西都是要加进去的。到了这里,初步的信息收集就基本上结束了,下面开始对网站进行访问。

浏览网站

网站的主页如上图所示,没什么特别的,基本上就是一个默认的页面,经过对网页源代码的查看也没有什么值得注意的地方,所以说决定对网站的目录进行扫描。

目录扫描

使用 gobuster 对网站目录进行扫描。

顺序依次访问了一下,发现 blog 什么都没有,uploads 也是什么都没有,只是一个文件索引罢了, upload.php 引起了我的注意,尝试访问了一下。但是却在网页的注释里面发现了作者的提示:不是你看到的所有的东西都是真的,也许是个假的。所以说合理的推断,这个是一个假的上传页面,只是做出来骗人的。

更改 hosts 文件

echo '10.0.0.51 weakness.jth' >> /etc/hosts

目录遍历

既然是上面的路子都断了,那么就只能从这个 weakness.jth 上面下手了,浏览器访问一下,发现这个页面和直接访问 ip 地址产生的页面不一样了。而且上面出现了一个很突兀的单词 n30

发现了一个名为 private 的目录,一看就不简单啊。尝试访问。在其子目录 files 下发现了:

searchsploit

上面的这个说明已经说了,所以就去搜索一下这个东西。

使用 5622.txt

解密公钥

将其解压,然后在当前目录执行 grep -r -l 公钥加密值,即可得到需要的文件。

SSH 登陆

按照解密的结果来看,这个目录的结构,进到我刚刚解压的那个文件夹里面,找到这个文件所在的目录。即可已使用秘钥登陆 SSH。

解码 pyc 文件

登陆之后在当前用户的家目录下面发现了一个叫做 code 的文件,使用 file 命令查看了一下发现是一个 python2 编译生成的文件,众所周知这种类型的文件是可以倒推回去的,所以说找一个在线的解密网站对其进行解密,看看是否有什么敏感信息。解码

# uncompyle6 version 3.5.0
# Python bytecode 2.7 (62211)
# Decompiled from: Python 2.7.5 (default, Nov 16 2020, 22:23:17) 
# [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
# Embedded file name: code.py
# Compiled at: 2018-05-08 23:50:54
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'
print inf

可以在上面的代码中加上一行,让其打印出 inf 字符串来 ,省去自己一个个输入的时间。

print inf

提权

flag

root@W34KN3SS:~# cat root.txt 
a1d2fab76ec6af9b651d4053171e042e

文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录