http隧道技术 过防火墙

piaoliuping618 2011-03-18 01:45:19
客户端代码:
post = sInt[0];//数据<data>dssdsd</data>
postLength = post.Length;
if ((post != null) && postLength > 0)
{
http = "POST / HTTP/1.1\r\nAccept: */*\r\nAccept-Language: zh-cn\r\nContent-Type: application/x-www-form-urlencoded\r\nUA-CPU: x86\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)\r\nHost: 192.*.*.*\r\n\r\n";
byte[] myWriteBuffer = System.Text.Encoding.ASCII.GetBytes(http);
netStream.Write(myWriteBuffer, 0, myWriteBuffer.Length);
}
do
{
//myCompleteMessage.Remove(0, myCompleteMessage.Length);
numberOfBytesRead = netStream.Read(myReadBuffer, 0, myReadBuffer.Length);
myCompleteMessage.AppendFormat("{0}", System.Text.Encoding.UTF8 .GetString(myReadBuffer, 0, numberOfBytesRead));
}
while (netStream.DataAvailable);

服务器端代码:
do
{
try
{
numberOfBytesRead = client.Read(myReadBuffer, 0, myReadBuffer.Length);

http = System.Text.Encoding.ASCII.GetString(myReadBuffer);
}
catch (Exception ee)
{
throw ee;
}
//numberOfBytesRead = client.Read(myReadBuffer, 0, myReadBuffer.Length);
} while (client.DataAvailable);

byte[] myWriteBuffer = System.Text.Encoding.ASCII.GetBytes("<ok></ok>");
netStream.Write(myWriteBuffer, 0, myWriteBuffer.Length);

客户端http post头能到达服务器端,但是客户端读取不到服务器端返回的<ok></ok>,这是什么原因???
...全文
245 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaoliuping618 2011-03-18
  • 打赏
  • 举报
回复
服务器端接收到客户端发的http头是
post / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2)
Host: 198.*.*.*
Connection: Keep-Alive

客户端接收服务器端发的http头是:
HTTP/1.1 500 ( 当前操作所需的 Windows Internet 扩展应用程序出现软件错误。 )
Via: 1.1 GNET_ISA
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
这是什么原因???
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caozhy 的回复:]
什么叫“HTTP隧道技术”。。。
[/Quote]
这个技术是近期才出现的新事物,并且已经被用到各种黑客软件之中,比较成熟的有远程控制软件“网络神偷”和“灰鸽子”。
这是国内两个很有代表性的运用“http隧道穿越原理”而制作的软件,用该类型软件可以穿透防火墙,不受端口的限制。

一般防火墙为了安全起见,都只开80和其他一些常用的端口,这样的话,那些一般的基于tcp/ip客户端和服务端的木马就不能通过防火墙和外界发生联系,特别是在内网之中,但是经过特殊处理的ip封包可以伪装成http封包,这样防火墙就认为其是合法的http数据包,就会放行,这样在木马的接收端,软件再将伪装过的ip封包还原出来,取出其中有用的数据,从而达到穿越防火墙端口设置的限制。

该类型软件具有很大的欺骗性,所以不要认为设置了端口限制的防火墙就一定很安全了。

利用HTTP协议的缺陷来实现对防火墙的渗透,或者说现有的一些HTTP隧道技术的实现,是基于防火墙在对HTTP协议的报文进行识别与过滤时,往往只对其诸如POST、GET等命令的头进行识别,而放行其后的所有报文。

摘自百度知道:http://zhidao.baidu.com/question/6479422.html
piaoliuping618 2011-03-18
  • 打赏
  • 举报
回复
服务器端返回http头没有响应码,服务器返回也要加http头+ok 才能发送到客户端,而且返回后的Connection: close Proxy-Connection: close 无法连接上啊
threenewbee 2011-03-18
  • 打赏
  • 举报
回复
什么叫“HTTP隧道技术”。。。
piaoliuping618 2011-03-18
  • 打赏
  • 举报
回复
客户端post 服务器端后 服务器端接收到 返回一个ok给客户端 客户端接收到ok后在发送data给服务器端, 但是客户端接收到ok后在data发送不到服务器端
luluyy 2011-03-18
  • 打赏
  • 举报
回复
单不说代码 你客户端能POSt到服务器`说明已经通了` 然后你把数据再POST给服务器不就行了
你在服务器接收信息的代码那里加个语句`把收到的信息放到一个文本里面`
在客户端POST到服务器的时候也把信息放到另一个文本里`你比较一下数据看看有什么不同

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