2019-2020-1 20199325《Linux内核原理与分析》第十一周作业
实验简介:
Set-UID 是 Unix 系统中的一个重要的安全机制。当一个 Set-UID 程序运行的时候,它被假设为具有拥有者的权限。例如,如果程序的拥有者是root,那么任何人运行这个程序时都会获得程序拥有者的权限。Set-UID 允许我们做许多很有趣的事情,但不幸的是,它也是很多坏事情的罪魁祸首。
因此本次实验的目标有两点:
欣赏好的方面,理解为什么 Set-UID 是需要的,以及它是如何被执行的。
注意坏的方面,理解它潜在的安全性问题。
$ cp /usr/bin/passwd /tmp/passwd
$ ls -la /usr/bin/passwd
$ ls -la /tmp/passwd
$ /tmp/passwd #shiyanlou密码可以通过点击右侧工具栏SSH直连看到
$ /usr/bin/passwd
将passwd拷贝过去,会发现权限发生了改变,复件没有修改密码的权限
$ ls -l
-rw-rw-r-- 1 shiyanlou shiyanlou 10 Apr 23 13:33 append_text 《--VULP输入文件
-rw-rw-r-- 1 root root 0 Apr 23 13:32 root_file 《--目标文件
-rw-rw-r-- 1 shiyanlou shiyanlou 0 Apr 23 13:45 tmp_file 《--助攻
-rwsr-xr-x 1 root root 7403 Apr 23 13:27 vulp 《--漏洞文件
-rw-r--r-- 1 root root 454 Apr 23 13:27 vulp.c
sudo gcc vulp.c -o vulp
sudo chmod u+s vulp
sudo touch root_file
sudo chmod g+w root_file
vi append_text
touch tmp_file
sudo chmod u+x check.sh
gcc attacker.c -o attacker
check.sh
#!/bin/sh
#注意`不是单引号
old=`ls -l /home/shiyanlou/seed/root_file`
new=`ls -l /home/shiyanlou/seed/root_file`
while [ "$old" = "$new" ]
do
./vulp < append_text
new=`ls -l /home/shiyanlou/seed/root_file`
done
echo "STOP... The file has been changed"
$ ls -l
total 32
-rw-rw-r-- 1 shiyanlou shiyanlou 10 Apr 23 13:33 append_text
-rwxrwxr-x 1 shiyanlou shiyanlou 7164 Apr 23 14:01 attacker
-rw-rw-r-- 1 shiyanlou shiyanlou 155 Apr 23 14:00 attacker.c
-rwxrw-r-- 1 shiyanlou shiyanlou 246 Apr 23 13:58 check.sh
-rw-rw-r-- 1 root root 0 Apr 23 13:32 root_file
-rw-rw-r-- 1 shiyanlou shiyanlou 0 Apr 23 13:45 tmp_file
-rwsr-xr-x 1 root root 7403 Apr 23 13:27 vulp
-rw-r--r-- 1 root root 454 Apr 23 13:27 vulp.c
先运行attacker再运行check.sh
从上面步骤可以看出,/bin/bash有某种内在的保护机制可以阻止Set-UID机制的滥用。为了能够体验这种内在的保护机制出现之前的情形,我们打算使用另外一种shell程序——/bin/zsh。在一些linux的发行版中(比如Fedora和Ubuntu),/bin/sh实际上是/bin/bash的符号链接。为了使用zsh,我们需要把/bin/sh链接到/bin/zsh。
总结:
SET-UID程序的漏洞,主要集中在,通过利用root的权限,更改自身程序权限,能够获取相应的程序功能,SET-UID程序主要是在paswwd,chsh,su等这些重要命令当中当作一个检测的手段,能够避免一些问题。
最新文章
- 00 EPLAN安装问题
- C++ 资源大全
- yii2知识点详解
- 【cs229-Lecture20】策略搜索
- Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
- php Ajax 局部刷新
- 省市县 三级 四级联动Javascript JQ 插件PCASClass.js
- 周末充电之WPF(四).多窗口之间操作
- Java NIO中核心组成和IO区别
- iOS - 排序的队列中插入数值
- 双线服务器和CDN的区别
- SP2010 3D标签云Web部分--很酷的效果,强烈推荐!!
- VBS基础篇 - 对象(3) - FileSystemObject对象
- 201521123091 《Java程序设计》第8周学习总结
- HDU - 1241 dfs or bfs [kuangbin带你飞]专题一
- 服务端搭建——腾讯云通信(IM)
- ORA-28000: the account is locked解决办法
- jdbc,mysql 数据库BLOB返回值 [B 的问题
- 金老师的经典著作《一个普通IT人的十年回顾》
- Java RMI 简单实现
热门文章
- [vijos1234]口袋的天空<;最小生成树>;
- Java 对象容器
- AI学习笔记:特征工程
- A - Jessica&#39;s Reading Problem POJ - 3320 尺取
- M - 湫湫系列故事——减肥记I
- Tomcat目录解析
- linux升级python2.7到3.7.0
- 安卓开发学习日记 DAY3——TextView,EditView,ImageView
- Python+Tornado开发微信公众号
- iphone se2的优缺点分析: