写在前面
渗透测试是门技术,也是一门艺术。
这门技术(艺术)一开始也不是每个人都会的,正所谓没有人一出生就会走路,从不懂到入门到深谙,一步步慢慢来,每个人都是这样;但是在这个过程中,思路无疑是最重要的,没有做不到只有想不到,就跟咱们高中解题时有了思路就迎刃而解一样,手里拿着铲子(技巧知识)但不是道从何挖起岂不是悲哀。

下面会分享一些我自己总结的常规渗透思路。

分享的思路就像一本书的索引一样,并不是每个点都有详细的技巧和各种原理分析,而是咱们如何下手如何一步步深入,在每个点上咱们知道了思路可以在每个点上查阅资料来攻破,继续前进。好比武功的招式套路,在总体套路不变的前提的下招招精进,也可以重组创新。

0×01 野球拳:外围

招式解释

野球拳:最基础但练得好最后也非常厉害

1. 主要由于服务器配置等原因造成的信息泄露

常用google ,bing等搜索工具,轻量级的搜索出一些遗留后门,不想被发现的后台入口,中量级的搜索出一些用户信息泄露,源代码泄露,未授权访问等等,重量级的则可能是mdb文件下载,CMS 未被锁定install页面,网站配置密码filetype:lst password,php远程文件包含漏洞等重要信息。

包括Robots.txt不想让百度知道的,可能没有设置forbidden访问权限,让我们知道了路径可以进入哦。





2. 端口探测——服务

该项也是针对服务器的配置来说的,在服务器配置的时候可能出现一些ftp,3389.1433等常规服务端口,则可以根据弱口令尝试,或者一些服务的基础漏洞(CVE)来使用matesploit进行处理。常用工具NMAP –A IP.

3. 爬虫爬网站目录

该项是使用爬虫扫描器,对网站域名进行扫描,网站根目录下的文件,说不定能发现惊喜哦。AWVS,WWWScan。

4. Web框架漏洞

Web整体框架:

①Struts2框架漏洞,直接利用。

②ThinkPHP任意代码执行。

后台框架:

其实也可以算绕过验证进入后台分类中;

①Siteservercms,cookie绕过,在sebug上可以找到相关漏洞修补信息。

②worldpress

③ewebeditor , fckeditor编辑器上传页面直接访问,根据编辑器版本,

随处可查利用信息。


5. 暴力,撞库进后台

无论是前端的用户登录还是后台的管理进入,暴力破解都不失为一种以时间和字典为消耗的方法,还是有概率进入的,呵呵。

不过相比而言,根据外围探测拿到的信息,也许可以帮助我们很轻松的进入后台。

撞库,也许你只拿到了一部分敏感信息,但是网络上现在裤子满天飞的状况下,撞一撞找一找,说不定密码就出来了,这个可比暴力破解快得多。



6. 弱口令

最常见最危险也最掉以轻心

  1. 中间件配置不当引起的问题

① IIS写漏洞(不常见了)

 (常规工具“老兵”)


② 目录可访问

*8. 操作系统、中间件文件解析引起的问题,

Apache test.php.xx IIS test.asp;.jpg windows .asp. asp□

不是深入的话题,在上传里关注

  1. php引起的一系列问题

① ../../etc/passwd 直接深入

② php引起的目录遍历

③ PHP 引起的远程文件包含(google搜索也可以直接利用)

0×02 太极:外围到内部之间的中间层(应用)

招式解释

太极:遇强则强,遇弱则弱,全是应用惹的祸

一.用户未登陆的情况下

1、注入

注入的类型实在太多,利用花样种种,

① 页面调用时候的sql注入,一般直接穿山甲,sqlmap跑出来dbs和表,用来进后台用或者泄露用户信息。(DBS是否完整,网站结构库,直接利用)

② 万能密码之类的sql注入,进入前端应用或者后台管理。

③ 本站没有注入不代表就不能深入,试试旁注呢,呵呵。只是流程不一样了。



2、XSS

XSS的类型不算多存储型,反射型,但是利用就是只有你想不到,没有你做不到。

和深入无关的就不说了。

① XSS盲打打后台,多半也是想进后台种种方法无果的情况下。概率有限。

② XSS DDoS。




3、信息泄露,订单遍历

用户访问权限问题。

4、密码找回漏洞(密码邮件/短信重置)

Burp可修改字段的情况下,找回其他用户密码,说不定admin的密码就被你找回了。

5、后台

后台也是一种业务,只是一种专政的隐藏的业务哈。

如何进入后台呢?在找到后台地址的前提下。和应用无关的:暴力破解,撞库,信息收集利用,弱口令,未授权访问。

① 万能密码之类的sql注入,post型注入用sqlmap dump dbs.

② 利用web前端的sql注入

③ 密码找回运气好的话前端应用的admin密码和后台密码一致。(有什么查询密码88)

④ XSS盲打 cookie (成功率)

⑤ 后台框架 siteservercms等知名后台cms sebug

1、首先获取免费版软件,然后安装使用查看是否有test(admin)账户,能否直接利用,保存cookie提交看能否使用。2、看版本,Sebug等上面有无直接利用方法3、代码审计 (北京2014绿盟安全夺旗北京分公司利用此方法成功转账)
二.在模拟用户注册登陆情况下

1、认证绕过

① 万能密码

② Cookie欺骗

2、越权访问

① 平行越权,其他用户信息读取、修改;

② 纵向越权,主要体现在修改密码能否通过特殊字段标记的修改管理员密码。

3、注入

Cookie post get 型,登陆后user相关应用

4、XSS 影响力、类型实在太多

① user提交的东西让后台管理员去审核

了解后台的提交审核流程,CSRF,给自己添加用户,(文章管理系统)

XSS找后台,管理员浏览时Cookie传输到XSS平台

XSS蠕虫之类

订单遍历

5、上传点

① 一句话木马

② Webshell上传

在很多情况下,没有注入的,后台进不去,上传点是最好的阵地。

网站十分重视对上传文件的保护,熟悉上传流程,被阻断在哪里,在哪里突破。

6、短信、邮箱DDoS

7、支付漏洞

① 0元任意付

② -1元退款

③ 数量整型/长整型溢出

0×03 内部(管理后台)

招式解释:迷踪步(无痕无迹,还需更深进入)

既然已经进入了管理后台了,很有成就感,那么下一步的目标就是控制这台服务器,控制整个网段。。。现在一般的web渗透也都到此为止了。

1.上传webshell

假如你在web前端没有地方或者没办法上传webshell,那么在后台上传是一个最好的选择,这也是帮助你从业务层面上控制服务器的最佳方法。

① 后台可修改上传文件类型,欢天喜地,修改下白名单| 黑名单,上传成功,有时候不能被解析很常见,再找原因。

② 后台不能修改上传文件类型,大部分哦~不过一般来说对后台的上传校验比前端要宽松一些。

没事,咱们该怎么绕过就怎么绕过,不能绕过就88…….

2.一句话木马

3.管理员的分权

假如说管理员进行了分权,拿到了管理员不是权限最高的主管理员的话还需要进行管理员提权操作。

后台提权

内网渗透相关内容请见下期,本文主要跟大家分享一些思路,希望跟大家共同进步。
0×01 斗转星移

(在拿到webshell的时候,想办法获取系统信息拿到系统权限)

一、通过常规web渗透,已经拿到webshell。那么接下来作重要的就是探测系统信息,提权,针对windows想办法开启远程桌面连接,针对linux想办法使用反弹shell来本地连接。

① Webshell应该都可以调用系统cmd执行一些简单的命令,那么whoami(查看当前权限),netuser(查看用户/组),systeminfo(查看系统补丁修复情况)等常见命令应该是首先被执行

探测的。

I: 不具备系统权限:

① Serv-U提权,现在很多的webshell都集成了Serv-U一键提权功能,只需要点击一下就拥有了系统权限,简单快速。

② SQL Server提权,利用webshell的目录翻阅功能,查找网站根目录下的数据库配置文件,以php为例则为config.php;查看文件内容一般都会发现数据库的登陆信息用户名/密码,(密码md5或者其他的加密方式解密一下即可),通过webshell或者数据库端口开放的话利用数据库连接工具Navicat等工具来连接数据库。

