第一章 kali Linux简介
1.Linux操作系统的基础知识
-
Linux 的起源和发展:了解 Linux 操作系统的起源、发展和主要的发行版,如Linux 内核的诞生、GNU项目的贡献以及常见的 Linux 发行版如Ubuntu、Debian、CentOS 等。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux操作系统指的是“linux内核+各种软件”,Linux这个词只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
-
Linux 文件系统:熟悉 Linux 文件系统的层次结构和常见的目录结构:
-
根目录(/)
-
用户目录(/home)
-
系统配置目录(/etc)
-
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
-
常用的文件系统有以下几种EXT3、swap、vfat、nfs等。
-
深入理解
-
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
-
Windows和Linux对比
1、Windows和Linux的文件权限
在Windows系统中,用户分为两类:计算机管理员和受限用户。Windows常常设置为管理员身份,结果大家都可以随意安装和修改系统软件,导致病毒软件防不胜防,导致Windows的安全性相对较差。
在Linux中,用户分为4类:root(超级用户)、普通用户、同一组用户和其他用户。root用户拥有最高权限,可以对计算机系统进行任何操作。但root用户一般只在对系统进行维护时,如添加新用户、安装应用程序时,才进行登录,一般都是以普通用户的身份进行登录,普通用户不能修改系统文件夹下的文件,因此病毒软件想修改系统程序的可能性就大大降低了,这样就增加了系统的安全性和可靠性。
2、Windows和Linux的目录结构
在Windows下,整个硬盘被分成几个区。Linux也有分区的概念,但它是将所有系统安装在一棵树上,即从树根"/"开始。Linux中有一些重要的系统目录,它们都有特定的用途。
/home存放系统中登录用户的主目录
/bin存放系统中的可执行文件
/etc存放系统中大部分配置文件
/root超级用户的主目录
/var存放内容经常变动的文件
/usr存放与系统的用户直接相关的程序和文件
-
-
2.1 Linux文件系统根目录下的主要目录介绍
/bin:保存系统命令,如ls、cd、pwd等常用命令
/dev:存放设备文件,特殊文件保存目录(不可以随意修改)
/home:用户目录,存放普通用户相关文件的用户,是我们常用的目录
/lost+found:存放临时文件。此文件夹大多数情况下都是空的,当突然停电或非正常关机后,有些文件就临时存放在这里。
/mnt:缺省挂载点,挂载U盘、移动硬盘目录(常用)
/sbin:用来存放管理员才能使用的命令,即具有一定权限才可以使用的命令
/proc:进程,该目录不能直接操作,其保存的是内存的过载点
/srv: 系统启动服务时可以访问的数据库目录
/tmp:临时目录
/var:系统相关文档内容目录,存放经常被修改的文件,包括各种日志、数据文件。
/boot:存放引导的相关文件,保存系统的启动数据(不可随意操作)
/etc:用来存放配置相关文件
/lib:存放系统动态链接共享库,几乎所有的应用程序都会用到该目录下的共享库。
/media:存放挂载和自动挂载设备的标准位置。如远程文件系统和可移动介质。
/opt:存放第三方软件。第三方软件在安装时默认会找到这个目录,所以如果你没有安装此类软件时,它是空的,但如果你一旦把它删除,以后再安装此类软件可能会碰到麻烦。
/root:存放root用户(即管理员用户)相关文件的目录
/sys:该目录不能直接操作,存放类似于/proc的文件系统,在Linux2.6内核中最新出现,包含的文件用于获得硬件状态并反映内核看到的系统设备树。它使用了/proc中的很多帮助。
/selinux:selinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。
/usr:系统软件资源目录,存放默认安装文件的目录,存放用户的应用程序和文件
/usr/bin:众多的应用程序
/usr/sbin:超级用户的一些管理程序
/usr/include:Linux下开发和编译应用程序所需要的头文件
/usr/lib:常用的动态链接库和软件包的配置文件
/usr/src:源代码,Linux内核的源代码就放在这里
/usr/local/bin:本地增加的命令
/usr/local/lib:本地增加的库
3.用户和权限管理:了解 Linux 中的用户和用户组的概念,以及权限管理和访问控制,包括用户的创建、删除、权限的分配和修改等。
在 Linux 操作系统中,任何文件都归属于某一特定的用户,而任何用户都隶属于至少一个用户组。全部的用户信息保存为普通的文本文件。/ etc /passwd
文件是 UNIX 安全的关键文件之一。系统使用 UID 而不是用户名区别用户。任何 UID 值为0的用户都有 root 用户(系统管理员)访问权限,具备对系统的完全控制。/ etc / group
文件包含关于用户组信息。/etc/shadow
包含用户密码文件(影子文件)
Linux用户管理
用户是Linux系统工作中重要的一环,用户管理包括用户与组账号的管理。
账号管理是指账号的新增、删除和修改、账号规划以及权限的授予等问题。
在Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限
Linux用户权限
Linux下有两种用户:超级用户(root)、普通用户。
Linux系统中的root账号通常用于系统的维护和管理,它对Linux操作系统的所有部分具有不受限制的访问权限。在大多数版本的Linux中,都不推荐直接使用root账号登录系统。
Linux普通用户在系统下的操作是受限的。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
useradd #建立用户账户
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的起始群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号
usermod #修改用户账户
-c <备注> 修改用户帐号的备注文字。
-d <登入目录> 修改用户登入时的目录。
-e <有效期限> 修改帐号的有效期限。
-f <缓冲天数> 修改在密码过期后多少天即关闭该帐号。
-g <群组> 修改用户所属的群组。
-G <群组> 修改用户所属的扩展、附加群组。
-l <帐号名称> 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s <shell> 修改用户登入后所使用的shell。
-u <uid> 修改用户ID。
-U 解除密码锁定。
userdel #删除用户账户
groupadd #建立用户组
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
groupdel #删除用户组
groupmod #更改组群识别码或名称
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字
> # groupmod –g 10000 -n group3 group2
>此命令将组group2的标识号改为10000,组名修改为group3。
gpasswd #管理组群
-a 添加用户到组。
-d 从组删除用户。
-A 指定管理员。
-M 指定组成员和 -A 的用途差不多。
-r 删除密码。
-R 限制用户登入组,只有组中的成员才可以用 newgrp 加入该组。
4.命令行界面:掌握 Linux 命令行界面的基本操作和常用命令,如文件和目录的操作(ls、cd、mkdir、rm 等)、文件权限管理(chmod、chown 等)、文本编辑器(vi、nano)的使用等。
4.1目录操作命令
- 切换目录:cd
绝对路径:绝对路径一定是由根目录 / 开始写起。例如,使用绝对路径的表示方式指明 bin 文件所在的位置,该路径应写为 /usr/bin
相对路径:和绝对路径不同,相对路径不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起。例如cd .. (.表示当前目录、..表示上一级目录)
命令格式:cd 目录名
cd / #切换到根目录
cd ~ #切换到主目录
cd - #切换到上次访问的目录
cd .. #返回上一级目录
- 查看目录:ls 和 pwd
pwd 查看当前工作路径(绝对路径)
ls 查看当前目录下的目录和文件
命令格式:ls [-选项] 目录名
选项: -a:列出当前目录所有文件和目录(包括隐藏文件,以 .开头的为隐藏文件)
-l:以列表的形式显示文件和目录
示例:
ls -a 查看该目录下所有文件或目录
ls -l(简写ll) 以列表形式查看文件或目录
- 目录操作【增、删、改、查】
- 创建目录【增】 mkdir
命令格式:mkdir [-选项] 目录名
选项: -p:递归创建目录。
示例:
mkdir data/ 在当前目录下创建一个名为aaa的目录
mkdir -p hadoop/data/ 在当前目录下创建hadoop一并创建子目录data
mkdir /tmp/bigdata 在指定目录tmp下创建一个名为bigdata的目录
- 删除目录或文件【删】rm和rmdir
命令格式:rmdir 目录名 (只能删除空目录)
示例:
rmdir bigdata #删除bigdata这个目录(bigdata为空的目录)
命令格式:rm [-rf] 目录名或文件名
选项: -f:不提示,强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r,-R:递归删除,将指定目录下的所有文件与子目录一并删除;
-v:显示指令的详细执行过程。
示例:
rm -rf data/ #删除当前目录下data这个目录
rm -rf * #删除当前目录下所有文件和目录,慎用~
rm -rf /* #【自杀命令!慎用!慎用!慎用!】将根目录下的所有文件全部删除
注意:rm默认删除文件,使用-r选项可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包。
-
目录修改【改】mv 和 cp
-
目录重命名
命令格式:mv 旧目录名 新目录名 示例: mv hadoop/ hadoop01/ #将hadoop名改为hadoop01 注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行重命名的操作
-
剪切(移动)目录
命令:mv 目录名称 目录的新位置 示例: mv data Data/ # 将data这个目录移动到Data这个目录下 注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作
-
拷贝(复制)目录或文件
命令格式:cp [-选项] 目录名称 目录拷贝的目标位置 选项: -r:表示递归复制 示例: cp -r apps/ Data/ #将apps目录复制到Data目录下 注意:cp命令在复制目录是一定加上选项参数“-r”,cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不用写-r递归。
-
-
搜索目录【查】find
命令格式:find 目录 参数 文件名称或者目录名 示例: find /tmp -name 'a*' 查找/tmp目录下的所有以a开头的目录或文件。
-
文件操作命令【增,删,改,查】
-
文件操作新建文件【增】touch
命令格式:touch 文件名 示例: touch a.txt #在当前目录创建一个名为aa.txt的文件 touch b.txt c.txt d.txt #在当前目录下创建多个文件b.txt、c.txt、d.txt 注意:使用vi 命令也可以创建新文件
-
删除文件 【删】 rm
命令格式:rm -rf 文件名 示例: rm -rf /tmp/a.txt 删除/tmp目录下的a.txt文件
-
修改文件内容【改】 vi或vim
命令格式:vi 文件名 示例: vi a.txt 进入a.txt进行编辑
-
文件移动或重命名:mv
命令格式:mv 文件名 新文件名 示例: mv hello.txt hi.txt #将当前目录下的hello.txt重命名为hi.txt mv /tmp/a.txt /tmp/b.txt #将/tmp目录下的a.txt重命名为b.txt
-
文件的复制:cp
命令格式:cp 原文件名 指定目录 示例: cp a.txt hadoop/ #将当前目录下的a.txt复制到hadoop目录下 cp a.txt hadoop/b.txt #将当前目录下的a.txt复制到hadoop目录下重命名为b.txt 注意:可以复制的时候重命名
-
查看文件内容【查】
文件的查看命令:cat、more、less、head、tail
cat:查看文件内容,看最后一屏 命令格式:cat [选项] 文件名 选项: -n :显示行号 示例: cat /etc/sudo.conf #使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容
more:百分比显示 示例: more /etc/sudo.conf #使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看
less:翻页查看 示例: less /etc/sudo.conf #使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上和向下翻页,q结束查看
head:默认查看文件前十行内容 示例: head -5 /etc/sudo.conf #使用head -5 查看/etc/sudo.conf文件的前5行内容
tail:默认查看文件后十行内容 示例: tail -5 /etc/sudo.conf #使用tail -5 查看/etc/sudo.conf文件的后5行内容
-
创建链接文件:ln
命令格式:ln [-选项] 源文件 目标文件 选项: -s :创建软连接(相当于快捷键) 示例: ln data.txt d #创建data.txt文件的硬链接d 示例: ln -s data.txt da #创建data.txt的软连接文件da 注意:加-s创建软链接,不加-s则创建硬链接,软链接前面是 l 开头的(link),而硬链接是 - 开头,表示文件;软链接类似与 windows 的快捷方式,有一个明显的箭头指向,而指向的是源文件;硬链接文件除了文件名与源文件不一样,其余所有信息都是一样的。类似于 cp 复制操作。但是又和复制不一样,硬链接可以同步更新。
4.2 文件权限管理
-
文件的权限包括读、写、执行
-
每个文件的权限针对三类对象进行定义:
文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户(除所有者和所有组的用户):o—Others
所有用户(用 a 表示)
每个文件针对每类访问者定义了三种主要权限:
-
读(由 r 表示)
-
写(或修改,用 w 表示)
-
执行(由 x 表示)
-
rwx r-- r–
-
421 400 400
-
7 4 4
-
文件类型
d:文件夹 -:普通文件 l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如屏幕等串口设备) s:套接口文件
-
基本权限
读(r/4): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 写(w/2): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 执行(x/1): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 “—”表示不具有该项权限
-
文件权限值的表示方法
-
字符表示方法
Linux表示 说明 r- - 只读 -w- 仅可写 - -x 仅可执行 rw- 可读可写 r-x 可写可执行 rwx 可读可写可执行 - - - 无权限 -
8进制数值表示方法
权限符号 八进制 二进制 r- - 4 100 -w- 2 010 - -x 1 001 rw- 6 110 r-x 5 101 -wx 3 011 rwx 7 111 - - - 0 000 -
文件访问权限的相关设置方法与命令
-
修改文件权限:chmod
chmod 修改文件权限的方法有两种: 字母法与数字法。
-
字母法:
chmod u/g/o/a +/-/=rwx 文件名
[ u/g/o/a ] 含义 u user 表示该⽂件的所有者 g group 表示与该⽂件的所有者属于同⼀组( group )者, 即⽤户组 o other 表示其他以外的⼈ a all 表示这三者皆是 [ ±= ] 含义 + 增加权限 - 撤销权限 = 设定权限 rwx 含义 r read 表示可读取, 对于⼀个目录, 如果没有r权限, 那么就意味着不能通过ls查看这个⽬录的内容。 w write 表示可写入, 对于⼀个目录, 如果没有w权限, 那么就意味着不能在目录下创建新的文件。 x excute 表示可执行, 对于⼀个目录, 如果没有x权限, 那么就意味着不能通过cd进⼊这个目录。 执行该命令时,我们可以仅对用户或用户组等进行权限操作,也可以同时对用户、用户组等进行权限操作
-
数字法:rwx也可以用8进制数值表示法
如执⾏:chmod u=rwx,g=rx,o=r filename
就等同于:chmod u=7,g=5,o=4 filename
chmod 754 filename
-
修改文件的拥有者:chown
-
修改文件的所属组:chgrp
-
查看或修改文件掩码: umask
Linux下对于新建的文件和目录的默认权限如下
-
新建文件默认权限=0666
-
新建目录默认权限=0777
但实际上我们所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。
这里假设默认权限是default,则实际创建的出来的文件权限是:
default & ~umask
-
-
-
-
-
(1)linux文件夹和文件查看命令
ls查看当前目录下的文件夹和文件
ls-alh
ls-a 查看所有文件夹和文件
ls-l 以长格式查看
ls-h 文件大小以KM为单位
(2)linux文件夹和文件操作命令
文件夹操作命令:
mkdir + 文件夹名称 表示创建文件夹
文件操作命令:
touch 表示新建任何类型的文件
rm -rf 表示强制递归删除文件
(3)linux文件重命名操作
使用mv命令进行重命名和移动文件
mv 重命名之前的文件名 重命名之后的文件名
mv 将要被移动的文件 移动文件的绝对路径
nano是一个字符终端的文本编辑器,可以打开指定文件进行编辑
语法:nano [选项] [[+行,列] 文件名]
-h, -? --help 显示此信息
-A --smarthome 启用智能 HOME 键
-B --backup 储存既有文件的备份
-U --quickblank 状态行快速闪动
-V --version 显示版本资讯并离开
-W --wordbounds 更正确地侦测单字边界
目录名称 | 功能说明 |
---|---|
/ | linux文件系统的最上层根目录,其他所有目录都为该目录子目录 |
/bin | Binary的缩写,存放着普通用户可执行的程序或者命令 |
/boot | 存放系统启动时所需要的文件,一般不要改动 |
/dev | 存放着代表硬件设备的特殊文件 |
/etc | 存放系统管理和配置文件 |
/home | 普通用户存储个人数据和配置文件的家目录 |
/lib | 存放系统本身需要的32位程序的共享函数库 |
/root | 根用户root的家目录 |
/var | Variable的缩写,存放日志,邮件等经常变化的文件 |
/tmp | 供临时文件的使用的全局可写空间 |
ls | 列出当前目录下的文件及子目录 |
ls -hl | 以K,M,G为单位显示目录或文件的大小 |
mkdir | 创建目录 |
mkdir -p | 在创建目录时,如果父目录不存在,则连父目录一起创建 |
cp | 复制文件或目录 |
mv | 移动文件或目录 |
mv-b | 移动后的源文件或目录不删除,效果相当于复制 |
rm | 删除文件或目录 |
rm-f | 删除文件或目录时不进行提醒直接删除 |
rm–i | 用于交互式删除文件或目录,在删除的时候需要用户确认 |
rm-r | 用于删除目录 |
find | 查找文件或目录 |
cat | 显示文件的内容 |
grep | 检索过滤文件内容 |
chmod +x 文件名.sh | 添加权限 |
chmod -x 文件名.sh | 删除权限 |
chown [选项] 用户或组文件 | 将指定文件的拥有者改为指定的用户或组 |
dpkg --remove package | 删除包,但保留配置文件 |
dpkg --purge package | 删除包,且删除配置文件。 |
dpkg -s package | 查找包的详细信息 |
dpkg用于:管理系统里的deb包,可以对其安装、卸载、deb打包、deb解压等操作,与之相关apt-get工具可以在线下载 deb包 安装
-i:安装软件包;
-r:删除软件包;
-P:删除软件包的同时删除其配置文件;
-L:显示于软件包关联的文件;
-l:显示已安装软件包列表;
--unpack:解开软件包;
-c:显示软件包内文件列表;
--confiugre:配置软件包。
5.包管理器:熟悉 Linux 发行版的包管理系统,如apt、yum、dnf 等,以及常用的包管理命令,如软件的安装、更新、卸载等。
6.进程管理和系统监控:了解 Linux 中的进程管理和系统监控工具,如ps、top、htop 等,用于查看和管理运行的进程、系统资源的使用情况等。
7.网络配置和管理:熟悉 Linux 网络配置和管理,包括网络接口的设置、IP 地址的配置、网络服务的启动和停止等。
8.Shell 脚本编程:掌握 Shell 脚本编程的基础知识,能够编写简单的脚本来实现自动化任务和批处理操作。
2. 命令行界面的基础知识
- 命令提示符(Prompt):命令行界面通常显示一个特殊字符作为命令提示符,表示用户可以输入命令
了。常见的提示符包括 “$”、“#” 或用户名等。
- 命令和参数:在命令行中,可以输入命令和相关参数来执行各种操作。命令是要执行的动作,而参数则
提供了命令所需的额外信息。命令和参数之间通常使用空格分隔。
- 命令的语法:每个命令都有自己的语法规则,包括命令本身和可选或必需的参数。要正确使用命令,需
要熟悉该命令的语法,并按照正确的格式输入命令和参数。
- 文件和目录路径:在命令行界面中,文件和目录使用路径表示。绝对路径是从根目录()开始的完整
路径,而相对路径是相对于当前工作目录的路径。
- 命令补全:命令行界面通常提供命令补全功能,可以通过按下 Tab 键来自动补全命令或文件名。这可
以帮助减少输入错误和提高效率。
- 历史记录:命令行界面会保存执行过的命令的历史记录,我们可以使用向上和向下箭头键浏览历史记
录,并重新执行之前执行过的命令。
- 管道和重定向:使用管道符号(|)可以将一个命令的输出作为另一个命令的输入,实现命令之间的数
据传输。重定向符号(>、>>、<)允许将命令的输出重定向到文件或从文件中获取输入。
- 帮助文档:大多数命令都提供了帮助文档,可以使用命令后面加上 --help 或者 -h 参数来查看命令的帮
助信息,了解命令的使用方式和可用选项。
3. Kali Linux 的介绍
- 什么是 Kali Linux
Kali Linux 是一个基于 Debian Linux 操作系统的开源渗透测试和安全评估工具集。它是由 Offensive
Security 团队维护和开发的,其中包含了一系列的渗透测试工具和安全评估工具。Kali Linux 旨在提供一个
完整的渗透测试平台,方便安全专业人员、渗透测试人员、黑客和安全研究人员等使用。
Kali Linux 拥有一个庞大的社区,其中有很多开发者和用户为 Kali Linux 的发展做出了重要的贡献。Kali
Linux 的代码是开源的,用户可以通过 GitHub [ https://github.com/offensive-security/kali-linux-2021.2]
获得完整的源代码和文档。
- 什么是Offsec
Offensive Security(Offsec)是一个安全培训和咨询公司,致力于提供高质量的渗透测试和安全培训课程。
Offsec 在安全行业拥有广泛的声誉,是渗透测试和信息安全领域的权威之一。
Kali Linux 是 Offensive Security 团队开发和维护的一个基于 Debian 的 Linux 发行版,它主要用于渗透测试
和安全评估。Kali Linux 包含了大量的渗透测试工具和安全评估工具,使得安全专业人员、渗透测试人员、
黑客和安全研究人员等能够方便地进行渗透测试和安全评估工作。
因此,Offensive Security 公司和 Kali Linux 有着密切的关系。Offensive Security 团队维护和开发 Kali
Linux,并在其培训和咨询课程中广泛使用该平台进行演示和实践。同时,Kali Linux 的使用者也可以通过
Offensive Security 公司的培训和咨询课程来获得更深入的知识和技能。
4. Kali Linux 的下载与安装
kali推荐的下载方式有两种,分别为:
-
ISO镜像【Installer Images】
-
虚拟机镜像【Vitural Machines】
本次课程使用的是虚拟机镜像,下载完后文件名为【kali-linux-2023.1-vmware-amd64.7z】,大小为:
2.72GB,解压后大小为14.3GB。
-
硬件要求(至少>=)
-
1 GHz x86 processor
-
1 GB RAM (system memory)
-
20 GB of hard-drive space
-
CD-DVD drive / USB boot support
-
5. Kali Linux 的基础知识
登录
-
用户名:kali
-
密码:kal
换源
- 编辑/etc/apt/sources.list软件源配置文件,命令
vi /etc/apt/sources.list
(告诉系统从哪里下载软件包)
#开头表示注释,生效的内容为第二行,含义为:
从http.kali.org下载Kali Linux软件包,其中包括main、contrib、non-free和non-free-firmware 组件
因为国内访问http.kali.org网速较慢,故需要将软件包的下载地址修改至国内网站:
具体操作如下:
1.打开终端并输入以下命令以备份原始源列表:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2.打开源列表文件:
sudo vim /etc/apt/sources.list
3.将以下行完全替换文件内容:
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
4.保存并关闭文件。
即,将原来的kali官方源注释掉,然后向其中加入源,我这里加的是阿里云源
kali官方源
deb http://http.kali.org/ moto main non-free contrib
deb-src http://http.kali.org/ moto main non-free contrib
deb http://security.kali.org/ moto/updates main contrib non-free
deb-src http://security.kali.org/ moto/updates main contrib non-free
中科大kali源
deb http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb http://mirrors.ustc.edu.cn/kali-security kali/updates main contrib non-free
新加坡kali源
deb http://mirror.nus.edu.sg/kali/kali/ kali main non-free contrib
deb-src http://mirror.nus.edu.sg/kali/kali/ kali main non-free contrib
deb http://security.kali.org/kali-security kali/updates main contrib non-free
deb http://mirror.nus.edu.sg/kali/kali-security kali/updates main contrib non-free
deb-src http://mirror.nus.edu.sg/kali/kali-security kali/updates main contrib non-free
163 Kali源
deb http://mirrors.163.com/debian wheezy main non-free contrib
deb-src http://mirrors.163.com/debian wheezy main non-free contrib
deb http://mirrors.163.com/debian wheezy-proposed-updates main non-free contrib
deb-src http://mirrors.163.com/debian wheezy-proposed-updates main non-free contrib
deb-src http://mirrors.163.com/debian-security wheezy/updates main non-free contrib
deb http://mirrors.163.com/debian-security wheezy/updates main non-free contrib
阿里云kali源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
注意:其中有些源可能用不了,选择可用的添加即可
使用命令apt-get update
更新源
使用命令apt-get upgrade更新软件,输入Y按回车后进行更新,这步可能需要花费较多时间,也可以直接省略掉
然后使用命令apt-get clean
清理,再用命令reboot
重启虚拟机
查看系统版本(若干命令)
- 查看内核版本号
uname -r
>> 6.1.0-kali5-amd64
- 包含操作系统标识数据的文件
cat /etc/os-release
>>
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
VERSION="2023.1"
VERSION_ID="2023.1"
VERSION_CODENAME="kali-rolling"
ID=kali
ID_LIKE=debian
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"
ANSI_COLOR="1;31"
- 查看 Linux 发行版操作系统的具体版本
lsb_release -a
- 显示系统的主机名、操作系统版本和架构,以及其他相关信息
hostnamectl
根据上述输出信息,正在运行 Kali GNU/Linux Rolling 版本,版本号为 2023.1,发行代号为 kali-rolling。这表明正在使用最新版本的 Kali Linux,并且处于滚动更新的状态,意味着系统会持续更新并添加新的功能和补丁。Kali Linux Rolling 是一个持续更新的版本,提供了最新的渗透测试工具和安全评估工具,以确保能够使用最新的技术进行渗透测试和安全研究。
- 显示当前系统的发行版信息和版本号
cat /etc/issue
6.Kali Linux 默认的服务
(1)apache2
- 简介
Apache2 是 Apache HTTP Server 的第二个主要版本,也被称为 Apache 2.x。它是 Apache Software Foundation 开发的一种用于提供 Web 服务的开源软件。
与早期的 Apache 版本相比,Apache2 在性能、安全性和可扩展性方面有了很大的改进。它支持多线处理请求,可以处理大量的并发连接,同时还提供了许多模块和功能来增强服务器的能力。
Apache2 在许多操作系统上都可用,并且被广泛用作 Web 服务器。它的安装和配置相对简单,并且有丰富的文档和社区支持。
使用 Apache2,您可以轻松地托管网站、提供静态和动态内容、支持各种 Web 技术(如 PHP、Python 和 Ruby),以及配置许多其他服务器功能,如虚拟主机、SSL 加密、反向代理等。
总的来说,Apache2 是一种强大而受欢迎的 Web 服务器软件,适用于各种规模的网站和应用程序。
- 服务启动
service apache2 start
- 服务状态查看
service apache2 status
按q退出
通过使用主机访问Kali虚拟机IP地址显示如上图所示,即证明服务启动成功。
(2)SSH (Secure Shell)
SSH (Secure Shell) 是一种网络协议和加密技术,用于安全地远程登录到计算机或服务器,并在网络上进行加密的数据通信。
使用 SSH,您可以通过一个安全的通道在本地计算机和远程计算机之间进行加密的通信。这种加密通道可以防止第三方窃听或篡改数据,并提供了身份验证机制以确保连接的安全性。
SSH 是通过客户端和服务器之间的交互实现的。当您使用 SSH 客户端连接到远程服务器时,客户端会与服务器进行身份验证,然后建立一个加密的通信通道。一旦连接建立,您可以在终端中执行命令、传输文件或执行其他操作,就像在本地计算机上一样。
SSH 还支持其他功能,如端口转发和代理设置,这使得它不仅可以用于远程登录,还可以用于安全地访问远程计算机上的应用程序或服务。
SSH 通常使用 TCP/IP 协议,运行在默认的端口 22 上。它是一种广泛使用的安全远程管理工具,被广泛应用于服务器管理、远程维护和安全文件传输等领域。
- 服务启动
service ssh start
- 服务状态查看
service ssh status
- 服务端口查看
netstat -tpan | grep 22
“netstat -tpan | grep 22” 命令用于显示活动的网络连接,并通过过滤器只显示与端口22相关的连接,
而端口22是SSH默认使用的端口。这是命令的解释:
“netstat” 是一个命令行工具,用于显示活动的网络连接、路由表和各种网络接口的统计信息。
“-tpan” 是传递给 netstat 的选项:
- “-t” 指定显示 TCP 连接。
- “-p” 显示与连接相关的进程ID和名称。
- “-a” 显示监听和非监听的套接字/连接。
- “-n” 确保显示 IP 地址和端口号,而不是将其解析为主机名和服务名。
“|” 是管道符号,用于将一个命令的输出重定向到另一个命令。
“grep 22” 过滤 netstat 的输出,只显示包含数字 22 的行,这代表端口 22 上的连接(通常是SSH 连接)。
总而言之,“netstat -tpan | grep 22” 命令用于查找和显示与端口 22 相关的活动 TCP 连接,通常表示SSH 连接。
(3)安装vsftpd
- 使用vim过滤注释信息。
要使用Vim过滤以 # 开头的注释行,可以使用以下步骤:
1.打开要编辑的文件:
vim [文件名] 即vim /etc/vsftpd.conf
2.进入命令行模式,按下冒号 :
键。
3.在命令行中输入以下命令来过滤注释行:
:g/^#/d
这个命令中的 g
表示全局匹配, ^#
表示以 #
开头的行, d
表示删除匹配的行。
按下回车键执行命令。所有以 #
开头的注释行将被删除。
- 若要保存更改并退出Vim编辑器,可以输入
:wq
,然后按下回车键。
现在,您应该看到已经过滤掉以 #
开头的注释行,并且文件中只剩下非注释的内容。请注意,在进行任何修改之前,最好先备份您的文件以防止意外数据丢失
- 回显非注释内容。
- 配置文件解析:
listen=NO
: 这表示vsftpd不会监听任何网络接口的IPv4连接,因为该选项设置为"NO"。如果要允许IPv4连接,可以将其设置为"YES"。
listen_ipv6=YES
: 这表示vsftpd将监听IPv6连接,因为该选项设置为"YES"。这意味着它将接受来自IPv6地址的连接。
anonymous_enable=NO
: 这意味着匿名访问已禁用,因为该选项设置为"NO"。这将要求用户提供有效的凭据才能进行FTP连接。
local_enable=YES
: 这表示本地用户访问已启用,因为该选项设置为"YES"。本地用户可以使用其系统凭据进行FTP连接。
dirmessage_enable=YES
: 这表示启用目录消息功能,因为该选项设置为"YES"。当用户进入目录时,服务器可以发送目录消息。
use_localtime=YES
: 这意味着服务器将使用本地时间,因为该选项设置为"YES"。在文件传输日志和其他情况下,服务器将使用本地时间而不是UTC时间。
xferlog_enable=YES
: 这表示启用传输日志,因为该选项设置为"YES"。传输日志记录了文件传输的详细信息,如上传和下载的文件。
connect_from_port_20=YES
: 这表示启用主动模式的传输,因为该选项设置为"YES"。在主动模式下,服务器使用端口20主动连接客户端的数据端口。
secure_chroot_dir=/var/run/vsftpd/empty
: 这是一个安全的 chroot 目录,限制了 FTP 用户的访问权限。
pam_service_name=vsftpd
: 这是与 PAM(Pluggable Authentication Modules)相关的服务名称,用于验证用户身份。
rsa_cert_file
和rsa_private_key_file
: 这些是使用 SSL/TLS 加密所需的 RSA 证书和私钥的文件路径。当前的配置显示未启用 SSL/TLS (
ssl_enable=NO
)。
ssl_enable=NO
: 这表示未启用 SSL/TLS 加密连接,因为该选项设置为"NO"。如果要启用SSL/TLS 加密,可以将其设置为"YES"。
补充:
修改系统语言为中文
(1)打开终端(root模式)
打开设置
命令:dpkg-reconfigure locales
(2)修改设置
en_US.UTF-8 UTF-8
改为不勾选
- 下面这种有个
*
属于已经勾选了
通过上下箭头按键我们把红点(表示当前选中的选项)移动到en_US.UTF-8 UTF-8
,按下空格表示不勾选/勾选
- 使用空格勾选
[ ]zh_CN.GBK_GBK
和[ ] zh-CN.UTF-8.UTF-8
两个选项,这里有部分虚拟机会找不到[ ]zh_CN.GBK_GBK
,这两个选项是紧跟着的,找不到就算了,问题不大。(按Enter健)
光标下移,按下enter
表示ok
,选择语言zh_CN.UTF-8
- 重启:终端输入reboot
重启生效
重启后会有个提示,建议你选择保留旧名称,以后路径敲代码敲英文肯定比敲中文方便很多!
现在就是中文啦!
中文输入法安装(以googlepinyin为例,部分kali Linux系统搜狗输入法不支持切换中文)
(1)换源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
执行命令apt-get update
;
执行命令apt-get upgrade
;
因本机前面已做过示范,此处不再展示…
(2)
- 安装fcitx框架
sudo apt install fcitx
(3)
- 安装Google输入法(前提是先修改系统语言为中文)
sudo apt install fcitx-googlepinyin
(4)然后使用命令reboot
重启虚拟机。
(安装完成后重启,打开终端,按Ctrl+空格键
开启中文输入法,ctrl+空格键
键切换中英文;
在任何需要输入的地方都使用ctrl+空格键
来开启中英文输入法,有时也不一定)
(5)搜索fcitx configuration
- 选择Google拼音
【至此,kali设置使用中文输入法实验完成啦!】
第二章
2.1 准备内核头文件
内核头文件是Linux内核的源代码。有时候,用户会面临需要编译内核头文件代码。为以后使用内核头文件做准备。
(1)更新软件包列表。执行命令如下所示:
root@Kali:~# apt-get update
(2)使用apt-get命令准备内核头文件。
root@Kali:~# apt-get install linux-headers- uname -r
(3)复制generated下的所有内容。
root@Kali:~# cd /usr/src/linux-headers-3.12-kali1-686-pae/
root@Kali:/usr/src/linux-headers-3.12-kali1-686-pae# cp -rf include/generated/* include/linux/
(4)编译内核头文件代码。
2.2 安装并配置NVIDIA显卡驱动
安装NVIDIA显卡驱动的具体操作步骤如下所示:
(1)将开源的NVIDIA驱动nouveau加入黑名单。方法如下所示:
root@kali:~# vi /etc/modprobe.d/blacklist.conf
blacklist nouveau
(2)查看当前的系统信息。执行命令如下所示:
root@kali:~# uname -a
Linux kali 3.12-kali1-kali-amd64 #1 SMP Debian 3.12.6-2kali1 (2014-01-06) x86_64 GNU/Linux
(3)安装Linux头文件。执行命令如下所示:
root@kali:~# aptitude -r install linux-headers-$(uname -r)
(4)安装NVIDIA内核。执行命令如下所示:
root@kali:~# apt-get install nvidia-kernel-3.12-kali1-adm64
(5)安装NVIDIA驱动nvidia-kernel-dkms包。执行命令如下所示:
root@kali:~# aptitude install nvidia-kernel-dkms
(6)安装NVIDIA显卡驱动应用程序nvidia-xconfig包。执行命令如下所示:
root@kali:~# aptitude install nvidia-xconfig
(7)生成Xorg服务配置文件。执行命令如下所示:
root@kali:~# nvidia-xconfig
执行以上命令后,将输出如下所示的信息。
(8)检查NVIDIA显卡驱动是否成功安装。首先检查GLX模块,执行命令如下所示:
root@kali:~# glxinfo | grep -i "direct rendering"
direct rendering: Yes
检查NVIDIA驱动模块。执行命令如下所示:
root@kali:~# lsmod | grep nvidia
nvidia 9442880 29
i2c_core 24129 2 i2c_i801,nvidia
root@kali:~# lsmod | grep nouveau
确认开源的NVIDIA驱动nouveau是否被加入黑名单。
通过查看以下文件的内容,确定nouveau是否被加入黑名单。如下所示:
root@kali:~# cat /etc/modprobe.d/nvidia.conf
alias nvidia nvidia-current
remove nvidia-current rmmod nvidia
root@kali:~# cat /etc/modprobe.d/nvidia-blacklists-nouveau.conf
# You need to run "update-initramfs -u" after editing this file.
# see #580894
blacklist nouveau
root@kali:~# cat /etc/modprobe.d/nvidia-kernel-common.conf
alias char-major-195* nvidia
options nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=44 NVreg_DeviceFileMode=0660
# To enable FastWrites and Sidebus addressing, uncomment these lines
# options nvidia NVreg_EnableAGPSBA=1
# options nvidia NVreg_EnableAGPFW=1
看到以上输出信息,就表示nouveau已被加入黑名单。
为了加快用户破解一些大数据文件,需要安装CUDA(Compute Unified Device Architecture)。CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
安装NVIDIA CUDA工具集和NVIDIA openCL
执行命令如下所示:
root@kali:~# aptitude install nvidia-cuda-toolkit nvidia-opencl-icd
2.3 应用更新和配置额外安全工具
应用更新和配置额外安全工具的具体操作步骤如下所示:
(1)更新本地软件包列表库。执行命令如下所示:
root@Kali:~# apt-get update
(2)升级已存在的包。执行命令如下所示:
root@Kali:~# apt-get upgrade
(3)升级到最新版本。执行命令如下所示:
root@Kali:~# apt-get dist-upgrade
(4)从http://www.nessus.org/products/nessus/nessus-plugins/obtain-an-activation-code官网获取一个激活码。
(5)为Nessus网络接口创建一个用户账户。执行命令如下所示:
root@Kali:~# /opt/nessus/sbin/nessus-adduser
(6)激活Nessus。执行命令如下所示:
root@Kali:~# /opt/nessus/bin/nessus-fetch --register XXXX-XXXX-XXXX-XXXX-XXXX
(7)启动Nessus服务。执行命令如下所示:
root@Kali:~# /etc/init.d/nessusd start
在第(6)步骤中激活Nessus时,输出和以上相同的信息,表示没有激活Nessus。这个问题在RHEL上不会出现的。不过,这里有方法来解决这个问题。具体操作步骤如下所示:
2.5 目录加密
2.5.1 创建加密目录
使用TrueCrypt工具加密目录。具体操作步骤如下所示:
启动TrueCrypt工具。在终端执行如下所示的命令:
root@kali:~# truecrypt
2.5.2 文件夹解密
在上一小节中成功创建了加密目录。如果要查看加密的内容,需要将该卷解密后才可访问。
1.Nessus的使用
Nessus是一款广泛使用的网络漏洞扫描器,用于评估计算机系统、网络设备和应用程序的安全性。它由Tenable Network Security开发和维护,可以帮助管理员和安全专业人员发现系统中存在的安全漏洞和弱点。
- Nessus可以扫描目标系统,识别潜在的漏洞,并生成报告,以帮助组织了解其网络安全状况。它使用一系列预定义的漏洞检测规则和模式,对目标系统进行全面扫描,并提供漏洞的详细描述、风险评估和建议的修复措施。
- Nessus支持扫描各种操作系统、网络设备和应用程序,包括Windows、Linux、UNIX、网络路由器、防火墙和Web应用程序等。它还可以执行漏洞利用尝试,以验证系统的安全性,并识别可能导致系统遭受攻击的弱点。
- Nessus是一个功能强大的安全工具,被广泛用于企业和组织中,以帮助他们发现和解决系统中的安全问题,从而提高网络的安全性。
- Nessus 是全球部署最广泛的网络安全技术之一,针对现代攻击面而量身打造。每个功能都旨在让漏洞评估简单、轻松且直观。利用 Nessus,只需投入更少的时间和精力即可评估漏洞,并进行优先级分析和修复,始终领先攻击者一步。
- 官方网站:http://www.nessus.org/products/nessus/nessus-plugins/obtain-an-activation-code
点击Register Now(注册)
必须填真实的邮箱,用于接收激活码。
稍等一下,进入到下载页面
选择你要下载的版本和系统
我们选择的是:Nessus-10.5.2-debian10_amd64.deb,用于kali linux
邮箱收到的激活码
- 开启kali linux虚拟机,将我们下载好的Nessus-10.5.2-debian10_amd64.deb文件拖进来
- 桌面右键,以root身份打开
- 右键选择:在这里打开终端
- 执行安装命令(kali linux中,复制:Ctrl+Shift+C,粘贴:Ctrl+Shift+V)
dpkq -i +‘安装包名称’
dpkg -i Nessus-10.5.2-debian10_amd64.deb
- 复制输入下面一段码
- 点击这个链接右键:打开链接
- 进入该页面
翻译如下:
- 选择继续
- 选择:Register for Nessus Essentials
- 注册Nessus网站(注意这里的邮箱使用真实邮箱,用来接收激活码,前提是你没有去官网注册)
我们前面注册、下载Nessus-10.5.2-debian10_amd64.deb时已注册过,不用再注册,可以点击Skip(跳过)
将我们邮箱收到的激活码输入即可
- 创建一个Nessus账号
用户名:admin
密码:***,点击submit
设置完成后,会开始下载nessus中的插件(插件是国外网站的,如果网络不稳定,将会导致下载失败)
我在这里的安装完成后直接就进入了Nessus,网上有其他人安装需要初始化
我们可以在settings里查看许可证等信息
Nessus正在进行插件的编译和更新。插件是Nessus用于检测和评估系统漏洞的组件。
在编译过程中,一些Nessus的功能可能会受到限制或无法使用,直到编译完成为止。这是因为插件需要
更新,以包含最新的漏洞检测和安全测试。
编译的时间取决于插件的数量和您系统的速度。建议在编译过程完成之前等待一段时间,然后再尝试
使用Nessus进行扫描或评估。一旦编译完成,Nessus将具备最新的插件并恢复完全功能。
请注意,编译过程是Nessus操作的正常部分,重要的是确保插件定期更新,以保持漏洞扫描的有效性
注:免费版Nessus只可以扫描16个IP
至此,Nessus的安装完成。
kali本地浏览器打开如下任意一个网址:https://127.0.0.1:8834
或IP改成你自己的kali本地IP:https://ip:8834/
或https://localhost:8834/
就可以访问Nessus了
实例演示-扫描漏洞(还没讲)
启动
/bin/systemctl start nessusd.service
启动浏览器页面
- 使用命令ifconfig查看kali的IP地址。
- 用浏览器访问Nessus的web网站,访问https://kali:8834,登录用户。
点击“New Scan”新建一个扫描
选择“Basic Network Scan”,进行配置项目名称,对项目的描述,以及最重要的目标IP地址
2.安装WordPress Turnkey Linux
1.打开官网:http://www.turnkeylinux.org
往下滑,选择WordPress
进入该页面,选择V 16.1版的466MB VM(根据个人情况而定)
页面跳转之后会自动下载turnkey-wordpress-16.1-buster-amd64.ova文件,如果没有自动下载,选择如下:
我这里是浏览器自动下载的
2.打开VMware,导入我们下载好的turnkey-wordpress-16.1-buster-amd64.ova
新建虚拟机名称:turnkey-wordpress,修改存储路径
然后启动此虚拟机,将显示如图所示的界面。
配置
这个界面是为root用户设置一个密码,设置密码必须是8位以上字母、数字组合,还要有大小写。
再次输入设置的密码
![!](https://img-blog.csdnimg.cn/1bb20a0d0ed14ab1ada47bc177c61702.png)
设置MySQL密码
确认密码
设置WordPress密码
确认密码
该界面提示为WordPress用户admin设置一个邮箱地址,这里使用默认的admin@example.com。然后点击Apply进行下一步。
这个界面显示初始化Hub服务信息,在这个界面我们选择跳过:点击**“skip”**
选择跳过,点击**“skip”**
接下来会提示是否安装安全更新,点击Install,
失败,出现这种情况是因为我们的网络适配器没有配置好,先关机。
更改网络适配器为NAT模式
再次启动虚拟机,如图所示
这个界面很重要,这是你的WordPress应用服务的详细信息,如Web地址、Web shel地址和端口、Webmin地址、PHPMydmin地址和端口等。此时,表明WordPress Turnkey Linux就可以使用了。点击按Enter键进入登录
输入root账户和前面设置的密码完成登录。
4.攻击WordPress应用程序
wpscan在Kali Linux中已经默认安装。它的语法格式如下所示:
wpscan [选项] [测试]
常用的选项如下所示:
--update:更新到最新版本。
--url|-u <target url>:指定扫描WordPress的URL(统一资源定位符)或域名。
--force |-f如果远程站点正运行WordPress,强制WPScan不检查。
--enumerate |-e [option(s)]:计算。该参数可用的选项有u、u[10-20]、p、vp、ap、tt、t、vt、at。其中u表示用户名从id1到10;u[10-20]表示用户名从id10到20([]中的字符必须写);p表示插件程序;vp表示仅漏洞插件程序;ap表示所有插件程序(可能需要一段时间);tt表示timthumbs;t表示主题;vt表示仅漏洞主题;at表示所有主题(可能需要一段时间)。
【实例3-1】使用WPScan攻击WordPress程序。
- 开启kali linux虚拟机
- 打开终端
(1)在Kali Linux下,查看WPScan的帮助信息。(第一条命令不行就用第二条)
root@localhost:~# wpscan -h
(2)使用WPScan攻击WordPress虚拟机。
root@localhost:~# wpscan -u 192.168.18.135(这是我的turnkey的IP地址)
或wpscan --url http://192.168.18.135
(3)列出用户名列表。
root@localhost:~# wpscan -u 192.168.18.135 -e u vp
或wpscan --url http://192.168.18.135 -e u vp
(4)为WPScan指定一个wordlist文件,使用–wordlist
root@localhost:~# wpscan -u 192.168.18.135 -e u --wordlist /root/wordlist.txt
wpscan --url http://192.168.18.135 -e u --wordlist /root/wordlist.txt
我的不行
补充:WPScan简介
1.WPScan是Kali Linux默认自带的一款漏洞扫描工具, 它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞、插件漏洞和主题漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots. txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能.
2.常用命令
- 查看帮助信息
wpscan -h
-
更新漏洞库
wpscan --update
3.扫描目标站点
wpscan --url http://192.168.18.135
4.对目标网页主题进行扫描
wpscan --url http://192.168.18.135 --enumerate t
发现目标网页主题为 20201
-
扫描目标网页使用的主题中存在的漏洞
wpscan --url http://192.168.18.135 --enumerate vt
没有发现主题漏洞
- 扫描目标网页中安装的插件
wpscan --url http://192.168.18.135 --enumerate p
没有发现安装的插件
-
扫描安装的插件的漏洞
wpscan --url http://192.168.18.135 --enumerate vp
没发现有安装的插件,自然也就没插件的漏洞
8.命令集合
wpscan --url http://192.168.18.135 --enumerate vp,vt,tt,u