[攻防手记]IT168攻防大赛漏洞分析及修补

上一篇 / 下一篇  2007-12-29 20:28:40

大家好,我是陆羽,最近无意中发现了这个活动,所以就来看看,下面是我的简单漏洞分析和修补报告。IXPUB技术博客Y/P9v'j q

   活动地址:http://59.151.29.110/index.aspIXPUB技术博客7};Wlsb,@
   使用程序:冠龙科技多风格企业网站管理系统
3|&tcs#W0   下载地址:http://www.glgk.com/dfg.rarIXPUB技术博客},E0UG*s-S

9S%Ls wR Y{$X0   这里我只分析和修补漏洞,不提供最后的32位md5社工过程。IXPUB技术博客b%gW&`j2eA
   好,我们开始:
Ej5R-P,K3pr0   1. 检测是否存在旁注;
7h }-s"Q0`jZ1~8Q0   2. 分析是否存在现在比较流行的注入漏洞;IXPUB技术博客Lp'@Rs|L%b-Cvz
   3. 后台地址已知,尝试是否可以’or’=’or’绕过验证;IXPUB技术博客Sbi BU/}
   4. 使用工具或者手工检测是否存在上传;
Ga3] s BcEN#o9H%G)E6F0lm0   5. 检测后台是否存在可以插入一句话木马的漏洞;

5hG+U%T1z%TWZ0IXPUB技术博客#`LIK^s)w-M b

   1,3,4,5均告失败,最后手工检测发现ProductShow.asp?ID=102存在注入点,http://59.151.29.110/ProductShow.asp?ID=102’返回提示不存在商品。继续使用工具提示存在注射,通过猜解得到后台的帐号密码。
p-M1{-K%CD eM0   
*OrK { \8n7e(_0    帐号adminIXPUB技术博客&Fp eyE
    密码77169

#bNB] `(q0IXPUB技术博客~,Y xd)JQ
   如果通过手工注射没找到注射点的兄弟是否有直接考虑社工?猜到密码是和IT168合作的华夏有关?呵呵网页中很多的版权,还有连接地址都直接指向的www.77169.com,使用得到的密码,顺利进入后台。

F\B z2aB0

&SH3k z%o9TB[0很happy的发现使用的是ewebeditor 在线编辑器,呵呵,查看源代码,得到ew的路径是admin\Editor,大家应该都尝试了ewebeditor常见的漏洞了吧?IXPUB技术博客 T$} W.miy/ZhG

   漏洞1.长传漏洞,允许上传asa文件,但是需要在后台添加模块,添加允许上传asa类型.IXPUB技术博客 n7OM)zx#z {`.b!Pe6q

上传类型过滤了asp,但是没有过滤asa,这个是ewebeditor的早期版本存在过滤不完整漏洞,但是默认数据库db/ewebeditor.mdb被改名了,而且ewebeditor的管理登陆页面admin_default.asp也已经被删除了,所以使用后台添加asa是不可能的,还好我们发现原来在上传文件模块,允许上传asa文件。IXPUB技术博客Ae [$Nn*nN N:m
但是在这里我最早开始检测的时候,发现不管是在“产品管理”、 “下载中心”还是其他允许上传文件的栏目里,都无法上传asa ,仅管提示上传成功了,连名字都给你了,开起来还是无法访问。进入上传文件管理。发现不存在刚才上传的asa文件。IXPUB技术博客HBu!zY

    一开始以为是IT168官方把权限设的太死弄的,结果发现原来只有新闻管理上传文件的目录Uploadnews 目是有写权限的。所以我们在新闻管理的地方可以上传写入asa木马,于是上传得到webshell。IXPUB技术博客#}!D)B9Fo.[ ] C0y

得到webshell以后我们来回想下,大赛要求:得到webshell并不是我们最终的成果,因为得到这个webshell是在太容易了,截图里的那2句话告诉我们,要得到指定文件。就是要得到藏在很深目录里的保存通关后联系方式的rar文件,还有保存密码用的inc文件。呵呵,不废话。经验告诉我,文件应该隐藏在inc目录或者 admin目录里,当然大家也可以使用asp写一个搜索站内文件的程序,搜索出所有*.rar和*.inc的文件。好多asp木马好像都有带这个功能,海洋2006貌似就有。这里就不演示了。我们直接来到admin/inc目录。IXPUB技术博客:X6p`)Ke m8Jc&x*D
发现目标文件hacker.rar 下面还有一个it’spassword.inc呵呵。一看就是保存密码的文件,我们把hacker.rar文件下载下来。然后查看it’spassword.inc里保存的32位md5密码为
\Mc7x~s4BI0892183d93e9bc438eba95c501b04eb24。

;V+J$q,](K;S$}0

    这里破解的办法有很多,暴力破解(下辈子也出不来,那个X小云写的md5碰撞不知道有没人尝试过?或许可以哦)、google hack? 搜索没结果!cmd5.com查询?抱歉 Not Found!最后还是社工吧。有没发现比赛里带有规律?后台密码是77169 华夏的域名,数据库里管理员名字也有一个huaxia。华夏是这次活动的合作伙伴,同样是合作合作伙伴的还有中国X黑客小组,所以密码社工的话肯定是和“IT168”、“华夏”、“ 中国X黑客小组”有关的呵呵。这个就是比赛关键的地方了——社工。最后的密码是 hackerit168。IXPUB技术博客C.dRIQ8Y

    一开始没办法上传的时候逼我不得不到官方下载程序来分析。结果居然让我发现,一个任意文件目录浏览漏洞。

`(hd1C}2Q u0

 这段代码大家发现什么?EW用来管理上传文件的程序是通过request来获取操作的参数的IXPUB技术博客x0u'LO VS+ko
Action=后面是提交的地址和参数,因为是提交到uploadfile.asp文件本身,所以直接用了
8Oe.Zv#R2g0<form. action='?id=" & sStyleID & "&dir=" & sDir & "&action=del' method=post name=myform>IXPUB技术博客 b"m0Wu.T6`3x(y
Id是使用的模板iD,Dir则为路径,Action=del表示执行删除操作,只要我们提交一段特定的参数,就可以直接跳转浏览任意目录,比如我们提交http://59.151.29.110/admin/Editor/uploadfile.asp?id=&dir=../IXPUB技术博客V i,N(c"yn
 因为每次我们点返回上一级目录的时候,注意到地址栏都会吃掉一个../,所以我们多提交几个../ 就可以顺利返回到根目录,我们构造提交http://59.151.29.110/admin/Editor/uploadfile.asp?dir=../../
1^/\ I~3kH ]0点返回上层。就来到根目录了。根据经验,我们开始到inc和admin目录寻找目标文件,最后得到 Hacker.rar就是我们要的文件,32位md5加密的密码保存在it’spassword.inc。这里比较郁闷的事情是,比赛官方把服务器设置的太死。不允许执行未知的扩展名。所以无法直接在浏览器里直接查看it’spassword.inc,即使知道了,一个不可破解的32位md5给你有意义吗?所以大家还是考虑社工吧。这里不做其他说明。废话不多少。我们开始修补漏洞。IXPUB技术博客8fGf ?y
漏洞修补IXPUB技术博客iNS4Bw.}R0?

    首先第一个:sql注射漏洞
cZ}$_rO0    漏洞存在文件:ProductShow.aspIXPUB技术博客:d8{)W4Y&R l
    我们发现代码IXPUB技术博客l6Ik7?{J6nKgs
使用的request()方式获取 id这个参数,然后完全不加过滤就直接提交给数据库。存在很明显的注入漏洞。但是同样的问题我们发现在其他页面也存在。可是其他页面却不存在注入漏洞,而且我从官方下载来的ProductShow.asp文件也同样不存在注入漏洞。到底是怎么回事?一开始还想要去好比赛官方直接拿他那份修改过的。呵呵。后来考虑到是否ProductShow.asp的包含文件中存在的注射漏洞?IXPUB技术博客U p)FKF1[.o\

    比较官方下来的ProductShow.asp和比赛官方服务器上的ProductShow.aspIXPUB技术博客.qRy!wt0Kk

发现顶部调用的文件被修改了<!--#include file="Inc/SysProduct.asp" -->被修改成了<!--#include file="Inc/SysProduct.asp" -->于是分析到目录里找到了这2个文件,再次进行对比
)AosL2D|]s+A#R0终于发现了问题所在,原来这里的sysproduct1.asp把用来防止sql注射的检测文件check_sql.asp去除了,于是讲代码补上。在sysproduct1.asp的顶部加入<!--#Include File="Check_Sql.asp"-->,即可防止注入了。关于check_sql.asp这个文件中使用的过滤防注入的方法,这里就不做详细的说明了。有兴趣的朋友可以google一下相关的文章。IXPUB技术博客3Ler:q)H|cR+{ u&c k

    这里给大家提示一个写程序的小技巧,现在注入是每个程序员最担心的漏洞,但是平时在写程序的过程中,如果对每个文件的每个参数都去过滤防止注入的话,显然费时费力,不但加大了程序开发的难度,更容易出现疏漏。所以“冠龙科技多风格企业网站管理系统”在这点做的不错。IXPUB技术博客1Pd&g"?aN
