某学院系统sql注入到服务器沦陷(bypss) – 作者:合天智汇

前言

前一段时间都在挖edu src,为了混几个证书,中间陆陆续续也挖到好几枚系统的通杀吧,不过资产都不多,都是黑盒测试出来的,没啥技术含量。只有这次挖到的这枚通杀稍微有那么一点点价值,从外网web一步步深入最后服务器提权,拿下整台服务器桌面权限。

本文涉及相关实操:SQL注入原理与实践 本实验介绍了SQL注入原理,解释了简单判断一个参数是否存在注入的原理,能够利用简单的SQL注入获取其他敏感数据。

1.信息搜集

日常广撒网挖通杀,常规流程,上fofa搜索关键字,xx大学xx系统,xx大学xx平台,一般就是这几个关键词,或者是直接搜body=”xx公司”,xx公司一定要是经常给学校做开发的,往往都是好几所学校用同一家公司的产品。然后就找到了这样一个系统

headImg.action?news=a1a5f0de-c990-440b-8b7b-e33c64615e7e.png

查了下归属,归属是某某学院,教育资产,通过各种语法,信息搜集,找到大概十多所学校都在用这个系统,因为语法太多了,这里随便搜了搜。

headImg.action?news=d0c2840a-5078-45c9-9ba3-1ff3c3d5a94b.png

2.四处碰壁

正常的黑盒测试流程,看一下啥语言写的,ASP+IIS,很常规的配置,edu一般除了jsp就是asp了,很少见到php站,iis的站,若后续有文件上传的点,可以测测iis解析漏洞,老版本的iis洞还是挺多的。

headImg.action?news=e586668f-a04e-4baf-b76b-7ed567408da8.png

既然是asp的站,那就上御剑,先来一顿目录爆破,asp、aspx勾选上,80w的大字典开跑,

一杯茶的功夫,目录爆破完毕,果不其然,啥也没跑出来。

headImg.action?news=e946b7dc-a989-47a4-96e2-b01086c339c8.png

一般这种情况的话,可以换一换要跑目录,因为它整个系统可能架设在一个特定命名的目录下,这里因为时间关系,就没跑了。

既然目录爆破不行,这系统打开就是登录点,那就爆破登陆点试一试,各种用户名都爆破了一遍

headImg.action?news=40aa96a2-1621-4c93-885c-14b632ccc2fd.png

还是失败了,一个弱口令都没爆破出来,学号,工号爆破都试过了,没有一个成功的,目前为止,目录爆破,密码爆破都走不通。

Sql注入,post注入,常规操作,果然。。。。又是一片红,必然做了过滤,简单的fuzz了下sql语句饶了绕,还是失败。

headImg.action?news=0a172142-5b57-492c-bb37-150cc639dec5.png

各种操作都来了一波,啥也没挖到,在挖edu的这段时间里,经常遇到这种情况,都习惯了。

既然注入也没有,还有过滤,那就测测逻辑漏洞,右下角找回密码,我可太喜欢找回密码了,找回密码处就是逻辑漏洞的高发地点,一打一个准,

headImg.action?news=812b0041-48b8-4361-a977-3f3025541833.png

点进去是这样一个页面,挺简陋,越是简陋,就越好打,果断输入答案,抓包。

headImg.action?news=114a680f-cd90-4221-bba6-0d22657d3e73.png

没啥好看的,要是返回包里是json格式的话,那还有得玩。反正我遇上的逻辑漏洞,都是前端验证传回来的json参数,改json实现绕过。

3.柳暗花明(发现sql注入)

Sql注入,爆破,弱口令,逻辑漏洞都试过了,都失败了,正准备放弃的时候,我发现找回密码的时候,他这个系统有个特点,只要你一输入要找回的账户然后再换行,本来它设置问题那一栏是空的,在你输入完账号再换行时,它问题那一栏自动就出现了验证问题。

headImg.action?news=f1a30533-0494-46a0-9ec1-dd57984d7076.png

headImg.action?news=66e46a47-f7ac-49ba-9b2b-6d6bc47440e3.png

所以我推断,在用户输入完账号之后换行就触发了一个动作,这个动作会自动将用户输入的账号带入到后台,从后端获取这个账号的问题,然后再显示在前端,必然有数据交互的一个过程,既然有交互,那么这个点也可能存在注入的可能。

想到这里,打开burp,输入完账号之后不换行,切换至burp,抓包,然后再换行,触发动作,果然抓到了一个post包,请求内容正是账号

headImg.action?news=567f4b11-991d-4253-80dd-697d6f4f93fe.png

输入一个单引号,发现报错了,存在注入无疑了,这系统普通的登录点卡的死死的,还是被找到注入了,只不过这个注入的位置太奇葩了,一般人遇上waf就放弃了。

headImg.action?news=1ace0774-8d19-41dc-93fc-8131f4b15907.png

Sqlmap一把梭,发现是mssql,还是dba权限,不用想了,mssql+dba权限=xp_cmdshell,都不用进后台了。–os-shell

headImg.action?news=65ab46ef-e91a-46bc-9aed-2802e8185cc7.png

4.bypass上线cs并提权

过程就不放图了,简单描述一下,用的是certutil.exe -urlcache -split -f下载cs马,cs马在我的服务器上,刚开始下载文件的时候,报错,whoami一看,数据库权限,只读权限,没有写文件的权限,这可麻烦了

