Web渗透(一)

Web渗透经典流程

判断脚本系统,判断数据库类型——>寻找注入点——>猜解数据库表名——>猜解字段名——>猜解用户名和密码——>寻找后台地址登录,获得网站管理权限(webshell)

常见漏洞

  • 注入漏洞

                                              URL为:asp?id=                                              

                                                              asp?newsid=

                                                              asp?page=

                                                              asp?Atricle=

 

         SQL注入漏洞:strSQL="select * from users where username=(name='"+userName + "')and(pw='"+passWord+"');"        

                     攻击方式:'or1='1' 

                                         'or1=1--

                                         a'or'1==1--                                                     

                                         'or'a'='a             

三种不同数据库(ACCESS,SQL Server,MySQL)有不同的注入方法,由于现在php与My SQL使用更多,asp逐渐被淘汰,我只实践了php与My SQL组合。

1.  要想最快地找到网站的系统漏洞就要用扫描,要想最快地找到脚本方面的漏洞就应该用google了,使用google hack寻找网( inurl:php?id=)类型为 http://www.xx.com/php?id=xx,那么如何寻找在某个网址中含有php?id=的页面呢?就要用到如下的语句,php?id= site:sina.com.cn,这句话的意思是在sina.com.cn 中找寻链接有 php?id=这样的信息,因为 php 注入的特性(php 默认将传递的参数中的'等字符做了转换,所以对于字符类型的变量默认情况下很难注入),所以我们主要找 id=这样的地方,很有可能就是传递整型数字变量的地方

 2. 在URL加上 and 1=1 提交,返回如果与提交 and 1=2 页面不同则存在注入漏洞,但是真正影响我们注入的确不是这个 PHP 网站,而是其后台的数据库。所以接下来我们就来判断其后台数据库了。在目前的数据库系统中,只有 MySQL 数据库支持/*注释的,所以我们可以利用它来判断后台是否是 MySQL,如果不是那它就不支持这种注释了,自然就会出现错误。我们输入 http://www.xx.com/php?id=xx/*查看返回结果,如果没有出错,说明后台数据库就是 MySQL 了。

3.在URL后提交and ord(mid(version(),1,1))>51/*判断数据库版本,如果正常返回,那么这个数据库版本是大于 4.0 的,因为Ascii 码 51 代表的是 3,这里大于 3 的当然就是 4.0 以上版本!

4.暴任意表名,在URL后提交:and(select top 1  name from(select top  N id,name from sysobjects where xtype=char(85)) T roder by id desc)>1,N代表数据库中第N个表,可得到第1个表的表名。

5.暴任意表任意列的列名:and(sel ect top 1 co 1_name(object_id('表名'),N) from sysobjects)>1,N为第N列。(错误中显示的FORUM_TOPICS是表名,TOPI(_ID)为列名)

6.有表,列名后,可以暴出数据库中数据,语句为:"and(select top 1 列名 from 表名 where id=N) "  N代表第N条数据。

7.一般提交:and(select top 1 username(password) from admin where id=1)>1 可以得到第一条数据/密码。

  • 暴库漏洞

          在url中添加%5c或inc等符号让系统调用数据库时出现错误,返回数据中会提示调用错误,在错误中一般含有数据库的绝对路径。(把url的最后一个/改为%5c)。

原理:这和编码和 IIS 有很大的关系,%5c 就是 16 进制代码中的“\”。可是我们为什么不直接把最后一个“/”改成“\”呢?这是因为如果我们直接在浏览器中提交“\”的话,浏览器会自动把“\”转换成“/”,而我们提交%5c是不会被浏览器转换的,最后%5c给编译表示成了“\”。可为什么被编译成“\”,是由于绝对路径出错了而引起的暴库。当IIS遇到%5c时以为遇到虚拟目录,便停止向上解析而找不到文件报错。

  • conn.asp暴库法

         通过直接访问数据库连接文件conn.asp使服务器产生报错,错误中有DB的绝对地址。

原理:主要是服务器调用文件的相对路径产生错误。

  • Cookies欺骗漏洞

       现在很多系统为了方便我们访问网站,都使用了一个叫 cookie 的技术来避免我们多次输入用户名和密码等信息,而且这个 cookie 是一个文本文件,是存储在我们本地机器上的。Cookies 是一小段的文本信息,它伴随着用户请求和页面在 Web 服务器与浏览器之间传递。
用户每次访问网站的时候,Web 应用程序都可以读取 cookies 包含的信息。使用 cookies 能够达到网站认识你的目的。

      我们自己可以去查看自己电脑上的 cookie 文件,使用 windows 操作系统使用 IE浏览器通常可以在 C:\Documents and Settings\用户名\Cookies 目录中找到。如果不是这个目录可以利用 windows 自带的搜索功能搜索关键字 cookies 也可找到。既然是文本文件,那么我们当然可以修改上面的内容了。所以如果我们对里面的内容进行修改,比如把自己的信息改成别人的,那么我们访问的时候不就成了别人了,那样我们就冒充了别人进入了。这样就达到了欺骗的目的了,这就是非常著名的 cookies 欺骗漏洞。

原理:对于 cookies 欺骗漏洞形成的原因一般是对 cookies 验证不足而造成的。

  • 文件包含漏洞

远程文件包含漏洞就是因为 PHP文件中的变量过滤不严,没有判断提交的参数是本地的还是远程主机上的,因此我们可以指定远程主机上的文件作为参数来提交给变量执行,而如果提交的这个文件中存在恶意代码甚至干脆就是一个 php 木马的话,文件中的代码或 php 木马就会以 WEB 权限被成功执行。因为这个漏洞是 PHP 文件中的变量过滤,所以这个漏洞也只有 PHP 系统中存在。

  • 旁注攻击

说起旁注,其实也就是看同一台服务器上是否绑有多个站点。因为现在大部分网站都是使用的虚拟主机。如果绑有多个站点,那么就算其中一个站点的脚本做得很安全,我们也可以从另一个网站进行突破。我们说的旁注一般指的是绑了不同域名的不同站点上的旁注,这里我称为广义上的旁注。其实,还有一种由于同一站点内使用了多套不同程序,其中一套也许比较安全,但另一套却是有漏洞的。这里称之为狭义的旁注。

 WebShell 

定义:webshell 其实就是 web 入侵的一种脚本攻击工具。简单的说来,webshell 就是一个 asp、php 或 jsp 木马后门,我们在入侵了一个网站后,常常在将这些 asp、php 或 jsp 木马后门文件放置在网站服务器的 web 目录中,与正常的网页文件混在一起。然后黑客就可以用 web 的方式,通过这些木马后门控制网站服务器,包括上传下载文件、看数据库、执行任意程序命令等。webshell最大的优点就是可以穿越防火墙,由于与被控制的服务器或远程主机交换的数据都是通过80 端口传递的,因此不会被防火墙拦截。并且使用 webshell 一般不会在系统日志中留下记录,只会在网站的 web 日志中留下一些数据提交记录,如果不查看 web 日志是不可能发现我们入侵的痕迹的。

 

如何获取webshell?

 

  1. 进入后台直接上传。有些系统对管理员可是十分信任的,进了后台只要找到有上传的地方你就可以直接选匹马放上去,绝不会有任意阻拦。一般来说是什么系统就上传什么木马,比如是 PHP 系统那么我们就上传 PHP 木马。目前这种问题在 php 和jsp 的一些程序比较常见,还有以前的联众游戏站和网易的 jsp 系统漏洞就可以直接上传 jsp 文件。文件名是原来的文件名,bo-blog 后台可以可以直接上传.php 文件,上传的文件路径有提示,因过滤上传文件不严,导致用户可以直接上传 webshell 到网站任意可写目录中,从而拿到网站的管理员控制权限。  
  2. 添加上传类型上传。如果不能直接上传,可找找看有没有添加上传类型的地方,对于ASP 系统有的话添加一个 ASP 就可以了,如果不能添加 ASP 后缀的话,还可以在上传类型中增加 asp ,注意,asp 后面是有个空格的,那么上传一个后缀名为 asp ,的木马也会被解释成 ASP,同样可以获得 Webshell,对于php 系统的后台,我们还可以添加.php.hack 的上传类型,这是 php 的一个特性,主要是因为 Apache 在解析文件后缀上的一些小问题导致的,我们只要保证最后的那个后缀名不是已知的就可以,例如 php 会将 php.hack 作为.php 来正常运行,这是因为 hack 这个后缀名根本就没有,所以 Apache 就会忽略.hack 的解析,从而解析 php,从而也可成功拿到 shell。
  3. 利用代码对文件类型的限制上传。现在许多代码为了安全都限制了上传 ASP、PHP、JSP文件。有些代码的限制方式是一遇到  ASP、PHP、JSP 就把他们去掉的。那么,我们完全可以添加一个上传类型为ASASPP、PPHPHP、JJSPSP,这样一来,在上传过程中代码会把中间为 ASP、PHP、JSP 去掉,后缀的自然也就变为 ASP、PHP、JSP 的了。     

 

利用webshell提权:利用本地溢出程序进行提权。在得到 webshell 后,我们先查看服务器上哪些目录是可执行的,然后在查找操作系统的版本以及在服务器上安装了哪些软件。在确定了这些信息后,我们就查找这些软件存在的相应的一些溢出程序,并上传到服务器的可执行目录中,接着溢出,成功的话,一下就可以得到管理员的权限。不管它是那种操作系统,我们只要确定其操作系统或安装的软件中有存在溢出漏洞,那么使用溢出程序溢出是最快得到管理员权限的方法。                                                                             

                                                                                                                            
                                                                                                                             

你可能感兴趣的:(Web渗透(一))