靶机: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用户的账号密码