freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Viking渗透测试(爆破zip文件密码+图片隐写)
2023-12-28 16:07:33

环境配置

攻击机(kali) IP:192.168.56.102

靶机(搭建在virtualbox)IP:192.168.56.105

靶机难度:中低

靶机地址:https://www.vulnhub.com/entry/vikings-1,741/

主机发现

使用nmap进行主机发现,

1703749636_658d28043f37be5db96b3.png!small?1703749638096

发现192.168.56.105为新增加的IP,即为靶机IP。

端口探测

主要使用nmap对目标主机进行开放端口探测,端口运行服务的探测,服务详细信息探测,nmap自带脚本库进行探测。

1703749665_658d28210643dc67bea0e.png!small?1703749666683

1703749678_658d282e7ab3a2a754071.png!small?1703749680292

发现主机开放了22,80两个端口,22端口运行着ssh服务,80端口运行着web服务

web渗透

使用浏览器进行查看80端口的信息,,发现uog目录,打开是一个界面

1703749696_658d2840cbc98957c6d76.png!small?1703749698214

这里响应了很长时间,感觉有问题。查看网页源代码。

1703749755_658d287b9fce9a0a77f81.png!small?1703749757397

查看页面源代码发现是由于页面在加载的时候请求了许多资源导致了页面响应变慢。

1703749771_658d288b1ceaef9cc04c2.png!small?1703749773821

web界面很普通,所有的链接都是假的。并且网站没有robots.txt,接下来对网站目录进行探测。

1703749785_658d2899594c202e54111.png!small?1703749787105

发现网站根目录下仅仅有site,接下来对site下跌目录进行爆破,

1703749808_658d28b0a5f847564386d.png!small?1703749810500

发现war.txt文件,这里对文件进行查看

1703749828_658d28c4449eddc9a9908.png!small?1703749829710

看到了一个类似目录的字符串,这里对这个目录进行访问

1703749843_658d28d383954939ddae0.png!small?1703749846048

这里发现了大量字符,判断应该是编码文件,这里使用github上的工具cyberchef对字符串进行处理,

1703749857_658d28e1e0177d833a5c7.png!small?1703749859595


很明显的base64编码,这里使用cyberchef进行解码,但是解码后的文件更加混乱,这里猜测这些数据是经过某种加密算法或者是压缩文件。这里看到PK开头,这一般表示文件的头部信息

1703749897_658d290975e5a898d9345.png!small?1703749899394

上网搜索发现是一个zip文件,当然也可以使用采用cyberchef的entorpy模块,这个模块是用来计算信息的信息熵的,信息的信息熵越大,表明数据的无序性越大,而数据压缩的方法就是剔除文件中重复次数多的字符或使用短的字符代替,

1703749912_658d2918b136a9dd6dec6.png!small?1703749913979

发现这里的信息熵的值接近最大值8,一般来说,信息熵大于7.5就表明数据的无序性非常大了,在使用file模块进行文件类型的确定,

1703749932_658d292c619e4d1b4ab15.png!small?1703749933893

这里已经确定文件类型为zip,直接创建zip文件,将数据导入进去。进行解压,但是发现需要密码。

1703749948_658d293c6637dc56f397c.png!small?1703749949759

这里使用john工具进行破解,但是要注意,使用john破解密码时,应该将文件转换为john能够识别的哈希文件,将哈希文件作为John的输入,才能对文件进行破解,具体操作如下:

1703749963_658d294bdd3223dea82ae.png!small?1703749965699

首先使用zip2john 压缩文件名.zip > 哈希文件名生成哈希文件,在使用john 哈希文件名 --wordlist=指定字典 进行破解,这里成功破解出密码为ragnarok123,进行解压文件

1703749988_658d2964a266bc6034f17.png!small?1703749991472

解压以后发现只有一张图片,图片中并没有任何信息,这里考虑是不是有什么信息隐写在图片里面,使用binwalk查看是否存在隐写信息(Binwalk是一种流行的二进制文件分析工具,可在Kali Linux等类Unix操作系统中使用。它提供了一种简单的方法来分析二进制文件,特别是固件文件,以识别其中嵌入的文件系统,压缩文件,加密文件,隐藏的图像以及其他文件类型和结构),

1703750009_658d2979a76734dc9a3eb.png!small?1703750011135
这里的确发现里面存在一个zip文件,使用-e参数对文件进行提取,

