首页 > 其他分享 >【靶场】THM-Web Enumeration练习

【靶场】THM-Web Enumeration练习

时间:2022-09-23 13:00:52浏览次数:84  
标签:Web 插件 -- 扫描 Enumeration THM WPScan txt Nikto

gobuster介绍

gobuster基础简介:

项目地址(关于gobuster的具体参数和用法 请参考该项目中的readme.md):

https://github.com/OJ/gobuster

在kali中的安装命令:

sudo apt install gobuster

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模式的基本用法介绍:

要使用“ 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。
还要注意,这里指定了 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					用于基本认证的用户名

例子:
gobuster dir -u http://10.10.252.123/myfolder -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x.html,.css,.js

注意:
如果启用了 HTTPS,很可能会遇到无效的证书错误,提示并非私密连接等,此时使用-k参数,可绕过无效验证。

关于dir模式的全部参数用法,请查看项目具体地址:https://github.com/OJ/gobuster#dir-mode-options

"dns" 模式(扫描子域名)

在渗透测试(或者CTF)过程中,检查目标顶级域的子域非常重要。
因为某些东西在常规域中打了补丁,并不意味着它也在子域中打了补丁。在这些子域中,可能存在一些漏洞能够被利用。
例如,如果 State Farm 拥有statefarm.com和mobile.statefarm.com两个域名,那么可能存在statefarm.com上没有的而mobile.statefarm.com却有的漏洞。
这就是为什么扫描子域也很重要!

dns模式的基本用法介绍:

要使用“ dns”模式,首先输入 gobuster dns。
就像“ dir”模式一样,这不是完整的命令,而只是开始。这告诉 Gobuster 您想要执行子域名爆破。
之后,需要分别使用-d 和-w 选项添加 域名 和 wordlist(字典)。

例子:
gobuster dns -d mydomain.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
//执行这条命令,Gobuster将对域名“mydomain.thm”进行子域名扫描。如果有任何可用的子域名,Gobuster 将找到它们并显示到终端界面。

dns模式的其他常用参数介绍:

Flag			Long Flag			Description
-c			--show-cname			显示 CNAME 记录(不能与“-i”选项一起使用)
-i			--show-ips				显示 IP 地址
-r			--resolver				使用自定义的 DNS 服务器(格式为 server.com 或 server.com: port)

关于dns模式的全部参数用法,请查看项目具体地址:https://github.com/OJ/gobuster#dns-mode-help

"vhost" 模式(扫描虚拟主机)

虚拟主机是同一台机器上的不同网站。
在某些情况下,它们可能看起来像子域,但不要被欺骗!虚拟主机是基于 IP 的,他们运行在同一台服务器上。这对于最终用户来说通常是不明显的。
在这种模式下运行 Gobuster 可能是值得的,看看它是否能提供其他东西。
如果主端口80/443扫描没有发现任何东西,那么扫描虚拟主机将是一个找到隐藏的完全不同的网站的好方法。

vhost模式的基本用法介绍:

要使用“ vhost”模式,首先输入 gobuster vhost。
就像其他模式一样,这不是完整的命令,而只是开始。这告诉 Gobuster 您想要执行一个虚拟主机爆破,而不是前面提到的其他方法之一。
之后,需要分别使用-u 和-w 选项添加 域名和 wordlist(字典)。

例子:
gobuster vhost -u http://example.com -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
//执行这条命令,Gobuster将使用选定的字典针对 http://example.com 进行虚拟主机扫描

vhost模式的其他参数介绍:

对“ dir”模式有用的许多相同的参数,实际上仍然适用于“vhost”模式。
关于vhost模式的其他参数介绍,请参考“ dir”模式部分,或者查看关于vhost模式完整参数列表的官方文档:https://github.com/OJ/gobuster#vhost-mode-options

关于字典的使用

Kali Linux Default Lists(kali默认字典)

下面是一个默认安装在 Kali Linux 上的比较有用的字典,是2020.3的版本。
任何带有通配符(*)字符的内容都表明有多个匹配的字典:

/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   这个字典在进行fuzzing的时候非常有用!

Non-Standard Lists(非标准字典)

