Linux渗透测试

归属控制

访问控制概述

文档归属(是谁的?)

  • 属主:拥有此文件/目录的用户 - user
  • 属组:拥有此文件/目录的组 - group
  • 其他用户:除所有者、所属组以外的用户 - other

访问权限 (能被怎么用?)

  • 读取:允许查看内容 - read
  • 写入:允许修改内容 - write
  • 可执行:允许运行和切换 - execute

查看Linux文档的归属

执行ls -l命令查看

  • 输出信息包括7个字段
1
2
3
4
[root@ntd ~]# ls -l
总用量 8
-rw-------. 1 root root 1179 12月 28 11:06 anaconda-ks.cfg
权限位 硬连接数 属主 属组 大小 最后修改时间 文件/目录名称

更改文档归属

chown命令

  • 格式:chown 属主 文档
1
2
3
4
5
6
7
8
9
[root@ntd ~]# useradd zhangsan         //创建用户
[root@ntd ~]# useradd lisi

[root@ntd ~]# ls -ldh /home/zhangsan //查看目录归属
drwx------. 2 zhangsan zhangsan 4.0K 1月 2 09:49 /home/zhangsan

[root@ntd ~]# chown lisi /home/zhangsan //修改目录属主为lisi
[root@ntd ~]# ls -ldh /home/zhangsan //再次查看目录归属
drwx------. 2 lisi zhangsan 4.0K 1月 2 09:49 /home/zhangsan

chown命令

  • 格式:chown 属主:属组 文档
1
2
3
4
5
6
7
8
[root@ntd ~]# chown :lisi /home/zhangsan         //修改目录属组为lisi
[root@ntd ~]# ls -ldh /home/zhangsan //查看目录信息
drwx------. 2 lisi lisi 4.0K 1月 2 09:49 /home/zhangsan


[root@tedu ~]# chown zhangsan:zhangsan /home/zhangsan //恢复原状
[root@tedu ~]# ls -ldh /home/zhangsan/
drwx------. 2 zhangsan zhangsan 4.0K 1月 2 09:49 /home/zhangsan/

权限控制

rwx权限的作用

权限 文件 目录
r(read) 查看文件内容 查看目录下的文件与目录名称
w(write) 修改文件内容 在目录下增删文档,对文档复制移动改名
(一般需要w和x权限)
x(execute) 可以执行文件
(文件一般为可执行文件)
可以使用cd命令切换进此目录

更改访问权限

chmod命令

  • 格式:chomod [ugo] [+-=] [rwx] 文档路径
  • ugo
    • u:属主权限
    • g:属组权限
    • o:其他用户权限
  • +-=
    • +:加权限
    • -:减权限
    • =:赋予权限
  • rwx
    • r:读权限
    • w:写权限
    • x:执行权限
1
2
3
4
5
6
7
[root@ntd ~]# mkdir public
[root@ntd ~]# chown :lisi public
[root@ntd ~]# chmod g+rwx,o-rx public
[root@ntd ~]# ll public/
总用量 0
[root@ntd ~]# ls -ldh public/
drwxrwx---. 2 root lisi 4.0K 1月 2 10:06 public/

chmod命令

  • 简化格式:chmod [000~777] 文档路径
  • 000~777:每位数分别代表属主、属组、其他用户
  • 数字转化为二进制,1为有权限,0为无权限,三位分别代表rwx
  • 例如:777代表111/111/111,赋予所有权限,770代表111/111/000,赋予属主和属组所有权限,其他用户不赋予权限

文件查找

find按条件查找文件

用法:find [目录] [条件]

  • 在指定目录下查找符合特定条件的文档

条件如何表示

  • -name 文件名:指定文档名称,允许使用通配符*
  • -size +|- 大小:指定文档大小(带单位kMG),+|-号表示超过|低于
  • -type 类型:指定文档类型,f普通文档、d目录、l链接文件
  • -mtime +|- 天数:指定最近修改日期,+|-号表示超过|低于
  • -user 用户名:指定文档属主
  • -perm [-ufo] = [rwx]:指定权限
  • -a:用于连接多个条件,表示并且(-a可省略)
  • -o:用于连接多个条件,表示或者

find应用示例

查找系统根目录下名为vim的文件

  • find / -name vim -type f

