最近做HTB靶场的总结

= =来报到一哈子

1.见到泄露的ssh key拉到本机用john破解

2.nmap扫到443端口,并且带有SSL证书的。类似于/ ssl-cert: Subject: commonName=staging-order.mango.htb/organizationName=Mango Prv Ltd./stateOrProvinceName=None/countryName=IN
staging-order.mango.htb和靶机的IP加到/etc/hosts。并访问http://staging-order.mango.htb,有惊喜

3.在靶机上拷贝文件base64 xxx.xx,之后在本机上echo "[base64内容]" | base64 -d > xx.xx

4.拿到靶机权限后,先去home目录确定用户名,在到目录里翻敏感文件,例如:/opt/id_rsa.bak

5.拿到低权用户后,第一步不要脸sudo -l看看有什么可以搞提权的

6.感于尝试爆破,Mysql、Redis、web界面的,kali默认字典路径:/usr/share/wordlists/

big.txt #大的字典
small.txt #小的字典
rockyou.txt #常用密码字典
catala.txt #项目配置字典
common.txt #公共字典
euskera.txt #数据目录字典
extensions_common.txt #常用文件扩展名字典
indexes.txt #首页字典
mutations_common.txt #备份扩展名
spanish.txt #方法名或库目录
others #扩展目录,默认用户名等
stress #压力测试
vulns #漏洞测试

7.见到网页提示的,例如SuperSecureServer.py。那么在某个目录有

wfuzz -w /usr/share/wfuzz/wordlist/general/big.txt --hc '403,404' -u http://10.10.10.168:8080/FUZZ/SuperSecureServer.py

8.见到不认识的服务或者CMS之类的,exploit-db找exp。searchsploit xxx,例如:searchsploit webmin。根据现有条件寻找适配exp利用,找有用的exp,例如:数据泄露、注入、RCE、文件读取、文件下载

9.靶机名往往就是后台的登录名或者ssh的用户名

10.能用wfuzz进行目录爆破的绝对不用dirb等工具,爆破目录或DNS或子域名用gobuster

  1. 只有80和22的情况下, 80访问403 burp抓包值留GET请求那一行可以获到新的域名然后加到hosts里

12.有登录页面的时候,先看看源代码有没有泄露,13注意页面的js路径。点开看看里面的内容,往往能发现框架作为突破点

13.往登录username注射'or'1'='1,admin'-- -或密码框注入'or'1'='1

14.随手抓包sqlmap尝试注入和burp跑弱口令

15.不要放过提交的登录框,输入之后burp拦截看看有没有泄露

16.如果有大量子域名都指向同一个ip,但是其中一个子域名物理路径泄露。例如:test.abc.com泄露的路径是这样的:/var/www/html/test,第二个子域名:admin.abc.com,那么猜测:/var/www/html/admin

17.burp观察返回的cookie或者token,耐心分析cookie和token是什么加密的或者对应的含义

18.如果获取一个jwt的token,可以到jwt.io生成对应的token来替换原来的

19.如果有LFI漏洞或者拿到shell之类的话,先看开放端口的配置文件,在看/proc/net/tcp配置文件看看有什么nmap没扫出来的端口

20.如果有两个端口开着一样的服务,恰巧你有个凭证。但是第一个端口登录不上,试试第二个端口用凭证登录

21.如果拥有用户后,但是shell限制了执行的命令。恰巧你有个shell,可以sudo -s /bin/bash <username>就可以切换shell

22.敢于searchsploit搜索关键字,并尝试。每次搜索之前先更新searchsploit,更新命令searchsploit -u,searchsploit -m <ID号>(用于将exp复制到当前目录)。例如是/exploit/xxx/4196.sh,那么命令就是searchsploit -m 4196。复制完之后记得将sh里的\r替换为空不然会报错

23.拿到webshell后,先反弹到本机。常用php-reverse-shell里面的php-reverse-shell.php来做反弹,记得修改里面的反弹IP和端口

24.反弹shell成功后,先看看home目录下的目录。然后进入到web目录寻找数据库用户凭证,尝试连接mysql。说不定里面有ssh用户的凭证,如果mysql不允许外连。尝试用数据库的密码爆破home目录下的用户名。用数据库的密码连接ssh

25.拿到某个用户shell后,发现当前目录并没有user.txt。说明user.txt在另外一个用户手上。可以用命令寻找当前文件属主属于这个用户的,然后分析这个文件。说不定有惊喜。find / -user <username>,重点关注后面部分的。直到关注的目录:/var/、/home/、/opt/

26.跟25步,可以去查看端口服务的配置文件。翻遍整个文件夹说不定有惊喜

