OSCP 学习:Kali Linux 基本命令

Bash 环境

环境变量

当我们开启新的bash时候,它会拥有自己的环境变量

我是这样理解 环境变量的:
每个程序都有自己运行的地址 我们用一个变量来储存它的地址 这个变量就叫环境变量

Kali 最常用的环境变量 就是 $PATH。这个我们可以用这个变量进行不正当配置二进制文件提权(以后文章可能会出现)

┌──(root@OSexp)-[~]
└─# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

┌──(root@OSexp)-[~]
└─# echo $USER
root

┌──(root@OSexp)-[~]
└─# echo $PWD 
/root

┌──(root@OSexp)-[~]
└─# echo $HOME
/root

export

我们可以通过 export 这个命令 来编辑临时变量
关掉这个bash临时变量消失,如果在bash里再开一个bash 临时变量可以继承

OSCP 学习:Kali Linux 基本命令_第1张图片


如果经常忘记ip地址 可以用这样来方便记住自己的ip

我们可以通过 **$$**来查看当前进程的ID
env可以让我们查看当前Kali Linux默认的环境变量

OSCP 学习:Kali Linux 基本命令_第2张图片

alias

alias 是一个我们可以定义的替换命令名的字符串。别名对于用我们定义的更短的命令或别名替换常用的命令和开关非常有用。换句话说,别名是我们定义自己的命令,由其他命令构建。这方面的一个例子是ls命令,我们通常倾向于使用ls-la(显示结果在一个长列表中,包括隐藏的文件)。让我们来看看如何使用别名来替换此命令

alias lsa = 'ls -la'
alias pingip = 'ping -c 1 127.0.0.1'

历史记录

在最新的 Kali Linux 中通常用到的都是 zsh终端 而不是bash。现在网上有很多zsh的插件,师傅们可以自行去网上搜索 oh my zsh等插件进行美化自己的终端。
重点是现在的zsh 有历史记录,还有命令自动补全的功能,这个十分方便各位师傅们进行渗透操作。

history # 查看历史记录
history -c # 清空历史记录

我们可以用 方向键 (上下)游览自己的记录 方向键(右) 自动补全记录

在终端 输入 !! 回车 自动完成上一个命令

持久的Bash自定义

Bash中的交互shell 的行为是由位于/etc/bash.bashrc中的系统范围的bashrc文件决定的。可以通过编辑位于任何用户的主目录中的.bashrc文件来覆盖系统范围内的Bash设置。(现在都在 .zshrc )

OSCP 学习:Kali Linux 基本命令_第3张图片

管道和重定向

Stream Name Description
Standard Input (STDIN) Data fed into the program
Standard Output (STDOUT) Output from the program (defaults to terminal)
Standard Error (STDERR) Error messages (defaults to terminal)

网上有很多师傅都写了教程,在这里我就不再重复了。下面是一些网址,供师傅们参考一下。

Linux 重定向教程
Linux 管道命令教程

文本的搜索和操作

我觉得这个挺重要的,在不借助很多工具的情况下,手动对文本信息进行筛选 是一个比较基础的能力。非常考验渗透人员的基本功。

grep

grep 通常搭配管道操作符进行配合使用 ( | ) 来筛选我们需要的 文件 (可以使用正则,字符串)

OSCP 学习:Kali Linux 基本命令_第4张图片

sed
sed 是一个非常强大的流编辑器。我们可以使用sed将文本在流中编辑我们的文本。

echo "I need to try hard" | sed 's/hard/harder'
> I need to try harder

cut

这个命令非常简单,从字面的意思就知道是切割的意思,通常也是搭配管道操作符进行使用。
常用的参数:
-f选定区域的数字(从1开始算,不是从0开始算)
-d以什么来划分区域

echo "I am a Student" | cut -f 2 -d " "
> am

awk

这个命令太厉害了Orz,还没有非常好的掌握好,可以参考一些师傅的文章。
Linux awk 教程

其他命令

还有其他很厉害的命令 如sort uniq等。当命令一起组合的时候会有非常强大的功能。

Linux sort 教程

Linux uniq 教程

编辑你的文本

本人比较喜欢用vim来编辑文本,比较轻巧快捷。(但是在反弹shell sh环境中vi有几率会卡死,不知道有没有大佬会遇到这种问题)

OSCP考试书推荐两种编辑器:nano、vim/vi

Linux nano 教程

Linux VIM/VI 教程

对比文件

在很多情况中,如蓝队、运维的时候需要对比昨天日志和今天日志有什么敏感操作,判断服务器是否中马

