注: 这是9月份第一台完全打下来的靶机,后续会慢慢补上其他记录
再注: 第一次完美打下来靶机,有点激动,笔记就写的罗里吧嗦了,如果你不幸刷到了还请见谅!
靶机名: me and mygirlfriend
安装: 白嫖到ova文件后一键安装
注意: 由于靶机模拟的是同一局域网内的一台设备,所以vmware导入时选择nat连接方式
安装好后登录kali,首先使用命令arp-scan -l,扫描当前存活动主机
多了一个192.168.88.128,这就是靶机的ip地址了
知道ip后可以用nmap扫描端口
这里根据Kami的指点:
-Pn参数是为了跳过ping检测,因为有些设备设定了ping之后不会返回信息,即“装死”,加了这个参数是检测所有存在的靶机
-sV参数:检测目标端口的版本,这个参数十分重要,可以搜集到对方的版本号、操作系统等重要信息
-n参数:让nmap跳过反向域名解析操作,dns一般比较慢,加入这个参数是为了让nmap快点
扫描到的信息如下
获得信息:负责tcp协议的22端口和负责http的80端口开着
该设备使用操作系统为ubuntu2.13,中间件为apache
可以使用浏览器查看:192.168.88.128,找一下有没有可以利用的东西
结果进去后是这样,说明该设备有安全保护措施
注:这里因为我第一次遇到的时候没有截图,所以偷了一下别人的图,ip地址才会和之前的不一样
翻译:你是谁?黑客!抱歉本站点只能本地访问
这个网站托管在一台主机上,且根据设置,只能用那台主机本地访问,相当于图书馆的图书借阅系统,只能用那几台电脑登录进去,然后再点进“书刊检索”网页,对,现在靶机上这个站点就和那个一样。
对了,说到图书馆的系统,你借阅时有没有发现,点进“书刊解锁”网页后,网址栏中显示的是127.0.0.1,这一串数字就代表了主机在本地访问时使用的ip地址。
网站访问的原理:我们的主机对某个服务器(主机)发送一个数据包,服务器(主机)受到数据包后再发送一个数据包给我们,这样我们的主机就和对面的服务器(主机)形成了连接,我们就可以访问到对面的服务器(主机)上的某些特定资源,比如说网页文件,我们访问网页文件,是用浏览器打开,打开后浏览器会帮我们编译然后看到常见的网页
那么这里有一个问题:我们发送数据包后对面如何找到我们?很简单,我们发送的数据包里,分为几个部分,其中数据包头部就包含了一个ip地址,对面的服务器(硬件)对着这个地址发送一个数据包,然后就会认为建立了连接让我们访问。
也就是说,如果我们有什么办法,把访问网站时发送的数据包做点手脚,把头部的IP地址改成它的本地访问的地址,即127.0.0.1,那不是就可以访问了?
kali系统中自带火狐浏览器,火狐浏览器提供一个叫做“X-ForWarded”的插件,这个插件就可以实现改写数据包头部的功能
我们进入火狐浏览器,点击右上角的三条横线,再点击library(插件),下载X-ForWarded,下载后发现网址栏的右边会出现一个“IP”按键,点击
输入127.0.0.1,选中“X-Forwarded-For”,刷新页面,发现出现如下场景:
成功打入内部!再打开我们的系统终端,利用nekto工具扫描目录,看下有没有可以利用的文件信息
因为对面的系统是基于linux的ubuntu,所以比较好弄,windows的高级操作完全不会来着
输入:nikto -h 192.168.88.128 -o \Desktop\result.html -F htm
参数说明:
-h:指定设备ip地址
-o:扫描信息的存放位置,这里完全复现,就先按别人的方法放到root目录下
-F:放信息的文件格式
打开result.html,信息如下
翻一下,看到当前路径下有robots.txt、heyhoo.txt两个文件,以及config和misc两个子路径
在浏览器里直接访问heyhoo.txt,看到作者留下的信息
robots文档则是直接指向了heyhoo.txt,因此根据作者在heyhoo.txt的提示,对shell下手
在页面里随便逛逛点点,发现可以注册新的账户
登录之后注意看网址栏:
&user_id=12,登录后看到这样的语句,可以大致判断出两种可能性
1、该网站的登录系统利用了mysql数据库,可以用一种叫“sql注入”的方法来获取该网站所有账户
2、该网站构造上存在水平越权的逻辑漏洞,可以直接修改user_id的方法来获取其他用户信息
首先看一下mysql,sql注入的原理:如果一个网站和数据库相连,则可以在网址栏(输入页面浏览信息)中输入数据库语法来绕过前端页面进行数据暴露等操作
验证该现象的方法:既然后面的字符包含数据库语法,那么对其进行扰乱,看一下网页背后的数据库是否会报错
“user_id=12’'a”、“user_id=12;ljlkjf;bofmg;werj;gaf;v”等信息,发现输入后按回车键,均会显示正常页面,也就是说这里不可以用sql注入
现在再试一下水平越权,先在登录状态下打开profile页面,然后更改user_id,回车,这时可以看到profile页面中的信息改变了!这里存在水平越权的逻辑漏洞!可惜password一栏中密码显示是隐藏的,老ctf水题了,按下f12,将password那里的type值删掉,破坏原有的前端渲染,就可以看到当前这个账号的密码
我们可以用这种方法获取虚拟机中所有的账户和他们的密码,但是现在由于之前的&user_id=12可以得出最多有12个账户,那么账户过多该怎么办呢?其实这种情况下需要一个python写的爬虫脚本来爬出所有账户,但现在账户少就罢了,直接手撸把
获取完所有的账户后,我们需要看一下利用哪些账户可以登录进靶机,有效获取靶机内信息
我们可以直接在当前ip的20地址中尝试登录,看一下有没有可以正常登录的原生账户,同样的,如果账户过多,就需要“密码爆破”类的工具来让脚本尝试登录
或者可以用ssh语法进行登录,但ssh并不熟悉
试了一圈后,发现只有一个叫alice的账户可以正常登录
该用户信息如下,我们拿该账户来登录后,在浏览器里瞎溜达,没找到有用的信息
现在试一下ssh登录,转到命令行,输入“ssh alice@192.168.88.128”
该语句结构:ssh +用户名+@+需要登录的设备ip地址
按下回车,如果弹出文字要输入密码,说明语法没毛病
输入刚刚获得的密码,成功用原生账户登录靶机
接下来就可以翻一下靶机里有什么好东西
先输入cd …,返回上级目录,再输入ls,发现当前路径下有root文件夹,输入cd root却显示当前权限不够
也就是说这里有几个文件夹我们是看不到的,要想把这个靶机彻底渗透,还需要更高的权限
这里就需要我们提权了,也就是想办法尽可能获得比较高的权限
对了,先看一下当前账户有什么权限,有没有突破口
命令行输入whoami,输出与当前用户名相同的alice,不是普通用户,也不是管理者权限的用户
输入sudo -l,查看当前用户有什么权限,发现当前用户可以运行php格式脚本文件
这里可以参考这个网页:linux系统下可以进行的各类操作,点击下面即可查看
点击这里有福利(bushi)
在页面中,我们找到基于php进行的sudo提权操作
直接把这段php语法的代码复制下来,黏贴到kali的命令行中,按下回车,再输入whoami查看权限,发现运行完这段代码后,已经是root最高权限了
提权成功!然后就是在系统里大胆的翻了,首先将目光锁定到root文件夹
跳转进去发现有个文件叫flag2.txt,打开,发现我们找到了本次靶机的目标之一!
相当于本次我们用自己的虚拟机攻入了同一网络下的另外一台设备,并将其彻底拿下
然后我们再到处找一找翻一翻,避开几个一般不需要翻的文件夹,发现用户alice的文件夹下有个隐藏文件夹.my_sceret
这明摆着里面不对劲,cd进入,发现里面有个flag1.txt,至此,这个靶机里所有的flag全部被找到,任务圆满完成
ps:这里根据flag1的提示,发现我们步骤上有点急了。。。