渗透测试Linux命令手册(包含curl,grep,ss,ssh)

这里给出的Linux命令都是渗透当中比较常见的

建议直接使用Ctrl+F查找

Curl命令

curl 是一个流行的命令,有助于从远程服务器传输数据或向远程服务器传输数据。它支持许多协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP 和 FILE。curl 提供有用的功能,如文件传输恢复、代理支持、FTP 上传、用户身份验证、POST 方法、带宽限制等等。curl 由 libcurl 库提供支持,用于所有与传输相关的功能。

通过URL获取页面内容

curl http://example.com

如果没有指定参数,Curl会向服务器发送一个HTTP GET请求,并将输出目标页面内容,例如,下面输出了百度页面的HTML代码

在这里插入图片描述

curl -o

保存URL内容到文件

curl -o logo.png https://example.com/img/logo.png

Curl -o 命令行选项告诉Curl,将URL内容以指定的文件名保存在当前工作目录中。使用HTTP GET请求方法下载资源。例如,下面的命令下载百度的logo并命名为logo.png

在这里插入图片描述

curl -O

一次下载多个文件

curl -O http://example.com/img/curl.png -O http://example.com/img/java.png -O http://example.com/img/python.png

URL 列表通过 -o 或 -O 命令行选项之一传递给 Curl。正如我们在第二点中看到的,对于命令行参数 -o,您可以传递将保存资源的文件名,-O命令行参数告诉 Curl 使用原始文件名保存下载的资源。(注:若URL内有特殊字符,需要加引号,否则会报错)

在这里插入图片描述

curl -I

检查页面HTTP标头

curl -I http://example.com

-I 参数告诉 Curl 向服务器发送 HTTP HEAD请求而不是 GET。HEAD 请求类似于 GET,只是服务器只返回 HTTP 标头。你可以用这个命令检查 URL 标头而不加载页面内容,高效简洁。

在这里插入图片描述

curl -H

为请求添加额外的HTTP标头

curl -H 'Accept-Language:en-US' -H 'Accept: application/json' http://example.com

-H 命令行选项允许将额外的HTTP标头传递给服务器,可以多次使用 -H 选项提供任意数量的 HTTP 标头。

curl -d

向服务器发送数据

curl -H "Content-Type: application/json" -d '{"id": 123456}' http://example.com

-d命令行参数告诉 Curl 使用HTTP POST请求方法将提供的数据发送到服务器。-d选项通常跟在-H参数后面以指示数据类型。

curl -L

遵循重定向

curl -L http://example.com

默认情况下,Curl命令不遵循重定向(HTTP 状态代码 301302),直接访问会显示目标网站已移动。-L选项告诉Curl遵循任何重定向,直到它到达最终目的地。

在这里插入图片描述

curl -x

8.使用代理服务器

curl -x proxy.com:port -U user:password http://example.com

-x选项通过代理服务器向目标URL发出请求,-U选项将代理的用户名和密码传递给代理。

curl -b

向网站发送cookie

curl -b 'name1=value1' -b 'name2=value2' http://example.com

-b 命令行参数允许将cookie发送回网站,可以多次使用 -b 选项提供任意数量的cookie值。

curl -s

发送请求但不返回输出

curl -s https://www.example.com

-s 参数将不输出任何错误和进度信息。

curl -S https://www.example.com

-S 参数指定只输出错误信息。

注意

这里给出的是curl比较常用的一些用法,如果没找到你需要的,可以执行命令man curl,查看curl的全部内容,后续过Lab过程中会补充更多示例。

grep命令

Linux 中的 grep 命令在文件中搜索字符模式。grep 是 Global Regular Expression Print 的缩写形式。它打印文件中包含匹配模式的所有行。如果没有匹配的模式,则不返回任何内容。

在单个文件中搜索给定的字符串

grep "pass" /var/www/config.php

grep命令的基本用法是在指定文件中搜索特定字符串,上面的命令输出:

the user's password is in the database.php.
And this database password is admin.

检查多个文件中的给定字符串

grep password *.php

grep输出当前目录下所有包含’password’字符的php文件名,并输出对应行的内容,上面的命令输出:

config.php: the user's password is in the database.php.
database.php: And this database password is admin.

grep -i

使用 grep -i 进行不区分大小写的搜索

grep -i "the" demo_file

不区分大小写地搜索给定的字符串/模式,匹配所有的单词,如"the"、“THE”、“The”,上面的命令输出:

THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.

grep 正则匹配

匹配文件中的正则表达式

grep "sh$" passwd

passwd文件中搜索所有以’sh’结尾的内容($表示以某个字符结尾),上面的命令输出:

root:x:0:0:root:/root:/bin/bash
gbyolo:x:1000:1000:gbyolo:/home/gbyolo:/bin/bash
developer:x:1001:1002:/home/developer:/bin/bash

grep -w

使用grep -w检查完整的单词,而不是子字符串

grep -w "is" demo_file

使用 -w 选项可以避免子串匹配,精确搜索单独字符串

this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

grep -A

使用grep -A匹配后显示N行

grep -A 3 -i "example" demo_file

-A 选项打印匹配的行及其后的3行,-i 进行不区分大小写的搜索,上面的命令输出:

Example to show the difference between WORD and word
* 192.168.1.1 - several Words.
* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

grep -B

使用grep -B匹配前显示N行

grep -B 2 "single WORD" demo_text

-B选项打印匹配的行及其后的2行,上面的命令输出:

Example to show the difference between WORD and word
* 192.168.1.1 - several Words.
* 192.168.1.1 - single WORD

grep -C

使用grep -C 在匹配项周围显示 N 行

grep -C 1 "Example" demo_text

-C选项打印匹配的行及其之前和之后的1行,上面的命令输出:

word - word consists of a sequence of letters, digits and underscores.
Example to show the difference between WORD and word
* 192.168.1.1 - single WORD

grep -r

使用 grep -r 递归搜索所有文件

grep -r "this" /

使用 -r 选项可以在指定目录搜索目标字符串,上面的命令输出:

/home/demo_file: this line is the 1st lower case line in this file.
/home/demo_file: Two lines above this line is empty.
/home/demo_file: And this is the last line.

grep -v

使用 grep -v 排除不想得到的行

grep -v "go" demo_file

当你利用find或其他命令得到一串结果,可以使用 -v 选项排除没用的行,上面的命令输出:

Example to show the difference between WORD and word
* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

这些都与字符串’go’无关

grep -c

使用 grep -c 计算匹配次数

grep -c "this" demo_text

使用 -c选项可以计算有多少行与给定模式/字符串匹配,添加 -v选项可以计算有多少行不匹配

grep -c "this" demo_text

grep -l

使用 grep -l 仅显示与给定模式匹配的文件名

grep -l "this" *.php

使用 -l 选项可以查找包含目标字符串的文件,结果仅输出文件名,上面的命令输出:

config.php
database.php
user.php

grep -o

使用 grep -o 只显示匹配的字符串

grep -o "is.*line" demo_file

默认情况下,grep将显示与给定模式/字符串匹配的行,可以使用 -o 选项仅显示匹配的字符。这在我们用正则表达式查看匹配内容时十分有用,上面的命令输出:

is line is the 1st lower case line
is line
is is the last line

grep -n

使用 grep -n 输出时显示目标内容所在行号

grep -n "go" demo_text

使用 -n 选项显示匹配行的行号,上面的命令输出:

5: * e - go to the current word.
6: * E - go to the current WORD.
10: * W - go to the next WORD.

注意

这里给出的是grep比较常用的一些用法,如果没找到你需要的,可以执行命令man grep,查看grep的全部内容,后续过Lab过程中会补充更多示例。

ss命令

ss 工具包含在 iproute2 包下,在大多数 Linux 发行版中都是默认工具。要使用 netstat,您需要安装已弃用的 net-tools。ss 命令要快得多,因为它直接从内核中获取。

ss -l

默认情况下,监听套接字不会显示在输出中。可以使用 -l 查看正在监听的套接字

ss -t

使用 -t 选项过滤带有TCP连接的输出

ss -n

使用 -n 选项在输出结果中端口号直接显示,不转换为服务名

ss -r

使用 -r 选项在输出结果中在显示主机名或服务名,而不是主机或端口的数字地址

ss -p

使用 -p 选项查看套接字的进程信息

ss -tnl

查看主机监听的tcp端口

ss -tnl

在这里插入图片描述

ss -tlr

查看主机监听的tcp服务

ss -tlr

在这里插入图片描述

注意

这里给出的是ss比较常用的一些用法,如果没找到你需要的,可以执行命令man ss,查看ss的全部内容,后续过Lab过程中会补充更多示例。

ssh命令

生成密钥

生成dsa密钥,filename为文件名

ssh-keygen -t dsa -f filename

生成rsa密钥

ssh-keygen -t rsa -f filename

ssh连接

使用ssh通过其他端口连接到目标(若使用22端口连接,省略-p)

ssh USERNAME@IP_ADDRESS –p PORT

ssh隧道

本地转发远程转发的区别在于,处理两个机器还是三个机器之间的转发:本地转发是将本地的流量转发到一台远程机器,远程转发是将一台远程机器的流量转发到另一台远程机器。

本地端口转发

配置本地端口转发时,我们需要指定最终的目的地址(包括服务器地址和端口号),ssh服务器地址,以及需要被转发的端口号。举例来说,如果我们想要通过一个ssh服务器my-ssh-server.com来进行对本地端口1234的转发(假设我们在该服务器上的用户名为user),从而最终实现访问destination-server.com:80,那么我们应当使用如下命令进行端口转发。

ssh -L 1234:destination-server.com:80 user@my-ssh-server.com

其中的 -L 参数指定了本地端口转发。在这个ssh会话持续期间,所有在my-ssh-server.com上对1234端口的访问流量都将被最终转发至destination-server.com:80

远程端口转发

远程端口转发可以使我们经由本机转发来自于远程端口的网络流量。配置远程端口转发时,我们首先需要知道远程ssh服务器的地址,远程服务器上将被转发的端口号,以及最终的目的地址以及端口号。例如我们想要将my-ssh-server.com上的1234端口经由本地ssh客户转发至destination-server.com的80端口,需要使用的命令如下:

ssh -R 1234:destination-server.com:80 user@my-ssh-server.com

其中的 -R 参数指定了远程端口转发。在这个ssh会话持续期间,所有在my-ssh-server.com上对1234端口的访问流量都将经由本地ssh客户被最终转发至destination-server.com:80

scp命令

scp 是 Linux 中的命令行工具,用于在网络上的主机之间复制文件。它允许您在不登录远程主机的情况下复制文件和目录。它使用ssh 连接和安全性通过网络安全地传输数据。与 rcp 不同,如果需要进行身份验证,scp 会要求输入密码。

将文件从本地复制到远程主机
scp source_filename user@destination_host:/destination_folder

在这里插入图片描述

将文件从远程主机复制到本地主机
scp user@remote_host:/remote_directory/filename /local_directory

在这里插入图片描述

注意

这里给出的是ssh比较常用的一些用法,如果没找到你需要的,可以执行命令man ssh,查看ssh的全部内容,后续过Lab过程中会补充更多示例。

exec命令

exec命令可用于对find命令找到的文件执行grep、ls、cat等操作,记得在命令末尾加上’{} ;
例如,我们想要全局搜索包含字符串’password’的所有php文件(-type f指出查找类型是文件)

find / -name "*.php" -type f -exec grep -l password {} \;

kali系统中没有对这个命令的详细描述,网上的资料也不多,以后学习中遇到这个命令的例子会及时补充

持续更新中…

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux系统中,如果找不到curl命令,可能是因为curl没有安装或者没有正确配置环境变量。你可以通过以下步骤来解决这个问题: 1. 确认curl是否已经安装。你可以在终端中运行以下命令来检查curl是否已经安装: ``` curl --version ``` 如果curl已经安装,你应该能够看到curl的版本信息。如果没有安装,你可以使用以下命令来安装curl: ``` sudo apt-get install curl ``` 2. 如果curl已经安装但仍然找不到curl命令,可能是因为curl的可执行文件路径没有添加到系统的环境变量中。你可以通过编辑`~/.bashrc`文件来添加curl的可执行文件路径。打开终端并运行以下命令: ``` nano ~/.bashrc ``` 在文件的末尾添加以下行: ``` export PATH="/usr/bin/curl:$PATH" ``` 保存文件并退出。然后运行以下命令使修改生效: ``` source ~/.bashrc ``` 3. 现在你应该能够在终端中使用curl命令了。你可以尝试运行以下命令来验证: ``` curl --version ``` 希望这些步骤能够帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助你。 #### 引用[.reference_title] - *1* [linux 安装完curl找不到curl/curl.h文件](https://blog.csdn.net/sdwujk160507140150/article/details/124051671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [linuxcurl命令](https://blog.csdn.net/weixin_37335761/article/details/124955185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zyu0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值