目录

find命令

命令格式

按照文件/目录名搜索

linux正则表达式

find同时查找符合多个格式的文件

grep命令

管道符|

egrep

xargs命令

案例

内网渗透中linux主机查找账号密码


在打内网的时候经常需要对linux主机进行账号密码搜集,手动翻找文件是一件体力活,特别是当文件特别多的时候,翻找文件将需要耗费大量的时间,本文可针对linux主机文件中的账号密码信息进行快速查找

find命令

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

find 命令的基本信息如下:

  • 命令名称:find
  • 英文原意:search for files in a directory hierarchy
  • 所在路径:/bin/find。
  • 执行权限:所有用户。
  • 功能描述:在目录中查找文件

命令格式

find 是比较特殊的命令,它有两个参数:

  • 第一个参数用来指定搜索路径;
  • 第二个参数用来指定搜索内容。

按照文件/目录名搜索

该命令可以递归搜索该路径及该路径以下的文件或文件夹

find 搜索路径 [选项] 搜索内容

  • name: 按照文件名搜索;
  • -iname: 按照文件名搜索,不区分文件名大小;
  • -inum: 按照 inode 号搜索;
  • -type d/f: 文件类型是目录/一般文件

如下/root/test/目录下存在 user、username文件夹以及user.txt文件

  1. 指定在/root/test目录下搜索user文件夹及user.txt文件
find /root/test -name user    #全盘搜索则为 find / -name user ,会从所有目录中进行递归查找                                                                                                                                                                                                           
# /root/test/user       #结果

find /root/test -name user.txt                                                                                                                                                                                                          
# /root/test/user.txt   #结果

可以看到搜索user目录时没有搜索出username目录,搜索的文件/目录名必须和你的搜索内容一致才能找到。如果只包含搜索内容,则不会找到

find 命令是完全匹配的,必须和搜索关键字一模一样才会列出。

  1. 搜索时指定文件类型为文件
find /root/test -name "use*" -type f

如下指定搜索文件名带use的文件,就算当前目录中存在带use的目录,也会继续搜索该目录下的文件。但是该目录不作为结果显示出来

  1. Linux 中的文件名是区分大小写的,也就是说,搜索小写文件,是找不到大写文件的。如果想要大小通吃,就要使用 -iname 来搜索文件。

  1. 在/root/test目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示
find /root/test

只显示文件

find /root/test -type f

linux正则表达式

在上面使用find命令查找文件时,我们指定的文件/目录名是精准的,但很多时候我们是要模糊查找,比如查找所有目录中文件名带pass的文件,这就需要进行模糊匹配查找,而进行模糊匹配自然离不开正则表达式了。

正则表达式是一种字符模式,用于在查找过程中匹配特定的字符

.

匹配单个字符

*

匹配0个或多个字符

[x-y]

匹配集合范围内的

[^ ]

匹配不在集合中的

\

转义

  1. 在/root/test目录下查找文件/目录名中带use的文件/目录,会进行递归查找
find /root/test -name "use*"     #使用了正则则需要加引号

find同时查找符合多个格式的文件

在/root/test目录下查找带use或pass的文件/目录

find /root/test -name "use*" -or -name "pass*"

grep命令

Linux grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,即用于查找文件里符合条件的字符串,而find命令只是用来查找文件或者文件夹。它的使用权限也是所有用户。grep默认对字母大小写敏感,不过可以通过选项对grep屏蔽大小写敏感,该选项为 -i。

grep [options]

  • -s 不显示错误信息
  • -i 对大小写不敏感
  • --color 颜色输出

管道符|

“|”是Linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推

  1. 在config.conf文件中查找带pass的字符
cat config.conf | grep "pass*" #会将“cat config.conf”的内容传递给后边的命令进行查找

egrep

当我们要使用grep匹配多个特征时,比如查找config.conf文件中带pass或者带user的字符了?可以使用grep -E加上‘’|‘’,‘|’相当于or

  1. 查找config.conf文件中带pass或者带user的字符
cat config.conf | grep -E "pass*|user*"

也可以使用egrep,egrep等同于grep -E

  • grep -v "grep -v"或者"egrep -v xxx"是指不显示包含xxx的行或文件
  • --color 带颜色输出关键词

xargs命令

xargs可以将输入内容(通常通过命令行管道传递),转成后续命令的参数,通常用途有:

  • 命令组合:尤其是一些命令不支持管道输入,比如ls。
  • 避免参数过长:xargs可以通过-nx来将参数分组,避免参数过长。

有这么一种需求:递归查找某个目录中带config词的文件,并从这些文件中查找带user或者pass的词。按照我们上面学的,可以尝试使用如下命令,结果发现什么也查找不出?

find /root/test -name "config*"|egrep "user*|pass*"

原来egrep前通过管道传递进来的需要是类似于cat这样命令,而这里传递的是 “find /root/test -name 'config*'”是具体的文件而不是文件内容,这种是不支持管道输入的,所以什么也查找不出来,所以需要用到xargs命令

find /root/test -name "config*"|xargs egrep "user*|pass*"

成功在符合特征的所有文件中查找带user或者pass的词

案例

内网渗透中linux主机查找账号密码

#查找所有带user和pass的txt
find / -type f  -name "user*.txt" -or -name "pass*.txt" 2> /dev/null 
#查找所有文件中的账号密码
find / -type f|egrep -v "*.js"|egrep -v "*.css"|egrep -v "*.html"|egrep -v "*.htm"|egrep -v "*.woff"|egrep -v "*.jar"|egrep -v "*.java"|egrep -v "*.class"|egrep -v "*.properties"|egrep -v "*.MF"|egrep -v "*.tmp"|egrep -v "*.vm"|egrep -v "*.svn*"|egrep -v "*LICENSE*"|egrep -v "*.exe"|egrep -v "*.xml"|egrep -v "*.svg"|xargs egrep -s -i  "*user:|*user=|username:|username=|*pass:|*pass=|password:|password=|passwd:|passwd=|账号:|账号:|用户名:|用户名:|密码:|密码:" --color
#若需同时执行可以用 & 连接,即'命令1&命令2'

ps: 最好不要全盘进行查找,这样会消耗较大的系统资源,导致服务器压力过大,且非常耗时。可以指定查找某个目录,如find /root -type f

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