查找系统根目录下以.conf结尾的所有文件

  • find / -name *.conf -type f

查找/boot/目录下大小超过10M的文件

  • find /boot -size +10M -type f

查找/var/log目录下超过30天都没有改动过的文件

  • find /var/log/ -mtime +30 -type f

查找系统根目录下属主为zhangsan的文档

  • find / -user zhangsan

查找系统根目录下其他用户具有执行权限的文件

  • find / -perm -o=x -type f

查找/boot/目录下大小超过10M或者小于1M的文件

  • find /boot -size +10M -o -size -1M -type f

文本过滤

管道操作

命令行的管道操作

用法:命令1|命令2

  • 把命令1的正常显示结果先交给命令2,等命令2处理后再显示
  • 命令2必须能接收并处理文本(比如less、grep、wc等),否则没有意义
  • who:显示正在登录的用户
  • wc -l:统计内容的行数
1
2
3
4
[root@ntd ~]# find / | less             //查找根下所有文档并分页显示

[root@ntd ~]# who | wc -l //统计当前已登录的用户数
1

grep文本过滤

从文件内容中查找关键词

用法:grep [-iv] “关键词” 文件

  • 仅输出文件中包含“关键词”的行
  • 选项-i表示忽略大小写,选项-v表示把条件反过来(不包含关键词)
  • 使用“^ab”查找以ab开头的行,“ab$”查找以ab结尾的行
  • #代表注释,被注释的配置不会生效
1
2
3
4
5
6
7
[root@ntd ~]# grep "root" /etc/passwd                 //列出包含root的列
[root@ntd ~]# grep -i "root" /etc/passwd //列出包含root的列,忽略大小写
[root@ntd ~]# grep -v "root" /etc/passwd //列出不包含root的列
[root@ntd ~]# grep "^#" /etc/selinux/config //列出被注释的行
[root@ntd ~]# grep -v "^#" /etc/selinux/config //列出没有被注释的行
[root@ntd ~]# grep "^$" /etc/selinux/config //列出空行
[root@ntd ~]# grep -v "^$" /etc/selinux/config //列出非空行

从命令结果中查找关键词

用法:命令行|grep [-iv] “关键词”

  • 结合管道操作,针对命令显示结果进行过滤,提取重要信息
1
[root@ntd ~]# ifconfig | grep 192.168.10.223                 //查看IP参数中包含目标地址的行

进程管控

查看进程

程序vs进程

10.3.1

top查看进程

用法:top

  • 动态显示系统负载及资源占用排名,类似“任务管理器“
  • 资源消耗越多的进程越靠前,按q 键退出

查找/杀死进程

pgrep查找进程

用法:pgrep [-l] 关键词

  • 列出名称中包含关键词的进程的进程号
  • 选项-l可以一起列出进程名

杀死进程

用法:pkill [-9] 进程关键词

或kill [-9] 进程号

  • 杀死名称中包含关键词的进程或进程号对应的进程
  • 选项-9表示强制杀死进程

ACL访问控制

认识ACL策略

为文档定义访问规则,针对除u、g、o以外的个别用户或组

  • 文档的属主/属组标记,把访问者区分为三类一一属主、属组、其他人
  • 但“其他人“中还有张三李四,如何再区分权限?

10.3.2

getfacl查看ACL策略

用法:getfacl 文档路径

  • 可以列出文档归属,以及各类用户对此文档的访问权限
1
2
3
4
5
6
7
8
[root@ntd ~]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x //属主权限
group::r-x //属组权限
other::--- //其他用户权限

setfacl配置ACL策略

  • 用法1:setfacl -m user:用户名:权限组合 文档
  • 用法2:setfacl -m group:组名:权限组合 文档
1
2
3
4
5
6
7
8
[root@ntd ~]# setfacl -m u:zhangsan:rx /root      //增加acl,使张三对/root目录有读取与执行权限

[root@ntd ~]# getfacl /root //查看acl
user::r-x
user:zhangsan:r-x
group::r-x
mask::r-x
other::---

setfacl删除ACL策略

  • 用法1:setfacl -x user:用户名 文档:删除用户策略
  • 用法2:setfacl -x group:组名 文档:删除组策略
  • 用法3:setfacl -b 文档:清空所有策略