27.若是扫出目录,可以现查看源代码判断是否是纯静态的前端

28.若是发现目录遍历漏洞,耐心寻找敏感文件

29.关注页面所有的功能点

30.searchsploit搜的exp不会用的话,可以去找exp用于msf的。查看rb那个exp,里面有默认路径设置哪些说明。或者导入模块查看要设置的就自动怎么利用了

31.如果有多个用户,而你登上去的那个用户没user.txt的话就不用想着提权了。必须得搞到有user.txt的用户才能提权root

32.如果/var/www/目录下不值一个文件夹,那么可能是多个站点运行。可以去看一下apache的配置文件,如果配置文件指向/var/www为根目录文件。但是另外一个文件夹访问是404的话可以确定是多站点,可能另外个站点里有突破点。去/etc/apache2/sites-enabled目录下查看虚拟机站点配置

33.如果搜到用户属主的文件,那么可以根据这个文件名拿来搜索,说不定能找到有用的信息

34.如果有开发53端口,可以尝试host axfr@<IP> <domain>可以发现一些域名(DNS区域传输漏洞)

35.用IP第一次请求的时候,用burp拦截。将Host改为<标题名>.htb 看看页面有没有变化,如果有说明隐藏了一些东西。修改hosts,当然也可以直接修改

36.有类似于执行ping命令的,尝试一波命令执行

37.搞web先开burp

38.注意枚举ROOT权限运行的脚本或者进程

39.要是有robots.txt多关注robots.txt里的内容

40.多关注登录页面的js

41.要是通过枚举可以得到对应的用户名的话,也可以用来作为密码。比如enum4linux枚举出smb的用户名,也可以用枚举出来的用户名作为密码字典进行爆破

42.进入某些登录之后的页面或者smb那些登录成功后,有users等或者其他关键字的。特别注意

43.如果爆破成(比如smb)功进入某些文件夹,进入那些文件夹后发现大多数都没有东西。只有一个文件夹有东西,里面有个文件还有关键字Password等。而且这个文件没有注明username是谁,很有可能这个文件夹的名称是username

44.如果是windows的机器,拿到远程登录的凭证用,evil-winrm登录

45.如果windows的机器有域并且有(Azure AD),可以尝试一波域泄露检测

46.如果有页面提供了API语音识别的示例,可以通过 https://www.text2speech.org/这里输入对应的字符然后下载到本地。上传到API语言识别的页面,如果有返回显示可以尝试试一下SQL注入。在 https://www.text2speech.org/输入SQL语句生成wav后上传过去检查

47.拿到一个用户shell后,如果有nmap没有扫描出的端口,比如Tomact那些。可以通过ssh转发到本机

48.如果发现有jsp服务可优先去挖这个服务的洞,因为jsp的权限很高。不是root就是system

49.拿到一个低权shell后,可以用pspy来枚举高权进程。32位的一年pspy32,64位的用pspy64

50.多关注gobuster扫出来的路径,一个路径可能有提示例如SQL语句的提示。那么另外一个路径可能有关联。像AI这题一样:
https://www.youtube.com/watch?v=7n7YRntu3bc&feature=youtu.be

51.Linux提权辅助工具(还有别的系统的):

52.遇到高权的调试进程,敢于尝试去调试和利用。关注exec函数怎么调用

53.要是有apache多站点配置的,sites-enabled文件夹下的配置文件和web根目录下的文件夹名字一样。那必有一腿,然后里面一般有个啥php让你提权啥的。直接运行不行,得看配置文件里的另外个端口。curl http://xxx/xx.php就行了

54.注意底部的文字,特别是粗体的。或者字体特别大的往往是提示,就像AI那题(底部的:"We mostly use similar approach as Microsoft does.Note: Currently our is API well familiar with Male-US model" 这个就是提示)

55.如果有sql注入,列出数据库名后看看有没有和题目名称一样的数据库名。如果有的话一般里面都有凭证

56.如果sql注入之后发现没有任何有用的凭证信息一般都是os-shell

57.如果拿到www-data那种权限的话还是可以长寿一下sudo -l的。貌似和上面记录的冲突了,非拥有user.txt的sudo -l有东西都是某个用户的权限,要提权到那个用户

58.HTB一般都得先拿到拥有user.txt的用户才能提权到root

PS:记录每一步信息收集到的过程,有子域名就那些就单独列出来一个项目来做记录

YouTube的UP主的解说视频:
https://m.youtube.com/results?q=IppSec&sm=12
(有些题表面是Easy,实际上是Difficulty)

2 Likes