连接数据库检查xp_cmdshell是否存在,扩展存储过程是否打开,再利用xp_cmdshell来执行系统命令,添加用户、开启远程桌面等。

常用命令:

select count(*) from master.dbo.sysobjectswhere xtype = ‘x’ and name=’xp_cmdshell’ 返回值是1就是有xp_cmdshell存储过程 exec master.dbo.sp_addextendedproc ‘xp_cmdshell’,’xplog70.dll’添加cmdshell(Sqlserver 2000) exec sp_configure ‘show advanced options’,1;当设置advanced options参数为1时,系统才允许修改高级选项; reconfigure; exec sp_configure ‘xp_cmdshell’,1; 开启扩展存储过程; reconfigure; (Sqlserver 2005)通过xp_cmdshell来执行命令: exec master.dbo.xp_cmdshell ‘命令’
③ MYSQL提权,如SQL Server一样,首先找到数据库连接文件来找到数据库的登陆信息,登陆MYSQL数据库,利用MYSQL的Create Function来添加自定义函数,向mysql添加命令执行函数来执行系统命令。需要使用的文件为udf.dll。

也有一些自动化工具可以完成以上操作。

II:具备系统权限:

直接通过wehshell来执行相关命令,添加用户等操作。

② 可能遇到的障碍:

  1. 无法执行cmd命令:

有可能执行的命令不具备执行权限或者system32/cmd文件自身拒绝被调用;一般可以通过自己上传cmd命令程序来解决,为当前用户权限。

  1. 添加用户的命令net user /add不能被执行:

一般是由于net.exe文件不存在或者拒绝被调用导致,可通过上传net.exe文件来解决,包括tasklist等命令无法被执行时,都可以通过上传相应可执行文件来解决。

  1. SQL Server扩展存储过程无法开启:

在管理员做过数据库加固的情况下,xplog70.dll文件会被管理员删除,从而不能够成功开启数据库扩展存储过程,解决方案为上传xplog70.dll文件。

  1. 不能在目录下上传文件,或者上传的文件执行权限不够:

根据文件目录的执行权限,首先查找可读、可写目录,假如不好找的话,一般建议将文件上传到相应盘符的recycler文件夹内,这个文件夹在每个盘下面默认都会存在,并且具有可读、写、执行权限。

  1. 新建用户成功,但是无法确定管理员组:

没有明确标识的administrator组,在新建用户加入管理员组的过成中,系统管理员已经将管理员组更名,此时需要查询管理员组名称,再在相应的组中加入。

  1. 3389端口虽然打开,但是远程桌面无法连接:

一般这种情况是由于windows的防火墙进行的端口限制或者在远端服务器网络出口有安全设备如防火墙进行了外联端口限制,这个时候就要祭出前辈大神的LCX端口转发工具,对相应端口进行转发到常规使用的端口上,再从外部连接转发后的端口。

二、 没有通过常规渗透拿到webshell,但是由于中间件的配置失误,可以上传shell。

Apache,Tomcat等中间件以system权限运行,存在管理控制台manager,尝试弱口令或者暴力破解登入,可以通过控制台上传jsp、war等格式的webshell,从而进一步执行系统命令。

三、Web存在sql注入,数据库为SQLServer,通过SQL Server的特性,开启扩展存储过程XP_cmdshell,从而添加管理员用户/组,开启远程桌面。或者MYSQL存在web sql中注入,则不通过webshell翻阅文件来获取数据库连接密码,直接从外部利用数据库连接工具来进行提权。

四、利用系统已知漏洞来提权,通过wehsell执行systeminfo来确定系统打补丁的情况,从而使用metasploit来溢出提权,选择payloads来开启远程桌面。在windows下比较出名的漏洞如MS-08067,MS11-080,MS11-046等。

五、对于Linux系统:

① 在拿到webshell的前提下,一般的流程为使用相应exp或者执行上传的脚本,反弹shell出来在本地进行连接,运行提权程序获得root权限。

如windows下一样,在Linux下首先通过webshell执行whoami来确定当前用户是什么用户,执行uname–r来确定Linux的内核版本,依照此版本来找对应的exp;当然对应很多版本的Linux内核,都是没有exp来对用执行的,很多情况下只能无奈止步或者另辟蹊径。常用工具nc。

② 可能遇到的障碍:

1.反弹shell的时候在本地无法正常连接:

一般这种情况是由于Linux的iptables防火墙进行的端口限制或者在远端服务器网络出口有安全设备如防火墙进行了外联端口限制,这个时候就要祭出前辈大神的LCX端口转发工具,对相应端口进行转发到常规使用的端口上。

2.提权exp或者自己远程编译的脚本无法执行:

检查是否当前文件具有可读、写、执行权限,尝试修改目录、文件的权限,使用chmod u+x,假如无法修改权限的话就寻找具有相应权限的目录重新上传执行。

六、关于一句话木马:

使用webshell方式固然好处是强大的各种功能,但是webshell的缺点体现在:

1.很容易被管理员发现清除,2.复杂冗余的功能根据不同的情况可能无法使用,3.在web应用中上传webshell的时候困难重重。
对于一句话木马,在web应用中可以根据情况直接插入,对应的菜刀chopper可以轻松连接一句话翻阅目录,并且可以进行数据库管理和自定义cmd路径执行。好处主要在于不容易被查杀,并且不容易被管理员发现。在上传了webshell后,在可读可写的目录下新建一句话木马连接文件也不失为一种保存后门的方式。同时注意隐藏,将一句话木马的文件名改名为config.php , run.php等系统文件名更具有迷惑性。

0×02 隔山打牛

(在拿到一台服务器的时候,拿下内网更多的服务器,更有用的信息)

  1. 信息获取

信息获取总是第一步执行的操作,利用管理员的疏忽或者内网机器的弱口令来发现更多的信息。

① 可以使用工具pwdump来抓取管理员hash,配合彩虹表或者在线hash破解,获得管理员的明文密码,这个可以作为自己的密码表,在进行内网其他机器的登陆时尝试。

② 查看远程桌面的连接信息,一般通过远程桌面经常连接的机器会在该程序打开时候的下拉菜单中保存,如果管理员选择的是记住密码的话,那么就轻松跳转其他机器。

③ 假如存在数据库管理工具,ftp管理工具等,如Navicat,SecureCRT,flashfxp等,查看是否是保存的密码,尝试登陆。

④ 各款浏览器的保存登陆密码,作为自己的密码表,在进行内网其他机器的登陆时尝试。

⑤ 有无VPN连接信息。

  1. 内网探测

① 通过cmd下执行命令arp –a,查看相邻主机IP。

② 通过上传一些工具,如Cain,可以探测本地程序缓存的密码,通过嗅探器可以嗅探到相邻机器的username和password。

③ 通过上传一些工具,如HScan,可以探测同一个段内存活机器的IP,端口,开启的服务等信息,包括存活机器的弱口令。

④ 通过本地远程桌面跳转到相应的服务器上。

⑤ 如web渗透一样,在进行端口/服务探测时,可以根据探测到的服务版本信息,根据已知的漏洞来使用matesploit进行溢出攻击,从而获得对应服务器权限。 

  1. 找到交换机/路由器

通过内网端口/IP扫描找到类似交换机/F5的设备,网络设备没有特殊安全加固的话一般没有设置权限密码或者使用默认密码/弱口令,比较好突破。也可以下载路由器/交换机的配置文件,从而读取到登陆密码。拿到网络设备以后该网段的拓扑结构基本上能做到心中有数。

对内网渗透而言,更多的是利用管理员或者用户组的疏漏而进行的深入,具有较大的随机性,很多情况下也是无疾而终,无奈的终结于此。不过思路和方法是多变的,正所谓没有绕不过的防火墙,终归会有更好的方法出现来解决更多的问题。

对于外网——内网渗透思路系列,并不是倡导一个如何有效入侵的方案,而是通过种种思路的总结来帮助我们的管理员同志更好地抵御外界的威胁,同时我们也倡导大家做有社会使命感的白帽子。在技术方面共同进步,不浮于表面,更多的去进行学习漏洞挖掘分析等更深层次的技术细节,了解漏洞的原理,为提高我们的技术水平而不懈努力。