声明
学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
关于Linux的那些事儿-Base
- 一、Linux-Base
- 什么时openssl?有哪些加密参数?
- 常用linux操作命令,
- 创建用户账号密码以及更改不同状态(启用、锁定、更改密码、组、群等)
- 文件系统权限
- 提权常用命令
- 查看日志信息(擦除痕迹)
- 存储管理
- 基本网络枚举
- 网络配置
- 网络连接
- SSH服务
- 远程拷贝
- 实践是检验真理的唯一标准
一、Linux-Base
什么时openssl?有哪些加密参数?
openSSL是一个开源的软件库,它实现了安全套接字层(SSL)和传输层安全(TLS)协议,包含丰富的加密算法和功能。
使用openssl加密有哪些参数以及加密算法进行加密呢?
-crypt
:这是默认的加密算法,用于UNIX标准加密。
-1
:使用MD5的算法进行加密。
-apr1
:这是Apache中使用的备选MD5算法,不能与-1选项一起使用,因为apr1本身就默认了MD5。
-5
:使用SHA256的算法进行加密。
-6
:使用SHA512的算法进行加密。
-salt
:用于在加密时添加随机数,增加算法复杂度;但如果盐值相同,密码也相同,则加密结果将一样。
-in file
:从文件中读取要计算的密码列表进行加密。
-stdin
:从标准输入中获取要输入的密码。
-quiet
:生成密码过程中不输出任何信息。
MD5加密:openssl passwd -1 123
SHA256加密:openssl passwd -5 123
SHA512加密:openssl passwd -6 123
随机数加密盐值:openssl passwd -salt salt 123
Salted加密: openssl passwd 123
apache备选md5加密:openssl passwd -arpt1 123
自定义Salted加密:openssl passwd -salt salt -1 123
示例:
常用linux操作命令,
1、实际上和windows的命令操作几乎一致
区别:Linux用/(左斜线划分路径),windows是用(右斜线划分路径)
创建空文件
touch newfile
创建文件并写入数据hello
touch newfile hello
查看文件(需要指定路径)
dir
移除文件
rm newfile
创建目录文件
mkdir newdir
删除文件
remdir newdir
写入内容到文件
echo dw > newdir
查看文件内容
cat newdir
重命令文件
mv newdir newtest
复制文件到上一级别目录
cp newtest ../dwtest
切换到上一级别目录
cd ..
继续查看文件
cat detest
示例:
2、locate (loacate.db)
locate命令在Linux和类Unix系统中用于快速查找文件系统中的文件和目录。它通过查找预建立的数据库来快速定位文件,而不是像find命令那样直接搜索文件系统,因此它的搜索速度非常快,尤其是在处理大量文件时。
示例:locate [选项] [模式]
sudo updatedb
命令在Linux系统中用于手动更新locate命令使用的数据库。这个数据库包含了文件系统中所有文件的路径信息,用于加速文件搜索。updatedb命令通常由系统管理员使用,因为它需要读取整个文件系统的权限。
sudo updatedb
搜索出whoami.exe文件的位置且回显
locate whoami.exe
搜索出whoami所有文件的位置且回显
locate whoami
3、find(查找)
find ~ -mtime 2 -ls | sort -k9 -k10 | more
命令解析:
find
:用于搜索文件系统中的文件和目录。
~
:表示当前用户的主目录。
-mtime 2
:表示查找在过去2天内被修改过的文件。-mtime参数后面跟的数字表示天数,这里2表示两天内。
-ls
:表示以长列表格式显示文件信息,类似于ls -l的输出。
这个命令组合的结果是列出用户主目录下最近两天内修改过的所有文件,包括文件大小、修改日期等信息。
|
:管道符号,它将前一个命令的输出作为后一个命令的输入。
sort
:用于对输入数据进行排序。
-k9 -k10
:表示按照输出的第9列和第10列进行排序。在find -ls的输出中,第9列通常是文件大小(以字节为单位),第10列是修改日期。这里假设find -ls的输出格式是标准的,并且包含这些列。
more
:是一个分页程序,用于逐页显示输出,方便用户逐页阅读。
这个命令会将sort命令的输出分页显示,用户可以通过按空格键来翻页。
命令功能:
在用户主目录下查找最近两天内修改过的文件,并以文件大小和修改日期进行排序,然后逐页显示排序后的结果。
find . -type f -iname '*.sh' -mmin -30 -ls
命令解析:
find:这是用于搜索文件系统中文件的命令。
.:表示当前工作目录。命令将在当前目录及其所有子目录中进行搜索。
-type f:指定只查找文件(不包括目录)。
-iname ‘*.sh’:-iname 参数用于忽略大小写地匹配文件名。这里它匹配所有以 .sh 结尾的文件,通常表示 shell 脚本文件。
-mmin -30:-mmin 参数用于查找在最近 30 分钟内被修改过的文件。这里的 -30 表示“少于30分钟”。
-ls:这个参数让 find 命令以 ls -l 命令的长列表格式输出匹配的文件信息。
命令功能:
当前目录及其子目录中查找所有在最近 30 分钟内被修改过、且文件名以 .sh 结尾的文件,并以长列表格式输出它们的信息。
find . -name '*.svn' -exec rm -rf {} \;
命令解析:
命令功能:
find /user -type f -user root -perm -o=w -name '*.sh' 2>/dev/null
命令解析:
find
:这是用于搜索文件系统中文件的命令。
.
:表示当前工作目录。命令将在当前目录及其所有子目录中进行搜索。
-name '*.svn'
:-name 参数用于匹配文件名。这里它匹配所有以 .svn 结尾的目录,通常这些目录是 Subversion 版本控制系统的工作目录。
-exec
:这个参数告诉 find 命令对找到的每个文件或目录执行指定的命令。
rm -rf {}
:rm 是删除文件的命令,-rf 是 rm 命令的参数,其中 -r 表示递归删除(用于删除目录及其内部的所有内容),-f 表示强制删除(不会显示任何提示信息)。{} 是一个占位符,代表 find 命令找到的每个匹配的文件或目录的名称。
\:
:这是 -exec 参数的结束符。在 exec 参数中,命令的最后必须是一个 \;
,用来终止 -exec
选项并执行前面的命令。
命令功能:
在当前目录及其子目录中查找所有名为 .svn 的目录,并删除它们。这个操作会递归地删除每个找到的 .svn 目录及其包含的所有文件和子目录,且不会要求用户确认。请注意,这个命令会永久删除文件。
创建用户账号密码以及更改不同状态(启用、锁定、更改密码、组、群等)
查看用户密码信息
cat /etc/passwd
以root权限才能查看用户密码信息
cat /etc/shadow
禁用账号
sudo passwd -l dw
sudo:这是一个命令行实用程序,允许授权的用户以另一个用户的安全权限执行命令,默认情况下是以超级用户(root)的权限执行。使用 sudo 可以执行需要更高权限的操作。
passwd:这是用于管理用户账户密码的命令。
-l:这是 passwd 命令的一个选项,代表“lock”,用于锁定用户的密码。当一个用户的密码被锁定后,该用户将无法通过密码认证来登录系统。
dw:这是你想要锁定密码的用户名。
显示指定用户 dw 的密码状态信息
passwd -S dw
passwd:这是Linux系统中用于管理用户密码的工具。
-S:这是 passwd 命令的一个选项,用于显示指定用户的密码状态,而不是更改密码。
dw:这是你想要查看密码状态的用户名。
回显如下:
dw P 2024-11-12 0 99999 7 -1
用户名是 dw。
密码状态是 P,表示密码已过期。
密码最后一次更改日期是 2024-11-12。
密码更改周期是 0 天,意味着没有设置密码更改周期。
密码到期前的警告天数是 99999 天,这是一个非常大的数字,通常表示没有设置警告天数。
密码过期后的宽限天数是 7 天。
账户过期时间是 -1,表示账户不会过期。
添加用户账号
sudo useradd dw
设置用户密码
sudo passwd dw
解锁用户
sudo passwd -u dw
-u:这是 passwd 命令的一个选项,代表“unlock”,用于解锁用户的密码。当一个用户的密码被锁定后,该用户将无法通过密码认证来登录系统。使用 -u 选项可以解除这种锁定状态。
查看用户组信息
cat /etc/group
示例:
文件系统权限
为什么说linux中一切皆是文件呢?
在Linux系统中,有一个核心概念是“一切皆文件”(Everything is a file)。这个概念是由Unix和类Unix操作系统的创始人之一Ken Thompson提出的,它意味着在操作系统中,几乎所有的对象-包括硬件设备、文件、目录等——都被视为文件。
查看文件
ls -la /etc/passwd
ls:这是一个基本的命令,用于列出目录内容。
-l:这是 ls 命令的一个选项,用于以长格式列出文件和目录的信息。长格式会显示文件的权限、所有者、组、大小、最后修改日期和文件名。
-a:这是 ls 命令的另一个选项,用于显示所有文件和目录,包括以点(.)开头的隐藏文件。
/etc/passwd:这是指定的路径,指向 /etc 目录下的 passwd 文件。
更改文件所有着
chown root file
chown:这是“change owner”的缩写,即更改拥有者。
root:这是要设置的新的所有者用户名。在这个命令中,root 是Linux系统中的超级用户账户,拥有系统上所有文件和目录的最高权限。
file:这是要更改所有者的文件或目录的名称。
修改文件权限并移除其他用户读取权限
sudo chmod u=rwx,g+rw,o-r file
sudo:这是一个命令行实用程序,允许授权的用户以另一个用户的安全权限执行命令,默认情况下是以超级用户(root)的权限执行。
chmod:这是“change mode”的缩写,用于更改文件或目录的访问权限。
u=rwx:这是权限设置的一部分,表示为文件所有者(user)设置读(read)、写(write)和执行(execute)权限。u 代表用户(user),= 表示设置确切的权限,rwx 代表读、写和执行权限。
g+rw:这是权限设置的一部分,表示为文件的所属组(group)添加读(read)和写(write)权限。g 代表组(group),+ 表示添加权限。
o-r:这是权限设置的一部分,表示为其他用户(others)移除读(read)权限。o 代表其他用户(others),- 表示移除权限。
file:这是要更改权限的文件或目录的名称。
区别:这里为user用户添加执行权限
sudo chmod u+x,g+w,o-r file
sudo:这是一个命令行实用程序,允许授权的用户以另一个用户的安全权限执行命令,默认情况下是以超级用户(root)的权限执行。
chmod:这是“change mode”的缩写,用于更改文件或目录的访问权限。
u+x:这是权限设置的一部分,表示为文件所有者(user)添加执行(execute)权限。u 代表用户(user),+ 表示添加权限,x 代表执行权限。
g+w:这是权限设置的一部分,表示为文件的所属组(group)添加写(write)权限。g 代表组(group),+ 表示添加权限,w 代表写权限。
o-r:这是权限设置的一部分,表示为其他用户(others)移除读(read)权限。o 代表其他用户(others),- 表示移除权限。
file:这是要更改权限的文件或目录的名称。
提权示例:
chmod 400 file
4 代表读权限(r),即4。
0 代表没有写权限(w),即0。
0 代表没有执行权限(x),即0。
为文件的所有者设置读权限。
为文件所属组和所有其他用户移除所有权限(包括读、写和执行)
ls -l
查看当前路径下的权限
chmod命令中有哪些权限数字组合和表示方法?
以下是权限的数字表示方法:
_读(r):值是4
写(w):值是2
执行(x):值是1
权限的数字设置是累加的,所以:
为什么这里是3位数,而不是4位数呢?
因为权限的数字是一个八进制的数字,第一位素数字是文件所有者、第二位数是所属组织、第三位数是其他用户
7(4+2+1)代表读、写、执行权限(rwx)
6(4+2)代表读、写权限(rw-)
5(4+1)代表读、执行权限(r-x)
4 代表只读权限(r–)
3(2+1)代表写、执行权限(-wx)
2 代表只写权限(-w-)
1 代表只执行权限(–x)
0 代表没有任何权限(—)
这个命令和数字权限的组合是非常有用的,如果不会提权,那么你的渗透测试到此为止了
提权常用命令
777:为文件所有者、所属组和其他用户设置读、写和执行权限。
命令:chmod 777 file
权限:rwxrwxrwx
755:为文件所有者设置读、写和执行权限,为所属组和其他用户设置读和执行权限。
命令:chmod 755 file
权限:rwxr-xr-x
700:为文件所有者设置读、写和执行权限,为所属组和其他用户不设置任何权限。
命令:chmod 700 file
权限:rwx------
666:为文件所有者、所属组和其他用户设置读和写权限。
命令:chmod 666 file
权限:rw-rw-rw-
644:为文件所有者设置读和写权限,为所属组和其他用户设置读权限。
命令:chmod 644 file
权限:rw-r–r–
600:为文件所有者设置读和写权限,为所属组和其他用户不设置任何权限。
命令:chmod 600 file
权限:rw-------
777(目录):为目录设置读、写和执行权限,允许所有用户查看、添加和删除目录中的文件。
命令:chmod 777 directory
权限:rwxrwxrwx
755(目录):为目录设置读、写和执行权限,为所属组和其他用户设置读和执行权限,通常用于可执行文件的目录。
命令:chmod 755 directory
权限:rwxr-xr-x
700(目录):为目录设置读、写和执行权限,为所属组和其他用户不设置任何权限,通常用于敏感配置文件的目录。
命令:chmod 700 directory
权限:rwx------
755(脚本):为脚本文件设置读、写和执行权限,为所属组和其他用户设置读和执行权限,确保脚本可以被所有者执行,同时允许组内其他用户执行。
命令:chmod 755 script.sh
权限:rwxr-xr-x
查看日志信息(擦除痕迹)
系统日志
ls -l /var/log
认证信息日志
sudo tail -3 /var/log/auth.log
二进制日志
who /var/log/wtmp/ | tail -5
dmesg
dmesg 是一个在 Unix 和类 Unix 操作系统(如 Linux)中用于显示和控制内核环缓冲区(kernel ring buffer)内容的命令。内核环缓冲区是操作系统内核用来记录系统事件消息的地方,包括启动消息、硬件状态、驱动程序消息和错误信息等。
要查看最新的内核消息,可以使用以下命令:
dmesg | less
这将分页显示内核消息,允许你滚动查看。要实时查看新消息,可以使用:
dmesg -w
它是用于查看和分析 systemd 系统和服务管理器的日志的命令。
journalctl
存储管理
内存使用量
free -m
磁盘使用量
df -hT
文件或目录大小
sudo du ./* -hsc
查看硬盘分区
sudo fdisk -l
挂载分区
sudo mount /dec/sdb1/mnt/usb
基本网络枚举
基本网络工具
查看本机ip
ifconfig
查看所有网络接口列表
ip addr
关闭网卡连接
sudo ifdown lo
启动网卡
sudo ifup lo
网络配置
网络配置/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface (eth0)
auto eth0
iface eth0 inet dhcp
# A static IP configuration for a secondary network interface (eth1)
auto eth1
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
在这个示例中:
lo 是本地回环接口,通常配置为 loopback。
eth0 是主要的网络接口,配置为使用 dhcp 动态获取IP地址。
eth1 是一个辅助网络接口,配置为静态IP地址 192.168.1.100,子网掩码 255.255.255.0,网关 192.168.1.1,以及DNS服务器 8.8.8.8 和 8.8.4.4。
网络守护程序:NetworkManager
它也提供了命令行工具 nmcli 和 nmtui,用于通过命令行管理网络。
查看所有网络设备的状态:
nmcli device status
启动名为 eth0 的网络接口:
nmcli device up eth0
停止名为 eth0 的网络接口:
nmcli device down eth0
配对规则:qdisc
查看当前的网络连接:
nmcli connection show
注意这里回显的是接口的硬件名称 lo eth0,不是网络连接名称
查看具体网络连接的详情
nmcli connection show id "lo"
启用网络连接:
nmcli connection up id "lo"
禁用网络连接:
nmcli connection down id "Connection Name"
网络连接
显示网络连接、监听端口和路由表信息
netstat -natup
显示 TCP 和 UDP 套接字的状态
ss -netup
二层地址
arp -em 命令用于显示和修改地址解析协议(ARP)使用的 IP 到物理地址转换表。
arp -e -m
路由信息
route
用于管理和查看 Linux 系统中路由表的命令
ip route
告诉系统,所有目的地在 10.13.37.0/24 子网内的数据包都应该通过 eth0 接口发送。
sudo ip route add 10.13.37.0/24 dev eth0
traceroute 命令用于追踪数据包从本地主机到目标主机(在这个例子中是 offensive-security.com)之间的路由路径。
traceroute offemsive-security.com
SSH服务
启动 SSH 服务,允许远程用户通过 SSH 协议安全地连接到您的系统
sudo systemctl start ssh
sudo:这个命令允许授权的用户以另一个用户的安全权限执行命令,默认情况下是以超级用户(root)的权限执行。在这里,它用于获取必要的权限来启动系统服务。
systemctl:这是 systemd 系统和服务管理器的命令行工具,用于控制 systemd 系统和服务管理器。
start:这是 systemctl 的一个参数,用于激活(启动)指定的服务。
ssh:这是要启动的服务的名称,即 SSH(Secure Shell)服务。SSH 是一种网络协议,用于在网络上加密方式远程登录和其他网络服务。
ssh root@loaclhost
配置文件
/etc/ssh/sshd_config
客户端配置
HashKnownHosts yes 是一个可以在 SSH 客户端的配置文件 ~/.ssh/config 或 /etc/ssh/ssh_config 中设置的指令。
hashknownHosts yes
Linux 和类 Unix 系统中用户主目录下的一个隐藏目录
~/.ssh
id_rsa:这是默认的私钥文件,用于 SSH 认证。通常与 id_rsa.pub(公钥)配对使用。
id_rsa.pub:这是与 id_rsa 私钥配对的公钥文件。公钥可以被复制到其他服务器的 ~/.ssh/authorized_keys 文件中,以便实现无密码登录。
known_hosts:这个文件用于存储你曾经连接过的 SSH 服务器的公钥。SSH 客户端会使用这个文件来验证服务器的身份,防止中间人攻击。
authorized_keys:这是一个文件,其中包含了允许无密码登录到该用户账户的公钥列表。通常由系统管理员或用户自己添加。
config:这是 SSH 客户端的配置文件,允许用户自定义 SSH 连接的参数,如指定别名、端口、用户身份验证方法等。
远程拷贝
scp 是一个用于在 Linux 和 Unix 系统之间安全地复制文件的命令行工具。它使用 SSH 协议来确保数据传输的安全性。
scp root@1.1.1.1:/home/kail/.bashrc Copiedbashrc
scp:安全复制命令。
root@1.1.1.1:指定远程服务器的用户名和 IP 地址。在这个例子中,用户名是 root,IP 地址是 1.1.1.1。
:/home/kail/.bashrc:指定要复制的远程文件的路径。冒号(:)前的路径表示远程路径。
Copiedbashrc:指定本地目标文件的名称。如果这是一个文件名,那么 ./ 应该被包含在内,以表示当前目录。如果这是一个路径,那么应该提供完整的路径。
scp passwd -p kail ssh root@127.0.0.1
使用 scp 命令复制文件。
-p 选项可能是用来指定端口的,但在 scp 命令中没有 -p 选项(这个选项在 ssh 和 rsync 中存在)。
kail 可能是您想要复制的文件名,但放置的位置不正确。
ssh 可能是一个误输入,不应该出现在 scp 命令中。
root@127.0.0.1 表示您想要复制到的远程主机的地址和用户名。
history
哈哈哈哈,看来linux的命令很有意思,也很有趣,都是英语的简写噢!!!
能够看到这里,你,值得认真一次,登顶一次就好,不是吗,各位!!!
该说不说