freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

打靶日记——prime1
2025-04-02 21:55:14
所属地 湖北省

前期信息搜集

先发现目标主机

1743594299_67ed233bb4226936cdad4.png!small?1743594288243

对目标主机进行初步的端口扫描,只有两个端口,ssh肯定是放到后面再说的,先试试80端口看看有什么

1743594413_67ed23ade71087d577fc0.png!small?1743594401991

渗透阶段

打开后发现是一张图片没有任何有用的信息于是决定对该网址进行目录爆破

1743594608_67ed247027e2f327c0552.png!small?1743594599096

还是扫出来不少好东西的,既有隐藏的目录信息还知道了靶机上部署的有wordpress

1743594716_67ed24dcd420fedcd1012.png!small?1743594705439

我们一个个看,先是 /dev目录(一个linux上比较重要的目录)发现里面是一句类似于提示的话,翻译过来大概是让我们继续挖掘网站的信息

1743594870_67ed2576dca3846edf154.png!small?1743594858639

想到对方可能放的有文本提示或者是网站备份文件等东西,于是进一步进行文件扫描(这里用的是dirb因为dirb对文件比较敏感),虽然只找到了一个但是一看就很有用

1743595125_67ed2675b9ade04a7e5d7.png!small?1743595113793

访问找到的文件,发现是让我们去做一下php页面的Fuzz(模糊测试)而且还给了一个工具和目标文件

1743595279_67ed270fa26e018b86a5f.png!small?1743595267779

于是我们先明确当前目录下有哪些php文件,发现只有两个

1743595397_67ed27857a39b859e4801.png!small?1743595386246

于是去访问了一下github页面发现不是工具而是工具的命令

1743595542_67ed281632569891b9e34.png!small?1743595529921

于是尝试在kali下进行扫描,但是image.php扫到的参数都是一个返回结果显然没用

1743595916_67ed298cbf81fa83290e5.png!small?1743595904778

对index.php进行Fuzz,找到了一个参数的回显不同似乎可以用(这里可以一个个看,也可以直接用wfuzz自带的过滤器去过滤)

1743596110_67ed2a4e9f0108912e1f8.png!small?1743596099002

尝试用该参数带着location.txt访问index.php,发现似乎是把location.txt给包含出来了,他让我们试着用secrettier360这个参数试试看

1743596254_67ed2ade08e67c5ae2fbf.png!small?1743596241764

这里尝试用file进行文件包含但是失败了1743596390_67ed2b6697c14433d263d.png!small?1743596378768

于是用他给的参数带上并带上location.txt这个值但是什么都没有

1743598148_67ed32449fc14c5c0bdb8.png!small?1743598136654

由于在刚刚的页面有类似文件包含的漏洞合理猜测这个参数可能才是用来文件包含的具体参数,于是对其他php页面尝试用这个参数进行文件包含,发现在image.php页面有反应

1743598227_67ed3293b10b28757e3f0.png!small?1743598215867

于是进行文件包含的测试,发现可以进行文件包含

1743598296_67ed32d8d8687eb55cfeb.png!small?1743598284884

在包含出来的测试文件(/etc/passwd)里发现了线索于是对目标文件进行文件包含

1743598384_67ed3330a0f137800fc5f.png!small?1743598372389

得到一个密码,想到刚刚找到了wordpress的cms所以准备用这个密码去登录后台页面

1743598492_67ed339c5f40343974c7e.png!small?1743598480335

但是用admin用户名去登录失败

1743598693_67ed3465867e9efad8867.png!small?1743598681561

于是查看主页发现了已有用户,尝试用这个用户进行登录

1743598755_67ed34a30b9033f6872e9.png!small?1743598742735

登录到后台页面

1743598904_67ed3538244988554fda9.png!small?1743598891928

wordpress的常用手法是上传插件和用主题页面写入phpshell,先看看主题编辑能不能写入shell,发现了一个可写的php文件

1743599389_67ed371d3c844cc09ad09.png!small?1743599377142

写入kali自带的shell

1743599486_67ed377e14f2ba1abf465.png!small?1743599474201

通搜索后得到了wordpress的默认主题存储路径

1743599861_67ed38f5898a110217194.png!small?1743599849274

