DC-1靶场实操

靶场部署

下载网址:Vulnerable By Design - Search: DC- ~ VulnHub

tips:强烈建议各位师傅们使用迅雷或idm要不然下载靶场将是一个十分痛苦的环节

之后环境搭建操作步骤一致故此处搭建环境以DC-1为例

将下好的压缩包解压,你就会看到一个.ova文件,用VMware将其打开即可打开过程中可能会遇到如下报错

 点击重试即可

tips:将DC-1的配置改为net模式,更改网络适配器需要在虚拟机关闭时才能更改

 

相关知识

指纹

和人一样网站也有指纹作为自己唯一id,网站指纹是 Web 服务组件在开发时留下的类型、版本等标记信息,包括 Web服务器指纹、Web运用指纹及前端框架指纹等。我们可以通过前端网页和返回一些 HTTP 头信息来判断网站使用的哪些开发框架、服务器、系统,在渗透测试时也可以提供有针对性的测试思路。

这里介绍两个指纹检测工具:

  • whatweb

该工具是kali自带的工具

  • wappalyzer插件

该插件可在谷歌插件市场中下载,作为浏览器插件使用方式简单,有可视化界面读取方便

 

SUID提权

在进入提权之前我们需要了解一些概念

ruid(real uid):实际用户ID其实就是当前登录系统的用户ID

euid(effective uid):有效用户ID就是当前进程是以那个用户ID来运行的

suid(saved set-user-ID):而保存的设置用户ID实际上就是有效用户ID的一个副本

提权原理:

在运行一个进程时,该进程的有效用户ID在一般情况下是实际用户的ID,但是如果该可执行文件具有SUID的权限,那么他的有效用户ID就是这个可执行程序的拥有者。

用人话来说就是,如果一个可执行文件留有suid位,当一个用户执行该文件时将获得与该文件所有者相同的权限;

eg:a是一个可执行文件且所有者是root,之后他还留有suid位,此时一个普通用户运行了此文件,那么此时该普通用户就获得了和root一样的权限,我们只要加以维持权限我们将成功获得root权限;

现在已知的具有SUID权限的二进制可执行文件大体有如下这些:

nmap vim find bash more less nano cp awk

本题中使用; find提权

语法:find [path…] [expression]
path为查找路径,.为当前路径,/为根目录
expression即为参数
-name: 按文件名查找文件
-perm: 按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限
-user: 按照文件属主来查找
-size n: 文件大小是n个单位
-type: d:目录 f:文件 c:字符设备文件 b:块设备文件
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。

一个find提权的实例演示

因为本地环境中find并非留有suid权限所以先进行更改

sudo chmod u+s /bin/find

更改好后检查是否添加成功

进行提权测试

tips:留suid为提权时需要加-p

防范

不要轻易给易被利用的文件以SUID权限,防止SUID的滥用导致黑客在进入服务器时轻易获取root权限。

信息收集

使用nmap发现存活主机

也可以使用arp-scan探测

sudo arp-scan -l

发现目标靶机探测存活端口

我们可以看到开放了3个端口其中包含80端口,所以我们尝试进行访问

进入后是一个登录界面尝试弱口令无果,所以继续信息收集

之后我们进行指纹识别

whatweb -v ip 

信息收集至此算告一段落,接下来就开始漏洞利用了

漏洞利用

之后使用msf查询对应框架的漏洞

搜所drupal披露漏洞

tips:优先利用时间接近且rank为excellent

 在use时可以use对应的数字也可以时Name

这里看看2018的

options中required为yes的是必填选项

填写好后进行攻击,等待msf运行完毕连接shell

这里我们使用一个伪终端便于观察

python -c "import pty;pty.spawn('/bin/bash')"

这里我也疑惑了很久为什么不用他自己的shell而用了python的pyt之后在阅读师傅的文章时发现了这样一句话:

当我们拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当我们想使用vim、top等命令时,webshell就无能为力了。

flag1

 

在www目录下查看发现了flag1.txt,cat一下给了我们下一个flag的提示

Every good CMS needs a config file - and so do you.
#一个好的cms需要一个配置文件你也如此

flag2

这里需要寻找配置文件

find . -name "set*"

tips:drupal7的目录结构及术语 - Just Code - ITeye博客

这里做一个小小的解释/sites/default/settings.php 配置文件,主要是数据库连接配置根据flag1的提示我们cat一下看看我们看到了flag2

 

flag3

flag2处有一段提示

Brute force and dictionary attacks aren't the
 * only ways to gain access (and you WILL need access).
 * What can you do with these credentials?
 
 蛮力和字典攻击不是
 *只有获得访问权限的方法(您将需要访问权限)。
 * 您可以使用这些凭据做什么?

关于蛮力和字典让我们想起了访问ip时首页是一个登录界面,所以猜测这里应该以管理员身份进入网站拿到下一个flag

关于提权,这里尝试了一下suid没有成功就没有继续了,flag2中我们获得了数据库账户和密码所以我们先连接一下数据库再继续操作

查询数据库相关信息

查询表单看到其中的users表,进去看看

select * from users\G;

tips:\G的作用是将查到的结构旋转90度变成纵向,这样更便于我们观察

我们找到了admin账户和密码,但是由于安全性考虑数据库中的密码并非是以明文的方式存储的(防止管理员撞库操作)这里经过了hash加密,此时我们需要继续寻找存储时的加密文件

进入查看一下加密文件

我们可以看出这玩意的用法貌似是这样的

 

因为我们可以进行数据库的连接所以我们可以将管理员密码也进行修改从而登录站点将生成的密码改为我们自己的

update users set pass="$S$D05OmGdE1kegARENQFfQ3UcGTLzgxak3lXsWzGGZ0oqelFyT.MB7" where name="admin";

此时再利用账户admin密码123456即可进入网站

 

flag4

根据passwd我们去产看一下/etc/passwd

进入查看

您可以使用相同的方法来查找或访问 root 中的flag吗?

可能。但也许这并不容易。 或者也许是?

flag5

这里就设计到提权,查看默认以root权限执行的程序

find / -perm -u=s -type f 2>/dev/null

顺便试一试suid可不可以结果发现失败了

看到有find所以使用find提权

进入/root目录下就可以获得最后的flag

find / -exec "/bin/bash" -p \;

 

参考文章

浅谈Linux下的ruid、euid、suid及普通用户可执行程序以root权限特权运行的方法 - 简书 (jianshu.com)

(17条消息) linux——SUID提权太菜了怎么办?的博客-CSDN博客suid提权的思路和过程

(17条消息) find基础命令与提权教程hyled-Ava的博客-CSDN博客find提权

(17条消息) DC-1靶场实战详解a310034188的博客-CSDN博客dc-1靶场

简谈SUID提权 - FreeBuf网络安全行业门户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值