声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面链接进入b站主页B站泷羽sec
Linux
linux基础
openssl:openssl是一个开源的工具包,提供各种加密,解密,签名,验证功能
openssl passwd -1 123
password表示这个命令是对处理密码进行相关操作
-1参数是指定使用MD5加密算法对密码进行加密
MD5算法:常用的一种哈希算法,他将任意长度的输入数据转换为固定长度输出,通常是128位的哈希值
openssl passwd -5 123
-5参数是指定使用SHA-256加密算法进行哈希加密处理
SHA-256算法:更安全的哈希算法,生成的哈希值长度为256位,每次对相同的密码进行SHA-256加密时会引入随机因素,所以每次生成的密文都不同,增加了密码的安全性
文件管理
- 创建空文件
touch m - 删除文件
rm -R n
-
新建目录
mkdir n -
删除文件
rmdir newdir
- 重命名文件
mv new\.txt file.txt
- 移动文件
mv 2.txt n
- 复制文件
cp l.txt n
- 软链接
ln-s original.txt symlink.txt
- 硬链接
ln 2n.txt hardlink.txt
软硬链接区别:
- 硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
- 在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
- 链接数目是不一样的,软链接的链接数目不会增加;
- 文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,软链接显示的大小与原文件不同
- 软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接
文件读取
cat
用于连接文件并打印到标准输出设备上 用法: cat /f*
more /f*
类似cat命令,会以一页一页的显示,方便使用者逐页阅读
搜索文件
基本语法
which [选项] [命令]
which:用于定位系统中的可执行文件。如果你想知道某个程序究竟在哪里,只需使用which命令即可。which命令会在你的shell的搜索路径中定位一个可执行文件。
显示所有匹配的路径
如果一个命令在多个路径中有副本,可以使用 -a 选项来显示所有副本的位置。
which -a ls
locate:快速查找文件
sudo updatedb 更新locate命令所使用的文件数据库
locate whoami.exe:使用locate命令查找whoami的文件在系统中的主要位置,有的话输出其路径
find命令
find -mtime 2 -ls | sort -k9 -k10 |more
-mtime 2:查找两天内被修改过的文件
-ls:用长列表形式显示找到的文件信息
|:管道符号,以前一个命令的输出作为后一个命令的输入
sort -k9 -k10:以第九第十列的内容对文件信息进行排序
more:用于分页显示结果
find -type f -iname '*xxx' -mmin 30 -ls
-type f查找类型为普通的文件
-iname '*xxx'查找以xxx(可替换任意数值)结尾的文件
-mmin 30查找30分钟内被修改过的文件
find -name ‘xxx’ -exec rm -rf {}
-name ‘*.svn’:查找每一个名为xxx(可替换任意数值)的文件
-exec rm -rf {}:对每个找到的结果进行rm-rf操作,即删除找到的目录或文件
find / -user root -type f -perm -o=w -name ‘xxx’ 2>/dev/null
find /在根目录下查找
-user root查看所有者为root的文件
-perm -o=w查找其他用户有写权的文件
2>/dev/nul将错误输出重定向到dev/null,即不显示错误
用户账号数据库
/etc/password
重要的系统文件,存储了系统中用户账户的基本信息。
每行代表一个用户,包含用户名,密码占位符,用户id,用户组id,用户描述信息,用户默认shell等字段。
etc/shadow
这个文件也与用户账号相关,主要存储用户密码的加密信息以及密码的一些属性,如密码的最后一次修改时间,密码最短使用期限,密码最长使用期限等
只有权限足够的用户才能读取这个文件,提高密码安全性
组账号
cat /etc/group
查看用户账号信息的同时也可以间接的了解用户组所属信息,因为其包含了用户组ID
禁用账号
sudo passwd -l username
-l用于锁定用户账户,指定的“username”账号将被锁定,无法登录
chage -E 1990-01-01 kali
-E用于更改用户账号过期时间,该条命令就是将kali的过期时间改为1990-1-1,在这个日期之后将无法使用
passwd -S root
-S显示指定用户的账号密码状态,包括账号是否锁定,密码是否设置等
文件系统权限
linux系统中一切皆文件
- 查看权限
ls -a /etc/passwd
-l是以长格式显示文件信息,包括文件的权限、所有者、所属组、文件大小、修改时间等详细信息。
-a选项显示包括隐藏文件在内的所有文件
/etc/passwd是要查看的文件路径,这个文件存储了系统用户账号的基本信息。通过这个命令可以看到 /etc/passwd文件的权限设置、所有者、所属组等信息。
- 改变文件所有者
chown root file
root是新的所有者用户名,表示将文件的所有者改为root 用户。
file是要更改所有者的文件名称。执行这个命令后,文件的所有者将变为 root”用户。
sudo chmod u=rwx,g+w,o-r l.txt
chmod改变文件权限的命令
u=rwx表示文件所有者具有r(读)w(写)x(执行)权限
g+rw表示文件所属组(group)增加r(读)w(写)权限
o-r表示其他用户(other)去除r(读)权限
u+x表示给文件所有者增加写权限
chmod 400 [file] 直接以数字方式设置文件权限
400是权限数字表示,其中4表示文件所有者的权限,这里代表读权限;后面的两位数字分别表示文件所属组和其他用户没有任何权限
常见的权限数字:
| 权限数字 | 相应的权限 |
|---|---|
| 644 | 只有拥有者有读写权限;而属组用户和其他用户只有读权限 |
| 700 | 只有拥有者有读、写、执行权限 |
| 755 | 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限 |
| 711 | 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限 |
| 666 | 所有用户都有文件读、写权限 |
| 777 | 所有用户都有读、写、执行权限 |
系统日志
ls -l /var/log
/var/log系统日志文件所在的目录,执行这个命令可以查看该目录下的日志文件列表和相关信息
sudo tail -3 /var/log/auth.log
/var/log/auth.log是系统存储认证信息的日志文件,包括用户登录,认证失败等信息
who /var/log/wtmp |tail -5
who显示当前登录用户信息
/var/log/wtmp二进制日志文件,记录系统登录和注销信息
-5是显示最后五条内容,执行这个命令可以看到最近五次登录或注销记录
补充一些日志文件:
- var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
- /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
- /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
- /var/log/boot.log — 包含系统启动时的日志。
- /var/log/daemon.log — 包含各种系统后台守护进程日志信息。
- /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
- /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
- /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
- /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
- /var/log/user.log — 记录所有等级用户信息的日志。
- /var/log/Xorg.x.log — 来自X的日志信息。
- /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
- /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
- /var/log/cups — 涉及所有打印信息的日志。
- /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
- /var/log/yum.log — 包含使用yum安装的软件包信息。
- /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
- /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
- /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
- /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
- /var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
- /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
- /var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
- /var/log/prelink/ — 包含.so文件被prelink修改的信息。
- /var/log/audit/ — 包含被 Linux audit daemon储存的信息。
- /var/log/samba/ – 包含由samba存储的信息。
- /var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
- /var/log/sssd/ – 用于守护进程安全服务。
dmesg
是一个在Linux系统中用于查看内核环形缓冲区kernel ring buffer消息的命令。包括设备的初始化情况、硬件检测结果、驱动程序加载信息、系统错误和警告等诸多重要内容
systemd 日志相关命令
journalctl 是一个用于查询和查看系统日志的强大工具,主要用于 systemd 日志管理,这些日志信息记录了系统启动、运行过程中的事件,包括服务的启动、停止、错误消息、用户登录等多种内容,可通过不同的参数来筛选
一些拓展命令:
查看指定时间的日志
journalctl --since="2021-09-16 14:22:02"
journalctl --since "30 min ago"
journalctl --since yesterday
journalctl --since "2021-01-01" --until "2021-09-16 13:40"
journalctl --since 07:30 --until "2 hour ago"
| 显示尾部的最新10行日志 | journalctl -n |
|---|---|
| 显示尾部指定行数的日志 | journalctl -n 15 |
| 实时滚动显示最新日志 | journalctl -f 与tail -f类似 |
| 查看指定服务的日志 | journalctl /usr/lib/systemd/systemd |
| 查看docker服务的日志 | systemctl status docker |
| 查看指定进程的日志 | journalctl \_PID=665 |
| 查看某个路径的脚本的日志 | journalctl /usr/bin/bash |
| 查看指定用户的日志 | journalctl UID=33 --since today |
| 查看某个 Unit 的日志 | journalctl -u nginx.service journalctl -u nginx.service --since today |
内存管理
free -m 内存使用量
free 命令本身用于显示系统内存(包括物理内存和交换空间)的总量、已使用 量、空闲量等信息-m 选项是让输出结果以兆字节(MB)为单位进行显示
df -hT 磁盘使用量
df -hT 是一个用于查看文件系统磁盘空间使用情况的命令。
-h 选项表示以人类可读的格式显示信息(如kb,mb,gb等)
-T 选项用于同时显示文件系统类型
sudo du ./* -hsc 文件或目录大小
du用于估算文件或目录占用的磁盘空间大小。
.* (当前目录下的所有文件和目录):
在du命令中,./表示当前目录,*是通配符,表示匹配当前目录下的所 有文件和目录。这意味着命令会对当前目录下的每一个文件和目录进行磁盘 空间使用情况的统计。
-s (总结): 表示汇总每个参数的总大小
-c (总计):-c 在最后显示总计,执行这个命令可以查看当前目录下每个文件和目录的大写,并在最后总计
sudo fdisk -l 查看硬盘分区
fdisk 是一个磁盘分区工具
-l 选项表示列出(list)所有磁盘分区的相关信息
sudo mount /dev/sda1 /mnt/data 挂载分区
mount 是挂载命令,它的作用是将指定的文件系统、
/dev/sda1/ 是要挂载的磁盘分区设备路径
mnt/data是挂载点,就是要将分区挂载到的目录,执行这个命令后系统可以访问该分区中的文件和目录,就像本地文件系统中其他目录一样
网络枚举
ifconfig
用于显示和配置网络接口信息的命令行工具
它可以显示网络接口的IP地址、子网掩码、MAC地址等信息,也可以用来启动,停止、配置网络接口
ip a
用于查看和管理网络接口的命令
同时提供了比ifconfig更详细的信息显示,包括接口状态、IP地址、子网掩码、广播地址
sudo ifdown ethc
ifdomwn用于关闭指定的网络接口
ethc是网络接口的名称,这里表示关闭ethc的网络接口
sudo ifup ethc ifup
用于开启指定的网络接口,这里表示开启ethc的网络接口
/etc/network/interfaces
这是一个系统文件,用于配置网络接口的静态、IP地址、子网掩码、网关等信息
Networkmanager
这是一个动态网络控制和配置的守护进程
它可以自动管理网络连接,包括有线连接、无线网络和VPN连接等
Networkmanager 提供了图形界面和命令行工具来配置和管理网络,使得网络配 置更加方便。还可以自动检测网络变化,并根据配置自动进行网络连接
网络连接
网络连接状态查看
netstat是一个用于显示网络连接,路由表,接口统计等信息的命令
netstat -natup
-n:以数字形式显示网络地址和端口号,避免进行域名解析
-a :显示所有链接和监听端口
-t:显示所有tcp连接
-u:显示所有udp连接
-p:显示与每个网络连接相关联的程序名称和进程ID,类似于显示tcp和udp连接的状态,地址和端口信息
二层地址查看
arp -n
arp 是地址解析协议(Address Resolution Protocol)的工具
-e是以详细的格式显示arp缓存表
-n :以数字形式显示 IP 地址,避免域名解析,执行这个命令可以查看系统的arp缓存表,其中包含了ip地址和对应mac地址的映射关系,用于在局域网中进行二层地址解析
路由信息
route
用于显示和管理路由表 可以查看当前的路由信息,包括目标网络,网关,子网掩码等,还可用于增删改路由条目
ip route:
ip命令的一部分,用于管理系统的路由表,提供了路由管理功能,进行更复杂的路由配置操作
sudo ip rout add 10.13.27.0/24 dev etha
ip rout add 用于添加一条路由条目
10.13.27.0.24 是目标网络地址和子网掩码
dev eth1 表示通过名为"eth0"的网络接口到达目标网络。
执行这个命令可以向系统的路由表里添加一条路由,指定如何到达特定的网络。
路由跟踪工具
traceroute offensive-security.com tracerout
是一个用于跟踪数据包从本地主机所经过的路由路径的工具
offensive-security 是目标主机的域名或ip地址。执行这个命令会逐跳显示数 据包经过的路由器的ip地址和响应时间,可以帮助用户了解网络连接的路径 和可能存在的网络
ssh服务
启动服务
sudo systemctl start ssh systemctl
是用于管理系统服务的工具
start ssh 是启动名为 ssh 的服务,就是启动SSH服务器,其他设备可以使用 SSH协议进行登录连接
systemctl status ssh 查看服务状态
ssh root@localhost ssh 连接本机
是SSH服务命令
root 是指定的登录用户
localhost 指定登录的机器,这里是指本机
配置文件
/etc/ssh/sshd_config
SSH服务器主要配置文件
包含各种参数:端口号、允许的登录用户、认证方式、访问权限,通过对此文件的操 作可以定制化配置ssh服务器
hash knownHosts yes 客户端配置
通常情况下,/.ssh/known_hosts文件用于存储一直的远程主机的公钥信息,来确 连接的安全性。
此配置选项会将已知主机文件中的主机名信息进行哈希处理。
~/.ssh
这是用户主目录下的一个目录,用于存储SSH客户端的配置和相关文件
通常包含私钥文件(如id_rsa)公钥文件(如id_rsa.pub)及已知主机文件 (known_hostss).
这些文件将用于客户端的身份认证和连接管理
远程拷贝
scp root@1.1.1.1:/home/kali/.bashrc Copiebashrc
scp :是 Secure Copy 的缩写,用于在本地主机和远程主机之间,或者在两 个远程主机之间安全地复制文件。
root@1.1.1.1 :指定了远程主机的登录信息,这里表示以登录到 IP 地址为 1.1.1.1 的远程主机。
/home/kali/.bashrc :这是远程主机上要复制的文件路径 ,即要从远程主机的 /home/kali/目录下复制 .bashrc 文件。
Copiebashrc :这是复制操作后在本地保存的文件名(如果当前目录下不存在 同名文件的话,它会直接创建这个文件并将内容复制过来;如果已存在同名文 件,可能会根据情况提示是否覆盖等,具体取决于所在操作系统和相关设置)
scp passwd -p kali ssh root@127.0.0.1
scp 远程链接
passwd -p 用户密码
ssh ssh远程连接
root@127.0.0.1 目标主机
查看历史history
是一个常见的命令行工具命令,它的主要作用是显示用户在当前终端 会话中执行过的命令历史记录
-n 选项来指定显示最近n条命令历史记录
-p 选项可以按照特定的模式来查找历史记录
使用!(感叹号) 来重新执行历史命令
history -c 来清除当前终端会话中的历史记