从外部也可以安装字典到kali系统中,最常用的一个强大的github字典合集项目是:SecLists
可在kali中使用以下命令进行安装:
sudo apt install seclist

gobuster操作task

添加(并非覆盖) 目标url及其对应域名 到本地hosts文件

echo "10.10.73.36 webenum.thm" >> /etc/hosts

扫描目标域名的目录

gobuster dir -u http://webenum.thm -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

image

进某一目录进行更深一层的目录扫描(题目要求:找出C*********目录下的文件有哪些扩展名)

gobuster dir -u http://webenum.thm/Changes  -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x html,js,txt,conf -t 64

image

依次对第一次结果中的每个目录进行更深一层的扫描,查找 txt 和 php 等扩展名,这些扩展名是存储flag的常见格式,

找到目标文件之后,尝试在浏览器的地址栏中输入包含目标文件路径的url地址,打开flag文件,并查看其中的内容。

image

输入url路径查看flag文件内容:

image
image

或者输入以下url路径也可以:
image
image

使用 vhost 模式和一个常见的子域名字典来扫描这台服务器上的虚拟主机:

gobuster vhost -u http://webenum.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt

image

将虚机主机扫描结果添加到本地的/etc/hosts

echo "10.10.73.36 webenum.thm products.webenum.thm learning.webenum.thm" >> /etc/hosts

扫描每个虚拟主机并寻找通用的flag文件扩展名,如.php 和 .txt,以便发现flag文件

gobuster dir -u http://learning.webenum.thm  -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,txt

image

gobuster dir -u http://products.webenum.thm  -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,txt

image

在浏览器中输入带flag文件的url路径地址,查看flag文件内容
image

gobuster任务答案

image

WPScan介绍

WPScan基础简介

WPScan 框架能够列举和研究 WordPress 站点中存在的一些安全漏洞类别,包括但不限于:

Sensitive Information Disclosure (Plugin & Theme installation versions for disclosed vulnerabilities or CVE's)
查看公开的敏感信息(WordPress插件和WordPress主题安装版本的已公开漏洞或 CVE)

Path Discovery (Looking for misconfigured file permissions i.e. wp-config.php)
路径发现(寻找权限配置错误的文件,即 wp-config.php)

Weak Password Policies (Password bruteforcing) 
弱密码检测(密码爆破)

Presence of Default Installation (Looking for default files)
检测默认安装(查找默认文件)

Testing Web Application Firewalls (Common WAF plugins)
测试 Web 应用程序防火墙(通用 WAF 插件)

WPScan安装

kali默认会安装WPScan,在kali中可以使用以下命令安装或者更新WPScan:

sudo apt update && sudo apt install wpscan 

WPScan数据库介绍

在枚举主题和插件时,WPScan 使用本地数据库中的信息作为主要参考点。
WPScan 在枚举时使用的一种技术是寻找常见的主题和插件。
在使用 WPScan 之前,强烈建议您在执行任何扫描之前更新此数据库

更新命令为:
wpscan --update 

image

WPScan工作模式

枚举已安装的主题

对于正在运行的 WordPress ,WPScan 有几种确定活动主题的方法。
我们也可以尝试手动查看WordPress主题。
简单地说,我们可以查看我们的网络浏览器加载的资产,然后寻找这些资产在网络服务器上的位置。
使用浏览器开发工具中的“网络”选项卡,你可以看到当你访问一个网页时加载了什么文件。
以下面的截图为例,我们可以看到许多资产已经被加载,其中一些是脚本和主题的样式,它们决定了浏览器如何呈现网站。
下面的截图中突出显示的是网址: http://redacted/wp-content/themes/twentytwentyone/assets/

image

我们可以猜测当前主题的名称是“ twentytwentyone”。
在检查了网站的源代码之后,我们能注意到对“ twentytwentyone”的额外引用。

image

我们使用 WPScan 通过带 t 参数的--enumerate标志来加速这个过程,命令如下所示:

wpscan --url http://cmnatics.playground/ --enumerate t 

几分钟后,我们可以看到一些结果。
WPScan 的强大之处在于,这个工具可以让你知道 它是如何确定所得到的结果的。
在以下截图中,我们被告知,“twentytwo”的主题名称 是通过扫描“已知位置”确认的。
在2020年的 WordPress 版本中,“twentytwo”主题是默认的 WordPress 主题。

image

枚举已安装的插件

Webserver 的一个非常常见的特性是“目录列表”,通常在默认情况下启用。
简单地说,“目录列表”是我们导航到的目录中的文件列表(就像我们要使用文件资源管理器或 Linux 的 ls 命令一样)。
此上下文中的 URL 与文件路径非常相似。
比如URL http://cmnatics.playground/a/directory 实际上是 webserver/a/目录的配置根目录

image

当网站没有默认的首页的时候,直接访问会显示网站目录下的文件夹资源,一般的默认首页是“ index.html”或者“ index.php”
由于这些文件不在/a/目录中,所以显示的内容是:

image

WPScan 可以利用以上特性作为一种技术来寻找已安装的插件。
因为这些插件都位于/wp-content/plugins/pluginname 中,所以 WPScan 可以枚举常见的/已知的插件
通过阅读 WordPress 的开发者文档,我们可以了解 WPScan 是如何确定WordPress版本号的。
简单地说,插件必须有一个“ README.txt”文件。这个文件包含一些元信息,比如插件名称、与之兼容的 WordPress 版本以及描述。
通过这个文件 WPScan可以获取到WordPress的版本号等信息。

image

WPS 也可以使用其他方法来发现插件(比如寻找引用或嵌入页面中的插件资产)。
我们可以将--enumerate标志与 p 参数一起使用,命令如下所示:

wpscan --url http://cmnatics.playground/ --enumerate p 

枚举用户名

WPScan可以执行爆破攻击,在枚举的同时 我们必须提供一个字典,比如 rockyou.txt
WordPress 网站的作者可以发布文章,作者实际上也是一种用户类型。

枚举用户的命令如下:
wpscan --url http://cmnatics.playground/ --enumerate u 

获取对应版本的WordPress已知漏洞

在目前的命令中,我们只列举了 WordPress 来发现什么样的主题、插件和用户。
我们必须查看输出,并使用 MITRE、 NVD 和 CVEDetails 等站点查找这些插件的名称和版本号来确定一些已知漏洞

在WPScan 可以使用——enumerate + v参数,我们将这个参数与另一个参数(如插件的 p)一起提供,就能获取与插件版本对应的已知漏洞信息
例如,我们的语法是这样的:
wpscan --url http://cmnatics.playground/ --enumerate vp

注意:这里需要设置 WPScan 来使用 WPVulnDB API 以便查看对于版本的已知漏洞情况

执行密码攻击

在确定已经安装WordPress的用户名列表之后,我们就可以使用 WPScan 对指定的用户名使用字典来进行密码爆破 从而获取用户密码。

简单地说,我们使用用户名枚举的输出来构建如下命令:
wpscan –-url http://cmnatics.playground –-passwords rockyou.txt –-usernames cmnatic
//对用户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

WPScan操作task

先更新WPScan数据库

wpscan --update 

image

枚举WordPress主题:

wpscan --url http://wpscan.thm --enumerate t 

image

结果:

image

枚举WordPress插件

wpscan --url http://wpscan.thm --enumerate p

image

结果:

image

枚举用户名

wpscan --url http://wpscan.thm --enumerate u

image

结果:

image

密码爆破(已知用户名的前提下)

wpscan --url http://wpscan.thm --passwords /usr/share/wordlists/rockyou.txt --usernames phreakazoid

image

结果:

image

WPScan任务答案

image
image

Nikto介绍

Nikto是一款漏洞扫描器,能够在所有类型的 webserver 上执行评估(并且不是特定于应用程序的,比如 WPScan特定用于WordPress).
Nikto 可以用来发现可能的漏洞,包括:
敏感文件
过时的服务器和程序(即是否安装易受攻击的 Web 服务器)
常见的服务器和软件错误配置(目录索引、 cgi 脚本、 x-ss 保护)

安装 Nikto

kali已内置Nikto,可以用以下命令重新安装或者更新Nikto:
sudo apt update && sudo apt install nikto

Nikto的使用

Nikto基本扫描

最基本的扫描可以通过使用-h 标志并提供一个 IP 地址或域名作为参数来执行。
这种扫描类型将检索由 web 服务器或应用程序(例如 Apache2、 Apache Tomcat、 Jenkins 或 JBoss)发布的头文件,并查找任何敏感的文件或目录(例如 login.php、/admin/等)

命令如下:
nikto -h ip
//不指定端口时,会默认扫描80端口

image

分析以上结果:

Nikto 使用图标识别出应用程序是 Apache Tomcat
显示:HTTP 方法“ PUT”和“ DELETE”可以由客户端执行-我们可以利用这些来利用应用程序上传或删除文件
显示:“/example/servlets/index.html”,这是默认 Apache Tomcat 应用程序的位置

Nikto扫描多个主机和端口

我们可以以类似于使用 Nmap 工具的方式给 Nikto 提供多个参数。
我们也可以直接从 Nmap 扫描中获取信息来扫描主机范围。
通过Nmap扫描子网,我们可以在整个网络范围内寻找主机。
然后指示 Nmap 使用 Nmap 的 -oG 标志将扫描输出成对 Nikto 友好的格式。

例如,我们可以用 Nmap (使用默认的 web 端口80)扫描172.16.0.0/24(子网掩码255.255.255.0,产生254个可能的主机) ,并像这样解析输出到 Nikto:
nmap -p80 172.16.0.0/24 -oG - | nikto -h -  -o a.txt

扫描一个特定主机上的多个端口。我们可以通过使用-p 标志并提供由逗号分隔的端口号列表来实现这一点,
例如:
nikto -h 10.10.10.1 -p 80,8000,8080

image

Nikto插件介绍

插件进一步扩展了 Nikto 的功能。
使用从基本扫描中收集的信息,我们可以选择适合我们目标的插件。
您可以在 Nikto 中使用--list-plugins 标志来列出插件,
或者以一种更容易在线阅读的格式查看整个插件列表:https://github.com/sullo/nikto/wiki/Plugin-list
一些有趣的插件包括:
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)
我们可以通过使用-Plugin参数和我们希望使用的插件的名称来指定 将要使用的Nikto插件
例如,如果想使用“ apacheuser”插件,我们的 Nikto 扫描将如下所示:

nikto -h 10.10.10.1 -Plugin apacheuser

image

Nikto的详细扫描

我们可以通过使用-Display 标志提供以下参数来增加 Nikto 扫描的冗长性。
除非指定,否则 Nikto 给出的输出不是整个输出,它有时可能是不相关的输出(但情况并非总是如此!)

参数:
Argument				Description	        			Reasons for Use

1	          显示 Web 服务器提供的任何重定向。 	    Web 服务器可能希望将我们重新定位到一个特定的文件或目录,因此我们需要相应地调整我们的扫描。


2			  显示收到的任何 Cookie				 应用程序经常使用 Cookie 作为存储数据的手段。
									例如,Web 服务器使用会话,其中电子商务站点可以将产品作为 cookie 存储在您的购物篮中。证书也可以存储在 cookie 中。

E			  输出任何错误	                 	  如果您的扫描没有返回您所期望的结果,那么这将对调试非常有用!

Nikto优化扫描进行漏洞搜索

Nikto可以扫描几类漏洞,我们可以指定我们的扫描进行枚举和测试。
下面的列表并不详细,只包括可能经常使用的部分。
我们可以使用-Tuning标志并在 Nikto 扫描中提供一个值来进行漏洞搜索:

类别名称     				                        描述                                                         调整选项(Tuning Option)
File Upload			     网络服务器上搜索任何允许我们上传文件的内容。这可以用来上传要执行的应用程序的反向shell。                     0
文件上传

Misconfigurations / Default Files      搜索 Web 服务器上敏感的常见文件(不应该访问的文件,如配置文件)。                           2
错误配置/默认文件

Information Disclosure   收集关于 Web 服务器或应用程序的信息(例如,版本号、 HTTP 头或任何可能有助于我们在以后的攻击中利用的信息)      3
信息泄露

Injection                       搜索我们可以执行某种注入攻击(如 XSS 或 HTML)的可能位置,即:注入点                               4
注入

Command Execution                搜索任何允许我们执行操作系统命令的内容(例如生成shell)                                          8
命令执行

SQL Injection
SQL注入                           查找具有易受 SQL 注入影响的 URL 参数的应用程序                                               9

Nikto保存扫描结果

Nikto支持将扫描结果保存为 文本文件.txt格式 以及 html报告.html格式

我们可以使用-o 参数(- Output 的缩写)并提供文件名和兼容的扩展名。
我们也可以特别指定格式(- f) ,但是 Nikto工具足够智能,它可以使用我们在-o 参数中提供的扩展名来相应地调整输出文件格式:
例子:
nikto -h http://ip_address -o report.html

image

image

Nikto操作task

使用Nikto扫描 得出目标ip 80端口上的服务器名称和版本

nikto -h 10.10.39.109:80

image

由上图可知

服务器名称和版本为:Apache/2.4.7

扫描其他常见web端口的服务器名称和版本

 nikto -h 10.10.39.109 -p 80,8080

image

由上图可知:

服务器名称和版本:Apache-Coyote/1.1

cookie的名称(是cookie名称不是cookie值):JSESSIONID

Nikto任务答案

image
image

标签:Web,插件,--,扫描,Enumeration,THM,WPScan,txt,Nikto
From: https://www.cnblogs.com/Hekeats-L/p/16722345.html

相关文章

  • 从零基础开始使用 WebGL — 目录
    WebGL作为一个非常底层的API,学习和使用起来非常困难,因为WebGL需要大量的背景知识。网上教程一般都是介绍API就开始渲染,介绍不多,容易让人迷惑,也容易被劝退。即使你学会......
  • 零基础使用 WebGL — 快速入门
    WebGL作为一个非常底层的API,学习和使用起来非常困难,因为WebGL需要大量的背景知识。网上教程一般都是介绍API就开始渲染,介绍不多,容易让人迷惑,也容易被劝退。即使你学会......
  • 分享一个便于使用且轻量级的webapi调试工具,Postman的chrome浏览器插件“Tabbed Postma
    分享一个便于使用且轻量级的webapi调试工具,Postman的chrome浏览器插件“TabbedPostman-RESTClient”https://chrome.google.com/webstore/detail/tabbed-postman-rest......
  • .NET6 下的 WebApi版本控制
    1.创建普通WebApi项目删除自带的Controller控制器2.引入Api版本控制的服务3.在Controller文件夹下建立两个子文件V1和V2并分别建立两个Controller控制器如图所......
  • 对Javaweb的相关练习之利用.jsp文件和.java文件将输入的数据存储到指定的数据库中
    练习分析importjavax.servlet.*;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.*;importjava.awt.datatransfer.DataFlavor;importjava.......
  • EasyCVR视频融合平台WebRTC无法播放的原因汇总及解决方法阐述
    EasyCVR视频融合平台基于云边端一体化架构,可将接入的流媒体进行处理及分发,分发的视频格式包括RTSP、RTMP、FLV、HLS、WebRTC等,实现全终端、全平台覆盖,满足多场景下的视频能......
  • .NET Core Web APi类库如何内嵌运行?
    话题我们知道在.NETFramework中可以嵌入运行WebAPi,那么在.NETCore(.NET6+称之为.NET)中如何内嵌运行WebApi呢,在实际项目中这种场景非常常见,那么我们本节以.NET6.0作为......
  • Javaweb前基
    Javaweb01web静态web:htmlcss提供给所有人看的数据始终不会发生变化动态web:每个人不同时间不同地点看到的信息各不相同​技术栈:servlet/JSP、......
  • WebSocket protocol
    WebSocket介绍与原理目的:即时通讯,替代轮询网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的技术能力通常是采用轮询、Comet技术解决。HTTP协议是非持久化......
  • WEB自动化-09-Cypress 测试报告
    9测试报告  一份好的测试报告,可以很直观的看出整个测试过程的各种数据。而Cypress的测试报告是基于Mocha,因此任何支持Mocha的测试报告都可以应用于Cypress。但实际上......