索引
一. 背景
二:社工找到突破口
三:任意文件下载到数据库权限
四:撞库获取同cms 源码
五:碰撞密码得到获取到目标站权限
六:账号密码规则猜测与引申
一:背景
本次渗透主要目的为获取目标站的webshell,目标站环境为win2008+aspx+mssql+不开源程序,我们手里拥有一个低权限的账号,只能操作自己的数据,没有操作别人数据的权限,其目标是为了获得别人数据的权限;
本次渗透持续3周,期间遇到不少坑,写下来做技术交流。
目标站中,开放80,3389端口 ,源码为知,权限低,怎么拿到高权限呢? 有以下几种思路:
1.搞定目标站管理员常用密码,碰撞密码进3389获取权限
具体一点就是搞目标站其他的二级域名,来获取密码撞库
优点:有效 缺点:渗透需要的时间长,不同的二级域名可能分为不同的管理员管理,密码习惯可能会不一样,
2.搞定目标站管理员邮箱,重置域名权限,更改dns解析到我们的肉鸡服务器,在肉鸡服务器上进行流量监听,获取到管理员的后台密码
缺点:需要大数据支持,手上没有任何客户端的0day,打不到对方权限,裤子也查不到别人密码,虽然高大上,然并卵
3.搞定目标站cms的源码,渗透用这个cms的其他公司,获取源码后进行代码审计,找到通用漏洞,然后进目标站
思路规划:一个低权限的账号》任意文件下载web.config》 连接sql服务器》xp_cmdshell拿到权限》prcdump+mimkz抓取administrator密码》撞库进web服务器》下载web源码进行审计或拿获取网站的密码,去碰撞目标站密码
在此次渗透中,自己的时间并不多,优先选择时间少的方案,第一个方案问了下朋友,他那边有2个这个站子站的shell, 他发给我们几个3389密码 然而都碰撞不进去,过了不久shell也被删了,3389连不通, 于是换思路
二:社工找到突破口
于是准备用思路3,通过搞定目标站cms的源码,渗透用这个cms的其他公司
一般这种不开源的cms,连人家的默认密码都猜不到,怎么搞? 于是和基友讨论,最后用买这套cms的名义,去联系开发这套cms的公司,他们报价以后, 我们提出需要一个试用账号来给领导演示一下这套系统的作用, 对方同意了,
之后用对方给的试用账号进入试用平台,并试用高权限功能时,发现了一个任意文件下载漏洞... 没有限制下载文档的路径,通过跳转可以下载到web.config
这里的漏洞挖掘的思路:
我们在试用过程中主要关注的地方是:任意文件下载,sql注入,和任意密码重置
当然这个站,是被人搞过的,并在服务器上安装了安全狗, 对于安全狗+iis 可以用%符号绕过并进行注入
例子:test.aspx?id=1111 Uni%on sElec%t fro%m admin
在测试sql注入的时候,低权限的账号权限不够,很多功能无法用,所有没有挖掘到sql注入
在测试任意密码重置的时候,发现密码重置这个页面验证了session,而session绕过不了,无法用低权限的账号访问,于是继续换思路
用普通用户账号在测试任意文件下载的时候,测试成功
三:任意文件下载到数据库权限
在目标站上测试文件下载, 文件下载是成功的,不过mssql数据库为本地,并且直接连对方1433是连接不上的,目测出口路由器屏蔽了1433或者交换机做wlan划分的时候,可以 这个时候的思路:
1.搞定对方二级域名的服务器,在对方服务器上连接1433,肯定能连接上1433
分析:
(1)要有目标站的内网ip,
(2)二级域名服务器如果划分wlan多半和目标站在同一wlan下,可以相互访问的
(3)一点运气
对方目标站为win2008,我使用win7连对方3389的过程中,是看不到对方的账号的,不能猜密码,当我用xp连对方3389的时候神奇的事情发生了,居然能连上并且成功找到其他的账号,其中有一个账号名称为vpn,并且密码也是vpn。这个时候vpn 是可以连上的,去连接他的vpn,连上后分配的ip为192.168.1.177 , 用端口扫描工具对192.168.1-1-255进行扫描,
扫描1433和80端口, 开了1433并且开了80肯定就是目标主机···
然而居然一个1433都没开, 80开了5.6个 也并没有找到目标站的内网ip,所有直接连目标站1433进行getshell是不行了
这个时候继续换思路,搞其他用这个cms的企业的权限
思路规划:一个低权限的账号》任意文件下载web.config》 连接sql服务器》xp_cmdshell拿到权限》prcdump+mimkz抓取administrator密码》撞库进web服务器》下载web源码进行审计或拿获取网站的密码,去碰撞目标站密码
四:获得同cms 源码
迂回获取mssql sa权限账号后,用此账号连接上了 同CMS站的数据库,使用xp_cmdshell 储存过程添加了用户名密码,用3389登陆上去后,使用procdump+mimikatz 获得密码
过程如下:
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
win7下执行
mimikatz # sekurlsa::minidump lsass.dmp
Switch to MINIDUMP
mimikatz # sekurlsa::logonPasswords full
得到administrator密码,使用使用windows账户去撞web服务器密码成功撞进去了
五:
碰撞密码得到获取到目标站权限
在进web服务器之后,把源码,数据库,打包下载回本地
现在有2个思路:
(1)
反编译源码,找到通用漏洞,然后搞目标站
(2)
分析默认的账号密码规则进行碰撞
在本地搭建mssql2008, 恢复备份数据,在数据里面有30几个表,如何分析出有价值的目标表呢?
在查询里执行
SELECT sysobjects.name as tablename, syscolumns.name as columnname FROM sysobjects JOIN syscolumns ON sysobjects.id = syscolumns.id WHERE sysobjects.xtype = 'U' AND (syscolumns.name LIKE '%pass%' or syscolumns.name LIKE '%pwd%' or syscolumns.name LIKE '%mail%');
直接查询出有目标字段的表,在手工查看即可得到管理员表
在管理员表的密码格式为
0x01003127232C41862D4A9F5A2B34A96CE9CF939A48350E371F3F
经过研究,为mssql的加密算法,在cmd5上批量查询发现大多数密码为000000或者123456,所有默认的账号密码不是00000就是123456
用数据库内的账号密码去碰撞目标站,尝试了大概10个账号左右,9个失败,最后一个成功
最后成功获得了目标权限
所有评论(0)