No.162-HackTheBox-Linux-Smasher2-Walkthrough渗透学习

**

HackTheBox-Linux-Smasher2-Walkthrough

**

靶机地址:https://www.hackthebox.eu/home/machines/profile/191
靶机难度:疯狂(4.6/10)
靶机发布日期:2019年10月29日
靶机描述:
Smasher2 is an insane difficult linux machine, which requires knowledge of Python, C and kernel exploitation. A folder protected by Basic Authentication is brute-forced to gain source code for a session manager on one of the vhosts. A shared object file is used by the session manager which has a vulnerable function leading to credential leakage. Then a kernel module is found which uses a weak mmap handler and is exploited to gain a root shell.

作者:大余
时间:2020-07-16

请注意:对于所有这些计算机,我是通过平台授权允许情况进行渗透的。我将使用Kali Linux作为解决该HTB的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

在这里插入图片描述
可以看到靶机的IP是10.10.10.135…
在这里插入图片描述
nmap发现靶机开放了22端口SSH,在53端口上打开DNS,在80端口上运行Apache…
在这里插入图片描述
IP访问http,是apache页面,这需要添加域名DNS…53端口也开放着,用dig搜索下…
在这里插入图片描述
命令:dig -t axfr smasher2.htb @10.10.10.135
wonderfulsessionmanager.smasher2.htb root.smasher2.htb
dig枚举到了两个域名信息…
在这里插入图片描述
添加到hosts中…
在这里插入图片描述
访问发现还是无法访问…HTB靶机,IP访问apache的话添加域名,添加域名还apache,那目录下肯定有线索!!!爆破!!

在这里插入图片描述
爆破秒发现了backup目录…
在这里插入图片描述
存在两个文件,一个py,一个.so文件…
都下载下来检查下…
在这里插入图片描述

在这里插入图片描述
简单的把所有代码通读了一遍…仔细发现了一些特征是很关键的信息…
首先脚本说到成功登录之后,服务器将使用访问端点的密钥进行响应:/api//job,该端点仅接受POST请求,发送的数据必须是:json,然后通过该端点,还可以在参数中提供系统命令(bash)来执行系统命令schedule…
根据简单的理解,这里可以利用拦截到curl代码,获取job相应密匙,和post请求cookie,在利用密匙和cookie进行简单的注入即可…
在这里插入图片描述
可看到文件是一个编译的python共享库,so代表共享对象…
在这里插入图片描述
官网地址:https://ghidra-sre.org/
这里我利用ghidra进行查看该文件内容,这文件并不陌生,我很早在htb_win靶机也用过…
方然这里也可以用类似r2,IDA等进行逆向分析…
这里进入官网下载安装包…
在这里插入图片描述
jdk下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
安装ghidra需要JAVA jdk复件运行,对应系统进行下载即可,这软件非常好,我就安装在我的新MacBook Pro上了,下了mac系统包…
这里安装很简单,只要安装好了jdk,直接运行ghidra安装包就能安装好,不会的可以看前面ghidra官网上左下角有视频教程…
在这里插入图片描述
运行后选择ses.so文件,就是前面backup下载的文件…
在这里插入图片描述
继续选择
在这里插入图片描述

在这里插入图片描述
继续选择包,成功读取…
在这里插入图片描述
枚举中,发现了get_interna函数,pwd和user俗称用户名密码…
在这里插入图片描述
查看get_internal_pwd()和get_internal_usr()后,发现pwd和user代码相同…
说明用户名和密码是一致的…那么枚举到用户名即可知道密码…
在这里插入图片描述
来到登录页面,该页面就是前面枚举53端口dns获得的…
在这里插入图片描述
根据前面py和so文件获取的思路,使用burpsuit进行拦截…
通过尝试,发现Administrator用户是ture…
那么利用key和cookie试试…
在这里插入图片描述
简单的shell…
在这里插入图片描述
成功的…那么这里继续尝试提权看看…要个外壳
在这里插入图片描述
通过尝试,和前面脚本中/ ’ 等符号提示,这里利用符号隔离,找到了文件上传的漏洞…
在这里插入图片描述
根据简单写的EXP,获得了shell外壳…
并获得了user_flag信息…

