自学web安全day02--Linux基础及docker

72 阅读18分钟

一.Linux基础命令

Linux命令自查网站

Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)

image.png

1.1Linux介绍

(1)Linux特点:免费、开源

(2)Linux系统:类UNIX

(3)Linux发行版:Linux内核+应用程序

解释说明:RHEL --Red Hat Enterprise Linux 和 Oracle Linux--基于商业开发

Debian、archlinux --基于社区开发 image.png

1.2Linux系统文件结构

(1)Linux和Unix系统,所有文件和目录都在一个以根节点"/"开始的倒置树状结构。

(2)最顶层是根目录,其它文件及分级关系在倒置树状结构中能得以体现。

(3)与windowx不同,C盘与D盘的文件是隔离开的,linux是联系在一起的。

1./bin:binary二进制--bin目录存放经常使用的命令

2./boot:bootstrap解鞋带;引导程序--boot目录存放Linux的核心文件,包括一些连接文件和镜像文件。

3./dev:device设备--dev目录存放Linux的外部设备。在Linux中访问设备和访问文件的方式是相同的。

4./etc:etcetera等等--etc目录存放所有系统管理所需要的的配置文件和子目录。

5./home:家--home目录是用户的主目录,一般home目录名字是用户的名字。Linux系统中每个用户都有自己的家目录。

6./lib:library图书馆--lib目录存放系统最基本的动态连接共享库,其作用类似于Windows的DLL文件。几乎所有的用户都会应用到这些共享库。

补充介绍Windows的DLL文件

①.dll文件:Dynamic Link Library(动态链接库)文件的缩写。

②它是一种共享库文件,包含了程序所需的代码和数据。

③与静态链接库不同,动态链接库可以在程序运行时动态加载,使得程序的内存占用更小,同时也方便了程序的更新和维护。

7./media:媒介--linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

8./mnt:mount安装;挂载--系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/上,然后进入该目录就可以查看光驱里的内容了。

9./opt:optional可选--给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

10./proc:process进程--/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。

