实验简介:

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等这些重要命令当中当作一个检测的手段,能够避免一些问题。

最新文章

  1. 00 EPLAN安装问题
  2. C++ 资源大全
  3. yii2知识点详解
  4. 【cs229-Lecture20】策略搜索
  5. Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
  6. php Ajax 局部刷新
  7. 省市县 三级 四级联动Javascript JQ 插件PCASClass.js
  8. 周末充电之WPF(四).多窗口之间操作
  9. Java NIO中核心组成和IO区别
  10. iOS - 排序的队列中插入数值
  11. 双线服务器和CDN的区别
  12. SP2010 3D标签云Web部分--很酷的效果,强烈推荐!!
  13. VBS基础篇 - 对象(3) - FileSystemObject对象
  14. 201521123091 《Java程序设计》第8周学习总结
  15. HDU - 1241 dfs or bfs [kuangbin带你飞]专题一
  16. 服务端搭建——腾讯云通信(IM)
  17. ORA-28000: the account is locked解决办法
  18. jdbc,mysql 数据库BLOB返回值 [B 的问题
  19. 金老师的经典著作《一个普通IT人的十年回顾》
  20. Java RMI 简单实现

热门文章

  1. [vijos1234]口袋的天空&lt;最小生成树&gt;
  2. Java 对象容器
  3. AI学习笔记:特征工程
  4. A - Jessica&#39;s Reading Problem POJ - 3320 尺取
  5. M - 湫湫系列故事——减肥记I
  6. Tomcat目录解析
  7. linux升级python2.7到3.7.0
  8. 安卓开发学习日记 DAY3——TextView,EditView,ImageView
  9. Python+Tornado开发微信公众号
  10. iphone se2的优缺点分析: