目录
开头
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自动提取-自动解压上传文件到用户家目录去;