宠文网

30天打造专业红客

宠文网 > 现代小说 > 30天打造专业红客

第15章

书籍名:《30天打造专业红客》    作者:翟羽佳
    《30天打造专业红客》章节:第15章,宠文网网友提供全文无弹窗免费在线阅读。!


大多数的CGI程序漏洞含有这些'..'请求。  

Example:  

http://host/cgi-bin/lame.cgi?file=../../../../etc/motd  

这个列子展示了攻击者请求mosd这个文件,如果攻击者有能力突破web服务器根目录,那么可以获得更多的信息,并进一步的获得特权。

(2)'%20'  请求  

%20是表示空格的16进制数值,虽然这个并不代表你能够利用什么,但是在你浏览日志的时候会发现它,一些web服务器上运行的应用程序中这个字符可能会被有效的执行,所以,你应该仔细的查看日志。另一方面,这个请求有时可以帮助执行一些命令。  

Example:  

http://host/cgi-bin/lame.cgi?page=ls%20-al|  

这个列子展示了攻击者执行了一个unix的命令,列出请求的整个目录的文件,导致攻击者访问你系统中重要的文件,帮助他进一步取得特权提供条件。

(3)'%00'  请求  

%00表示16进制的空字节,他能够用于愚弄web应用程序,并请求不同类型的文件。  

Examples:  

http://host/cgi-bin/lame.cgi?page=index.html  

这可能是个有效的请求在这个机子上,如果攻击者注意到这个请求动作成功,他会进一步寻找这个cgi程序的问题。  

http://host/cgi-bin/lame.cgi?page=../../../../etc/motd  

也许这个cgi程序不接受这个请求,原因在于它要检查这个请求文件的后缀名,如:html.shtml或者其他类型的文件。大多数的程序会告诉你所请求的文件类型无效,这个时候它会告诉攻击者请求的文件必须是一某个字符后缀的文件类型,这样,攻击者可以获得系统的路径,文件名,导致在你的系统获得更多的敏感信息  

http://host/cgi-bin/lame.cgi?page=../../../../etc/motd%00html  

注意这个请求,它将骗取cgi程序认为这个文件是个确定的可接受的文件类型,一些应用程序由于愚蠢的检查有效的请求文件,这是我们常用的方法。  

(4)'|'  请求  

这是个管道字符,在unix系统用于帮助在一个请求中同时执行多个系统命令。  

Example:  

#  cat  access_log|  grep  -i  '..'  

(这个命令将显示日志中的“..“请求,常用于发现我们和蠕虫攻击)  

常可以看到有很多web应用程序用这个字符,这也导致IDS日志中错误的报警。  

在你的程序仔细的检查中,这样是有好处的,可以降低错误的警报在入侵检测系统中。  

下面给出一些列子:  

http://host/cgi-bin/lame.cgi?page=../../../../bin/ls|  

这个请求命令执行,下面是一些变化的列子  

http://host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc|  

这个请求在unix系统中列出/etc目录的所有文件  

http://host/cgi-bin/lame.cgi?page=cat%20access_log|grep%20-i%20'lame'  

这个请求cat命令的执行并且grep命令也将执行,查询出”lame'  

(5)';'  请求  

在unix系统,这个字符允许多个命令在一行执行  

Example:  

#  id;uname  -a  

(执行id命令后,紧跟着执行uname命令)  

一些web程序用这个字符,可能导致在IDS日志中失败的警告,应该仔细的检查web程序,让IDS警报失败的几率降低

(6)'<'  和  '>'  请求  

应该检查你的日志记录中这两个字符,众多的原因中,首要的一个是这个字符表明了添加数据在文件中  

Example  1:  

#  echo  'your  hax0red  h0  h0'  >>  /etc/motd  (请求写信息在motd这个文件中)  

一个攻击者可以容易的用象上面的这个请求篡改你的web页面。比如著名的RDS  exploit常被攻击者用于更改web主页面。  

Example  2:  

http://host/something.php=Hi%20mom%20Im%20Bold!  

你会注意到这里html语言的标志,同样用了“〈”,“〉”字符,这种攻击不能导致攻击者对系统进行访问,它迷惑人们认为这是个合法的信息在web站点中(导致人们在访问这个联结的时候访问到攻击者设定的地址,这种请求可能会被转变成16进制的编码字符形式,使攻击的痕迹不那么明显)

(7)'!'请求  

这种字符请求常用语对SS(Server  Side  Include)  I进行攻击,如果攻击者迷惑用户点击被攻击者设定的联结,和上面的一样。  

Example:  

http://host1/something.php=  

这个列子是攻击者可能会做的,它让一个host2站点上的文件看起来是来自于  host1上面的(当然,需要访问者访问这个被攻击者设定的联结。这种请求可能被转化成16进制的编码伪装,不易发现)  

同时,这种方式也可以以web站点的权限执行命令  

Example:  

http://host/something.php=  

这个列子在远程的系统上执行“id'的命令,它将显示这个web站点用户的id,通常是”nobody'或者“www'  

这种形式也允许包含隐藏文件。  

Example:  

http://host/something.php=  

这个隐藏文件.htpasswd不会被显示出来,Apache建立的规则会拒绝这种以.ht  形式的请求,而SSI标志会绕过这种限制,并导致安全问题  

(8)'  这种攻击用于试图在远程的web应用程序中插入PHP程序,它可能允许执行命令,这取决于服务器的设置,和其他起作用的一些因素(比如php设置为安全模式)  

Example:  http://host/something.php=  

在某些简单的php应用程序中,它可能会在远程系统上以web站点用户的权限执行本地命令  

(9)'`'  请求  

这种字符后面常用在perl中执行命令,这个字符在web应用程序中不是经常的使用,所以,如果看到它在你的日志中,应该非常小心  

Example:  

http://host/something.cgi=`id`  

一个perl写的有问题的cgi程序,会导致执行id命令  

下面是针对管理员说的,因为现在很多网管都在看这个,所以我觉得有必要写一点,当然也是让你知道你的对手有哪些着数了,呵呵.我只是罗列了一些攻击后的痕迹,当然不能罗列所有了

'/bin/ls'  

这个命令请求整个路径,在很多的web应用程序中都有这个漏洞,如果你在日志中很多地方都看到这种请求,很大的可能性是存在远程执行命令漏洞,但并不一定是个问题,也可能是个错误的警报。再一次提醒,写好的web应用程序(cgi,asp,php...etc)是安全的基础  

Example:  

http://host/cgi-bin/bad.cgi?doh=../../../../bin/ls%20-al|  

http://host/cgi-bin/bad.cgi?doh=ls%20-al;  

'cmd.exe'  

这是一个windows的shell,一个攻击者如果访问并运行这个脚本,在服务器设置允许的条件下可以在windows机器上做任何事情,很多的蠕虫病毒就是通过80端口,传播到远程的机器上  

http://host/scripts/something.asp=../../WINNT/system32/cmd.exe?dir+e:  

'/bin/id'  

这是个2进制的文件,它的问题和/bin/ls一样,如果你在日志中很多地方都看到这种请求,很大的可能性是存在远程执行命令漏洞,但并不一定是个问题,也可能是个错误的警报。  

它将显示属于哪个用户和属于哪个组  

Example:  

http://host/cgi-bin/bad.cgi?doh=../../../../bin/id|  

http://host/cgi-bin/bad.cgi?