红队打靶:holynix打靶流程-文件包含-文件上传-修改伪设备提权(vulnhub)

文章详细描述了在Holynix靶场中,通过主机发现和端口扫描找到80端口的漏洞,利用SQL注入和万能密码登录,发现文件上传漏洞并进行权限提升,包括文件包含、cookie水平越权以及通过gzip自动解压实现权限扩展。
摘要由CSDN通过智能技术生成

目录

开头

1.主机发现和端口扫描

 2.80端口-万能密码-文件泄露

sql注入万能密码

文件泄露-读取/etc/passwd文件

sqlmap POST注入| SQL注入实现越权 | 水平越权

最后构造的sql语句,为什么这么构造嘞?

3.文件上传、文件解析漏洞利用

浏览器怎么访问家目录啊?

4.提权-修改伪设备提权

总结:


开头

学习的视频是哔哩哔哩红队笔记:

「红队笔记」靶机精讲:Holynix - 巧用SQL注入,不用大杀器;手动拦截,让Burp Suite下岗。_哔哩哔哩_bilibili

打靶时参考文章和本文借鉴文章:

红队打靶:holynix打靶思路详解(vulnhub)-CSDN博客

靶机下载链接见:

Holynix: v1 ~ VulnHub

下载成功后用vmware打开,跳出提示框请选择“我已移动该虚拟机”,然后设置为NAT模式,否则无法扫描到靶机!

1.主机发现和端口扫描

Sudo nmap -sn 10.10.10.0/24、
nmap -min-rate 10000 -p- 10.10.10.130
sudo nmap -sT -sV -O -p80 10.10.10.130
sudo nmap -sU -min-rate 10000 -p- 10.10.10.130  
sudo nmap --script=vuln -p80 10.10.10.130

 nmap搜索的信息:

1.开放端口:80;

2.nmap脚本扫描发现存在sql注入,CSRF,和一些目录文件;其中CSRF利用复杂我们不考虑,优先观察sql注入和目录文件。

 2.80端口-万能密码-文件泄露

sql注入万能密码

80端口根据web的样式分析,这不是一个CMS,给出提示只有登录后才能解锁更多的功能。在加上nmap脚本扫描存在sql注入,尝试登录窗口万能密码:

' or 1=1 #

登录成功alamo用户,接下来加上浏览功能,找可利用点。 在此之前把目录扫描做起:

dirb http://10.10.10.130/

 

浏览web时发现:

一个文件上传点,web是由php开发的,尝试上传PHPshell

万能密码登录的用户是alamo 上传文件报错说我们禁用上传主目录,当前用户的权限不够(思路:1.垂直提权,2.获取其他用户的账号密码,再来测试上传点)

 在员工列表可以看到我们登录的是软件开发的账号。

留言页有很多信息:

存在备份文件,定时任务 ,还要ssh登录需要knockknock 信息量这么大,但是这些文字信息感觉对我们帮助不是很大(但是我还是在这里浪费了很多时间,在打靶场过程,这些文字可能是提示也有可能是兔子洞,我们应该快速分析,将其信息收集起来,当把测试简单的点测试完成都没有思路后再回过头来分析,应该要多简单测试功能的接口

 

 尝试文件包含:

报错

文件泄露-读取/etc/passwd文件

发现在安全页存在选择文件类型,并显示的功能,看一下源码

可以看到它是根据后面文件进行显示的

因为这个路径是写在前端的,所有我们可以更改路径,看看它是否能包含其他路径

成功包含/etc/passwd

存在很多拥有bash的用户 

可以看到用户bash权限的用户中和员工列表中的员工想对应。

Etenenbaum用户是安全部门的,会不会有文件上传权限嘞?

尝试包含shadow文件,权限不够

拿我们怎么获得Etenenbaum密码嘞,只能通过sql注入了

sqlmap POST注入| SQL注入实现越权 | 水平越权

1.sqlmap POST注入

因为登录窗口存在SQL注入,抓取登录注册的包

Python.exe sqlmap.py -r post.txt

python.exe sqlmap.py -r post.txt  --dump -dbs –batch

一条命令直接把能获取的数据和数据库名列出来 

发现账号密码,其中etenebaum也有,获得了大量账号密码其中有点用户还拥有bash权限的,正常情况,都可以直接尝试ssh登录了,但是该靶机没有开发ssh.

 尝试登录etenenbaum用户

登录成功

2.SQL注入实现越权

在测试登录窗口是否存在注入点时报错,显示了sql语句,其中可以看出来username 是没有注入点的,输入’ 通过/ 转移 /'还是表示’但是没有起到闭合‘左右,password参数存在注入点’导致前两个‘闭合,单独最后一个‘报错,也可以通过,username和password分别 测试’

在usename 添加‘ password输入正常数字,没有报错,而且提示用户名密码错误

在usename输入正常数字 password添加‘,报错回显,这样也可以到走注入点出现在password.

通过报错回显的sql,我们尝试构造payload登录etenenbaum

SELECT * FROM accounts WHERE username='1' AND password='''
最后构造的sql语句,为什么这么构造嘞?

因为我们可以通过万能密码来分析 ‘ or 1=1 #  and并列的两个都是假(0),所有前面不执行,就只会看我们拼接or后面的,or 1=1 # or后面是一个永真判断,没有给出具体的筛选条件,所有查询了数据库中的第一条数据,登录第一条数据的用户;再看我们构造的payload,or前面输入的账号密码,数据库中都不存在,那么前面为假的不会执行,就会只看or后面的 username="etenenbaum",数据库中存在该用户为真, 密码被# 注释,所有相当于不要密码了,sql语句相当于简化为 SELECT * FROM accounts WHERE  username ='etenenbaum'

SELECT * FROM accounts WHERE username='1' AND password='1'or username ='etenenbaum'#'

登录成功 

3.Cookie水平越权

水平越权通过看数据包中cookie信息。有没有对身份的限制的参数 

alamo用户的cookie uid =1,尝试修改大小,变成其他人的权限

修改成2,刷新,登录用户变成了etenenbaum。

成功登录etenenbaum尝试上传php反弹shell文件。

3.文件上传、文件解析漏洞利用

尝试上传点是否能够上传

上传成功,但并不知道上传的位置,看看目录爆破有没有列出来

存在upload目录(访问为空) 

通过查看源码可以看到文件上传最后去的transfer.php文件,可以通过刚刚的文件泄露漏洞查看源码(如果是文件包含楼,也可以使用伪协议查看源码)看看上传文件的保存路径。

在此之前,gzip是个什么东西嘞?不懂就问GPT

哦哦,开启了这个选项,就会制动解压压缩包文件,并保存在用户家目录。那根据这个意思,上传phpshell在etenenbaum家目录里。

浏览器怎么访问家目录啊?
http://10.10.10.130/~etenenbaum/ 

是一个典型的网络地址格式,其中 10.10.10.130 是一个 IP 地址,~etenenbaum 则可能表示一个用户的家目录。在某些 Web 服务器配置中,使用 ~用户名 的方式可以直接访问该用户的家目录。

 进入etenenbaum的家目录但是我们payload.php.gz并没有自动解压啊,但是我们之前上传的payload.php还在

访问payload.php报错了,可能该靶场限制了只要通过自动解压的shell才能访问。

此时可以尝试继续越权寻找权限更高的账号。但根据红队笔记大佬的思路提示,刚刚上传的gz文件理应解压自动解压才对,因为Enable the automatic extraction of gzip archives.的意思是自动从gzip压缩文件中提取出源文件。然而实际情况我们在http://10.10.10.131/~etenenbaum/路径下却并没有看到gz文件被解压缩,这有点奇怪。我们尝试文件包含,上传文件脚本,查看源代码是如何些的

 

包含成功,能直接显示脚本文件,如果是文件包含漏洞是无法显示脚本文件的,或者这是靶场作者为了方便给出了的。

 压缩包转换的背后逻辑是用tar xzf解压,那么我们可以用tar czf打包文件,再进行上传:

tar czf shell.tar.gz php-reverse-shell.php 

然后我们上传这个shell.tar.gz文件试试,看看后台能否自动提取其中的文件:

尝试反弹shell

反弹成功。

4.提权-修改伪设备提权

python提高交互性:

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

查看当前权限:

sudo -l

 可以看到当前用户有不使用root密码,就能root权限执行这些命令,其中mv命令能够为我们提权(mv可以给文件改名的特点,我们只要选择chown chgrp tar三个指令中的任意一个(这里以tar为例)改名为其他名字(tar.orgi),然后再把用于提权的su命令改名为这三个中的一个(tar),然后运行sudo 指令(sudo tar)即可提权:)

sudo mv /bin/tar /bin/tar.orgi
sudo mv /bin/su /bin/tar
sudo tar

 提权成功

 

总结:

这篇靶场存在很多漏洞,有的漏洞发现简单利用也简单,但是有的漏洞就需要根据功能点分析,测试是否存在漏洞,也给了我很多思路,在面对一个web时,任何功能点都有可能会是漏洞点,都应该对功能分析可能出现的漏洞,做简单的测试; 靶场总结:

1.主机发现&端口扫描:发现存活端口80;

2.80端口测试:登录窗口存在sql注入万能密码登录,登录成功获得更多功能点,发现文件上传,用户权限不够,在安全页面发现存在文件包含漏洞,包含/etc/passwd文件,发现除了,万能密码登录用户还存在其他用户,sql注入登录其他用户,达成切换用户(cookie水平越权);登录了etenenbaum用户,可以上传文件,勾线自动解压,上传压缩包shell,访问etenenbaum家目录反弹shell

3.提权:sudo -l查看权限,发现有mv指令的免密sudo权限,因此可以通过mv将提权指令su更名为其他任意的有sudo权限的指令即可。sudo运行su更名后的指令即可提权。

通过该靶场我学习到:

1.在面对一个web时,任何功能点都有可能会是漏洞点,都应该对功能分析可能出现的漏洞,做简单的测试;

2.文字信息,不要太过于关注,先对功能点测试完,再返回分析;

3.浏览器访问家目录~用户(服务器开启权限即可);

4.gzip自动提取-自动解压上传文件到用户家目录去;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值