漏洞2:上传过滤不严格漏洞
c[ g6N|6f8^j}I0    漏洞存在文件:admin\Editor\Upload.asp
Dv,z {4KVE {C0    存在漏洞的代码部分如下IXPUB技术博客$Q:a v;Q+jYey
说明很清楚,只过滤了asp文件,完全不考虑其他可执行的程序,记事本开启Upload.asp找到这段漏洞代码将其替换为:IXPUB技术博客/^? g$X U
    sAllowExt = UCase(sAllowExt)
rs#Sn#q+U*oX0    Do While InStr(sAllowExt, "ASP") or InStr(sAllowExt, "CER") or InStr(sAllowExt, "ASA") or InStr(sAllowExt, "CDX") or InStr(sAllowExt, "HTR") or InStr(sAllowExt, "php") or InStr(sAllowExt, "jsp")IXPUB技术博客q zZ~(D2b De$_
    sAllowExt = Replace(sAllowExt, "ASP", "")IXPUB技术博客E C5s$M)h+t\
    sAllowExt = Replace(sAllowExt, "CER", "")IXPUB技术博客DEo8wf/d
    sAllowExt = Replace(sAllowExt, "ASA", "")
QX.lp)FB8o$yc `0    sAllowExt = Replace(sAllowExt, "CDX", "")
"D:mK,~#S9fz}0    sAllowExt = Replace(sAllowExt, "HTR", "")
{ nH F&[n5B0o1tob0    sAllowExt = Replace(sAllowExt, "PHP", "")
F#?0Nq-P:cT/?0    sAllowExt = Replace(sAllowExt, "JSP", "")

"?6i;`$hmf0

     LoopIXPUB技术博客 w+c M,Lx`.xE
    这样就过滤掉 asp asa cer cdx htr php jsp等文件类型了其他大家自己发挥咯。
n(bJ^F0漏洞3:任意目录浏览
1C%i6S9x0~ v%bX(\l{0    存在漏洞文件:admin\Editor\uploadfile.asp
sK#T P[)?0    admin\Editor\ Admin_UploadFile.aspIXPUB技术博客SIZJRW
    存在漏洞的代码段: 漏洞存在原因:
K*L mB-CiqC;K0    使用了request的方法来获取参数,允许用户直接从浏览器地址栏提交参数。
S6n_^? J;\0    解决方法一:改用request.form()获取。如果在本地构造一个form会不会一样继续浏览?所以抛弃。IXPUB技术博客 j3{ Qu3vlx7tD
    解决办法二:使用程序自带的过滤。IXPUB技术博客tc(n"K?P
    如果你尝试过直接在地址栏输入后台文件名的话,你会发现是不被允许的。这段过滤的代码存在在admin/admin.asp里,所以,我们只要在uploadfile.asp和Admin_UploadFile.asp文件的顶部加上<!--#include file = "../admin.asp"-->,这样做可以避免从外部提交参数,就彻底解决这个任意目录浏览的问题,当然我们还要考虑,如果存在XSS怎么办?那还不是可以自己构造一个内部连接?是的,这个我也考虑了。所以在后台添加新闻的地方测试了下.好分析结束,如果还有什么遗漏,还有错误的地方,欢迎大家指证、交流。IXPUB技术博客4_4RCMZ

r"I(~#`,eI(G,dmIX0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 66104
  • 日志数: 1214
  • 文件数: 1
  • 建立时间: 2007-08-10
  • 更新时间: 2009-01-07

RSS订阅

Open Toolbar