【THM】web枚举
手工枚举
使用我们的浏览器开发者控制台
包括 Chrome 和 Firefox 在内的现代浏览器在“开发人员工具/控制台”中都有一套工具。我们将讨论Firefox的,但是,Chrome有一个非常相似的套件。该套件包括一系列工具,包括:
- 查看页面源代码
- 查找资产
- 在客户端(我们的浏览器)调试和执行 javascript 等代码
使用键盘上的“F12”,这是启动这套工具的快捷方式。
Gobuster简介
- 如何在 Kali Linux 上安装 Gobuster
- 如何使用“dir”模式枚举目录及其几个最有用的选项
- 如何使用“dns”模式枚举域/子域及其几个最有用的选项
- 去哪里寻求帮助
安装Gobuster命令 -----》》sudo apt install gobuster
有用的全局标志
Flag Long Flag Description -t --threads Number of concurrent threads (default 10) 并发线程数(默认为10) -v --verbose Verbose output 详细输出 -z --no-progress Don't display progress 不显示进度 -q --quiet Don't print the banner and other noise 不打印横幅和其他杂项 -o --output Output file to write results to 写入输出结果到文件 //将线程数更改为64以提高扫描速度,如果不更改线程的数量,Gobuster 可能会有点慢。
gobuster工作模式:
"dir"模式(扫描目录)
dir模式的基本用法介绍:
首先输入gobuster dir,这将告诉Gobuster你想要执行一个目录扫描,而不是其他扫描。 然后分别使用-u和-w选项添加 URL 和 wordlist(字典)。 例子: gobuster dir -u http://10.10.10.10 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 注意: URL 将是Gobuster开始进行查找的基础路径,上面的URL所对应的是服务器所对应的web服务的根目录。 例如,观察Linux系统中的Apache安装默认路径,可知其web服务的根目录是 /var/www/html 因此,如果你有一个“products”目录,并且你想枚举这个目录,你应该把这个URL设置为: http://10.10.10.10/products 你也可以把它想象成 http://example.com/path/to/folder 还要注意,在url中还指定了HTTP协议。这是必需的。
dir模式下的参数
Flag Long Flag Description -c --cookies 用于请求的cookie -x --extensions 要搜索的文件扩展名 -H --headers 指定HTTP Header请求头 -H 'Header1: val1' -H 'Header2: val2' -k --no-tls-validation 跳过 TLS 证书验证(注意: 标志 -k 可以与“ dir”模式和“ vhost”模式一起使用) -n --no-status 不打印状态码 -P --password 用于基础身份认证的密码 -s --status-codes 白名单状态码 -b --status-codes-blacklist 黑名单状态码 -U --username 用于基础身份认证的用户名
dns模式的基本用法
首先输入 gobuster dns,这将告诉 Gobuster你想要执行子域名暴破。 然后分别使用-d和-w选项添加目标域名和wordlist(字典)。 例子: gobuster dns -d mydomain.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
dns模式下的参数
Flag Long Flag Description -c --show-cname 显示 CNAME 记录(不能与“-i”选项一起使用) -i --show-ips 显示 IP 地址 -r --resolver 使用自定义的 DNS 服务器(格式为 server.com 或 server.com: port)
vhost模式的基本用法(虚拟机下的网站,不同于子域名,区别在于IP)
例子: gobuster vhost -u http://example.com -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
vhost模式的参数和dir模式下一样
kali linux下的字典
您将在下面找到默认情况下安装在 Kali Linux 上的有用单词列表。这是截至撰写本文时的最新版本,即 2020.3。任何带有通配符 (*) 字符的内容都表示有多个列表匹配。请记住,其中很多模式可以在模式之间互换。例如,“dir”模式的单词列表(例如来自 dirbuster 目录的单词列表)将包含“admin”、“index”、“about”、“events”等单词。其中很多也可能是子域。尝试使用不同的模式!
- /usr/share/wordlists/dirbuster/directory-list-2.3-*.txt
- /usr/share/wordlists/dirbuster/directory-list-1.0.txt
- /usr/share/wordlists/dirb/big.txt
- /usr/share/wordlists/dirb/common.txt
- /usr/share/wordlists/dirb/small.txt
- /usr/share/wordlists/dirb/extensions_common.txt - 在模糊文件时很有用!
wpscan简介
WPScan 框架能够枚举和研究 WordPress 网站中存在的一些安全漏洞类别 - 包括但不限于:
- 敏感信息泄露(已披露漏洞或CVE的插件和主题安装版本)
- 路径发现(查找错误配置的文件权限,即wp-config.php)
- 弱密码策略(密码暴力破解)
- 默认安装的存在(查找默认文件)
- 测试Web应用防火墙(常用WAF插件)
手工查询wordPress主题
http://redacted/wp-content/themes/twentytwentyone/assets/如这种themes后面就是主题名称(twentytwentyone)
WPscan扫描主题的参数
wpscan --url http://cmnatics.playground/ --enumerate t
手工查询Plugin插件的原理,由于wordPress。由于它们都位于/wp-content/plugins/pluginname中,因此WPScan可以枚举常见/已知插件。通过阅读WordPress的开发人员文档,我们可以了解“插件自述文件”,以弄清楚WPScan如何确定版本号。简单地说,插件必须有一个“README.txt”文件。此文件包含元信息,例如插件名称,与之兼容的WordPress版本和描述。
WPscan扫描Plugin插件参数
pscan --url http://cmnatics.playground/ --enumerate p
为用户枚举
我们已经强调WPScan能够执行暴力攻击。虽然我们必须提供一个密码列表,如rockyou.txt,但WPScan为用户枚举的方式很有趣。WordPress 网站使用作者发布帖子。作者实际上是一种用户。
果不其然,这位作者被我们的 WPScan 选中了:
WPscan枚举用户
wpscan --url http://cmnatics.playground/ --enumerate u
执行密码破解
执行密码攻击 在确定 WordPress 安装中可能的用户名列表后,我们可以使用 WPScan 对我们指定的用户名和我们提供的密码列表执行暴力破解技术 简单地说,我们使用用户名枚举的输出来构建一个命令,如下所示:wpscan –-url http://cmnatics.playground –-passwords rockyou.txt –-usernames cmnatic
调整WPScan的攻击性(以便应对WAF)
除非特别指定,否则WPScan在运行时会尽量减少攻击“强度”。(因为对Web服务器的大量请求会触发目标站点的防火墙的拦截功能,从而会导致我们发送的数据被目标服务器所阻塞) WPScan的低攻击强度意味着可能会有一些插件、主题信息会被我们的扫描操作所遗漏。 我们可以使用--plugins-detection命令并结合攻击性配置参数(passive/aggressive)来调整WPScan的攻击强度 --plugins-detection passive 或者 --plugins-detection aggressive
WPscan参数
Flag Description Full Example p 枚举插件 --enumerate p t 枚举主题 --enumerate t u 枚举用户 --enumerate -u v 使用WPVulnDB交叉引用漏洞,例如寻找易受攻击的插件(p) --enumerate vp aggressive WPScan攻击性配置 --plugins-detection aggressive
Nikto简介
Nikto 最初于 2001 年发布,多年来取得了突飞猛进的发展,由于开源性质和功能丰富,它已被证明是一种非常流行的漏洞扫描器。Nikto 能够对所有类型的 Web 服务器(并且不是特定于应用程序的,例如 WPScan)执行评估。Nikto 可用于发现可能的漏洞,包括:
- 敏感文件
- 过时的服务器和程序(即易受攻击的 Web 服务器安装)
- 常见的服务器和软件配置错误(目录索引、cgi 脚本、x-ss 保护)
安装Nikto
kali会内置安装Nikto工具,当然,我们也可以使用以下命令来手动安装以及更新Nikto:
sudo apt update && sudo apt install nikto
基本扫描
最基本的扫描可以通过使用 -h 标志并提供 IP 地址或域名作为参数来执行。此扫描类型将检索Web服务器或应用程序(即Apache 2,ApacheTomcat,Jenkins或JBoss)通告的标头,并查找任何敏感文件或目录(即login.php,/admin/等)
nikto -h domain/ip
Nikto插件介绍(-Plugin)
一些有趣的Nikto插件包括:
Plugin Name Description
apacheusers 尝试枚举Apache HTTP以验证有效用户身份
cgi 寻找我们可以利用的CGI脚本
robots 分析robots.txt文件,该文件的内容将指示我们能够访问哪些网站文件/文件夹
dir_traversal 尝试执行目录遍历攻击(如LFI)在Linux上查找系统文件,如/etc/passwd
(http://ip_address/application.php?view=../../../../../../../etc/passwd)
基本用法
nikto -h 10.10.10.1 -Plugin apacheuser
Nikto的详细扫描(-Display)
Argument Description Reasons for Use 1 显示 Web 服务器提供的任何重定向。 Web 服务器可能希望将我们重新定位到一个特定的文件或目录,因此我们需要相应地调整我们的扫描。 2 显示收到的任何 Cookie 应用程序经常使用 Cookie 作为存储数据的手段。 例如,Web 服务器使用会话,其中电子商务站点可以将产品作为 cookie 存储在您的购物篮中。证书也可以存储在 cookie 中。 E 输出任何错误 如果扫描没有返回所期望的结果,那么使用这个参数将对调试非常有用。
优化Nikto扫描以进行漏洞搜索(-Tuning)
Nikto保存扫描结果(-o)