comm

comm file1 file2
file1的不同之处|file2的不同之处|file1,file2相同之处

comm -12 file1 file2
直接忽略不同之处 直接输出相同之处

OSCP 学习:Kali Linux 基本命令_第5张图片

diff && vimdiff

与之comm相反的命令就是 diff 这个命令我没有太过多去了解,师傅们可以先去了解一下。

Linux diff && vimdiff 教程

管理进程

Linux内核通过使用进程来管理多任务处理。内核维护关于每个进程的信息,以帮助保持组织,每个进程被分配一个称为进程ID(PID)的数字

bg(backgrouding processes)

查看后台有什么程序 我们用的是bg这个命令

创建后台进程的最快方法是在命令的末尾追加一个&号和(&),以便在命令启动后立即将其发送到后台。让我们试试一个简单的例子:

kali@kali:~$ ping -c 400 localhost > ping_results.txt &

第二种挂起的方法 (ctrl + z)

kali@kali:~$ ping -c 400 localhost > ping_results.txt
^Z
[1]+ Stopped ping -c 400 localhost > ping_results.txt
kali@kali:~$ bg
[1]+ ping -c 400 localhost > ping_results.txt
kali@kali:~$

fg

我们在后台挂起的程序,我们用fg这个命令重新唤醒

kali@kali:~$ ping -c 400 localhost > ping_results.txt
^Z
[1]+ Stopped ping -c 400 localhost > ping_results.txt
kali@kali:~$ find / -name sbd.exe
^Z
[2]+ Stopped find / -name sbd.exe
kali@kali:~$ jobs
[1]- Stopped ping -c 400 localhost > ping_results.txt
[2]+ Stopped find / -name sbd.exe
kali@kali:~$ fg %1
ping -c 400 localhost > ping_results.txt
^C
kali@kali:~$ jobs
[2]+ Stopped find / -name sbd.exe
kali@kali:~$ fg
find / -name sbd.exe
/usr/share/windows-resources/sbd/sbd.exe

ps(process status) && kill

进程管理

# 通常我们都会用ps 来查看我们的进程
ps -ef # -e 选中所有进程 -f 输出所有格式的列表(UID,PID,PPID等)

# 如果我们要杀掉进程的话
kill 
# 强制杀掉进程
kill -9 

文件和命令监控

tail

tail 最常见的用途是在写入日志文件条目时监视它们。例如,我们可能希望监视Apache日志,以查看我们是否试图通过客户端漏洞攻击一个web服务器。这个例子将会这样做:

kali@kali:~$ sudo tail -f /var/log/apache2/access.log 
127.0.0.1 - - [02/Feb/2022:12:18:14 -0500] "GET / HTTP/1.1" 200 3380 "-" "Mozilla/5.0 
(X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
127.0.0.1 - - [02/Feb/2022:12:18:14 -0500] "GET /icons/openlogo-75.png HTTP/1.1" 200 6
040 "http://127.0.0.1/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firef
ox/52.0"
127.0.0.1 - - [02/Feb/2022:12:18:15 -0500] "GET /favicon.ico HTTP/1.1" 404 500 "-" "Mo
zilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"

-f参数 随着目标文件的增长,不断地更新输出

-nX参数 输出后 X行,如果有就会取代默认的10行输出

watch

用于定期运行一个指定的命令

Linux watch 命令教程

watch -n  
example:
watch -n 1 netstat -ant

下载文件

我们在攻击机开启了http服务,我们通常就需要将恶意文件传输到目标机。

wget

wget将广泛使用,使用HTTP/HTTPS和FTP协议下载文件

wget -O  
wget -O /tmp/payload.txt https://example.com/shellcode.txt
# 请务必要看清楚 file_location 是否有写入权限

curl

一种使用IMAP/S、POP3/S、PS、SCP、SFTP、SMB/S、SMTP/S、telnet、TFTP等S系列协议向服务器传输数据的工具。渗透测试人员可以使用它来下载或上传文件,并构建复杂的请求。

curl -o  

axel

axel 是一个下载加速器,它通过多个连接从FTP或HTTP服务器传输文件。这个工具有大量的特性,但最常见的是-n,它用于指定要使用的多个连接的数量。在下面的示例中,我们还使用-a选项来表示更简洁的进度指示器,并使用-o来为下载的文件指定不同的文件名。

kali@kali:~$ axel -a -n 20 -o report_axel.pdf https://www.offensive-security.com/reports/penetration-testing-sample-report-2013.pdf

你可能感兴趣的:(linux,学习,bash)