11./sbin:s=Super User的意思,是 Superuser Binaries(超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。

12./selinux:security linux--这个目录是 Redhat/CentOS 所特有的目录,Selinux是一个安全机制,类似于 windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

13./srv:Save Resource serVice主要用来存储本机或本服务器提供的服务或数据。

14./sys:硬件设备的驱动程序信息。这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs。sysfs文件系统集成了下面3种文件系统的信息:

①针对进程信息的proc文件系统

②针对设备的devfs文件系统

③针对伪终端的devpts文件系统

该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

15./tmp:temporary--用来存放一些临时文件的。

/usr:unix shared resources--这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows下的program files目录。

①/usr/bin:系统用户使用的应用程序。系统用户使用的指令

②/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。root用户使用的指令

③/usr/src:内核源代码默认的放置目录。

16./var:variable易变的--这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

17./run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向run。

18./lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

19.一个点"."和两个".."的区别:

①.代表当前目录,也叫做工作目录。也可以用./表示

②..代表当前目录的上一级目录,即父目录。也可以用../表示

③若一个目录或文件以.开始命名,则该目录或文件属于隐藏目录或隐藏文件,用一般搜索方式无法找到。 image.png open terminal打开终端,即可打开linux的命令行

image.png

用户+@+计算机名+当前目录:~

含义:用户chh登录在计算机chh-virtual-machine上

"~"代表当前用户的家目录,"$"代表普通用户,"#"代表超级用户

image.png

image.png

1.3基础命令--文件目录管理

(一)ls命令

(1)含义:list 列出

(2)功能:显示目录中的文件及属性

(3)语法格式:ls 参数名 文件名

(4)常用参数

image.png

默认无参数情况,会列出当前目录的文件

注:ll命令和ls -l和ls -a命令的区别 显示当前目录与文件,不同的是al相比l能显示更多文件。

image.png

ls -al 对比 ls -l红色部分为al参数相比l参数多出来的文件(隐藏文件)

image.png

ll 对比 ls -al能更加直观的区分哪个是目录哪个是文件,目录名后带有/。 image.png

解释说明(每列)

1.第1列表示文件类型:

image.png

2.接下来的9列.每3列代表不同权限

第2-4列:文件创建者对该文件的权限

第5-7列:创建者所在组的其他用户对该文件的权限

第8-10列:其他组的其他用户对该文件的权限

r:Read权限"4"--读取权限--能够读取目录或文件

w:Write权限"2"--写入权限--能移动、删除目录或新增、修改文件内容

x:eXecute权限"1"--执行权限--能进入目录或者执行文件

3.其它列说明

image.png

image.png

image.png

(二)cd命令

(1)含义:change directory 切换目录

(2)功能:切换当前目录。(可以是绝对路径也可以是相对路径)

(3)名词解释

①绝对路径:从根目录开始,是一个完整的路径。如D:\java

②相对路径:以当前目录作为参考,使用"../" ”或"./"指向上一级或使用"../../"指向上上一级叫相对路径。

③路径习惯:windows用""表示路径,而unix系统用"/"表示路径。其它语言之间也有所差异。

(4)语法格式:cd 参数 目录名

(5)常用参数(无参数时默认切换到当前用户的家目录) image.png

(三)pwd命令

(1)含义:print work directory打印工作目录

(2)功能:显示当前工作目录的路径,即显示所在位置的绝对路‍径。

(3)语法格式:pwd 参数

(4)常用参数

image.png

(四)mkdir命令

(1)含义:make directories创建目录

(2)功能:创建目录文件

(3)语法格式:mkdir 参数 目录名

(4)常用参数

image.png

(五)rmdir命令

(1)含义:remove directory删除目录

(2)功能:仅能删除空目录文件

(3)语法格式:rmdir 参数 目录名

(4)常用参数

说明:只有-R才能递归删除目录及目录内的文件,但是-p只能递归删除空目录。

image.png

(六)cp命令

(1)含义:copy file复制文件

(2)功能:复制文件或目录

(3)语法格式:**cp 参数 源文件名 目标文件名 **

(4)常用参数

image.png

(七)mv命令

(1)含义:move file移动文件

(2)功能:对文件进行剪切和重命名操作

(3)语法格式:mv 参数 源文件名 目标文件名

(4)常用参数

image.png

1.4基础命令--文件查看

(一)cat命令

(1)含义:concatenate files and print 连接并且打印

(2)功能:在终端设备上显示文件内容

(3)语法格式: cat 参数 文件名

(4)常用参数

image.png

(5)提示:cat命令适合查看内容较少的纯文本文件。对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+C组合键中断命令执行,所以对于大文件,干脆用more命令‍显示吧。

(二)tac命令

(1)含义:cat名字倒过来写

(2)功能:反向显示文件内容(顺序上与cat相反)

(3)语法格式:tac 参数 文件名

(4)常用参数

image.png

(三)nl命令

(1)含义:number of lines 行数

(2)功能:显示文件内容及行号

(3)语法格式:nl 参数名 文件名

(4)常用参数

image.png

(四)more命令

(1)含义:more 更多

(2)功能:分页显示文本文件的内容

每按一次Enter键即向下一行,每按一次空格键即向下一页,直至看完为止。

(3)语法格式:more 参数 文件名

(4)常用参数

image.png

(五)less命令

(1)含义:less 更少

(2)功能:分页显示的功能与more命令很相像但more命令只能从前向后浏览文件内容,而less命令不仅能从前向后浏览(按PageDown键),还可以从后向前浏览(按PageUp键),更加灵‍活。

(3)语法格式:less 参数 文件名

(4)常用参数

image.png

(六)head命令

(1)含义:head 额头

(2)功能:显示文件开头的内容,默认为前10行。

(3)语法格式:head 参数 文件名

(4)常用参数

image.png

(七)tail命令

(1)含义:tail 尾巴

(2)功能:查看文件尾部内容 默认会在终端界面上显示指定文件的末尾10行

(3)语法格式:tail 参数 文件名

(4)常用参数

image.png

1.5基础命令--文件编辑

(一)vi/vim介绍与区别

1.介绍

所有的Unix Like系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。Vim 是从 vi 发展出来的 一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

2.vi与vim的区别

vim是vi的升级版本,除了兼容 vi 的所有指令,vim还具有一些新的特性,主要体现在:

(1)多级撤销 在 vi 里,按 u 只能撤销上次命令,而在vim里可以无限制的撤销。

(2)易用性

vi 只能运行于 unix 中,而vim不仅可以运行于 unix,windows ,mac 等多操作平台。

(3)语法加亮

vim可以用不同的颜色加亮显示代码。

(4)可视化操作

vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

3.vi的三种模式

1.命令模式Command mode (1)使用vi/vim编写文件时,默认打开命令模式

(2)输入的字符不会被当成内容写入文件,而是被当成命令

(3)命令模式→输入模式:i a o大小写均可。

image.png

2.输入模式Insert mode

(1)可以对文件进行内容写入

(2)输入模式→命令模式:esc键

3.底线命令模式Last line mode

(1)切换:在命令行按下":"即可进入底线命令模式

image.png

(2)常用命令:

①q:退出程序(如果程序编辑过是无法退出的)

②w:保存文件

4.三种模式之间的转换关系图

image.png

4.vi/vim替代文本工具

1.方法:输入命令 gedit 文件名 即可

image.png

image.png

5.vi/vim常见问题

1.编辑文件时异常退出:会自动生成一个".swp"文件,再重新编辑该文件时,会出现以下界面

解决方案:按d键可以删除该swp文件,再重新编辑该文件即可 image.png

2.在命令模式下,使用方向键会出现ABCD之类的字母

解决方案:①先退出编辑该文件,在终端里输入命令 sudo gedit /etc/vim/vimrc.tiny

②修改倒数第二行set compatible,将其改为set nocompatible

③在倒数第二行下面再加一行 set backspace=2,然后保存即可正常使用 image.png

会出现这样的gedit警告,并无影响可忽略。 image.png

1.6 apt包管理器

1.apt含义:Advanced Packaging Tool--先进的包装工具

2.功能:是一个在 Debian和Ubuntu中的Shell前端软件包管理器

3.特点:apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,需要root权限

4.语法:apt [options] [command] [package ...]

(1)options:可选

选项包括

-h(帮助),

-y(当安装过程提示选择全部为"yes"

-q(不显示安装的过程)等等。

(2)command:要进行的操作。

(3)package:安装的包名。

5.换源

说明:由于vim默认从国外下载,所以速度会慢,因此需要换源

(1)源文件地址为:/etc/apt/sources.list

(2)备份:该源文件以后可能会使用,输入命令

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

解释说明:".bak"是backups备份文件的意思,通常在原文件后缀后再加.bak

image.png

(3)更换里面的全部内容:先观察有几行,在命令模式下输入"行数+dd"即可清空该文件

这里命令模式下输入51dd image.png

wq保存后出现以下问题,原因是权限不够,因此需要加上sudo命令 image.png

sudo vim /etc/apt/sources.list即可

替换sources.list为以下内容:

deb mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb mirrors.aliyun.com/ubuntu/ bionicsecurity main restricted universe multiverse

deb-src mirrors.aliyun.com/ubuntu/ bionicsecurity main restricted universe multiverse

deb mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src mirrors.aliyun.com/ubuntu/ bionicupdates main restricted universe multiverse

deb mirrors.aliyun.com/ubuntu/ bionicproposed main restricted universe multiverse

deb-src mirrors.aliyun.com/ubuntu/ bionicproposed main restricted universe multiverse

deb mirrors.aliyun.com/ubuntu/ bionicbackports main restricted universe multiverse

deb-src mirrors.aliyun.com/ubuntu/ bionicbackports main restricted universe multivers

(4)更新apt:输入命令sudo apt update

image.png

1.7 其它常用命令

1.reboot命令

(1)含义:restart boot重启计算机

(2)功能:重启系统

(3)语法:reboot [参数]

(4)常用参数

image.png

2.shutdown命令·

(1)含义:关闭

(2)功能:关闭服务器的系统

(3)语法:shutdown 参数 对象

(4)常用参数

image.png

3.ifconfig命令

(1)含义:network InterFaces Configuring 网络接口配置

(2)功能:显示或设置网络设备参数信息

(3)语法:ifconfig 参数 网卡名 动作

(4)常用参数

image.png

(5)常用动作

image.png

说明:Ubuntu默认没有ifconfig命令,需要进行安装

命令:sudo apt install net-tools

image.png

4.netstat命令

(1)含义:network statistics网络统计

(2)功能:显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等

(3)语法:netstat 参数

(4)常用参数

image.png

说明:常用 netstat -antlp显示端口信息

image.png

5.systemctl命令

(1)含义:system control 系统控制

(2)功能:管理系统服务

(3)语法:systemctl 参数 动作 服务名

(4)常用参数

image.png

(5)常用动作

image.png

6.zip命令

(1)含义:zip 拉链;拉上

**(2)功能:zip命令可以将文件打包成zip格式的压缩包 **

**(3)语法:zip 参数 目标文件名.zip 源文件或目录名 **

(4)常用参数

image.png

6.1 unzip命令

(1)含义:unzip 拉开拉链

(2)功能:解压缩zip格式的文件

(3)语法:unzip 参数 压缩包名

(4)常用参数

image.png

7.find命令

(1)含义:find 查找

(2)功能:根据给定的路径和条件查找相关文件或目录

(3)语法:find 路径 条件 文件名

(4)常用参数

image.png

二.文件基本属性

1.介绍

1.Linux系统是一种典型的多用户系统:不同的用户拥有不同的地位。

2.出于安全性考虑,Linux规定不同用户对同一文件(包括目录文件)的操作权限不同。

2.更改权限的命令

(一)chown

(1)含义:change owner 改变拥有者

(2)功能:改变文件或目录的用户和用户组信息,管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息。

(3)语法格式:chown 参数 所属主:所属组 文件名

(4)常用参数

image.png

(二)chmod

(1)含义:change mode 改变模式

(2)功能:改变文件或目录权限,默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。

(3)语法格式:chmod 参数 文件名

(4)常用参数

image.png

(三)chgrp

(1)含义:change group 改变组

(2)功能:更改文件所属用户组

(3)语法格式:chgrp [参数] 目录名

(4)常用参数

image.png

三.docker

1.介绍

1.本质:一个开源的应用容器引擎

2.功能:让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器或者windows机器。

也可以实现虚拟化

3.特点:容器是完全使用沙箱机制,相互之间不会有任何接口

2.docker基本概念

1.docker镜像(Images)

(1)定义:Docker镜像(Images) 是一个用于创建 Docker容器(Container)的静态模板

(2)特点:一个Docker镜像(Images) 可以创建很多Docker容器 (Container)。

2.docker容器(Container)

(1)定义:Docker容器(Container)是独立运行的一个或一组应用,是从Docker镜像(Images)创建的运行实例

(2)特点:它可以被启动、开始、停止、删除。

3.docker仓库(Registry)

功能介绍:Docker仓库(Registry) 用来保存Docker镜像(Images),是集中存放Docker镜像(Images)文件的场所

3.docker的意义

(1)渗透测试中必学不可的一个容器工具

(2)在docker中我们能快速创建、运行、测试以及部署应用程序。

(3)当我们对一些漏洞进行本地复现时,可以使用Docker快速搭建漏洞环境,完成复现学习

4.docker的安装及配置

★说明docker.io和docker.ce的区别?

(1)运行维护商不一样,io是ubuntu团队而ce是docker团队

(2)io是早期版本docker,版本号1.x

ce是版本docker,版本号17.x,ce是社区版,ee是企业版

安装过程如下:

S1 输入命令 sudo apt install docker.io

image.png

S2 输入命令 docker --version 出现版本信息即安装成功

image.png

S3 对docker服务设置开机自启动

命令:sudo systemctl enable docker.service

image.png

5.docker加速器

(1)说明:

需要配置docker加速器的原因:国内从DockerHub(Dockerhub是由Docker公司维护的一个公共镜像库。)拉取镜像有时会遇到困难,此时可以配置镜像加速器。

(2)国内云服务商提供的docker国内加速服务:

科大镜像:docker.mirrors.ustc.edu.cn/

网易:hub-mirror.c.163.com/

阿里云:https://<你的ID>.mirror.aliyuncs.com

七牛云加速器:reg-mirror.qiniu.com

(3)具体实施步骤

S1 在/etc/docker目录下,若没有daemon.json则创建该文件,有则直接修改

我这里没有,我直接创建

image.png

S2 编写以下内容

image.png

image.png

S3 重载daemon的配置文件,并重启docker

重载daemon命令:sudo systemctl restart daemon-reload

重启docker命令:sudo systemctl restart docker

sudo systemctl restart

image.png

6.利用docker运行靶场

1.靶场名称:vulapps

2.靶场特点:

①开源

②无需 docker知识

③简单执行一条命令即可编译、运行一个完整的漏洞靶场镜像

3.靶场内容:包含了各种应用、框架的漏洞

4.靶场下载地址:github.com/Medicean/Vu…

image.png

5.安装过程

S1 先将靶场文件利用VmwareTools复制到虚拟机Ubuntu上

image.png

S2 解压该zip包

image.png

S3 找到apisix目录下的docker.compose.yml文件

搜索命令:在apisix目录下 find . -name docker-compose.yml

我们在CVE-2021-45232文件夹中即可

image.png

S5 执行命令后就会拉取镜像并运行容器

命令:sudo docker-compose up -d

说明:如果没有docker-compose命令,则手动apt安装该包即可

安装命令:sudo apt install docker-compose

image.png

出现版本即安装成功 image.png

安装后再执行该命令 image.png

执行完之后即可访问该靶场,访问方式可在文件夹中的README.md查看

image.png

S6 访问该靶场

靶场的下载地址中打开READ.ME内有访问靶场的方式(用微软浏览器自动翻译即可)

GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose

image.png

解释说明:其中的your-ip是虚拟机ip而非docker内部容器的ip

虚拟机ip可用ifconfig命令查看

S7 成功访问靶场

image.png

补充说明:Apache APISIX Dashboard

image.png

S8 停止该靶场的命令

docker-compose down