WWWGrep 是一种快速搜索的“grep”机制,它按类型检查 HTML 元素,允许执行集中式(单个)、多文件(基于文件的 URL)以及递归式(可选择是否基于根域名)搜索。页面头部的名称和值也可以按此方式递归搜索。WWWGrep 旨在帮助攻击方和防御方快速审查待检查的代码库,以下列举了一些用例和示例。
安装
git clone
pip3 install -r requirements.txt
python3 wwwgrep.py <参数和选项>
依赖项(pip3 install -r requirements.txt)
- Python 3.5+
- BeautifulSoup 4
- UrlLib.parse
- requests_html
- argparse
- requests
- re
- os.path
wwwgrep.py [目标/文件] [搜索字符串] [搜索参数/条件/递归等]
搜索输入
search_string 指定要搜索的字符串,或者使用 "" 表示搜索所有指定类型的对象
-t --target 指定单个 URL 作为搜索目标
-f --file 指定包含 URL 列表的文件进行搜索
递归
-rr --recurse-root 将 URL 递归限制在目标提供的域名范围内
-ra --recurse-any 允许递归超出目标域名的范围
匹配条件
-i --ignore-case 执行不区分大小写的匹配(默认区分大小写)
-d --dedupe 允许每页出现重复结果(默认去重)
-r --no-redirects 不允许重定向(默认允许重定向)
-b --no-base-url 从输出中省略匹配结果的 URL(默认包含 URL)
-x --regex 允许使用正则表达式匹配(search_string 被视为正则表达式,默认关闭)
-e --separator 指定输出分隔符(默认为 : )
-j --java-render 启用对页面对象和文本的 JavaScript 渲染(默认关闭)
-p --linked-js-on 启用对加载的外部 JavaScript(script src 标签)的搜索(默认关闭)
请求参数
-ps --https-proxy 指定 HTTPS 协议的代理,格式为 https://<ip>:<port>
-pp --http-proxy 指定 HTTP 协议的代理,格式为 http://<ip>:<port>
-hu --user-agent 指定请求中使用的 User-Agent 字符串
-ha --auth-header 指定请求头部中使用的 Bearer token 或其他认证字符串
搜索参数
-s --all 搜索页面所有 HTML 和脚本中符合搜索条件的内容
-sr --relative 搜索页面链接中符合搜索条件的相对 URL
-sa --absolute 搜索页面链接中符合搜索条件的绝对 URL
-si --input-fields 搜索页面输入字段中符合搜索条件的内容
-ss --scripts 搜索脚本标签中符合搜索条件的内容
-st --text 搜索页面中符合搜索条件的可见文本
-sc --comments 搜索页面注释中符合搜索条件的内容
-sm --meta 搜索页面元数据中符合搜索条件的内容
-sf --hidden 搜索隐藏字段中符合搜索条件的内容
-sh --header-name 搜索响应头部名称中符合搜索条件的内容
-sv --header-value 搜索响应头部值中符合搜索条件的内容
在站点上递归查找所有名为 login 的输入字段,且不离开根域名,匹配时不区分大小写
wwwgrep.py -t https://www.target.com -i -si “login” -rr
在站点所有页面中查找包含“to do”字样的注释
wwwgrep.py -t https://www.target.com -i -sc “to do” -rr
在特定网页上查找所有注释
wwwgrep.py -t https://www.target.com/some_page -i -sc “”
在文件 input.txt 中包含的 Web 应用列表中,使用站点递归查找所有隐藏字段
wwwgrep.py -f input.txt -sf “” -rr