然后通过观察页面可以得到文件名和文件路径

1743599894_67ed3916be2c872ee9e5e.png!small?1743599882778

在kali上开个监听端口后访问相应页面得到shell

1743600015_67ed398f888a69a782580.png!small?1743600003394

提权

依据靶机的描述我们需要拿到一个用户的flag和一个root的flag

1743600337_67ed3ad15ad46cabf7b11.png!small?1743600325178

所以我们先去家目录看看有没有读取用户flag的权限,在/home/saket目录下发现用户flag

1743600473_67ed3b59e8d30adb1a718.png!small?1743600461870

接下来就是得到root权限,先试试常规的手法(SUID,内核,自动任务),进行find看是否能SUID提权

发现没有可用于SUID提权的文件

1743600755_67ed3c7389c144e2176f6.png!small?1743600744076

接下来是内核提权,发现是一个很老的内核,可以尝试进行内核提权

1743600806_67ed3ca6b637034823908.png!small?1743600794540

找到一个可以用的提权脚本

1743601158_67ed3e06c45d5d0d24077.png!small?1743601147114

下载到本地,根据描述直接编译后运行就行了

1743601283_67ed3e830c13f9ad6c4aa.png!small?1743601270977

所以直接传到靶机上编译运行,发现在 /tmp目录下我们的权限较高于是进入 /tmp目录进行提权

1743601400_67ed3ef84259659aa54f9.png!small?1743601388053

发现nc用不了但是wget能用,于是决定在kali上开一个简易服务器用来传输文件

1743601508_67ed3f6473b5a83297e9d.png!small?1743601499786

因为靶机上有PHP环境于是我们也用PHP开一个服务器

1743601689_67ed40196def5529b2afa.png!small?1743601677255

得到提权文件

1743601841_67ed40b13dd3838d93cfb.png!small?1743601829106

提权成功(编译最好在靶机上编译,靶机不能编译再在攻击机编译)

1743601908_67ed40f426fc54265f3a0.png!small?1743601896019

得到flag

1743602026_67ed416ac268c77639f77.png!small?1743602014795

提取2