1703750048_658d29a0cc3ebe5b0a62a.png!small?1703750050722

提取生成了一个名为_king.extracted文件夹,进入文件夹发现里面有一个user文件,对文件进行查看,发现两个字符串,这里看到@符号猜测是ssh登陆的信息,这里尝试进行ssh登陆,发现floki是用户名,下面一串字符是密码,成功登陆。

1703750072_658d29b824c1906ecbe8f.png!small?1703750074082

提权

信息收集,发现用户没有在sudoer组里面,没有自动任务,查看当前目录的信息,

1703750088_658d29c807e0f63ea0276.png!small?1703750089370

发现readme.txt文件,并且里面提示我们要使用boat,查看boat文件

1703750115_658d29e31c6ab2da4c98b.png!small?1703750116387

发现是一段伪代码,里面分别是:可打印字符是你的盟友,定义一个变量是第29个质数,进行考拉兹猜想,搜索可得考拉兹猜想是对任意一个数字如果是奇数就乘三加一,偶数就除以2,最后都会变成1,那么这段伪代码就提示我们要对第29给质数进行考拉兹猜想,并且将每次计算得到的数字进行ascii解码,找到其中可打印的部分。同时查看/etc/passwd文件发现了用户ragnar。所以得到的字符串就是用户ragnar的密码。

1703750136_658d29f820db3628cd8f4.png!small?1703750138108

这里使用简单python脚本进行计算。

1703750149_658d2a05cdb073b800c07.png!small?1703750151354

生成质数的python脚本如图所示,

1703750163_658d2a1342f70074d9bf9.png!small?1703750164627

可以看到第29个质数为109,这里再使用python用于计算考拉兹猜想,编写如下脚本:

1703750178_658d2a22a3f87ebc04394.png!small?1703750180023

可以看到所有可以打印出的字符,使用cyberchef进行还原字符

1703750197_658d2a35db294b799fa6b.png!small?1703750199303

第一个模块用于将编码转换为字符串,第二个用于输出可打印的字符串,将这串字符作为密码进行ragnar的ssh密码进行登录

1703750212_658d2a440a8f6e04a1754.png!small?1703750213338

在使用第三个模块将所有的换行转换为空,得到密码。

第二次提权

1703750229_658d2a5558821e9dc090d.png!small?1703750230853

这里看到在我们登陆系统以后执行了sudo语句,但是我们并没有在sudoer组里面,所以并不能执行sudo命令,这里应该要先找到sudo语句执行了什么命令,这里应该找配置文件,用户登陆自动执行的配置文件,有.bashrc、.profile、(有的会有bash_profile),/etc/profile(全局的)这里进行逐一查看,在.profile中找到如下文件:

1703750245_658d2a652e650d6a87caa.png!small?1703750246678

找到对应的py文件,部分代码如下:

1703750261_658d2a75af0c5de17ad6f.png!small?1703750263369

发现调用了rpyc库,这是一个服务端的接口,可以进行python环境下的rpc(远程进程调用),客户端向服务器发送数据,运用服务端执行相关功能,

1703750277_658d2a856cfe2a30f6f13.png!small?1703750278791

同时查看文件的权限,发现文件是root用户的,但是所有人都可以执行,这里尝试构造客户端代码是服务端执行指令。编写如下脚本:

1703750294_658d2a963e71cd7018b97.png!small?1703750295659

导入rpyc模块,进行连接本地18812端口(默认开启18812端口),执行自定义函数square,函数内容是调用系统命令将ragnar用户添加到sudoers组中。查看18812端口是否开放

1703750308_658d2aa42b6e1e417d083.png!small?1703750309496

开放状态,运行脚本以后,重新使用ragnar用户登陆ssh,此时用户已经在sudoers组中,使用sudo -s执行提权

1703750322_658d2ab2b0d0066090924.png!small?1703750324000

两个flag:

1703750337_658d2ac1b0d7f41cc3d30.png!small?1703750339017

个人声明:

本文为原创,是根据苑老师2021年的打靶课,自己进行实操完成的,文章中所有用到的工具脚本都是苑老师在视频中所使用的,我也在文章中将详细的解释了进行每一部分的原因以及有哪些条件。本人打靶时间时2023年,所以原视频中有些因为语言环境的版本更迭导致的问题我也会在文章的最后给出再补充,希望文章可以帮助到初学者。最后,支持原创,谢谢。

# 渗透测试
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录