就像一杯咖啡,不同的人喝,有不同的味觉
思维方面得转变,举一反三的转变,一个问题,有不同的解决方案
前期,我们需要做各种铺垫,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" ,他是数据库存放的路径文件
那么我们可以这样来想
..../..../=../.../@...@ ../?id=../.../
.../.../=../../.../@...@ ../?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./.../@...@ ../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 %>
已经完全泄漏了。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论