在这里插入图片描述
dzonerzy用户目录下有README的一封消息,意思说需要在框外思考root smasher2提权…
在这里插入图片描述
可看到在group组中,寻找了下adm组中的SUID…可查看日志信息…auth.log
在这里插入图片描述
命令:strings /var/log/auth.log | grep COMMAND | cut -d: -f5- | sort -u
读取后我发现了有大量的信息,我通过筛选…
insmod代表的是insert module,是用于加载内核模块的工具,dhid.ko是内核模块(ko代表内核对象)…
继续查看下底层

在这里插入图片描述
检查了已加载的内核模块,发现该模块正在加载…
利用modinfo查看了该模块的具体信息…
我现在需要把他拷出到本地…
在这里插入图片描述
这里发现在用户目录下没有ssh_key,在本地ssh-key生成了key密匙…
在这里插入图片描述
复制进入成功登录(这里方法讲烂了,不懂的百度吧)…

在这里插入图片描述
命令:scp -i id_rsa dzonerzy@smasher2.htb:/lib/modules/4.15.0-45-generic/kernel/drivers/hid/dhid.ko ./
利用scp讲文件传出…

在这里插入图片描述
继续利用ghidra打开逆向分析…
在发现的dev_read()中提示了需要获得root根的开始情况…
在这里插入图片描述
dev_mmap()这是一个自定义mmap处理程序…主要是系统调用即可将内存映射到文件或设备作用…继续详细解答
remap_pfn_range()函数的调用是将内核内存重新映射到了用户的空间…
说如果再次查看该函数调用,可以看到在没有任何事先验证的情况下,给函数提供内核内存的物理地址和映射区域的大小…
这说明可以映射所需的任何大小的内存并对其进行读写,从而甚至可以访问内核内存…
但是方法怎么执行呢…google

在这里插入图片描述
https://labs.f-secure.com/assets/BlogFiles/mwri-mmap-exploitation-whitepaper-2017-09-18.pdf
google搜索到了次PDF,详细的讲解了和此次相关的技术…

在这里插入图片描述
该文档将映射一个巨大的存储量,并通过它为我们的进程搜索cred结构(该cred结构包含着我们的进程凭证),然后覆盖我们uid、gid和suid等来执行/bin/sh…并获得root权限…
需要知道:
1、使用mmap处理程序打开内存
2、当前的uid是什么
3、扫描内存以查找与当前用户的凭据结构相匹配的内容
4、用0替换uid / guid
最后循环执行即可…

在这里插入图片描述
首先根据文章提示,简单复制并修改了内容…
gcc编码…scp上传
在这里插入图片描述
首先使用mmap处理程序打开内存…在这里插入图片描述
/dev/dhid
重新打开ssh,查看了该内存程序确实是dhid执行着…
说明进程内存映射成功…
在这里插入图片描述
这里详细讲解了我接下来的方法…仔细阅读

在这里插入图片描述
根据文章提示,在pwn中插入了该编码,可看到在内存中搜索该模式,找到了有效的cred结构模式…
在这里插入图片描述
通过使用0并检查是否uid更改为0的编码…
通过几个覆盖找到了cred的凭证…
在这里插入图片描述
通过cred使用0xffffffffffffffff插入并执行来覆盖结构中的功能/bin/sh…技术文章也详细介绍了
在这里插入图片描述
最终获得了root权限,并获得了root_flag信息…

ghidra详细的对ses.so和dhid.ko进行了逆向分析解读…
DNS挖掘–目录爆破–python脚本解读–ghidra逆向分析–编写简单EXP提权–枚举group组信息–解读内核模块–C语言编程测试(虽然借鉴了技术文章)–最后获得了最后获得了shell…
其中还有一些wfuzz枚举用户名,ssh-key技术,scp上传等等,缺一不可…

Smasher2是一台疯狂的Linux机器,它需要Python,C和内核开发方面的知识,熟悉解读虚拟主机上的会话管理器的源代码,然后在解读使用弱mmap处理程序的内核模块,最后并利用该模块获取根shell…

对于我来说很难…写了几天了…加油

由于我们已经成功得到root权限查看user和root.txt,因此完成这台疯狂的靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值