最后解决办法是,把cs马下载到mssqlserver用户的桌面目录下,其他路径没有执行下载的权限,在自己用户的桌面目录从有写文件的权限了吧?执行cs马,cs上线!

headImg.action?news=4ae5460b-0149-42b9-9edc-44b3e594ba29.png

虽然拿到了shell,不过这个shell的权限实在太低了,dumphash报错,操作注册表就各种报错,反正啥操作的报错,因为权限太低

headImg.action?news=0c110d4a-3bde-492c-9b38-2f388ef6c2e4.png

如今当务之急就是提权,先执行一下systeminfo、tasklist看看啥情况

headImg.action?news=20d65df9-500f-4c19-bb7e-c7f592a7d975.png

Server 2012的机器,补丁实在打的有点多,吓人。Tasklist里也没发现有杀毒软件,估计是云waf

2012的机器内核漏洞算是最多的了,试了几个MS16-032/016,全打上补丁了,最后一个MS16-075,一把打穿,成功拿下system权限,2012的机器还是好提。

headImg.action?news=01e8037c-7b81-4f98-8ed9-cf8f1e38e604.png

Bypass远程桌面组获取桌面控制权

执行一下netstat -ano发现开了3389端口,net user发现一堆的用户,这里就不放图了,不然篇幅实在太长了,简单的信息搜集之后,开始办正事,目标是桌面控制,上神器Mimikatz,抓一抓明文密码。这里稍微提一下,2021的机器是可以通过改注册表直接获取明文密码的,一抓发现管理员上次是5.3登录的,没抓到密码,只有hash

headImg.action?news=84d102f6-741b-451a-a749-9918114bf7df.png

抓不到明文密码,那就新建用户,net user admin 123456 /add 新建用户,新建了一个admin 密码123456的用户。远程桌面连一下试试。

headImg.action?news=36db24bb-983a-4069-aec3-adaa88ded49b.png

出现报错:“连接被拒绝,因为没有授权此用户帐户进行远程登录!以为就要成功了,这一个报错就像是当头一棒,找了找原因,是因为我新建的用户没有加入到远程桌面组,所以无法登录,

headImg.action?news=8aa8c7f2-dd8f-4d50-9fc1-f053190c4e8b.png

用net user把admin加入到远程桌面组之后,还是报错,我又修改注册表把防火墙关了,RDP规矩也放行了,无果..我猜可能是修改完配置之后要重启才会生效,我要是重启的话,这台服务器上的这套系统必然会瘫痪,重启是肯定不可取的。

在思想斗争了半天之后,我想到guest用户应该是默认就在远程桌面组的,我只要激活guest用户,那我就可以不重启就连3389了。

headImg.action?news=ad1b551f-3943-4d0d-bbfa-3fee57b14184.png

激活guest用户成功,密码123456,远程连接一下

headImg.action?news=9c480b81-c4ed-48ba-93ab-c2ba5802d100.png

一看到这个正在配置远程会话就知道稳了,3389成功上了桌面,guest权限,加了个隐藏账户,并手动加入到远程桌面组

headImg.action?news=90ad8760-4b05-4fc2-b607-50d960e3729e.png

5.RDP劫持失败

我们的目标是administrator的桌面控制权,但是密码抓不到,又不能重置administrator的密码,怎么拿下它的桌面?

这里我用了RDP劫持,上传一个psexec工具,然后获取一个system权限的cmd,因为只有system权限的命令行才能进行接管会话

headImg.action?news=9492ed10-e59a-41bc-a5ba-5b449d25e100.png

首先query user查看会话ID(这里的图是我写文章的时候截的,所以登录时间是6-1)

headImg.action?news=d5c1576e-6958-42c0-b746-525ed58fecfe.png

然后再在system权限的命令行中执行tscon 2,发现失败,因为上次登录的时间已经超过三天了,凭证过期,无法劫持会话

6.PTH攻击实现利用hash登录

最后通过pth攻击 hash传递攻击拿下了administrator的桌面权限,具体如下

mimikatz命令:

headImg.action?news=4176e1aa-06b1-40a0-b1c3-e7ffde2a67f0.png执行后弹出远程登录界面,选择连接,成功实现无密码登录administrator

headImg.action?news=725be943-75fc-4e48-9e40-7805570852a4.png

桌面长这样,mssql数据库管理页面还没退出

headImg.action?news=f853840c-4435-4c04-aba6-496d4c9a11a5.png

结尾

梳理一下过程:

1.从外网信息搜集

2.到发现sql注入

3.到绕过权限上马

4.再到低权限提权

5.最后通过pth实现无密码登录administrator桌面。

整个过程没有什么技术含量,都是很基本的操作,但是能学到很多,求各位大师傅轻喷,我觉得从发现问题到解决问题是一个很享受的过程,还有,最后拿到了程序的源码,审计后又发现了一处注入和未授权进后台,因为篇幅问题就不说了。

漏洞已经打包提交至平台,最后,网安学习这条路任重道远,希望自己能走下去,少一点花里胡哨,踏踏实实学东西才是最重要的,不能觉得自己学了点皮毛就四处炫耀,保持适当的谦卑。

来源:freebuf.com 2021-06-30 15:54:12 by: 合天智汇

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论