免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1498 | 回复: 2
打印 上一主题 下一主题

perl的安全性小例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-28 02:17 |只看该作者 |倒序浏览
本帖最后由 xiyoulaoyuanjia 于 2012-07-28 02:20 编辑

现实中需要从服务中启动一个perl脚本,无奈脚本中需要root权限!所以阐释了以下小例子

1. 设置setuid 位 (注意shell 脚本与 perl 脚本在此处的区别! shell脚本的setuid位不起作用! 是由bash来读文件的)
sudo chown root lianxi.pl
sudo chmod +s  lianxi.pl
2. lianxi.pl 代码如下
  1. #!/usr/bin/perl  
  2.    `date -s "$SARGV[1] $SARGV[2]"`;
复制代码
结果:
nsecure $ENV{PATH} while running setuid at
3.
  1. $ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:';
复制代码
4. ./lianxi.pl  2012-3-4
  1. 1 #!/usr/bin/perl  
  2.     #####date -s "2007-08-03 14:15:00"
  3.   $ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:';
  4.   `date -s "$ARGV[0] $ARGV[1]"`;
复制代码
结果:
Insecure dependency in `` while running setuid at ....
5. ./lianxi.pl  2011-3-18 12:04:12
  1. #!/usr/bin/perl  
  2.     #####date -s "2007-08-03 14:15:00"
  3.     $ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:';
  4.    my ($a,$b)=@SARGV;
  5.    `date -s "$a $b"`;
复制代码
结果:
  ok!
ps
    1.在第二步之后我曾经想过用c写一个包裹函数 调用此perl 当然包裹文件需要设置为setuid的,也就是用有效用户为root的文件 exec 调用(或者system)此perl ,尝试之后是不可以的!
     2.从这个步骤可见perl对setuid的使用是很谨慎的!。。
     3.关于perl的setuid 其它 请参考 http://www.cs.cmu.edu/afs/cs/usr/rgs/mosaic/pl-suid.html
  希望对大家有用~另外大家还有其它方法请指出 谢谢~~
   







论坛徽章:
0
2 [报告]
发表于 2012-07-30 09:51 |只看该作者
use POSIX;

论坛徽章:
0
3 [报告]
发表于 2012-07-30 16:54 |只看该作者
and so?
回复 2# nsnake_cu


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP