人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

實(shí)例解析80、512、3389等端口的入侵

發(fā)布日期:2021-12-30 14:55 | 文章來(lái)源:源碼之家
有很多網(wǎng)站為了安全起見,在WEB Server前面架了防火墻,或者做了TCP/IP過(guò)濾,對(duì)外只開放TCP 80端口。從入侵者角度來(lái)看,要入侵那么從80上跑的CGI入手是比較可行的,當(dāng)然也可以用別的辦法,例如旁敲側(cè)擊,呵呵。從網(wǎng)管角度來(lái)看,一是要保證CGI的安全性,另外網(wǎng)絡(luò)的整體安全性也是很重要的。針對(duì)基于80端口入侵、防范而出的CGI掃描器數(shù)不勝數(shù),但基本上原理都一樣。
  CGI掃描器原理說(shuō)起來(lái)其實(shí)非常簡(jiǎn)單,可以用四句話來(lái)概括:連接目標(biāo)WEB SERVER;發(fā)送一個(gè)特殊的請(qǐng)求;接收目標(biāo)服務(wù)器返回?cái)?shù)據(jù);根據(jù)返回?cái)?shù)據(jù)判斷目標(biāo)服務(wù)器是否有此CGI漏洞。
  當(dāng)管理的服務(wù)器達(dá)到一定數(shù)量的時(shí)候,手工檢測(cè)自己的服務(wù)器是否存在各種各樣的CGI漏洞,那就太消耗時(shí)間和精力了,所以一個(gè)網(wǎng)管手上有個(gè)比較好用的CGI漏洞掃描器還是必要的。OK!今天我們就自己來(lái)動(dòng)手用C寫一個(gè)簡(jiǎn)單的CGI掃描器,幫助自己在日常工作中檢測(cè)服務(wù)器:))
  源代碼如下,很多地方我都加了注釋,別嫌我煩哦:))編譯好的程序可以從http://eyas.3322.net/program/cgicheck.exe下載。
  /************************************************************************* Module:CGICheck.cpp Author:ey4s Date:2001/5/16說(shuō)明:這是一個(gè)Console下多線程,帶有進(jìn)度顯示的CGI掃描器的模板,更改一下szSign和SendBuff就可以掃描其他CGI漏洞,設(shè)置了連接、發(fā)送、接收超時(shí),速度還可以哦。希望可以幫助到admins檢測(cè)自己的服務(wù)器:))
  *************************************************************************/ #i nclude
                 
  #define iPort 80//目標(biāo)Web Server端口#define szSign “500 13rnServer: Microsoft-IIS/5.0”//根據(jù)此標(biāo)志來(lái)檢查目標(biāo)是否有漏洞
                 
  #pragma comment(lib,“ws2_32.lib”)
  /////////////////////////////////////////////////////////////////////////// // //定義&初始化全局變量// char *SendBuff=“GET /NULL.printern”,//發(fā)送的請(qǐng)求buff CurrentTarget[52]=,//存放最后一個(gè)線程將掃描的目標(biāo)turn[4][2]=;//顯示進(jìn)度時(shí)的字符int SendBuffLen=strlen(SendBuff),//發(fā)送的buff長(zhǎng)度iConnTimeout,//TCP Connect TimeOut ii=0,//掃描進(jìn)度iTotal;//服務(wù)器總數(shù)HANDLE hSemaphore=NULL,//信標(biāo)內(nèi)核對(duì)象句柄,用來(lái)控制線程數(shù)量hStdout;//console標(biāo)準(zhǔn)輸出句柄,做進(jìn)度顯示的時(shí)候用的struct timeval timeout;//連接、發(fā)送和接收的超時(shí)值DWORD SleepTime;//每個(gè)一個(gè)線程后等待的時(shí)間/* SleepTime值根據(jù)用戶輸入的線程數(shù)量[ThreadNum]和TCP ConnectTimeOut[CONNTIMEO]來(lái)計(jì)算。確保在CONNTIMEO時(shí)間左右開ThreadNum個(gè)線程。這樣在CONNTIMEO時(shí)間后,所開的線程開始陸續(xù)超時(shí)退出,可以繼續(xù)穩(wěn)定的開線程,可以有效的保證同時(shí)有ThreadNum個(gè)線程在運(yùn)行。
  */ /////////////////////////////////////////////////////////////////////////// void ShowError(char *);//顯示出錯(cuò)信息函數(shù),可以寫完善一些,偶偷懶了:)
  BOOL ResetCursor(void);//重置光標(biāo)位置,線程輸出的時(shí)候調(diào)用的DWORD WINAPI ShowProInfo(LPVOID);//顯示進(jìn)度信息DWORD WINAPI scan(LPVOID);//掃描函數(shù)void usage(char *);//幫助函數(shù)/////////////////////////////////////////////////////////////////////////// int main(int argc,char **argv)
  { HANDLE hThread=NULL;//線程句柄DWORD dwThreadID;//線程ID struct sockaddr_in sa;int i,MaxThread;//最大線程數(shù)量WSADATA wsd;long PreviousCount;clock_t start,end;//程序運(yùn)行的起始和結(jié)束時(shí)間double duration;
                 
  //檢查用戶輸入?yún)?shù)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);//取得線程數(shù)量MaxThread=atoi(argv[3]);//取得conn超時(shí)時(shí)間iConnTimeout=atoi(argv[4]);//檢查參數(shù)合法性if((iConnTimeout>6) || (iConnTimeout500) ||(StopHost { usage(argv[0]);return 1;} //計(jì)算時(shí)間SleepTime=1000*iConnTimeout/MaxThread;//設(shè)置連接超時(shí)值timeout.tv_sec = iConnTimeout;timeout.tv_usec =0;__try { //開始計(jì)時(shí)start=clock();//加載winsock庫(kù)if (WSAStartup(MAKEWORD(1,1), &wsd) != 0)
  { ShowError(“WSAStartup”);__leave;} //創(chuàng)建信標(biāo)內(nèi)核對(duì)象句柄hSemaphore=CreateSemaphore(NULL,MaxThread,MaxThread,NULL);if(hSemaphore==NULL)
  { ShowError(“CreateSemaphore”);__leave;} //取得console標(biāo)準(zhǔn)輸出句柄hStdout=GetStdHandle(STD_OUTPUT_HANDLE);if(hStdout==INVALID_HANDLE_)
  { ShowError(“GetStdHandle”);__leave;} //設(shè)置目標(biāo)總數(shù)iTotal=StopHost-StartHost;//創(chuàng)建進(jìn)度顯示線程hThread=CreateThread(NULL,0,ShowProInfo,NULL,0,&dwThreadID);if(hThread==NULL)
  { ShowError(“1 CreateThread”);__leave;} //關(guān)閉句柄CloseHandle(hThread);//循環(huán)創(chuàng)建掃描線程for(i=StartHost;i
  break;} else { k=j%4;printf(“%-15s %s [%d/%d] %s %%%0.3g”,CurrentTarget,turn[k],ii,iTotal,turn[k],m);} }//end of for return 0;} /////////////////////////////////////////////////////////////////////////// // //掃描函數(shù)// 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 { //設(shè)置socket為非鎖定模式,ul為0值的話,那么soocket將被設(shè)置為鎖定模式iErr=ioctlsocket(s,F(xiàn)IONBIO,(unsigned long*)&ul);if(iErr==SOCKET_ERROR )
  { ResetCursor();ShowError(“ioctlsocket”);ExitProcess(1);} //printf(“n%X ioctl ok.strat conn”,i);//connect to target connect(s,(struct sockaddr *)&server,sizeof(server));//printf(“n%X conn return,start select w”,i);//設(shè)置select參數(shù)FD_ZERO(&w);FD_SET(s, &w);//等待connect成功&socket可寫iErr=select(0, 0, &w, 0, &timeout);//printf(“n%X select w return %d”,i,iErr);//等待返回后,socket仍不可寫則退出if((iErr==SOCKET_ERROR) || (iErr==0))
  { //printf(“n%X select return w err,exit”,i);__leave;} //socket可寫則繼續(xù)else { //send buff to target //printf(“n%X send”,i);iErr=send(s,SendBuff,SendBuffLen,0);//printf(“n%X send return”,i);if(iErr==SOCKET_ERROR)
  __leave;} //等待socket可讀FD_ZERO(&r);FD_SET(s, &r);//printf(“n%X start select r”,i);iErr=select(0, &r, 0, 0, &timeout);//printf(“n%X select r return %d”,i,iErr);if((iErr==SOCKET_ERROR) || (iErr==0))
  { //printf(“n%X select r err,exit”,i);__leave;} else { //recv buff from target //printf(“n%X start recv”,i);iErr=recv(s,RecvBuff,RecvBuffLen,0);//printf(“n%X recv ret”,i);if(iErr==SOCKET_ERROR)
  __leave;} //verify buff ptr=strstr(RecvBuff,szSign);if(ptr!=NULL)
  { //線程輸出前要先調(diào)用ResetCursor函數(shù)ResetCursor();//輸出信息后務(wù)必加一個(gè)以上換行符號(hào),輸出前請(qǐng)別加換行符號(hào),以免顯示混亂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”“nnUsage:%s ”“nnNotice”“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”“nnExample”“n %s 192.168.0.0 192.168.255.255 200 2”,proname,proname,proname);}程序在VC 6.0上編譯通過(guò),在windows2000上運(yùn)行良好:)
上一頁(yè)12 下一頁(yè) 閱讀全文

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部