web 信息安全高级渗透技术

  • A+
所属分类:颓废's Blog

首先,从架构来说,从目录来说,不同的人有不同的行为渗透模式

就像一杯咖啡,不同的人喝,有不同的味觉

思维方面得转变,举一反三的转变,一个问题,有不同的解决方案

前期,我们需要做各种铺垫,vpn代理?本地环境搭建?针对不同的目标?

jdk6.0> php.net getshell exp? asp server? 自然,信息收集是第一步

robots.txt ? 有的网站会有这样的文件 ,蜘蛛爬行当然有点用处

typefile:网站 inurl:架构?id=  site:架构 "存在的敏感目录或者文件"

这些都可以作为前提收集,IP反查,域名注册商查询,PING测试,判断服务器类型

C段入侵,只是作为前提的不必要判断 ,尽量从主站和旁站入手 

一个主站,首先分析index.类型 ,去判断 http://www.xxx.com/index.jsp?

正常回显。有可能内嵌套一个架构类型。./这个在linux系统里是运行的意思

其他他与./  ../有很多用处 ../aspx这样尝试,报错后,我们可以依次判断是否支持该架构脚本文件

@邮箱可以作为前期收集的重要部分,注意前缀,可以作为后台的用户名或者密码

大型架构的网站,有可能会把域名与地址作为用户名的判断,任何一个网站,都有架构类型

那么我们可以把他作为一个框架类型,那么我们在登录窗口验证的时候,实际上就是一个判断

一个用户,一个密码,一个登录,一个退出,那么我们通过查看源代码功能,就能够得到一些信息

比如action="这里是提交后的地址,那么可以把提交后的地址作为参数上传去测试

那么他实现的是一个判断,上传是一个判断,登录同样是一个判断

登录窗口login同样存在注入方法,那么搜索ser也同样存在注入方法

同样,首先要了解什么是验证?  报错有哪些判断

1,403访问页面,他实现的是对目录权限的访问受限,但不同于针对不同的架构,如top.php 实现的是一个页面布局

2,404错误 ,有时候会注意判断下方的IIS类型,就能够明显判断出网站的服务器类型

3,200 ,存在该页面,但有可能是假地址。

4,405 拒绝,不允许去访问该页面,拒绝。

5  500 内部服务器错误  

if(user!=name){ 

   alert("你输入的密码有误");

那么我们可以发现,报错后,其实可以再次查看源代码,有时候会有一些不小的收获。

那么本地提交,与网站提交有什么不同呢?

首先本地提交,他是127.0.0.1/upload.asp?id=?  

利用本地提交后,获得权限

就像我们获得了mysql的网站密码,我们习惯性的在phpadmin里面输入local:127.0.0.1 以这样的方式去查询数据库

那么在线提交,他必须遵守网站的规则

1,你的格式有误,只支持rar.doc.jpg.gif

2,页面空白(禁止了)

3,上传页面不存在

利用方法有很多,本地搭建上传POST ,抓取hash值,gif89a+空格绕过,或者1.php/2.jpg 错误解析漏洞

等等

那么,他终究是实现的一个页面框架的渗透

通常来说,从获得一个shell权限到提权,针对whoami linux系统与 win系统 ,以及星外主机,拿到服务器权限才算完美。

常规小黑通常想到的方法:就是黑盒与白盒测试,c段"嗅探"劫持"欺骗"等内容,当然,早期的源代码渗透,让我们温故而知新。

那么我们可以来想象一下

1,  框架里面的文件包含了数据库

2,  包括了布局,发布,上传,退出

3, 框架的设计是否有漏洞

===========================

  username: ____admin_________
  password: ____123456________

  登录           退出

版权所有  xxxxxxxxxxxx

那么这里就有了基本的逻辑框架

先是输入,接着登录,匹配内容,当前用户admin进入管理系统等等

我们来看一个简单的例子:

151696983Browser.jsp?sort=1&dir=  jsp的dir目录漏洞

info_check_view.jsp?info_id=7ed30de0-da4e-11e0-95e3-be3e7f000001&edit=1&i_page=1 jsp的对应传参ID漏洞

漏洞文件来源于后台管理目录下info_check_view.jsp文件,他首先7ed30de0-da4e-11e0-95e3-be3e7f000001&执行到这里的时候,就已经

暴露出了问题,首先,他是&edit编辑一篇文章,对应的取值范围1&i_page=1 实际上,你提交到2,会展现一个不同的页面,那么首先他上面的

7ed30de0-da4e-11e0-95e3-be3e7f000001也就是对应的ID相应范围,那么我们实际上要有伪造和修改参数去访问的想法

比如:7ed30de0-da4e-11e0-95e3-be3e7f000001&load 或者add,以及save 

我们传统的方法:php:注射,伪造外码爆错:伪造一个符合规范的代码,尝试爆错。

如果有邪恶的想法,那么肯定是在a href="/gt/frontend/member/ssoRegisterOrgAgentPage.do?cmd=firstInvoke"

这个地方加入网马地址了,这只是另当别论。

你可以在一个EXE安装程序里绑定不同的功能,当运行启动某程序,比如某软件的下载地址,写一个逻辑循环弹窗,这样电脑又会出一些不必要的麻烦。(题外话)

hex编码转换是个不同的方法,比如把数据库@#$%^&^&.mdb ,用hex转换,0x402324255E265E262E6D6462,有时候可突破下载功能

通常在PHP读路径的时候,也需要把路径e:/wwwroot/con.php转换为16进制去读,0x653A2F777777726F6F742F636F6E2E706870,配合的就是load_file

了,当然你挂马的时候,实际上我们可以发现使用URL转换为比如,http://zhidao.baidu.com/search?lm=0&rn=10&pn=0&fr=search&ie=gbk&word=sddsadsad

如果这里出了问题,或者有漏洞,转换下。search&ie=gbk&word=sd,配合http://zhidao.baidu.com/search?搜索

http://zhidao.baidu.com/search?%73%65%61%72%63%68%26%69%65%3D%67%62%6B%26%77%6F%72%64%3D%73%64 这样

就像我们了解常字节的时候,在一个文件夹里,建立一个7777777(长字节)的文件

当字节多了,不断的目录下的文件也有长字节时,那么计算机几乎不能处理了。那么会崩溃,另外他的功能也会消弱

你完全可以发现同样1.txt 与长字节.txt ,他们右键从功能上就有所改变了
,长字节已经没有了重命名功能了。

执行SHELL访问的时候,有的网站可能把一些危险代码给过滤了。

这时候,我们需要在SHELL代码里面找出他已经严重威胁的代码,把他给修改或者去掉

这样就能突破限制。

另外一般得到SHELL后门得到的都是匿名权限,那么我们实际上自己也可以做一个密罐

一般用一个小马测试,只需要把小马的提交页面展现到另外一个密罐页面即可。

例如缺少对象上传时,可以看看是否有其他脚本支持该网站,一般来说PHP,ASPX比较容易上传cmdshell

再到shellasp 里面执行,那么set就能看到面目了。

关于路径解析爆错思路,我想讲的,可以有一些,那么今天就简单的讲一讲这方面的经验与思路

首先,路径报错,如果出相对路径,那么,我们得到的回显与方法也是不一样的

login"><./error../这个例子,实际上就去找寻登录窗口爆错的方法

那么爆错后有哪些利用方法呢?

XSS被动? 或者是返回到后台登录页面,那么我们可以来想一想,他怎么去强制跳转的呢?

当我们什么也不输入,他就自动跳转了,这又怎么解释呢?

比如HTTP Status 404 - /newacademic/common/security/   

我们可以发现目录,接着可以看到Apache Tomcat/5.5.17的版本

那么,正是我们实现了ERROR,因为任何一个网站,都会有ERROR的提示,那么这样去想问题

login.jsp?login_error=1 ,我们就可以轻松的找到一个后台管理系统

那么在企业网站CMS,或者一些新闻源,通常可以利用传参的user?id=admin这样去寻找用户,收集相关资料与信息

http://club.china.com/jsp/error/error.jsp?message=nologin  利用返回报错轻松下载错误的源码。

拿一个很久原创的百度被动攻击来说下攻击过程

http://verify.baidu.com/vcode?http://www.baidu.com/s?wd=inurl%3Aindex..%2Fspd..%2F&pn=10&oq=inurl%3Aindex..%2Fspd..%2F&tn=request_4_pg&ie=utf-8&rsv_page=1

首先这是错误的。

那么看到code,是验证参数,我们如何发起进攻呢?

http://verify.baidu.com/vcode?http://www.baidu.com/s?wd=%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%22%29%3C%2F%73%63%72%69%70%74%3E%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%22%29%3C%2F%73%63%72%69%70%74%3E

答案是很明朗的,判断我们输入的过程,默认验证只有1次,2次验证自动失效,为什么呢?

首先,他没有设置多重验证方法,我们写入一个JS代码,他开始验证了,以CODE文件里的代码作为第1次验证

那么,我们提交后,验证也就销毁,到达下一个页面,同样,我们执行了2次JS,那么他相当于执行1次,销毁1次,展现1次

接着执行了我们2次提交的JS。

usersid 参数传递是简历在用户验证前提下,通常是针对某个用户,或者某个布局权限漏洞导致
edit 显示传递后的参数保持不变   d:/root/session.php 读取会话  <%=id%>  为受影响类
读取<!--#include file="conn.asp"-->
<!--#include file="conn.inc"-->

比如这个<!--#include file="conn.asp" ,他是数据库存放的路径文件

那么我们可以这样来想

..../..../=../.../@[email protected] ../?id=../.../
.../.../=../../.../@[email protected] ../?id=../.../

针对不同的架构,bank(银行) ,edu(学校), /..../两者的结合就会出错

我们要深刻理解容错的含义,架构容错,以及路径容错

zhengwugongkai/在根目录下的文件完全可以实现容错

针对路径解析思路

我们看看回显,以及容错后的代码

<% mode = LCASE(Request("mode")) gif = Request("gif") Set conncount = Server.CreateObject("ADODB.Connection") conncount.Open(tcon()) SET rscount = Server.CreateObject("ADODB.Recordset") rscount.Open "Select * From counters" ,

实际上我们已经容错到数据库的边缘了。

很明显,闻到了一些库的讯息

那么session会话同样也会出来。

那么在渗透思路中,两者要学会变通手法

或者你想去手工创造一个oday web ,那么你截取的地址,是在目录下容错后所爆的

或者是容错回显后的地址呢?

很明显,我们截取的当然是目录下存在的容错了

如何去理解这一过程?

1,首先,网站管理员把网站目录的文件放到文件夹

2,每个文件夹的权限,有设置与修改

3,文件与文件之间有相互调用,参数相互传递的功能,这属于扩展类。

4,我们完全可以分析容错后利用的代码部分,去实现一个扩展框架,比如

那么我们容错的oday 就是蜘蛛:.../.../=../.gov./.../@[email protected] ../conn?id=../.../

OK,这只是一个前提的小ODAY,具体还可以去实现更多

比如,分析容错每个地址下面的代码部分,或者是地址部分

接着,再传递一个错误的参数过去,是否爆错。

按照正常的思维逻辑,我们是先容错后内容

那么我们先来看看容错的3个页面

% Else Dim MyMailTotal:MyMailTotal=Conn.Execute("Select Count(ID)

"gif") id=trim(request("id")) Set conn = Server.CreateObject("ADODB.Connection") Conn

<%owen=request("id")%> <% owen1=request("owen1") owen2=request("owen2") %> <% Se

那么我们完全可以发现"Conn"已经起作用了。

这样已经完全把整个网站的重要的信息给暴露了

exp 或者是
getshell或者

那么他们完全的思维逻辑是判断一个用户输入的地址,接着,再去执行这段EXP部分

最终实现想要的讯息,同样,如何去实现这个CONN的判断呢?

实际上,这个思路,我觉得首先应该是%><%的采集功能要作为首要考虑。

那么里面包含的内容,可以是id,也可以是Select

实际上啊,我们都知道,利用order by ** 或者是and 1=2 select 1,version(),3,4,5,6 from *admin*

实际上是去利用漏洞查询数据库中的内容,那么我们可以想象,通过判断%><%,只要容错,就有返回

那么我们还需要一步,就需要添加一些扩展,这些扩展可以是容错的表达式

add.html,添加了一个页面。删除了一个页面等等

这样去理解这一过程。

例如http://mep128.mofcom.gov.cn/正常展现页面

容错HTML位置:/mep/zhuanti/lscb/fzqs/284546.shtml

回显<% 'dim myconn set conn=Server.createobject("adodb.connection") sqllink="Provider=SQLOLEDB.1;Server=(local);database=mep;uid=mep;pwd=mep_user" conn.open sqllink %> 

用户登录(免费)             您的位置: 首页 > 专题
<% 'dim myconn set conn=Server.createobject("adodb.connection") sqllink="Provider=SQLOLEDB.1;Server=(local);database=mep;uid=mep;pwd=mep_user" conn.open sqllink %> 

已经完全泄漏了。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: