内网渗透测试思路-FREEBUF
(在拿到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命令程序来解决,为当前用户权限。
2. 添加用户的命令net user /add不能被执行:
一般是由于net.exe文件不存在或者拒绝被调用导致,可通过上传net.exe文件来解决,包括tasklist等命令无法被执行时,都可以通过上传相应可执行文件来解决。
3. SQL Server扩展存储过程无法开启:
在管理员做过数据库加固的情况下,xplog70.dll文件会被管理员删除,从而不能够成功开启数据库扩展存储过程,解决方案为上传xplog70.dll文件。
4. 不能在目录下上传文件,或者上传的文件执行权限不够:
根据文件目录的执行权限,首先查找可读、可写目录,假如不好找的话,一般建议将文件上传到相应盘符的recycler文件夹内,这个文件夹在每个盘下面默认都会存在,并且具有可读、写、执行权限。
5. 新建用户成功,但是无法确定管理员组:
没有明确标识的administrator组,在新建用户加入管理员组的过成中,系统管理员已经将管理员组更名,此时需要查询管理员组名称,再在相应的组中加入。
6. 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连接信息。
2. 内网探测
① 通过cmd下执行命令arp –a,查看相邻主机IP。
② 通过上传一些工具,如Cain,可以探测本地程序缓存的密码,通过嗅探器可以嗅探到相邻机器的username和password。
③ 通过上传一些工具,如HScan,可以探测同一个段内存活机器的IP,端口,开启的服务等信息,包括存活机器的弱口令。
④ 通过本地远程桌面跳转到相应的服务器上。
⑤ 如web渗透一样,在进行端口/服务探测时,可以根据探测到的服务版本信息,根据已知的漏洞来使用matesploit进行溢出攻击,从而获得对应服务器权限。 
3. 找到交换机/路由器
通过内网端口/IP扫描找到类似交换机/F5的设备,网络设备没有特殊安全加固的话一般没有设置权限密码或者使用默认密码/弱口令,比较好突破。也可以下载路由器/交换机的配置文件,从而读取到登陆密码。拿到网络设备以后该网段的拓扑结构基本上能做到心中有数。

对内网渗透而言,更多的是利用管理员或者用户组的疏漏而进行的深入,具有较大的随机性,很多情况下也是无疾而终,无奈的终结于此。不过思路和方法是多变的,正所谓没有绕不过的防火墙,终归会有更好的方法出现来解决更多的问题。
对于外网——内网渗透思路系列,并不是倡导一个如何有效入侵的方案,而是通过种种思路的总结来帮助我们的管理员同志更好地抵御外界的威胁,同时我们也倡导大家做有社会使命感的白帽子。在技术方面共同进步,不浮于表面,更多的去进行学习漏洞挖掘分析等更深层次的技术细节,了解漏洞的原理,为提高我们的技术水平而不懈努力。
内网渗透测试思路-FREEBUF的更多相关文章
- 利用MSF实现三层网络的一次内网渗透
目标IP192.168.31.207 很明显这是一个文件上传的靶场 白名单限制 各种尝试之后发现这是一个检测文件类型的限制 上传php大马文件后抓包修改其类型为 image/jpeg 上传大马之后发 ...
- metasploit渗透测试笔记(内网渗透篇)
x01 reverse the shell File 通常做法是使用msfpayload生成一个backdoor.exe然后上传到目标机器执行.本地监听即可获得meterpreter shell. r ...
- Metasploit 内网渗透篇
0x01 reverse the shell File 通常做法是使用msfpayload生成一个backdoor.exe然后上传到目标机器执行.本地监听即可获得meterpreter shell. ...
- 5.内网渗透之PTH&PTT&PTK
---------------------------------------------- 本文参考自三好学生-域渗透系列文章 内网渗透之PTH&PTT&PTK PTH(pass-t ...
- 3.内网渗透之reGeorg+Proxifier
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxIAAAE2CAIAAAB6BDOVAAAgAElEQVR4Aey9Z5Aex3X327MRGVzkRH ...
- 记录一次坎坷的linux内网渗透过程瞎折腾的坑
版权声明:本文为博主的原创文章,未经博主同意不得转载. 写在前面 每个人都有自己的思路和技巧,以前遇到一些linux的环境.这次找来一个站点来进行内网,写下自己的想法 目标环境 1.linux 2. ...
- 基于SNMP的交换机入侵的内网渗透
前言:局域网在管理中常常使用SNMP协议来进行设备的管理和监控,而SNMP的弱点也成为了我们此次渗透的关键. 使用SNMP管理设备只需要一个community string,而这个所谓的密码经常采用默 ...
- 渗透测试思路 - CTF(番外篇)
渗透测试思路 Another:影子 (主要记录一下平时渗透的一些小流程和一些小经验) CTF(番外篇) 笔者是一个WEB狗,更多的是做一些WEB类型题目,只能怪笔者太菜,哭~~ 前言 本篇 ...
- Linux内网渗透
Linux虽然没有域环境,但是当我们拿到一台Linux 系统权限,难道只进行一下提权,捕获一下敏感信息就结束了吗?显然不只是这样的.本片文章将从拿到一个Linux shell开始,介绍Linux内网渗 ...
随机推荐
- jQuery & CSS 制作金属质感的选择按钮
如果能把 CSS 运用好,我们创作出好的交互和效果的可能性大大增加.这篇文章中,我想与大家分享一组结合 jQuery & CSS 制作的充满金属质感的选择框效果,绝对是超级精美的效果. 在线演 ...
- 决战JS
经过这几日的学习,测试和摸索,算是了解了一些关于javascript 的相关知识吧.学习过程中做出了一些小DEMO,现总结一下实现这些DEMO的基本思路,如有不妥或更为简便的方法,还希望大神拍砖,共同 ...
- WPF依赖属性详解
WPF依赖属性详解 WPF 依赖属性 英文译为 Dependency Properties,是WPF引入的一种新类型的属性,在WPF中有着极为广泛的应用,在WPF中对于WPF Dependency P ...
- 小meta的大作用
meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...
- LeetCode - Minimum Depth of Binary Tree
题目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the ...
- .NET Core 单元测试 MSTest
.NET Core 单元测试 MSTest ,MSTest Framework 已经支持 .NET Core RC2 / ASP.NET Core RC2. 之前都是使用 xUnit.net ,现在 ...
- 实现了IEnumerable接口的GetEnumerator 即可使用 Foreach遍历,返回一个IEnumerator对象
#region 程序集 mscorlib.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framewor ...
- [水煮 ASP.NET Web API2 方法论](3-7)默认 Action 请求方式以及 NonActionAttribute
问题 在 Controller 中有一个 public 的方法,但是又不想将这个 publlic 方法暴露成为一个 API. 解决方案 ASP.NET Web API 中,正常是通过 HTTP 谓词来 ...
- Oracle忘记密码的处理办法
可能有的人在很长一段时间不用Oracle数据库,然后在反过来用的时候就会发现自己依然忘记了密码... 这里提供一个忘记密码后的解决办法 首先呢,你打开数据库用 sys或者是sysdba超级管理员用户名 ...
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch ...