CeWL | CeWL 使用实例
关注这个工具的其它相关内容:社工字典生成工具 —— CeWL 使用手册-CSDN博客
0x01:占位符 - 含义对照表
占位符 | 含义 | 数据类型 | 示例 |
---|---|---|---|
<URL> | 网址 | str | http://blue17.vip |
<FileName> | 文件名 | str | ./dict.txt |
<WordLength> | 单词长度 | int | 3 |
<Depth> | 爬取深度 | int | 2 |
0x02:CeWL 使用实例
0x0201:CeWL 使用实例 - 入门篇
1. 爬取指定 URL,并打印出字典
使用下面的语句,CeWL 可以根据用户指定的 URL 和默认的脚本配置(爬取深度:2;密码长度大于等于 3),爬取站点内容并打印出字典(注意,只是打印,它并没有保存字典):
语法: cewl <URL>
示例: cewl https://authlab.digi.ninja/
2. 将字典保存到指定文件中
使用下面的语句,可以让 CeWL 将挖掘出来的字典保存到指定的文件中(运行期间,CeWL 并不会回显挖掘到的内容):
语法: cewl <URL> -w <FileName>
示例: cewl https://authlab.digi.ninja/ -w ./dict.txt
3. 生成特定长度的字典
-m
参数可以指定 CeWL 抓取内容的最短长度(默认为 3):
语法: cewl <URL> -m <WordLength>
示例: cewl https://authlab.digi.ninja/ -m 5
4. 增加爬取深度
-d
参数可以指定 CeWL 的爬取深度(默认为 2),使用该参数,可以爬取更多与目标站点相关联的其他站点的内容,但是如果该值过大,可能会爬取一些其他网站的不相关内容:
语法: cewl <URL> -d <Depth>
示例: cewl https://authlab.digi.ninja/ -d 3
5. 打印爬取过程的详细信息
在使用 CeWL 的时候,一般都是在工具完成爬取后,一次性显示爬取结果。这会导致用户对工具运行状态的不了解,我们可以通过 -v
选项,让工具打印爬取过程的详细信息:
语法: cewl <URL> -v
示例: cewl https://authlab.digi.ninja/ -v
0x0202:CeWL 使用实例 - 进阶篇
1. 打印工具调试信息
通过 --debug
选项,可以开启工具的调试模式。用户可以在此模式中查看工具爬取过程中出现的错误和元数据:
语法: cewl <URL> --debug
示例: cewl https://authlab.digi.ninja/ --debug
2. 接受包含数字与字母的内容
默认情况下,CeWL 是爬取目标网站的单词来生成字典(笔者试了,中文站点也可也爬取,但是内容一言难尽),但是部分网站的内容中可能包含单词与字母的混用,如果你想让你生成的字典中包含这些内容,可以使用 --with-numbers
选项:
语法: cewl <URL> --with-numbers
示例: cewl https://authlab.digi.ninja/ --with-numbers
3. CeWL 摘要/基础认证 - 无效
注意:该方法经笔者实测参数无效,不能绕过认证。
如果目标网站需要进行页面登录认证的话,我们就需要使用下面的参数来绕过页面认证的限制:
OPTIONS | 含义(英) | 含义(中) |
---|---|---|
--auth_type | Digest or basic | 指定认证类型 Digest 或者 Basic |
--auth_user | Authentication Username | 登录的用户名 |
--auth_pass | Authentication Password | 登录的密码 |
拓展阅读:Digest & Basic 验证类型
Digest: 该方法是一种较为安全的认证方式,它使用摘要算法对用户名和密码进行加密,然后将加密后的摘要发送给服务器进行验证。这种方式相对于 Basic 认证更安全,因为它不会再网络上明文传输用户名和密码。
Basic: 一种较为简单的认证方式,它直接将用户名和密码以 Base64 编码发送给服务端进行验证。虽然 Base64 编码并不是一种加密方式,但它可以将明文转换为一种不易直接阅读的格式。然而,由于 Base64 编码很容易被解码,因此 Basic 认证方式安全性相对较低。
语法 - Digest: cewl <URL> --auth_type Digest --auth_user <userName> --auth_pass <passWord>
语法 - Basic: cewl <URL> --auth_type basic --auth_user <userName> --auth_pass <passWord>
4. CeWL 自定义 Header 内容
在先前的实验中,我们发现 CeWL 的认证模块无法绕过网站的登录机制,从而无法获取到需要登录后才能访问的内容。为了解决这个问题,我们可以尝试使用 CeWL 的自定义 Header 功能,以此来模拟登录过程,进而爬取那些需要登录权限才能查看的信息。
许多站点验证用户是否完成登录都是看用户的登录凭证,这些凭证一般放在用户请求包的 Header 中的 Cookie 字段里。
比如 DVWA 靶场 登录的凭证就是放在 Cookie 中:
直接使用 CeWL 爬取 DVWA 靶场登录后的页面会显示这样的内容:
为了解决上面的问题,我们可以先登录目标站点后,将登录凭证保存下来,然后手动添加到 CeWL 工具的请求头中,从而伪造登录成功后的状态:
语法: cewl <URL> --header <Header-key>:<Header-value>
示例:cewl http://127.0.0.1/dvwa/index.php -v --header Cookie:"security=impossible; PHPSESSID=6u1afet6htqjcnfbt6kh6u37tv"
5. CeWL 代理配置
我们可以通过使用下面的参数,来配置工具使用的代理(用来抓取国外的站点):
OPTIONS | 含义(英) | 含义(中) |
---|---|---|
--proxy_host | Proxy host | 代理服务器的 IP 地址 |
--proxy_port | Proxy port,default 8080 | 连接代理服务器的端口,默认 8080 |
--proxy_username | Username for proxy, if required | 代理服务器登录账号,如果需要的话 |
--proxy_password | Password for proxy, if required | 代理服务器登录密码,如果需要的话 |
比如,下面这个示例,就是配置了 CeWL 的请求利用本地的 BurpSuite 进行代理发包:
示例: cewl https://authlab.digi.ninja/ --proxy_host 192.168.0.1 --proxy_port 8080 -v
0x0203:CeWL 使用实例 - 拓展篇
1. 从网站中获取 Email
你可以使用 -e
选项来启用 Email 参数,并配合 -n
选项来隐藏工具在爬取网站过程中生成的密码字典:
语法: cewl <URL> -e -n
示例: cewl https://digi.ninja/ -e -n
2. 计算网站字典中单词的重复次数
-c
参数可以让 CeWL 计算指定站点中单词重复出现的次数(并按降序排列):
语法: cewl <URL> -c
示例: cewl https://digi.ninja/ -c
0x03:参考资料
-
Kali Linux 字典生成工具 Cewl 使用全指南 - FreeBuf 网络安全行业门户