vulhub Holynix
vulhub Holynix walkthrough
该靶机提供的为tar.bz2文件,先用PS解压
0x01 端口扫描
主机发现:
全端口扫描:
tcp只开了80,保险起见进行udp扫描:
目前来看确实只有80开放,进行详细信息扫描:
ubuntu跑着apache,开始web渗透:
0x02 web渗透
跑起目录爆破,同时打开浏览器访问web服务:
一个登录界面
一句话绕过登录,以alamo身份进到系统
雇员名单
从留言板得知信息:
- 可能目标机安装了gcc
- 可能有一个每五分钟一次的计划任务
- ssh服务被部署了端口敲击隐藏起来
可以上传文件,且可以自动解压gzip文件
只多扫出来两个存放杂文件的目录
从文件上传入手:
报错alamo不允许传文件
那就先看Security项目:
该功能通过此选项控制下方内容,抓包测试,无注入,但text_file_name参数处存在目录穿越:
读到/etc/passwd发现除了alamo还有不少其他用户,可能有人有文件上传权限,又想起来登录页面有注入点,尝试注入:
可以打通,且有creds库,查看:
看到sqlmap使用的盲注,跑字段果然dump不出来东西,如果还要查就需要写盲注脚本了
不过先不急,还有另一个线索可以尝试:
目录穿越可以成功,大概率使用的数据流操作函数,尝试使用伪协议读文件:
1 |
|
果然可以,这里可以看到upload页面使用auth校验身份,但此文件中又未定义,那么大胆猜测是通过cookie验证的,抓包:
很幸运的是直接用uid=1确定身份,尝试修改:
成功上传,且看到名字变成了etenenbaum
为了找上传路径,查看上传文件的transfer.php:
1 |
|
- 不使用解压缩功能:上传到upload/,之后移动到对应的家目录
- 使用解压缩功能:上传到upload/,解压缩到对应的家目录
- 还执行了一个脚本
exec("/var/apache2/htdocs/update_own")
/var/apache2/htdocs/update_own:
1 |
|
暴露出了所有用户名,暂时没什么用
前往家目录找上传的马:
apache每用户目录
从源码可以看到最终的保存路径是/home/user,但只能通过~user的方式从web访问到:
Apache Web 服务器通常允许用户创建个人网页或站点,这些网页可以存放在每个用户的个人目录中。
http://<ip>/
user1 和 http://<ip>/home/user1 并不等价。在Apache Web服务器中,/home/user1 是用户的个人目录的实际位置,而 ~user1 是通过mod_userdir模块配置的用户主页的访问路径。http://<ip>/user1 是一种特定的语法,在Web服务器中会被解析为用户 user1 的个人目录。而 http://<ip>/home/user1 则是直接指向 /home/user1 目录的路径,没有经过 Apache 的 mod_userdir 模块的解析。因此,这个路径可能无法正常访问到用户的个人网页。
回到题目:
居然没有读权限!猜测对整个家目录的上传的文件不具有读权限,想起来上传点还有解压功能,而且tar的解压命令是支持动态软链接的,值得尝试通过软链接将上传路径改到web根目录:
软链接写马
test1用来改变目录,删掉现有test文件,创建test目录用来写马:
依次上传test1、test2,最终在web路径下访问shell.php:
注意:上传完test1后其实并不会在旧上传目录下看到test,将test理解为管道较为合适
成功rce,反弹shell:
使用mkfifo反弹成功
0x03 提权
这里也可以看到test确实指向了网站根目录
sudo枚举发现不需要密码就可以执行mv
mv提权
由于
sudo mv
不需要密码,故将/bin/su移为/bin/mv,执行sudo mv
即无密码执行sudo su
0x04 总结反思补足
文件上传软链接
利用1. 任意文件读取
条件:知道绝对路径、(www-data) 有读权限
zip --symlinks
和tar czf
均可打包动态的软链接,上传被解压后访问可以像钩子把目标文件勾出来
1 |
|
利用2. 改变文件上传路径
条件:知道网站根目录绝对路径
test1用来改变目录,删掉现有test文件,创建test目录用来写马:
依次上传test1、test2,最终在web路径下访问shell.php:
注意:上传完test1后其实并不会在旧上传目录下看到test,将test理解为管道较为合适
在web路径下访问到了shell.php
sqlmap少用batch
再次使用sqlmap跑了遍注入,去掉了batch参数,跑出来了:
0x05 总结
- 端口扫描:只扫到了web服务,且存在sql注入
- web渗透:sql一句话进入系统后台,存在当前用户无法使用的文件上传功能,修改cookie成功越权;在找不到上传路径的情况下发现文件包含点,利用伪协议读出各文件,得知上传路径为家目录,但无权访问家目录下的shell;猜测原因为目录权限问题,结合提供了解压缩功能,上传软链接修改上传路径为web根目录,在新上传路径下访问到shell,蚁剑连接,尝试多种反弹shell语句,最终mkfifo反弹成功
- 提权:mv命令具有无需密码的sudo权限,将mv的执行文件替换为su的执行文件,执行sudo mv达到sudo su的提权效果