(参考自 https://www.bilibili.com/video/BV1wD4y1C7Da?t=629.0红队笔记师傅的思路)

看了B站上红队笔记师傅对靶机的另一种处理方式(可能也是作者设想的解题方式)感觉用这种出来方式来处理这台靶机会更好的体现靶机考察信息收集的目的,首先在我们拿到靶机的初始权限后(www-data用户)在拿到用户flag的用户目录下可以看到还有一个enc文件而且可以执行就可以想到可能跟OpenSLL有关

1743660952_67ee279866a973b9aed3c.png!small?1743660952885

所以我们先执行一下这个文件看看效果,发现需要密码用前面得到的密码进行尝试,发现没有任何提示或在当前目录产生效果,合理推测密码不正确或者效果没看到

1743661148_67ee285c931bc3148165d.png!small?1743661149095

于是接下来我们就可以从密码下手,由于密码常见文件名都有passwd,password,passlicense等我们无法确定具体是哪一个甚至可能作者在做密码文件时还会有其他命名,但是一般密码类文件都会带有“pass”这个字段

于是我们尝试进行 find看看能不能找到有用的信息

1743662300_67ee2cdc99f5100cb30f2.png!small?1743662302143

进过筛选有用的大概就是图片里面的这几个,文件也不多那就一个个看

1743662430_67ee2d5ec579eaaea38eb.png!small?1743662431550

做到这里才想起来没看 /etc/shadow 果然没权限,还是老老实实看文件算了

1743662525_67ee2dbd622e562cc14c2.png!small?1743662525768

得到密码,而且看路径作者应该是想让我们通过找备份文件找到这里

1743662688_67ee2e602665299efa770.png!small?1743662688921

文件执行成功,但是发现权限不够要root权限

1743662802_67ee2ed2246f38cee80ec.png!small?1743662802562

查看当前用户能不能用sudo去执行文件,发现可以,于是sudo去执行

1743663123_67ee3013b93c6d2f935ee.png!small?1743663124477

发现在当前目录下创建了两个文件

1743663213_67ee306d5655fc168efee.png!small?1743663213714

发现一个是类似base64的加密文件另一个是关于key的提示,那第一个文件大概率就不是base64的加密了

1743663355_67ee30fbb50cf7b27726d.png!small?1743663356376

于是先把秘钥搞出来,依据提示对 ippsec 进行MD5加密

1743663568_67ee31d03ae3bba80d5e2.png!small?1743663568552

虽然得到了秘钥但是我们对密文的加密方式并不清楚所以,可以进行爆破尝试是哪一种加密方式(太多了手工比较麻烦)

1743663973_67ee3365abb3822707d68.png!small?1743663974308

给出脚本(shell脚本不会写直接用python代替一下)

import os

# 先对可能的方法进行处理
method = '''
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       aria-128-cbc      aria-128-cfb      
aria-128-cfb1     aria-128-cfb8     aria-128-ctr      aria-128-ecb      
aria-128-ofb      aria-192-cbc      aria-192-cfb      aria-192-cfb1     
aria-192-cfb8     aria-192-ctr      aria-192-ecb      aria-192-ofb      
aria-256-cbc      aria-256-cfb      aria-256-cfb1     aria-256-cfb8     
aria-256-ctr      aria-256-ecb      aria-256-ofb      base64            
bf                bf-cbc            bf-cfb            bf-ecb            
bf-ofb            camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  
camellia-192-ecb  camellia-256-cbc  camellia-256-ecb  cast              
cast-cbc          cast5-cbc         cast5-cfb         cast5-ecb         
cast5-ofb         des               des-cbc           des-cfb           
des-ecb           des-ede           des-ede-cbc       des-ede-cfb       
des-ede-ofb       des-ede3          des-ede3-cbc      des-ede3-cfb      
des-ede3-ofb      des-ofb           des3              desx              
rc2               rc2-40-cbc        rc2-64-cbc        rc3-cbc           
rc2-cfb           rc2-ecb           rc2-ofb           rc4               
rc4-40            seed              seed-cbc          seed-cfb          
seed-ecb          seed-ofb          sm4-cbc           sm4-cfb           
sm4-ctr           sm4-ecb           sm4-ofb           zlib              
zstd              
'''

#去重
method_list = list(set(method.replace('\n',' ').split(' ')))[1::]
text = 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj'\
'8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' f = open('./a','w') f.write(text) f.close() # ippsec的md5值 p2 = '366a74cb3c959de17d61db30591c39d1' # 生成16进制的key payload = [] for i in p2: payload.append(hex(ord(i))[2::]) fin_paylaod = ''.join(payload) for i in method_list: m = '-'+i print('\n\n\n') os.system(f'openssl enc -d {m} -a -K {fin_paylaod} -in a') print('\n\n')

得到解密结果,给了一个密码

1743681199_67ee76af0b676a4a803b4.png!small?1743681199469

想到靶机开的有ssh端口而且在 /home 目录里面还有一个用户到现在也没用使用,于是想着用 ssh 登录相关账户,结果不行

1743682282_67ee7aea12c513f223ce0.png!small?1743682283161

仔细阅读得到的东西发现是 victor写给 saket的,所以说这个密码应该是 saket的,尝试用 saket登录 ssh

成功登录

1743682414_67ee7b6e44725a87d46e5.png!small?1743682414673

登录后先查看 saket是否有 root权限,发现只有一个文件可以 sudo以 root权限执行

1743682516_67ee7bd481c5e4c7b4c6e.png!small?1743682517161

尝试执行,结果是一句垃圾话和一个文件没有找到的提示

1743682665_67ee7c6986ea82a09b9ae.png!small?1743682666141

于是去 /tmp 目录下面创建一个相应文件,再次执行文件结果显示 /tmp/challenge 权限确认,猜测可能是用root权限去运行 /tmp/challenge 文件,向文件写入一个 shell 再执行试试(记得给文件加上执行权限)

1743683201_67ee7e815d6e7166a5ebf.png!small?1743683202414

1743683211_67ee7e8b49c4b71c88c0b.png!small?1743683211648

得到 root权限与 rootflag

1743683241_67ee7ea92b3fa240f44cb.png!small?1743683241678


PS

这个靶机适合当信息收集和fuzz的靶机,深刻体会到信息搜集才是渗透测试的精髓

# vulnhub靶机 # OSCP
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录