被动信息收集

WHOIS

我们可以将WHOIS视为域名的“白色页面”。它是一个基于TCP的面向事务的查询/响应协议,默认情况下侦听TCP端口43。我们可以使用它来查询包含域名、IP地址或自治系统的数据库,并为Internet用户提供信息服务。该协议在RFC 3912中定义。第一个WHOIS目录是在20世纪70年代初由伊丽莎白·费恩勒(Elizabeth Feinler)和她的团队在斯坦福大学的网络信息中心(NIC)创建的。他们与她的团队一起创建了基于计算机物理地址划分类别的域。我们可以在这里阅读更多关于WHOIS的迷人历史。

WHOIS域名查找允许我们检索有关已注册域名的信息。互联网域名和数字公司ICANN)要求认证注册商在注册域名后立即在Whois数据库中输入保持器的联系信息、域名的创建和到期日期以及其他信息。简单来说,Whois数据库是目前全球注册的所有域名的可搜索列表。

WHOIS查询最初使用命令行工具执行。如今,有许多基于Web的工具,但命令行选项通常给予我们对查询的最大控制权,并帮助过滤和排序结果输出。Sysinternals WHOISfor Windows或LinuxWHOIS命令行实用程序是我们收集信息的首选工具。但是,我们也可以使用一些在线版本,如whois.domaintools.com

我们将从前面的命令中获得以下响应,以针对whois域运行facebook.com查找。这个whois命令的一个例子是:

mikannse7@htb[/htb]$ export TARGET="facebook.com" # Assign our target to an environment variable
mikannse7@htb[/htb]$ whois $TARGET

Domain Name: FACEBOOK.COM
Registry Domain ID: 2320948_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.registrarsafe.com
Registrar URL: https://www.registrarsafe.com
Updated Date: 2021-09-22T19:33:41Z
Creation Date: 1997-03-29T05:00:00Z
Registrar Registration Expiration Date: 2030-03-30T04:00:00Z
Registrar: RegistrarSafe, LLC
Registrar IANA ID: 3237
Registrar Abuse Contact Email: abusecomplaints@registrarsafe.com
Registrar Abuse Contact Phone: +1.6503087004
Domain Status: clientDeleteProhibited https://www.icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://www.icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://www.icann.org/epp#clientUpdateProhibited
Domain Status: serverDeleteProhibited https://www.icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited https://www.icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited https://www.icann.org/epp#serverUpdateProhibited
Registry Registrant ID:
Registrant Name: Domain Admin
Registrant Organization: Facebook, Inc.
Registrant Street: 1601 Willow Rd
Registrant City: Menlo Park
Registrant State/Province: CA
Registrant Postal Code: 94025
Registrant Country: US
Registrant Phone: +1.6505434800
Registrant Phone Ext:
Registrant Fax: +1.6505434800
Registrant Fax Ext:
Registrant Email: domain@fb.com
Registry Admin ID:
Admin Name: Domain Admin
Admin Organization: Facebook, Inc.
Admin Street: 1601 Willow Rd
Admin City: Menlo Park
Admin State/Province: CA
Admin Postal Code: 94025
Admin Country: US
Admin Phone: +1.6505434800
Admin Phone Ext:
Admin Fax: +1.6505434800
Admin Fax Ext:
Admin Email: domain@fb.com
Registry Tech ID:
Tech Name: Domain Admin
Tech Organization: Facebook, Inc.
Tech Street: 1601 Willow Rd
Tech City: Menlo Park
Tech State/Province: CA
Tech Postal Code: 94025
Tech Country: US
Tech Phone: +1.6505434800
Tech Phone Ext:
Tech Fax: +1.6505434800
Tech Fax Ext:
Tech Email: domain@fb.com
Name Server: C.NS.FACEBOOK.COM
Name Server: B.NS.FACEBOOK.COM
Name Server: A.NS.FACEBOOK.COM
Name Server: D.NS.FACEBOOK.COM
DNSSEC: unsigned

<SNIP>

我们可以使用Windows Sysinternals中的whois.exe收集相同的数据:

C:\htb> whois.exe facebook.com

Whois v1.21 - Domain information lookup
Copyright (C) 2005-2019 Mark Russinovich
Sysinternals - www.sysinternals.com

Connecting to COM.whois-servers.net...

WHOIS Server: whois.registrarsafe.com
Registrar URL: http://www.registrarsafe.com
Updated Date: 2021-09-22T19:33:41Z
Creation Date: 1997-03-29T05:00:00Z
Registry Expiry Date: 2030-03-30T04:00:00Z
Registrar: RegistrarSafe, LLC
Registrar IANA ID: 3237
Registrar Abuse Contact Email: abusecomplaints@registrarsafe.com
Registrar Abuse Contact Phone: +1-650-308-7004
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Name Server: A.NS.FACEBOOK.COM
Name Server: B.NS.FACEBOOK.COM
Name Server: C.NS.FACEBOOK.COM
Name Server: D.NS.FACEBOOK.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2021-10-11T06:03:10Z <<<

<SNIP>

从该输出中,我们收集了以下信息:

Organisation Facebook, Inc.Facebook公司
Locations US, 94025 Menlo Park, CA, 1601 Willo Rd94025 Menlo Park,美国,1601 Willo Rd,地图
Domain Email address domain@fb.com
Registrar Email address abusecomplaints@registrarsafe.com
Phone number +1.6505434800
Language English (US)
Registrar RegistrarSafe, LLCRegistrarSafe,LLC
New Domain新域 fb.com
DNSSEC unsigned 无符号
Name servers A.NS.FACEBOOK.COM
B.NS.FACEBOOK.COM
C.NS.FACEBOOK.COM
D.NS.FACEBOOK.COM

虽然这些信息本身并不足以让我们发起攻击,但这些都是我们希望稍后记录下来的重要数据。

DNS

我们可以开始进一步研究数据,以确定特定的目标,现在我们有一些关于我们的目标的信息。域名系统DNS)是寻找此类信息的绝佳场所。首先,让我们来看看什么是DNS。

什么是DNS?

DNS是互联网的电话簿。域名如hackthebox.cominlanefreight.com允许人们访问互联网上的内容。互联网协议(IP)地址用于在Web浏览器之间进行通信。DNS将域名转换为IP地址,允许浏览器访问Internet上的资源。

每个连接到互联网的设备都有一个唯一的IP地址,其他机器可以使用它来定位它。DNS服务器最大限度地减少了人们学习IP地址(如104.17.42.72中的IPv4)或更复杂的现代字母数字IP地址(如2606:4700::6811:2b48中的IPv6)的需要。当用户在其Web浏览器中键入www.facebook.com时,必须在用户键入的内容与访问www.facebook.com网页所需的IP地址之间进行转换。

使用DNS的一些优点是:

  • 它允许使用名称而不是数字来标识主机。
  • 记住一个名字比记住一个数字容易得多。
  • 通过将名称重定向到新的数字地址,服务器可以更改数字地址,而无需通知Internet上的每个人。
  • 一个名称可能指的是在不同服务器之间分配工作负载的多个主机。

DNS结构中有一个名称层次结构。该系统的根,或最高级别,是未命名的。

顶级域名服务器,顶级域名,可以比作图书馆里的一个书架。主机名的最后一部分由这个名称服务器托管,它是搜索特定IP地址的下一个阶段(在www.facebook.com中,DNS服务器是com)。大多数TLD已委托给各个国家/地区的经理,他们从ISO-3166-1表中获得代码。这些被称为国家代码顶级域名或由联合国机构管理的国家代码顶级域名。

也有少量的“通用”顶级域名(gTLD)与特定国家或地区无关。根据ISO-3166-1中规定的政策建议,域名管理人员被授予负责二级域名(SLD)和较低级别名称层次结构分配的程序和政策。

每个国家的管理员组织国家代码域。这些管理人员代表互联网社区提供公共服务。资源记录是DNS查询的结果,具有以下结构:

Resource Record 域名(通常是完全限定的域名)是资源记录的第一部分。如果您不使用完全限定的域名,则记录所在区域的名称将附加到名称的末尾。
TTL 以秒为单位,Time-To-Live(TTL)默认为SOA记录中指定的最小值。
Record Class Internet, Hesiod, or Chaos
Start Of Authority (SOA) 它应该在区域文件中的第一个,因为它指示区域的开始。每个区域只能有一个SOA记录,此外,它还包含区域的值,如序列号和多个过期超时。
Name Servers (NS) 分布式数据库由NS记录绑定在一起。它们负责区域的权威名称服务器和子区域对名称服务器的权威。
IPv4 Addresses (A) A记录只是主机名和IP地址之间的映射。“前进”区域是指具有A记录的区域。
Pointer (PTR) PointerPTR PTR记录是IP地址和主机名之间的映射。“反向”区域是那些有PTR记录的区域。
Canonical Name (CNAME) Name ServersNS 别名主机名使用A记录映射到CNAME记录主机名。
Mail Exchange (MX) Name ServersNS MX记录标识将接受特定主机的电子邮件的主机。已为指定的主机分配优先级值。多个MX记录可以存在于同一主机上,并且由特定主机的记录组成优先级列表。

Nslookup & DIG

现在我们已经清楚地了解了DNS是什么,让我们来看看Nslookup命令行实用程序。假设客户要求我们执行外部渗透测试。因此,我们首先需要熟悉它们的基础设施,并确定哪些主机是可公开访问的。我们可以使用不同类型的DNS请求来发现这一点。使用Nslookup,我们可以在Internet上搜索域名服务器,并向它们询问有关主机和域的信息。虽然该工具有两种模式,交互式和非交互式,但我们将主要关注非交互式模块。

我们可以通过提交域名查询A记录。但是我们也可以使用-query参数来搜索特定的资源记录。例如:

Querying: A Records

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ nslookup $TARGET

Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
Name: facebook.com
Address: 31.13.92.36
Name: facebook.com
Address: 2a03:2880:f11c:8083:face:b00c:0:25de

如果需要,我们还可以通过在命令中添加@<nameserver/IP>来指定名称服务器。与nslookup不同,DIG向我们展示了更多重要的信息。

mikannse7@htb[/htb]$ dig facebook.com @1.1.1.1

; <<>> DiG 9.16.1-Ubuntu <<>> facebook.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58899
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;facebook.com. IN A

;; ANSWER SECTION:
facebook.com. 169 IN A 31.13.92.36

;; Query time: 20 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mo Okt 18 16:03:17 CEST 2021
;; MSG SIZE rcvd: 57

该条目以完整的域名开始,包括最后的点。在必须再次请求该信息之前,该条目可以在该高速缓存中保持169秒。这门课是可以理解的互联网(IN)。

查询:子域的记录

mikannse7@htb[/htb]$ export TARGET=www.facebook.com
mikannse7@htb[/htb]$ nslookup -query=A $TARGET

Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
www.facebook.com canonical name = star-mini.c10r.facebook.com.
Name: star-mini.c10r.facebook.com
Address: 31.13.92.36
mikannse7@htb[/htb]$ dig a www.facebook.com @1.1.1.1

; <<>> DiG 9.16.1-Ubuntu <<>> a www.facebook.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15596
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.facebook.com. IN A

;; ANSWER SECTION:
www.facebook.com. 3585 IN CNAME star-mini.c10r.facebook.com.
star-mini.c10r.facebook.com. 45 IN A 31.13.92.36

;; Query time: 16 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mo Okt 18 16:11:48 CEST 2021
;; MSG SIZE rcvd: 90

查询:IP地址的PTR记录

mikannse7@htb[/htb]$ nslookup -query=PTR 31.13.92.36

Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
36.92.13.31.in-addr.arpa name = edge-star-mini-shv-01-frt3.facebook.com.

Authoritative answers can be found from:
mikannse7@htb[/htb]$ dig -x 31.13.92.36 @1.1.1.1

; <<>> DiG 9.16.1-Ubuntu <<>> -x 31.13.92.36 @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51730
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;36.92.13.31.in-addr.arpa. IN PTR

;; ANSWER SECTION:
36.92.13.31.in-addr.arpa. 1028 IN PTR edge-star-mini-shv-01-frt3.facebook.com.

;; Query time: 16 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mo Okt 18 16:14:20 CEST 2021
;; MSG SIZE rcvd: 106

查询:任何现有记录

在这个例子中,我们使用谷歌作为例子,而不是Facebook,因为最后一个没有回应我们的查询。

mikannse7@htb[/htb]$ export TARGET="google.com"
mikannse7@htb[/htb]$ nslookup -query=ANY $TARGET

Server: 10.100.0.1
Address: 10.100.0.1#53

Non-authoritative answer:
Name: google.com
Address: 172.217.16.142
Name: google.com
Address: 2a00:1450:4001:808::200e
google.com text = "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com text = "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com text = "v=spf1 include:_spf.google.com ~all"
google.com text = "MS=E4A68B9AB2BB9670BCE15412F62916164C0B20BB"
google.com text = "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com text = "apple-domain-verification=30afIBcvSuDV2PLX"
google.com text = "google-site-verification=wD8N7i1JTNTkezJ49swvWW48f8_9xveREV4oB-0Hf5o"
google.com text = "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com text = "google-site-verification=TV9-DBe4R80X4v0M4U_bd_J9cpOJM0nikft0jAgjmsQ"

google.com nameserver = ns3.google.com.
google.com nameserver = ns2.google.com.
google.com nameserver = ns1.google.com.
google.com nameserver = ns4.google.com.
google.com mail exchanger = 10 aspmx.l.google.com.
google.com mail exchanger = 40 alt3.aspmx.l.google.com.
google.com mail exchanger = 20 alt1.aspmx.l.google.com.
google.com mail exchanger = 30 alt2.aspmx.l.google.com.
google.com mail exchanger = 50 alt4.aspmx.l.google.com.
google.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 398195569
refresh = 900
retry = 900
expire = 1800
minimum = 60
google.com rdata_257 = 0 issue "pki.goog"

Authoritative answers can be found from:

​ Querying: ANY Existing Records查询:任何现有记录

mikannse7@htb[/htb]$ dig any google.com @8.8.8.8

; <<>> DiG 9.16.1-Ubuntu <<>> any google.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49154
;; flags: qr rd ra; QUERY: 1, ANSWER: 22, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN ANY

;; ANSWER SECTION:
google.com. 249 IN A 142.250.184.206
google.com. 249 IN AAAA 2a00:1450:4001:830::200e
google.com. 549 IN MX 10 aspmx.l.google.com.
google.com. 3549 IN TXT "apple-domain-verification=30afIBcvSuDV2PLX"
google.com. 3549 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com. 549 IN MX 20 alt1.aspmx.l.google.com.
google.com. 3549 IN TXT "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com. 3549 IN TXT "v=spf1 include:_spf.google.com ~all"
google.com. 3549 IN TXT "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com. 3549 IN TXT "google-site-verification=wD8N7i1JTNTkezJ49swvWW48f8_9xveREV4oB-0Hf5o"
google.com. 9 IN SOA ns1.google.com. dns-admin.google.com. 403730046 900 900 1800 60
google.com. 21549 IN NS ns1.google.com.
google.com. 21549 IN NS ns3.google.com.
google.com. 549 IN MX 50 alt4.aspmx.l.google.com.
google.com. 3549 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com. 549 IN MX 30 alt2.aspmx.l.google.com.
google.com. 21549 IN NS ns2.google.com.
google.com. 21549 IN NS ns4.google.com.
google.com. 549 IN MX 40 alt3.aspmx.l.google.com.
google.com. 3549 IN TXT "MS=E4A68B9AB2BB9670BCE15412F62916164C0B20BB"
google.com. 3549 IN TXT "google-site-verification=TV9-DBe4R80X4v0M4U_bd_J9cpOJM0nikft0jAgjmsQ"
google.com. 21549 IN CAA 0 issue "pki.goog"

;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mo Okt 18 16:15:22 CEST 2021
;; MSG SIZE rcvd: 922

最近的RFC 8482规定废除ANY DNS请求。因此,我们可能无法从DNS服务器收到对我们的ANY请求的响应,也无法获得对上述RFC 8482的引用。

mikannse7@htb[/htb]$ dig any cloudflare.com @8.8.8.8

; <<>> DiG 9.16.1-Ubuntu <<>> any cloudflare.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22509
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;cloudflare.com. IN ANY

;; ANSWER SECTION:
cloudflare.com. 2747 IN HINFO "RFC8482" ""
cloudflare.com. 2747 IN RRSIG HINFO 13 2 3789 20211019145905 20211017125905 34505 cloudflare.com. 4/Bq8xUN96SrOhuH0bj2W6s2pXRdv5L5NWsgyTAGLAjEwwEF4y4TQuXo yGtvD3B13jr5KhdXo1VtrLLMy4OR8Q==

;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mo Okt 18 16:16:27 CEST 2021
;; MSG SIZE rcvd: 174

Querying: TXT Records

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ nslookup -query=TXT $TARGET

Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
facebook.com text = "v=spf1 redirect=_spf.facebook.com"
facebook.com text = "google-site-verification=A2WZWCNQHrGV_TWwKh6KHY90tY0SHZo_RnyMJoDaG0s"
facebook.com text = "google-site-verification=wdH5DTJTc9AYNwVunSVFeK0hYDGUIEOGb-RReU6pJlY"

Authoritative answers can be found from:
mikannse7@htb[/htb]$ dig txt facebook.com @1.1.1.1

; <<>> DiG 9.16.1-Ubuntu <<>> txt facebook.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63771
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;facebook.com. IN TXT

;; ANSWER SECTION:
facebook.com. 86400 IN TXT "v=spf1 redirect=_spf.facebook.com"
facebook.com. 7200 IN TXT "google-site-verification=A2WZWCNQHrGV_TWwKh6KHY90tY0SHZo_RnyMJoDaG0s"
facebook.com. 7200 IN TXT "google-site-verification=wdH5DTJTc9AYNwVunSVFeK0hYDGUIEOGb-RReU6pJlY"

;; Query time: 24 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mo Okt 18 16:17:46 CEST 2021
;; MSG SIZE rcvd: 249

标签:MX Records

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ nslookup -query=MX $TARGET

Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
facebook.com mail exchanger = 10 smtpin.vvv.facebook.com.

Authoritative answers can be found from:
mikannse7@htb[/htb]$ dig mx facebook.com @1.1.1.1

; <<>> DiG 9.16.1-Ubuntu <<>> mx facebook.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9392
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;facebook.com. IN MX

;; ANSWER SECTION:
facebook.com. 3600 IN MX 10 smtpin.vvv.facebook.com.

;; Query time: 40 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mo Okt 18 16:18:22 CEST 2021
;; MSG SIZE rcvd: 68

到目前为止,我们已经使用ANS命令收集了MXCNAMEnslookupdig记录。组织在互联网上获得IP地址,但他们并不总是他们的所有者。他们可能依赖于ISPs和托管提供商,这些提供商将较小的网络块出租给他们。

我们可以将通过nslookup收集的一些结果与whois数据库结合联合收割机,以确定我们的目标组织是否使用主机提供商。这个组合看起来像下面的例子:

Nslookup

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ nslookup $TARGET

Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
Name: facebook.com
Address: 157.240.199.35
Name: facebook.com
Address: 2a03:2880:f15e:83:face:b00c:0:25de

WHOID

mikannse7@htb[/htb]$ whois 157.240.199.35

NetRange: 157.240.0.0 - 157.240.255.255
CIDR: 157.240.0.0/16
NetName: THEFA-3
NetHandle: NET-157-240-0-0-1
Parent: NET157 (NET-157-0-0-0-0)
NetType: Direct Assignment
OriginAS:
Organization: Facebook, Inc. (THEFA-3)
RegDate: 2015-05-14
Updated: 2015-05-14
Ref: https://rdap.arin.net/registry/ip/157.240.0.0



OrgName: Facebook, Inc.
OrgId: THEFA-3
Address: 1601 Willow Rd.
City: Menlo Park
StateProv: CA
PostalCode: 94025
Country: US
RegDate: 2004-08-11
Updated: 2012-04-17
Ref: https://rdap.arin.net/registry/entity/THEFA-3


OrgAbuseHandle: OPERA82-ARIN
OrgAbuseName: Operations
OrgAbusePhone: +1-650-543-4800
OrgAbuseEmail: domain@facebook.com
OrgAbuseRef: https://rdap.arin.net/registry/entity/OPERA82-ARIN

OrgTechHandle: OPERA82-ARIN
OrgTechName: Operations
OrgTechPhone: +1-650-543-4800
OrgTechEmail: domain@facebook.com
OrgTechRef: https://rdap.arin.net/registry/entity/OPERA82-ARIN

Passive Subdomain Enumeration

子域名枚举是指映射域名中所有可用的子域名。它增加了我们的攻击面,并可能发现隐藏的管理后端面板或内联网Web应用程序,网络管理员希望使用“模糊安全”策略来隐藏这些应用程序。在这一点上,我们将只使用第三方服务或公开可用的信息执行被动子域枚举。尽管如此,我们将扩大我们收集的信息在未来的活动子域枚举活动。

VirusTotal

VirusTotal维护其DNS复制服务,该服务是通过保留用户访问他们提供的URL时所做的DNS解析来开发的。要接收有关域名的信息,请在搜索栏中键入域名,然后单击“关系”选项卡。

image

证书

我们可以用来提取子域的另一个有趣的信息来源是SSL/TLS证书。主要原因是证书透明性(CT),该项目要求证书颁发机构(CA)颁发的每个SSL/TLS证书都发布在可公开访问的日志中。

我们将学习如何使用两个主要资源检查CT日志,以发现目标组织的其他域名和子域:

我们可以导航到https://search.censys.io/certificates或https://crt.sh并引入目标组织的域名,以开始发现新的子域。

image

img

虽然该网站很好,但我们希望将这些信息组织起来,并能够将其与整个信息收集过程中发现的其他来源联合收割机结合起来。让我们对目标网站执行一个curl请求,请求一个JSON输出,因为这对我们来说更易于管理。我们可以通过以下命令来实现:

证书透明度

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ curl -s "https://crt.sh/?q=${TARGET}&output=json" | jq -r '.[] | "\(.name_value)\n\(.common_name)"' | sort -u > "${TARGET}_crt.sh.txt"
mikannse7@htb[/htb]$ head -n20 facebook.com_crt.sh.txt

*.adtools.facebook.com
*.ak.facebook.com
*.ak.fbcdn.net
*.alpha.facebook.com
*.assistant.facebook.com
*.beta.facebook.com
*.channel.facebook.com
*.cinyour.facebook.com
*.cinyourrc.facebook.com
*.connect.facebook.com
*.cstools.facebook.com
*.ctscan.facebook.com
*.dev.facebook.com
*.dns.facebook.com
*.extern.facebook.com
*.extools.facebook.com
*.f--facebook.com
*.facebook.com
*.facebookcorewwwi.onion
*.facebookmail.com
curl -s 以最小的输出发出请求。
https://crt.sh/?q=<DOMAIN>&output=json 请求json输出。
jq -r '.[]' "\(.name_value)\n\(.common_name)"' curl -s 处理json输出,每行打印证书的名称值和公共名称。
sort -u curl -s 对所提供的输出进行精确排序并删除重复项。

我们还可以通过以下方式使用OpenSSL对目标手动执行此操作:

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ export PORT="443"
mikannse7@htb[/htb]$ openssl s_client -ign_eof 2>/dev/null <<<$'HEAD / HTTP/1.0\r\n\r' -connect "${TARGET}:${PORT}" | openssl x509 -noout -text -in - | grep 'DNS' | sed -e 's|DNS:|\n|g' -e 's|^\*.*||g' | tr -d ',' | sort -u

*.facebook.com
*.facebook.net
*.fbcdn.net
*.fbsbx.com
*.m.facebook.com
*.messenger.com
*.xx.fbcdn.net
*.xy.fbcdn.net
*.xz.fbcdn.net
facebook.com
messenger.com

自动化被动子域枚举

我们已经学会了如何从目标组织获取有用的信息,如子域、命名模式、备用TLD、IP范围等,使用第三方服务,而不直接与其基础设施交互或依赖自动化工具。现在,我们将学习如何使用工具和以前获得的信息枚举子域。

TheHarvester

TheHarvester是一个简单易用但功能强大且有效的工具,用于早期渗透测试和红队参与。我们可以用它来收集信息,以帮助识别公司的攻击面。该工具从各种公共数据源收集emailsnamessubdomainsIP addressesURLs,用于被动信息收集。现在,我们将使用以下模块:

Baidu 百度 百度搜索引擎。
Bufferoverun curl -s Uses data from Rapid7’s Project Sonar - www.rapid7.com/research/project-sonar/ 使用Rapid 7的Project Sonar数据-www.rapid7.com/research/project-sonar/
Crtsh Comodo Certificate search.Comodo证书搜索。
Hackertarget 黑客目标 在线漏洞扫描器和网络智能帮助组织。
Otx curl -s AlienVault Open Threat Exchange - https://otx.alienvault.com AlienVault Open Threat Exchange -https://otx.alienvault.com
Rapiddns DNS查询工具,使查询子域或网站使用相同的IP容易。
Sublist3r 用于渗透测试的快速子域枚举工具
Threatcrowd 威胁人群 开源威胁情报。
Threatminer 威胁情报的数据挖掘。
Trello curl -s 搜索Trello boards(使用Google搜索)
Urlscan 一个沙盒的网页,是一个网址和网站扫描器。
Vhost curl -s Bing虚拟主机搜索。
Virustotal 域名搜索。
Zoomeye 中国版的Shodan

为了实现自动化,我们将创建一个名为sources.txt的文件,其中包含以下内容。

mikannse7@htb[/htb]$ cat sources.txt

baidu
bufferoverun
crtsh
hackertarget
otx
projecdiscovery
rapiddns
sublist3r
threatcrowd
trello
urlscan
vhost
virustotal
zoomeye

TheHarvester

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ cat sources.txt | while read source; do theHarvester -d "${TARGET}" -b $source -f "${source}_${TARGET}";done

