前言: 定了一个小目标,今年把OSCP拿下。于是,时隔一年多,重启了渗透测试的学习之路,之前打的VulnHub系列靶机还是比较基础的,基本只利用了一个中间件漏洞就能拿到shell,然后靶机系统都非常老,一个脏牛基本都能提权成功。为了更靠近OSCP考试的难度,这次直接上上强度,选择的靶机是HTB(Hack The Box) 的靶机--Pilgrimage。 开干: 1、环境准备
选择HTB的Pilgrimage靶机,下载HTB的VPN。
2、扫描开放端口 使用htb的vpn连接成功后,靶机ip就会出现在页面中,省去了之前定位目标靶机的步骤。 使用nmap命令扫描开放端口 可以看到,开放了2个端口,一个22 SSH,一个80 HTTP。 3、寻找漏洞尝试利用 先访问下80端口的http服务: 可以看到Home界面有个图像缩放(shrink)功能,另外还有一个登陆页面,一个注册页面。 看到一个图像上传功能,我第一时间就想到任意文件读取漏洞,种个PHP大马进去。结果遇见两个问题,第一个就是将一句话大马放到请求体传输过去,返回错误。第二个就是 将一句话大马 塞进图片中间传输过去,返回了一个文件URL,访问那个URL又是404。 按照以往靶机的经验,如果任意文件读取漏洞存在的话,就能轻松反弹shell,所以在这边做了很长时间的尝试,都是以失败告终。 看到还有个登陆页面和注册页面,试了试admin弱口令,不存在弱口令问题。对登陆、注册接口做了sql注入的扫描,未发现sql注入漏洞。接下来使用dirb 对这个网址进行目录爆破也没发现什么新的目录。 这个靶机按照以往的方法进行渗透,有点黔驴技穷的意思了。 接下来小伙伴推荐了一个web漏洞扫描工具:Nikto Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/CGIs;超过625种服务器版本;超过230种特定服务器问题。扫描项和插件可以自动更新(如果需要)。基于Whisker/libwhisker完成其底层功能。 使用nikto对靶机网站进行漏洞扫描 可以看到,这边扫出了/.git 目录,可能之前dirb爆破的字典还不够多,没扫出这个目录。 其实在我对这个靶场进行回顾时候,我发现nmap已经扫出这个目录了,只不过当初漏过了这个重要信息。 Git是一个分布式版本控制系统,可以跟踪任何一组计算机文件的更改。当我们克隆一个github项目时,就会创建.git文件夹。 下面介绍一个工具 git-dump,地址如下:https://github.com/arthaud/git-dumper ,这个工具可以直接转储对方机器上的.git目录下的文件。 可以看到除了资源文件夹,网页php文件外,还有个magick文件。尝试运行下: 可以看到这个工具叫ImageMagick,是一个图片压缩工具,工具版本为7.10-49 beta。 在exploit-db.com 上搜下这个工具有没有漏洞: 可以看到符合版本的有2个,一个dos,一个任意文件读取。能帮助我们拿更多的信息可能需要利用这个 任意文件读取的漏洞。点进去,看见PoC地址为:https://github.com/voidz0r/CVE-2022-44268 先按照目录 clone下这个工程 看到工程内容,加上上面的How to use ,大概猜想出用法如下: 1、先利用cargo run + 文件路径 命令将要读取文件的路径植入到image.png中。 2、把image.png通过ImageMagick服务压缩为图片output.png。 3、利用identify -verbose output.png解析压缩过后的图片,这时候之前给的路径对应的文件内容应该已经包含在图片中了。 4、最后解析HEX,还原文件内容。 这时候我们已经知道了ImageMagick这个组件存在一个任意文件读取漏洞,而且知道了大概这个漏洞是怎么利用的。那么问题来了,我们读取什么文件呢··· 这时候又想到这个http服务,还有个登陆注册页面,那一定有个数据库存放登陆注册的用户信息。接下来就去登陆注册的php页面中查找下,是否包含数据库文件的路径。 找到数据库文件路径为: /var/db/pilgrimage 按照之前猜想的PoC使用方法 然后将image.png上传首页的图片压缩服务,下载压缩过后的图片,使用identify -verbose output.png命令解析压缩过后的图片: 可以看到这个 /var/db/pilgrimage 数据库文件的HEX已经在这了,使用python3 -c 'print(bytes.fromhex('hex内容')) 命令解析下上面这段hex: 由于是数据库文件,可能解析还有点乱码,不过可以大概猜到有个emily的用户,接下来将这段hex保存为文件,然后写个解析sqlite文件的小程序 import sqlite3 conn = sqlite3.connect('htb.db') cursor = conn.cursor() cursor.execute('SELECT * FROM users') results = cursor.fetchall() for row in results: print(row) conn.close() 得到结果为emily ,abigchonkyboi123,用户为emily,密码为abigchonkyboi123。 接下来用ssh尝试连接: 可以看到已经拿到shell。接下来读取第一个FLAG: 4、提权 按照传统思路,查看下内核版本: searchsploit 并未搜到什么结果: 下面介绍一个查找权限提升的工具PEASS-ng,github地址如下:https://github.com/carlospolop/PEASS-ng kali下载对应版本,本地开启一个端口: 靶机wget下这个查找提权信息的工具: 靶机中赋予这个工具777权限,运行: 可以着重关注下Executing Linux Exploit Suggester: 这里包含了可能存在提权可能的cve。尝试了dirty pipe、suid提权等方式都以失败告终。到了这里又没有什么思路了··· 因为这个靶机是公共靶机(没舍得充钱),别人上传的文件我也能看到,我看见别的大佬上传了一个binwalk相关的PoC(忘记截图了),然后我试着运行了binwalk: 发现靶机上真的安装了binwalk组件,版本为2.3.2。 Exploit Database搜下: 发现这个版本的binwalk真的存在一个RCE漏洞。别的大佬应该是靠这个方式提权成功的。但是我还是很好奇大佬是怎么定位到这个靶机上有这个binwalk组件的。后来看见CSDN有位大佬的分享,大佬是先用pspy工具查看了靶机中运行了哪些进程,然后定位到的。 接下来按照大佬的思路尝试下,先下载pspy工具,地址如下:https://github.com/DominicBreuker/pspy,然后运行下,查看有哪些正在运行的进程: 可以看到这边运行了一个sh脚本,我们cat下,看看脚本内容: 这边执行了一些binwalk的操作,然后检查shrunk目录的每一个新创建的文件。 学习了下大佬信息收集的思路,接下来就是利用binwalk RCE漏洞来提权啦。这个漏洞的CVE-ID:CVE-2022-4510 接下来看看这个漏洞如何利用: 三个参数,第一个是png文件,第二个是kali的ip,第三个是kali的端口。 执行完这个命令,本地多了一个binwalk_exploit.png。 kali开启9999端口的监听: 靶机shrunk目录下载binwalk_exploit.png文件,完成提权: 5、总结 这次的Pilgrimage靶机,多数人给的难度评分为 EASY,但是我体验下来,感觉还是比我以往打的靶机要难不少的,走了很多弯路,比如这个靶机,看见图片上传功能,就一头扎进了任意文件上传的尝试。linpeas跑出可能有脏管道,dirtypipe也是一头扎进去了。不过通过这个靶机也是学到了很多信息收集的新姿势,收获满满~~~ |
|