<SNIP>
*******************************************************************
* _ _ _ *
* | |_| |__ ___ /\ /\__ _ _ ____ _____ ___| |_ ___ _ __ *
* | __| _ \ / _ \ / /_/ / _` | '__\ \ / / _ \/ __| __/ _ \ '__| *
* | |_| | | | __/ / __ / (_| | | \ V / __/\__ \ || __/ | *
* \__|_| |_|\___| \/ /_/ \__,_|_| \_/ \___||___/\__\___|_| *
* *
* theHarvester 4.0.0 *
* Coded by Christian Martorella *
* Edge-Security Research *
* cmartorella@edge-security.com *
* *
*******************************************************************


[*] Target: facebook.com

[*] Searching Urlscan.

[*] ASNS found: 29
--------------------
AS12578
AS13335
AS13535
AS136023
AS14061
AS14618
AS15169
AS15817

<SNIP>

当这个过程完成时,我们可以提取所有找到的子域,并通过以下命令对其进行排序:

TheHarvester

mikannse7@htb[/htb]$ cat *.json | jq -r '.hosts[]' 2>/dev/null | cut -d':' -f 1 | sort -u > "${TARGET}_theHarvester.txt"

现在我们可以通过以下方式合并所有被动侦察文件:

TheHarvester

mikannse7@htb[/htb]$ cat facebook.com_*.txt | sort -u > facebook.com_subdomains_passive.txt
mikannse7@htb[/htb]$ cat facebook.com_subdomains_passive.txt | wc -l

11947

到目前为止,我们已经成功地找到了11947个合并被动侦察结果文件的子域。这里需要注意的是,还有更多的方法可以被动地找到子域。例如,在OSINT:Corporate Recon模块中显示了更多的可能性。

被动基础设施识别

Netcraft可以为我们提供有关服务器的信息,甚至不需要与它们进行交互,从被动信息收集的角度来看,这是很有价值的。 我们可以通过访问https://sitereport.netcraft.com并输入目标域来使用该服务。

img

我们可以从报告中观察到一些有趣的细节:

Background 有关域的一般信息,包括Netcraft爬虫首次看到它的日期。
Network 有关netblock所有者、托管公司、名称服务器等的信息。
Hosting history 使用的最新IP、Web服务器和目标操作系统。

我们需要特别注意使用的最新IP。有时我们可以在Web服务器被放置在负载均衡器、Web应用程序防火墙或IDS之后之前从Web服务器中发现实际的IP地址,如果配置允许,我们可以直接连接到它。这种技术可能会干扰或改变我们未来的测试活动。

Wayback Machine

互联网档案馆是一个美国数字图书馆,提供免费的数字化材料,包括网站,通过其网络爬虫自动收集。

我们可以使用Wayback Machine访问这些网站的几个版本,以找到可能在源代码或文件中有有趣注释的旧版本。此工具可用于在某个时间点查找网站的旧版本。让我们以一个运行WordPress的网站为例。在使用手动方法和自动化工具评估它时,我们可能找不到任何有趣的东西,所以我们使用Wayback Machine搜索它,并找到一个使用特定(现在易受攻击)插件的版本。返回到网站的当前版本,我们发现插件没有被正确删除,仍然可以通过wp-content目录访问。然后,我们可以利用它来获得主机上的远程代码执行和一个不错的赏金。

image

我们可以检查2005年12月1日捕获的facebook.com的第一个版本之一,这很有趣,也许会给我们一种怀旧的感觉,但对我们作为安全研究人员来说也非常有用。

img

我们还可以使用waybackurls工具来检查Wayback Machine保存的URL并查找特定的关键字。如果我们在主机上正确设置了Go,我们可以按如下方式安装该工具:

mikannse7@htb[/htb]$ go install github.com/tomnomnom/waybackurls@latest

要从域中获取抓取的URL列表及其获取日期,我们可以将-dates开关添加到我们的命令中,如下所示:

mikannse7@htb[/htb]$ waybackurls -dates https://facebook.com > waybackurls.txt
mikannse7@htb[/htb]$ cat waybackurls.txt

2018-05-20T09:46:07Z http://www.facebook.com./
2018-05-20T10:07:12Z https://www.facebook.com/
2018-05-20T10:18:51Z http://www.facebook.com/#!/pages/Welcome-Baby/143392015698061?ref=tsrobots.txt
2018-05-20T10:19:19Z http://www.facebook.com/
2018-05-20T16:00:13Z http://facebook.com
2018-05-21T22:12:55Z https://www.facebook.com
2018-05-22T15:14:09Z http://www.facebook.com
2018-05-22T17:34:48Z http://www.facebook.com/#!/Syerah?v=info&ref=profile/robots.txt
2018-05-23T11:03:47Z http://www.facebook.com/#!/Bin595

<SNIP>

如果我们想访问特定的资源,我们需要将URL放在搜索菜单中,并导航到快照创建的日期。如前所述,Wayback Machine可以是一个方便的工具,不应该被忽视。它很可能会让我们发现被遗忘的资产、页面等,这可能导致发现缺陷。

Active Information Gathering

主动基础设施识别

Web应用程序的基础设施是保持其运行并允许其运行的基础设施。Web服务器直接参与任何Web应用程序的操作。其中最受欢迎的是Apache,Nginx和Microsoft IIS等。

如果我们发现了目标应用程序背后的Web服务器,它可以让我们给予一个很好的想法,什么操作系统运行在后端服务器上。例如,如果我们发现正在运行的IIS版本,我们可以通过将IIS版本映射回默认安装的Windows版本来推断正在使用的Windows操作系统版本。一些默认安装是:

  • IIS 6.0: Windows Server 2003
  • IIS 7.0-8.5: Windows Server 2008 / Windows Server 2008R2
  • IIS 10.0 (v1607-v1709): Windows Server 2016
  • IIS 10.0 (v1809-): Windows Server 2019

虽然这在处理Windows时通常是正确的,但我们不能确定Linux或基于BSD的发行版是否正确,因为它们可以在Nginx或Apache中运行不同的Web服务器版本。这种技术可能会干扰或改变我们未来的测试活动。然而,如果我们处理Web服务器,我们将无法在HTML或JS中找到有关服务器的任何指纹。

Web Servers Web Server

我们需要从Web服务器中发现尽可能多的信息,以了解其功能,这可能会影响未来的测试。例如,URL重写功能、负载平衡、服务器上使用的脚本引擎或Intrusion detection systemIDS)可能会妨碍我们的一些测试活动。

要识别Web服务器版本,我们可以做的第一件事是查看响应头。

HTTP Headers

mikannse7@htb[/htb]$ curl -I "http://${TARGET}"

HTTP/1.1 200 OK
Date: Thu, 23 Sep 2021 15:10:42 GMT
Server: Apache/2.4.25 (Debian)
X-Powered-By: PHP/7.3.5
Link: <http://192.168.10.10/wp-json/>; rel="https://api.w.org/"
Content-Type: text/html; charset=UTF-8

在响应报头中对Web服务器进行指纹识别时,还需要考虑其他特征。这些措施是:

  • X-Powered-By header:这个header可以告诉我们Web应用正在使用什么。我们可以看到像PHP、ASP.NET、JSP等值。
  • Cookie:Cookie是另一个有吸引力的价值,因为每种技术默认都有自己的Cookie。一些默认的cookie值是:
    • .NET:ASPSESSIONID<RANDOM>=<COOKIE_VALUE>
    • PHP: PHPSESSID=<COOKIE_VALUE>
    • JAVA: JSESSION=<COOKIE_VALUE>
mikannse7@htb[/htb]$ curl -I http://${TARGET}

HTTP/1.1 200 OK
Host: randomtarget.com
Date: Thu, 23 Sep 2021 15:12:21 GMT
Connection: close
X-Powered-By: PHP/7.4.21
Set-Cookie: PHPSESSID=gt02b1pqla35cvmmb2bcli96ml; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-type: text/html; charset=UTF-8

其他可用的工具通过探测它们并将它们的响应与签名数据库进行比较来分析常见的Web服务器特征,以猜测Web服务器版本,安装的模块和启用的服务等信息。其中一些工具是:

Whatweb认可Web技术,包括内容管理系统(CMS)、博客平台、统计/分析软件包、JavaScript库、Web服务器和嵌入式设备。我们建议通过whatweb阅读whatweb -h帮助菜单,以了解可用选项,如攻击级别控制或详细输出。在本例中,我们将通过-a标志使用侵略级别3,并通过-v使用详细输出。

WhatWeb

mikannse7@htb[/htb]$ whatweb -a3 https://www.facebook.com -v

WhatWeb report for https://www.facebook.com
Status : 200 OK
Title : <None>
IP : 31.13.92.36
Country : IRELAND, IE

Summary : Strict-Transport-Security[max-age=15552000; preload], PasswordField[pass], Script[text/javascript], X-XSS-Protection[0], HTML5, X-Frame-Options[DENY], Meta-Refresh-Redirect[/?_fb_noscript=1], UncommonHeaders[x-fb-rlafr,x-content-type-options,x-fb-debug,alt-svc]

Detected Plugins:
[ HTML5 ]
HTML version 5, detected by the doctype declaration


[ Meta-Refresh-Redirect ]
Meta refresh tag is a deprecated URL element that can be
used to optionally wait x seconds before reloading the
current page or loading a new page. More info:
https://secure.wikimedia.org/wikipedia/en/wiki/Meta_refresh

String : /?_fb_noscript=1

[ PasswordField ]
find password fields

String : pass (from field name)

[ Script ]
This plugin detects instances of script HTML elements and
returns the script language/type.

String : text/javascript

[ Strict-Transport-Security ]
Strict-Transport-Security is an HTTP header that restricts
a web browser from accessing a website without the security
of the HTTPS protocol.

String : max-age=15552000; preload

[ UncommonHeaders ]
Uncommon HTTP server headers. The blacklist includes all
the standard headers and many non standard but common ones.
Interesting but fairly common headers should have their own
plugins, eg. x-powered-by, server and x-aspnet-version.
Info about headers can be found at www.http-stats.com

String : x-fb-rlafr,x-content-type-options,x-fb-debug,alt-svc (from headers)

[ X-Frame-Options ]
This plugin retrieves the X-Frame-Options value from the
HTTP header. - More Info:
http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
aspx

String : DENY

[ X-XSS-Protection ]
This plugin retrieves the X-XSS-Protection value from the
HTTP header. - More Info:
http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
aspx

String : 0

HTTP Headers:
HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Encoding: gzip
x-fb-rlafr: 0
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: DENY
Strict-Transport-Security: max-age=15552000; preload
Content-Type: text/html; charset="utf-8"
X-FB-Debug: r2w+sMJ7lVrMjS/ETitC6cNpJXma0r3fbt0rIlnTPAfQqTc+U4PQopVL7sR/6YA/ZKRkqP1wMPoFdUfMBP1JSA==
Date: Wed, 06 Oct 2021 09:04:27 GMT
Alt-Svc: h3=":443"; ma=3600, h3-29=":443"; ma=3600,h3-27=":443"; ma=3600
Connection: close

WhatWeb report for https://www.facebook.com/?_fb_noscript=1
Status : 200 OK
Title : <None>
IP : 31.13.92.36
Country : IRELAND, IE

Summary : Cookies[noscript], Strict-Transport-Security[max-age=15552000; preload], PasswordField[pass], Script[text/javascript], X-XSS-Protection[0], HTML5, X-Frame-Options[DENY], UncommonHeaders[x-fb-rlafr,x-content-type-options,x-fb-debug,alt-svc]

Detected Plugins:
[ Cookies ]
Display the names of cookies in the HTTP headers. The
values are not returned to save on space.

String : noscript

[ HTML5 ]
HTML version 5, detected by the doctype declaration


[ PasswordField ]
find password fields

String : pass (from field name)

[ Script ]
This plugin detects instances of script HTML elements and
returns the script language/type.

String : text/javascript

[ Strict-Transport-Security ]
Strict-Transport-Security is an HTTP header that restricts
a web browser from accessing a website without the security
of the HTTPS protocol.

String : max-age=15552000; preload

[ UncommonHeaders ]
Uncommon HTTP server headers. The blacklist includes all
the standard headers and many non standard but common ones.
Interesting but fairly common headers should have their own
plugins, eg. x-powered-by, server and x-aspnet-version.
Info about headers can be found at www.http-stats.com

String : x-fb-rlafr,x-content-type-options,x-fb-debug,alt-svc (from headers)

[ X-Frame-Options ]
This plugin retrieves the X-Frame-Options value from the
HTTP header. - More Info:
http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
aspx

String : DENY

[ X-XSS-Protection ]
This plugin retrieves the X-XSS-Protection value from the
HTTP header. - More Info:
http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
aspx

String : 0

HTTP Headers:
HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Encoding: gzip
Set-Cookie: noscript=1; path=/; domain=.facebook.com; secure
x-fb-rlafr: 0
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: DENY
Strict-Transport-Security: max-age=15552000; preload
Content-Type: text/html; charset="utf-8"
X-FB-Debug: 7bEryjJ3tsTb/ap562d5L6KUJyJJ3bJh9XoamIo2lCVrX4cK/VAGbLx7muaAwnyobVm9myC3fQ+CXJqkk0eacg==
Date: Wed, 06 Oct 2021 09:04:31 GMT
Alt-Svc: h3=":443"; ma=3600, h3-29=":443"; ma=3600,h3-27=":443"; ma=3600
Connection: close

我们还希望将Wappalyzer安装为浏览器扩展。它具有与Whatweb类似的功能,但结果会在导航目标URL时显示。

image

WafW00f是一个Web应用程序防火墙(WAF)指纹识别工具,它发送请求并分析响应,以确定安全解决方案是否到位。我们可以使用以下命令安装它:

Installing WafW00f

mikannse7@htb[/htb]$ sudo apt install wafw00f -y

我们可以使用-a这样的选项来检查所有可能的WAF,而不是在第一次匹配时停止扫描,通过-i标志从输入文件中读取目标,或者使用-p选项代理请求。

mikannse7@htb[/htb]$ wafw00f -v https://www.tesla.com

______
/ \
( Woof! )
\ ____/ )
,, ) (_
.-. - _______ ( |__|
()``; |==|_______) .)|__|
/ (' /|\ ( |__|
( / ) / | \ . |__|
\(_)_)) / | \ |__|

~ WAFW00F : v2.1.0 ~
The Web Application Firewall Fingerprinting Toolkit

[*] Checking https://www.tesla.com
[+] The site https://www.tesla.com is behind CacheWall (Varnish) WAF.
[~] Number of requests: 2

Aquatone是一种跨多台主机自动和可视化检查网站的工具,通过扫描可配置端口列表、使用无头Chrome浏览器访问网站并进行屏幕截图,可以方便地快速获得基于HTTP的攻击表面的概述。这很有帮助,尤其是在处理庞大的子域列表时。在Parrot Linux中,默认情况下不会安装Aquatone,因此我们需要通过以下命令进行安装。

安装Aquatone

mikannse7@htb[/htb]$ sudo apt install golang chromium-driver
mikannse7@htb[/htb]$ go get github.com/michenriksen/aquatone
mikannse7@htb[/htb]$ export PATH="$PATH":"$HOME/go/bin"

在此之后,我们需要探索一些选择:

Aquatone Options

mikannse7@htb[/htb]$ aquatone --help

Usage of aquatone:
-chrome-path string
Full path to the Chrome/Chromium executable to use. By default, aquatone will search for Chrome or Chromium
-debug
Print debugging information
-http-timeout int
Timeout in miliseconds for HTTP requests (default 3000)
-nmap
Parse input as Nmap/Masscan XML
-out string
Directory to write files to (default ".")
-ports string
Ports to scan on hosts. Supported list aliases: small, medium, large, xlarge (default "80,443,8000,8080,8443")
-proxy string
Proxy to use for HTTP requests
-resolution string
screenshot resolution (default "1440,900")
-save-body
Save response bodies to files (default true)
-scan-timeout int
Timeout in miliseconds for port scans (default 100)
-screenshot-timeout int
Timeout in miliseconds for screenshots (default 30000)
-session string
Load Aquatone session file and generate HTML report
-silent
Suppress all output except for errors
-template-path string
Path to HTML template to use for report
-threads int
Number of concurrent threads (default number of logical CPUs)
-version
Print current Aquatone version

现在,是时候在我们的子域列表中使用cat并通过以下方式将命令传递给aquatone了:

mikannse7@htb[/htb]$ cat facebook_aquatone.txt | aquatone -out ./aquatone -screenshot-timeout 1000

aquatone v1.7.0 started at 2021-10-06T10:14:42+01:00

Targets : 30
Threads : 2
Ports : 80, 443, 8000, 8080, 8443
Output dir : aquatone

edge-star-shv-01-cdg2.facebook.com: port 80 open
edge-extern-shv-01-waw1.facebook.com: port 80 open
whatsapp-chatd-edge-shv-01-ams4.facebook.com: port 80 open
edge-secure-shv-01-ham3.facebook.com: port 80 open
sv-se.facebook.com: port 80 open
ko.facebook.com: port 80 open
whatsapp-chatd-msgr-mini-edge-shv-01-lis1.facebook.com: port 80 open
synthetic-e2e-elbprod-sli-shv-01-otp1.facebook.com: port 80 open
edge-star-shv-01-cdg2.facebook.com: port 443 open
edge-extern-shv-01-waw1.facebook.com: port 443 open
whatsapp-chatd-edge-shv-01-ams4.facebook.com: port 443 open
http://edge-star-shv-01-cdg2.facebook.com/: 200 OK
http://edge-extern-shv-01-waw1.facebook.com/: 200 OK
edge-secure-shv-01-ham3.facebook.com: port 443 open
ondemand-edge-shv-01-cph2.facebook.com: port 443 open
sv-se.facebook.com: port 443 open
http://edge-secure-shv-01-ham3.facebook.com/: 200 OK
ko.facebook.com: port 443 open
whatsapp-chatd-msgr-mini-edge-shv-01-lis1.facebook.com: port 443 open
http://sv-se.facebook.com/: 200 OK
http://ko.facebook.com/: 200 OK
synthetic-e2e-elbprod-sli-shv-01-otp1.facebook.com: port 443 open
http://synthetic-e2e-elbprod-sli-shv-01-otp1.facebook.com/: 400 default_vip_400
https://edge-star-shv-01-cdg2.facebook.com/: 200 OK
https://edge-extern-shv-01-waw1.facebook.com/: 200 OK
http://edge-star-shv-01-cdg2.facebook.com/: screenshot timed out
http://edge-extern-shv-01-waw1.facebook.com/: screenshot timed out
https://edge-secure-shv-01-ham3.facebook.com/: 200 OK
https://sv-se.facebook.com/: 200 OK
https://ko.facebook.com/: 200 OK
http://edge-secure-shv-01-ham3.facebook.com/: screenshot timed out
http://sv-se.facebook.com/: screenshot timed out
http://ko.facebook.com/: screenshot timed out
https://synthetic-e2e-elbprod-sli-shv-01-otp1.facebook.com/: 400 default_vip_400
http://synthetic-e2e-elbprod-sli-shv-01-otp1.facebook.com/: screenshot successful
https://edge-star-shv-01-cdg2.facebook.com/: screenshot timed out
https://edge-extern-shv-01-waw1.facebook.com/: screenshot timed out
https://edge-secure-shv-01-ham3.facebook.com/: screenshot timed out
https://sv-se.facebook.com/: screenshot timed out
https://ko.facebook.com/: screenshot timed out
https://synthetic-e2e-elbprod-sli-shv-01-otp1.facebook.com/: screenshot successful
Calculating page structures... done
Clustering similar pages... done
Generating HTML report... done

Writing session file...Time:
- Started at : 2021-10-06T10:14:42+01:00
- Finished at : 2021-10-06T10:15:01+01:00
- Duration : 19s

Requests:
- Successful : 12
- Failed : 5

- 2xx : 10
- 3xx : 0
- 4xx : 2
- 5xx : 0

Screenshots:
- Successful : 2
- Failed : 10

Wrote HTML report to: aquatone/aquatone_report.html

当它完成时,我们将有一个名为aquatone_report.html的文件,我们可以在其中看到屏幕截图,确定的技术,服务器响应头和HTML。

image

Active Subdomain Enumeration

我们可以执行主动子域枚举,探测由目标组织或我们之前确定的第三方DNS服务器管理的基础设施。在这种情况下,产生的流量可能会导致我们的侦察活动被发现。

ZoneTransfers

区域转移是辅助DNS服务器从主DNS服务器接收信息并更新信息的方式。主从方法用于在域中组织DNS服务器,从DNS服务器从主DNS接收更新的DNS信息。主DNS服务器应配置为启用从辅助(从属)DNS服务器的区域传输,尽管这可能配置错误。

例如,我们将使用https://hackertarget.com/zone-transfer/服务和zonetransfer.me域来了解通过这种技术可以获得的信息。

image

手动方法将是以下命令集:

1.识别服务器

mikannse7@htb[/htb]$ nslookup -type=NS zonetransfer.me

Server: 10.100.0.1
Address: 10.100.0.1#53

Non-authoritative answer:
zonetransfer.me nameserver = nsztm2.digi.ninja.
zonetransfer.me nameserver = nsztm1.digi.ninja.
  1. 使用-type=any-query=AXFR参数执行区域传输

2.测试ANY和AXFR区域传输

mikannse7@htb[/htb]$ nslookup -type=any -query=AXFR zonetransfer.me nsztm1.digi.ninja

Server: nsztm1.digi.ninja
Address: 81.4.108.41#53

zonetransfer.me
origin = nsztm1.digi.ninja
mail addr = robin.digi.ninja
serial = 2019100801
refresh = 172800
retry = 900
expire = 1209600
minimum = 3600
zonetransfer.me hinfo = "Casio fx-700G" "Windows XP"
zonetransfer.me text = "google-site-verification=tyP28J7JAUHA9fw2sHXMgcCC0I6XBmmoVi04VlMewxA"
zonetransfer.me mail exchanger = 0 ASPMX.L.GOOGLE.COM.
zonetransfer.me mail exchanger = 10 ALT1.ASPMX.L.GOOGLE.COM.
zonetransfer.me mail exchanger = 10 ALT2.ASPMX.L.GOOGLE.COM.
zonetransfer.me mail exchanger = 20 ASPMX2.GOOGLEMAIL.COM.
zonetransfer.me mail exchanger = 20 ASPMX3.GOOGLEMAIL.COM.
zonetransfer.me mail exchanger = 20 ASPMX4.GOOGLEMAIL.COM.
zonetransfer.me mail exchanger = 20 ASPMX5.GOOGLEMAIL.COM.
Name: zonetransfer.me
Address: 5.196.105.14
zonetransfer.me nameserver = nsztm1.digi.ninja.
zonetransfer.me nameserver = nsztm2.digi.ninja.
_acme-challenge.zonetransfer.me text = "6Oa05hbUJ9xSsvYy7pApQvwCUSSGgxvrbdizjePEsZI"
_sip._tcp.zonetransfer.me service = 0 0 5060 www.zonetransfer.me.
14.105.196.5.IN-ADDR.ARPA.zonetransfer.me name = www.zonetransfer.me.
asfdbauthdns.zonetransfer.me afsdb = 1 asfdbbox.zonetransfer.me.
Name: asfdbbox.zonetransfer.me
Address: 127.0.0.1
asfdbvolume.zonetransfer.me afsdb = 1 asfdbbox.zonetransfer.me.
Name: canberra-office.zonetransfer.me
Address: 202.14.81.230
cmdexec.zonetransfer.me text = "; ls"
contact.zonetransfer.me text = "Remember to call or email Pippa on +44 123 4567890 or pippa@zonetransfer.me when making DNS changes"
Name: dc-office.zonetransfer.me
Address: 143.228.181.132
Name: deadbeef.zonetransfer.me
Address: dead:beaf::
dr.zonetransfer.me loc = 53 20 56.558 N 1 38 33.526 W 0.00m 1m 10000m 10m
DZC.zonetransfer.me text = "AbCdEfG"
email.zonetransfer.me naptr = 1 1 "P" "E2U+email" "" email.zonetransfer.me.zonetransfer.me.
Name: email.zonetransfer.me
Address: 74.125.206.26
Hello.zonetransfer.me text = "Hi to Josh and all his class"
Name: home.zonetransfer.me
Address: 127.0.0.1
Info.zonetransfer.me text = "ZoneTransfer.me service provided by Robin Wood - robin@digi.ninja. See http://digi.ninja/projects/zonetransferme.php for more information."
internal.zonetransfer.me nameserver = intns1.zonetransfer.me.
internal.zonetransfer.me nameserver = intns2.zonetransfer.me.
Name: intns1.zonetransfer.me
Address: 81.4.108.41
Name: intns2.zonetransfer.me
Address: 167.88.42.94
Name: office.zonetransfer.me
Address: 4.23.39.254
Name: ipv6actnow.org.zonetransfer.me
Address: 2001:67c:2e8:11::c100:1332
Name: owa.zonetransfer.me
Address: 207.46.197.32
robinwood.zonetransfer.me text = "Robin Wood"
rp.zonetransfer.me rp = robin.zonetransfer.me. robinwood.zonetransfer.me.
sip.zonetransfer.me naptr = 2 3 "P" "E2U+sip" "!^.*$!sip:customer-service@zonetransfer.me!" .
sqli.zonetransfer.me text = "' or 1=1 --"
sshock.zonetransfer.me text = "() { :]}; echo ShellShocked"
staging.zonetransfer.me canonical name = www.sydneyoperahouse.com.
Name: alltcpportsopen.firewall.test.zonetransfer.me
Address: 127.0.0.1
testing.zonetransfer.me canonical name = www.zonetransfer.me.
Name: vpn.zonetransfer.me
Address: 174.36.59.154
Name: www.zonetransfer.me
Address: 5.196.105.14
xss.zonetransfer.me text = "'><script>alert('Boo')</script>"
zonetransfer.me
origin = nsztm1.digi.ninja
mail addr = robin.digi.ninja
serial = 2019100801
refresh = 172800
retry = 900
expire = 1209600
minimum = 3600

如果我们成功地为某个域执行了区域转移,则无需继续枚举此特定域,因为这将提取所有可用信息。

Gobuster

Gobuster是一个我们可以用来执行子域枚举的工具。模式选项对我们来说特别有趣,因为我们已经从被动信息收集中了解了一些命名约定,我们可以使用这些信息来发现遵循相同模式的新子域。

我们可以使用Seclists仓库中的单词列表沿着gobuster,如果我们正在寻找模式中的单词而不是数字。请记住,在被动子域枚举活动中,我们发现了一个模式lert-api-shv-{NUMBER}-sin6.facebook.com。我们可以使用此模式来发现其他子域。第一步是用以前发现的模式创建一个patterns.txt文件,例如:

GoBuster - patterns.txt

lert-api-shv-{GOBUSTER}-sin6
atlas-pp-shv-{GOBUSTER}-sin6

下一步是使用gobuster模块启动dns,指定以下选项:

  • dns:启动DNS模块
  • -q: Don’t print the banner and other noise.
  • -r:使用自定义DNS服务器
  • -d:目标域名
  • -p:模式文件的路径
  • -w:单词列表的路径
  • -o:输出文件

在我们的情况下,这将是命令。

Gobuster - DNS

mikannse7@htb[/htb]$ export TARGET="facebook.com"
mikannse7@htb[/htb]$ export NS="d.ns.facebook.com"
mikannse7@htb[/htb]$ export WORDLIST="numbers.txt"
mikannse7@htb[/htb]$ gobuster dns -q -r "${NS}" -d "${TARGET}" -w "${WORDLIST}" -p ./patterns.txt -o "gobuster_${TARGET}.txt"

Found: lert-api-shv-01-sin6.facebook.com
Found: atlas-pp-shv-01-sin6.facebook.com
Found: atlas-pp-shv-02-sin6.facebook.com
Found: atlas-pp-shv-03-sin6.facebook.com
Found: lert-api-shv-03-sin6.facebook.com
Found: lert-api-shv-02-sin6.facebook.com
Found: lert-api-shv-04-sin6.facebook.com
Found: atlas-pp-shv-04-sin6.facebook.com

Virtual Hosts

虚拟主机(vHost)是一种允许多个网站托管在一台服务器上的功能。如果您有许多网站,并且不想经历为每个网站设置新Web服务器的耗时(和昂贵)过程,这是一个很好的解决方案。想象一下,必须为同一页面的移动的和桌面版本设置不同的Web服务器。有两种方法可以配置虚拟主机:

  • IP-based virtual hosting
  • Name-based virtual hosting

IP-based Virtual Hosting

对于此类型,主机可以具有多个网络接口。可以在主机的每个网络接口上配置多个IP地址或接口别名。在主机上运行的服务器或虚拟服务器可以绑定到一个或多个IP地址。这意味着不同的服务器可以在此主机上的不同IP地址下寻址。从客户端的角度来看,服务器是相互独立的。

Name-based Virtual Hosting

在应用程序级别区分请求服务的域。例如,多个域名(如admin.inlanefreight.htbbackup.inlanefreight.htb)可以引用同一个IP。在服务器内部,这些文件使用不同的文件夹进行分离和区分。在这个例子中,在Linux服务器上,vHost admin.inlanefreight.htb可以指向文件夹/var/www/admin。对于backup.inlanefreight.htb,文件夹名称将进行调整,可能看起来像/var/www/backup

在我们的子域发现活动中,我们看到一些子域具有相同的IP地址,这些子域可以是虚拟主机,或者在某些情况下,位于代理后面的不同服务器。

假设我们在内部pentest中识别了一个位于192.168.10.10的Web服务器,它使用以下命令显示了一个默认网站。是否存在任何虚拟主机?

mikannse7@htb[/htb]$ curl -s http://192.168.10.10

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

让我们创建一个cURL请求,发送一个在HOST头中收集信息时识别的域。我们可以这样做:

mikannse7@htb[/htb]$ curl -s http://192.168.10.10 -H "Host: randomtarget.com"

<html>
<head>
<title>Welcome to randomtarget.com!</title>
</head>
<body>
<h1>Success! The randomtarget.com server block is working!</h1>
</body>
</html>

现在,我们可以通过使用可能的vhost名称的字典文件(例如Pwnbox上的/opt/useful/SecLists/Discovery/DNS/namelist.txt)并检查Content-Length头来查找任何差异来自动执行此操作。

vHosts List

app
blog
dev-admin
forum
help
m
my
shop
some
store
support
www

vHost Fuzzing

mikannse7@htb[/htb]$ cat ./vhosts | while read vhost;do echo "\n********\nFUZZING: ${vhost}\n********";curl -s -I http://192.168.10.10 -H "HOST: ${vhost}.randomtarget.com" | grep "Content-Length: ";done


********
FUZZING: app
********
Content-Length: 612

********
FUZZING: blog
********
Content-Length: 612

********
FUZZING: dev-admin
********
Content-Length: 120

********
FUZZING: forum
********
Content-Length: 612

********
FUZZING: help
********
Content-Length: 612

********
FUZZING: m
********
Content-Length: 612

********
FUZZING: my
********
Content-Length: 612

********
FUZZING: shop
********
Content-Length: 612

********
FUZZING: some
********
Content-Length: 195

********
FUZZING: store
********
Content-Length: 612

********
FUZZING: support
********
Content-Length: 612

********
FUZZING: www
********
Content-Length: 185

我们已经成功识别了一个名为dev-admin的虚拟主机,我们可以使用cURL请求访问它。

mikannse7@htb[/htb]$ curl -s http://192.168.10.10 -H "Host: dev-admin.randomtarget.com"

<!DOCTYPE html>
<html>
<body>

<h1>Randomtarget.com Admin Website</h1>

<p>You shouldn't be here!</p>

</body>
</html>

Automating Virtual Hosts Discovery

我们可以对一个小的虚拟主机列表使用这种手动方法,但如果我们有一个广泛的列表,它就不可行了。使用ffuf,我们可以根据响应中的参数加快处理和滤波。让我们复制我们对ffuf所做的相同过程,但首先,让我们看看它的一些选项。

MATCHER OPTIONS:
-mc Match HTTP status codes, or "all" for everything. (default: 200,204,301,302,307,401,403,405)
-ml Match amount of lines in response
-mr Match regexp
-ms Match HTTP response size
-mw Match amount of words in response

FILTER OPTIONS:
-fc Filter HTTP status codes from response. Comma separated list of codes and ranges
-fl Filter by amount of lines in response. Comma separated list of line counts and ranges
-fr Filter regexp
-fs Filter HTTP response size. Comma separated list of sizes and ranges
-fw Filter by amount of words in response. Comma separated list of word counts and ranges

我们可以根据不同的选项匹配或过滤响应。每次我们在HOST头中发出无效的虚拟主机时,Web服务器都会响应默认的静态网站。我们可以使用filter by size -fs选项来丢弃默认响应,因为它总是具有相同的大小。

mikannse7@htb[/htb]$ ffuf -w ./vhosts -u http://192.168.10.10 -H "HOST: FUZZ.randomtarget.com" -fs 612

/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/

v1.1.0-git
________________________________________________

:: Method : GET
:: URL : http://192.168.10.10
:: Wordlist : FUZZ: ./vhosts
:: Header : Host: FUZZ.randomtarget.com
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
:: Filter : Response size: 612
________________________________________________

dev-admin [Status: 200, Size: 120, Words: 7, Lines: 12]
www [Status: 200, Size: 185, Words: 41, Lines: 9]
some [Status: 200, Size: 195, Words: 41, Lines: 9]
:: Progress: [12/12] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 ::

where:其中:

  • -w: Path to our wordlist
  • -u: URL we want to fuzz
  • -H "HOST: FUZZ.randomtarget.com": This is the HOST Header, and the word FUZZ will be used as the fuzzing point.
  • -fs 612: Filter responses with a size of 612, default response size in this case.

Crawling

抓取网站是系统的或自动的过程,探索一个网站,列出所有的资源遇到沿着。它向我们展示了我们正在审计的网站的结构,以及我们将在未来测试的攻击面的概述。我们使用抓取过程来找到尽可能多的网页和子目录属于一个网站尽可能。

ZAP

Zed Attack ProxyZAP)是一个开源Web代理,属于Open Web Application Security ProjectOWASP)。它允许我们对Web应用程序执行手动和自动安全测试。使用它作为代理服务器将使我们能够拦截和操纵所有通过它的流量。

我们可以在下面的步骤中使用蜘蛛功能。打开ZAP,在右上角打开浏览器。

image

在地址栏中写入网站,并使用左侧菜单中的第一个条目将其添加到范围中。

image

返回ZAP窗口,右键单击目标网站,单击攻击菜单,然后单击蜘蛛图标。

image

一旦进程完成,我们就可以看到蜘蛛进程发现的资源。

image

ZAP的一个方便的功能是内置的模糊和手动请求编辑器。我们可以发送任何请求给他们,手动修改它,或者通过右键单击请求并使用菜单“用请求编辑器打开/重新发送.或者“警察…“点击攻击菜单。

image

image

ZAP有很好的文档,可以帮助您快速使用它。有关ZAP的更详细研究,请查看HTB Academy上的使用Web代理模块

FFuF

ZAP蜘蛛模块只枚举它在链接和表单中找到的资源,但它可能会遗漏重要信息,如隐藏文件夹或备份文件。

我们可以使用ffuf来发现我们无法通过简单浏览网站来发现的文件和文件夹。我们所需要做的就是用一个文件夹名称列表启动ffuf,并指示它递归地查看它们。

mikannse7@htb[/htb]$ ffuf -recursion -recursion-depth 1 -u http://192.168.10.10/FUZZ -w /opt/useful/SecLists/Discovery/Web-Content/raft-small-directories-lowercase.txt

/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/

v1.1.0-git
________________________________________________

:: Method : GET
:: URL : http://192.168.10.10/FUZZ
:: Wordlist : FUZZ: /opt/useful/SecLists/Discovery/Web-Content/raft-small-directories-lowercase.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
________________________________________________

wp-admin [Status: 301, Size: 317, Words: 20, Lines: 10]
[INFO] Adding a new job to the queue: http://192.168.10.10/wp-admin/FUZZ

wp-includes [Status: 301, Size: 320, Words: 20, Lines: 10]
[INFO] Adding a new job to the queue: http://192.168.10.10/wp-includes/FUZZ

wp-content [Status: 301, Size: 319, Words: 20, Lines: 10]
[INFO] Adding a new job to the queue: http://192.168.10.10/wp-content/FUZZ

admin [Status: 302, Size: 0, Words: 1, Lines: 1]
login [Status: 302, Size: 0, Words: 1, Lines: 1]
feed [Status: 301, Size: 0, Words: 1, Lines: 1]
[INFO] Adding a new job to the queue: http://192.168.10.10/feed/FUZZ
...
  • -recursion:激活递归扫描。
  • -recursion-depth:指定要扫描的最大深度。
  • -u:我们的目标URL,FUZZ将是注入点。
  • -w:我们的单词列表路径。

我们可以在图片中看到ffuf如何为每个检测到的文件夹创建新作业。对于目标服务器来说,此任务可能非常耗费资源。如果网站响应速度比平时慢,我们可以使用-rate参数降低请求速率。

使用Ffuf攻击Web应用程序模块更深入地介绍了ffuf的用法,并展示了本模块中教授的许多技术。

Sensitive Information Disclosure

这是典型的Web服务器和Web应用程序来处理它需要的功能文件。但是,通常会找到可能包含重要信息或凭据的备份或未引用文件。备份或未引用的文件可以通过创建快照、文件的不同版本或在Web开发人员不知情的情况下从文本编辑器生成。我们可以在SecLists的raft-[ small | medium | large ]-extensions.txt文件中找到一些常见扩展名列表。

我们将联合收割机结合我们以前发现的一些文件夹,常见扩展名列表,以及从网站上提取的一些单词,看看我们是否能找到一些不应该在那里的东西。第一步是用以下文件夹名创建一个文件,并将其保存为folders.txt

wp-admin
wp-content
wp-includes

接下来,我们将使用CeWL从网站中提取一些关键字。我们将指示该工具提取最小长度为5个字符的单词-m5,将其转换为单词--lowercase并将其保存到名为wordlist.txt的文件-w <FILE>中:

mikannse7@htb[/htb]$ cewl -m5 --lowercase -w wordlist.txt http://192.168.10.10

下一步将是联合收割机在ffuf的一切,看看我们是否可以找到一些多汁的信息。为此,我们将在ffuf中使用以下参数:

  • -w:我们通过逗号分隔单词列表,并为它们添加别名,以便稍后将它们作为模糊点注入
  • -u:我们的目标URL与模糊点。
mikannse7@htb[/htb]$ ffuf -w ./folders.txt:FOLDERS,./wordlist.txt:WORDLIST,./extensions.txt:EXTENSIONS -u http://192.168.10.10/FOLDERS/WORDLISTEXTENSIONS

/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/

v1.1.0-git
________________________________________________

:: Method : GET
:: URL : http://192.168.10.10/FOLDERS/WORDLISTEXTENSIONS
:: Wordlist : FOLDERS: ./folders.txt
:: Wordlist : WORDLIST: ./wordlist.txt
:: Wordlist : EXTENSIONS: ./extensions.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
________________________________________________

[Status: 200, Size: 8, Words: 1, Lines: 2]
* EXTENSIONS: ~
* FOLDERS: wp-content
* WORDLIST: secret

[Status: 200, Size: 0, Words: 1, Lines: 1]
* FOLDERS: wp-includes
* WORDLIST: comment
* EXTENSIONS: .php

[Status: 302, Size: 0, Words: 1, Lines: 1]
* FOLDERS: wp-admin
* WORDLIST: comment
* EXTENSIONS: .php

...

mikannse7@htb[/htb]$ curl http://192.168.10.10/wp-content/secret~

Oooops!

通过这种方法,我们成功地找到了一个秘密文件。

Skills Assessment