新聞中心
在網(wǎng)絡(luò)攻擊中,數(shù)據(jù)庫(kù)漏洞常常被攻擊者利用。因此,檢測(cè)數(shù)據(jù)庫(kù)中的漏洞就變得非常重要。在本文中,我們將介紹一份簡(jiǎn)易的數(shù)據(jù)庫(kù)漏洞檢測(cè)源代碼。

10年的齊河網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整齊河建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“齊河網(wǎng)站設(shè)計(jì)”,“齊河網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
1. 簡(jiǎn)介
該源代碼用于檢測(cè)數(shù)據(jù)庫(kù)中的漏洞。具體來(lái)說(shuō),它可以檢測(cè)以下幾個(gè)方面:
– 數(shù)據(jù)庫(kù)是否存在默認(rèn)賬號(hào)和口令;
– 數(shù)據(jù)庫(kù)是否存在表格及其結(jié)構(gòu);
– 數(shù)據(jù)庫(kù)是否存在未授權(quán)的訪問。
代碼主要使用了Python語(yǔ)言和MySQL數(shù)據(jù)庫(kù)。檢測(cè)流程如下:
– 用戶輸入數(shù)據(jù)庫(kù)連接信息,包括IP地址、端口號(hào)、賬號(hào)和口令;
– 對(duì)于輸入的賬號(hào)和口令,程序會(huì)檢測(cè)其是否是默認(rèn)的賬號(hào)和口令;
– 然后程序會(huì)檢查數(shù)據(jù)庫(kù)是否存在需求的表格;
– 程序會(huì)檢查是否有未授權(quán)訪問數(shù)據(jù)庫(kù)的情況。
代碼的執(zhí)行結(jié)果可能會(huì)包括警告或錯(cuò)誤信息,以便用戶能夠及時(shí)發(fā)現(xiàn)漏洞。
2. 代碼結(jié)構(gòu)
代碼分為兩個(gè)文件:一個(gè)是用于檢測(cè)漏洞的主程序文件(detector.py),另一個(gè)是用于存儲(chǔ)數(shù)據(jù)庫(kù)連接信息的配置文件(config.py)。其中主程序文件的具體內(nèi)容如下:
“`python
import MySQLdb
import config
def check_default_credential():
for credential in config.default_credentials:
try:
db = MySQLdb.connect(config.ip, config.username, credential, config.dbname, config.port, charset=’utf8′)
db.close()
print(‘Default credential found: username=%s, password=%s’ % (config.username, credential))
except:
pass
def check_table_existence():
try:
db = MySQLdb.connect(config.ip, config.username, config.password, config.dbname, config.port, charset=’utf8′)
cursor = db.cursor()
cursor.execute(‘show tables;’)
tables = cursor.fetchall()
cursor.close()
db.close()
table_names = [table[0] for table in tables]
if config.tables[0] not in table_names:
print(‘Table %s does not exist’ % config.tables[0])
else:
cursor = db.cursor()
cursor.execute(‘desc %s;’ % config.tables[0])
columns = cursor.fetchall()
cursor.close()
db.close()
print(‘Table %s exists:’ % config.tables[0])
for column in columns:
print(column[0], column[1], column[2], column[3], column[4])
except:
pass
def check_auth():
try:
db = MySQLdb.connect(config.ip, config.username, config.password, config.dbname, config.port, charset=’utf8′)
cursor = db.cursor()
cursor.execute(‘show grants;’)
grants = cursor.fetchall()
cursor.close()
db.close()
for grant in grants:
if ‘a(chǎn)ll’ in grant[0] and ‘@’ in grant[0]:
print(‘Anonymous user has been granded %s’ % grant[0])
except:
pass
def mn():
check_default_credential()
check_table_existence()
check_auth()
if __name__ == ‘__mn__’:
mn()
“`
該程序包含了三個(gè)函數(shù):`check_default_credential()`、`check_table_existence()`和`check_auth()`,一個(gè)定義了這些變量的配置文件(config.py)。
config.py文件內(nèi)容如下:
“`python
# database connection information
ip = ‘localhost’ # 數(shù)據(jù)庫(kù)所在IP或域名
port = 3306 # 數(shù)據(jù)庫(kù)端口
dbname = ‘test’ # 數(shù)據(jù)庫(kù)名稱
username = ‘root’ # 數(shù)據(jù)庫(kù)賬號(hào)
password = ‘root’ # 數(shù)據(jù)庫(kù)密碼
# table definitions
tables = [‘mytable1’, ‘mytable2’]
# default credentials
default_credentials = [‘123456’, ‘root’]
“`
該配置文件定義了MySQL數(shù)據(jù)庫(kù)的連接信息、需要檢測(cè)的表格名稱和默認(rèn)的賬號(hào)口令。您可以根據(jù)實(shí)際情況對(duì)其進(jìn)行修改。
在程序的`mn()`函數(shù)中,我們執(zhí)行了上文提到的三個(gè)函數(shù),以對(duì)數(shù)據(jù)庫(kù)中的漏洞進(jìn)行檢測(cè)。其中,`check_default_credential()`函數(shù)用于檢測(cè)賬號(hào)口令是否為默認(rèn)值;`check_table_existence()`函數(shù)用于檢測(cè)數(shù)據(jù)庫(kù)是否存在特定的表格;`check_auth()`函數(shù)用于檢測(cè)是否存在未授權(quán)訪問數(shù)據(jù)庫(kù)的用戶。
3. 如何使用
要使用這份源代碼進(jìn)行漏洞檢測(cè),您需要在Python環(huán)境下安裝MySQLdb庫(kù)。然后,將主程序文件和配置文件保存到同一個(gè)路徑下,并打開終端或命令行界面,導(dǎo)航到該文件所在路徑。接著,輸入以下命令以開始檢測(cè):
“`
python detector.py
“`
當(dāng)然,您需要進(jìn)行一些必要的配置,如指定數(shù)據(jù)庫(kù)的地址、端口號(hào)、賬號(hào)和口令,以及需要檢測(cè)的表格名稱等。這些信息都可以在配置文件中修改。
4.
在這篇文章中,我們介紹了一份簡(jiǎn)易的數(shù)據(jù)庫(kù)漏洞檢測(cè)源代碼。它可以檢測(cè)數(shù)據(jù)庫(kù)中的一些常見漏洞,以幫助用戶及時(shí)發(fā)現(xiàn)潛在的威脅。該程序可以幫助您快速檢測(cè)您的數(shù)據(jù)庫(kù)是否存在安全隱患。當(dāng)然,它也可能會(huì)錯(cuò)誤地指出不存在的安全問題,因此我們建議您對(duì)檢測(cè)結(jié)果進(jìn)行仔細(xì)的分析和驗(yàn)證。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220web漏洞掃描工具有哪些
1、Nexpose:跟其他掃描工具不同的是,它的功能十分強(qiáng)大,可以更新漏洞數(shù)據(jù)庫(kù),也可以看出哪鍵戚培些漏洞可以被Metasploit Exploit,可以生成非常詳細(xì)、強(qiáng)大的Report,涵蓋了很多統(tǒng)計(jì)功能和漏洞的詳細(xì)信息。
2、OpenVAS:類似Nessus的綜合型漏洞掃描器,可以用來(lái)識(shí)別遠(yuǎn)程主機(jī)、Web應(yīng)用存在的各種漏洞,它使用NVT腳本對(duì)剁成遠(yuǎn)程系統(tǒng)的安仔兆全問題進(jìn)行檢測(cè)。
3、WebScarab:可以分析使用HTTP和HTTPS協(xié)議進(jìn)行通信的
應(yīng)用程序
,它可以簡(jiǎn)單記錄觀察的會(huì)話且允許操作人員以各種方式進(jìn)行查看。
4、WebInspect:是一款強(qiáng)大的Web應(yīng)用程序掃描程序,有助于確認(rèn)Web應(yīng)用中已知稿唯和未知的漏洞,還可以檢查一個(gè)Web服務(wù)器是否正確配置。
5、Whisker/libwhisker:是一個(gè)Perla工具,適合于HTTP測(cè)試,可以針對(duì)許多已知的安全漏洞,測(cè)試HTTP服務(wù)器,特別是檢測(cè)危險(xiǎn)CGI的存在。
6、Burpsuite:可以用于攻擊Web應(yīng)用程序的集成平臺(tái),允許一個(gè)攻擊者將人工和自動(dòng)的技術(shù)進(jìn)行結(jié)合,并允許將一種工具發(fā)現(xiàn)的漏洞形成另外一種工具的基礎(chǔ)。
7、Wikto:是一個(gè)Web服務(wù)器評(píng)估工具,可以檢查Web服務(wù)器中的漏洞,并提供與Nikto一樣的很多功能,但增加了許多有趣的功能部分。
8、Watchfire AppScan:是一款商業(yè)類的Web漏洞掃描程序,簡(jiǎn)化了部件測(cè)試和開發(fā)早期的安全保證,可以掃描許多常見的漏洞,如
跨站腳本攻擊
、HTTP響應(yīng)拆分漏洞、參數(shù)篡改、隱式字段處理、后門/調(diào)試選項(xiàng)、
緩沖區(qū)溢出
等等。
9、N-Stealth:是一款商業(yè)級(jí)的Web服務(wù)器安全掃描程序,主要為Windows平臺(tái)提供掃描,但并不提供
源代碼
。
漏洞掃描服務(wù)(Vulnerability Scan Service,VSS) 是一款自動(dòng)探測(cè)企業(yè)網(wǎng)絡(luò)資產(chǎn)并識(shí)別其風(fēng)險(xiǎn)的產(chǎn)品。依托騰訊二十年累積的安全能力,漏洞掃描服務(wù)能夠?qū)ζ髽I(yè)的網(wǎng)絡(luò)設(shè)備及應(yīng)用服務(wù)的可用性、安全性與合規(guī)性等進(jìn)行定期的安全掃描、持續(xù)性風(fēng)險(xiǎn)預(yù)警和漏洞檢測(cè),并且為企業(yè)提供專業(yè)的修復(fù)建議,降低企業(yè)安全風(fēng)險(xiǎn)。
全面漏洞掃描
多年的安全能力建設(shè)積累了豐富遲穗沖而全面的漏洞規(guī)則庫(kù),覆蓋 OWASP TOP 10的 Web 漏洞,例如:SQL 注入、跨站腳本攻擊(XSS)、跨站請(qǐng)求偽造(CSRF)、弱密碼等。同時(shí),系統(tǒng)還具備專業(yè)高效的 0Day/1Day/NDay 漏洞檢測(cè)能力。
敏感內(nèi)容檢測(cè)
基于多個(gè)內(nèi)容安全風(fēng)險(xiǎn)監(jiān)測(cè)引擎及持續(xù)運(yùn)營(yíng)樣本庫(kù),能夠快速準(zhǔn)確發(fā)現(xiàn)網(wǎng)站異常涉黃、涉恐、涉政、賭 bo等敏感圖片、文字信息,幫助企業(yè)及時(shí)自檢,避免因不當(dāng)內(nèi)容導(dǎo)致網(wǎng)站被監(jiān)管機(jī)構(gòu)要求整改,影響企業(yè)形象和業(yè)務(wù)發(fā)展。
篡改掛馬檢測(cè)
結(jié)合碼殲及時(shí)準(zhǔn)確的威脅情報(bào)及高精準(zhǔn)的智能鑒定模型,針對(duì)網(wǎng)站進(jìn)行掛馬、暗鏈、垃圾廣告、礦池等風(fēng)險(xiǎn)的多維度智能檢測(cè),避免企業(yè)網(wǎng)站被他人長(zhǎng)期惡意利用。
全面資產(chǎn)支持
支持多種網(wǎng)絡(luò)資產(chǎn)的全面風(fēng)險(xiǎn)掃描,涵蓋主機(jī)、網(wǎng)站、小程序、公眾號(hào)、IoT 等資產(chǎn)類型,基于豐富的指紋庫(kù),精準(zhǔn)識(shí)別客戶網(wǎng)絡(luò)資產(chǎn),并進(jìn)行實(shí)時(shí)監(jiān)測(cè),幫助客戶及時(shí)發(fā)現(xiàn)影子資產(chǎn)、感知資產(chǎn)變族櫻動(dòng)、有效管理資產(chǎn)。
威脅情報(bào)聯(lián)動(dòng)
依托騰訊安全積累近二十年的威脅情報(bào)大數(shù)據(jù),提供 0Day/1Day/NDay 漏洞檢測(cè),并有安全專家實(shí)時(shí)跟進(jìn)網(wǎng)絡(luò)最新風(fēng)險(xiǎn)動(dòng)態(tài),之一時(shí)間提供威脅情報(bào)和專業(yè)處置建議,大幅縮減風(fēng)險(xiǎn)潛伏期,預(yù)防大規(guī)模入侵,降低安全風(fēng)險(xiǎn)。
智能風(fēng)險(xiǎn)告警
支持在客戶網(wǎng)絡(luò)資產(chǎn)出現(xiàn)安全風(fēng)險(xiǎn)時(shí),通過(guò)多種方式實(shí)時(shí)告警并提供專業(yè)處置建議,幫助客戶及時(shí)感知風(fēng)險(xiǎn)和快速處置。
如何安全檢測(cè)Java Web應(yīng)用網(wǎng)站漏洞
可以歷旅在騰訊智慧安全頁(yè)面申請(qǐng)使用騰訊御點(diǎn)
然后使用這個(gè)軟件上面的修復(fù)漏洞功能
直接對(duì)電滲弊腦的漏叢爛族洞進(jìn)行檢測(cè)和修復(fù)就可以了
如何安全檢測(cè)Java Web應(yīng)用網(wǎng)站漏洞.txt32因?yàn)閻坌?,流浪的人們才能重返家園;因?yàn)閻坌?,疲憊的靈魂才能活力如初。渴望愛心,如同星光渴望彼此輝映;渴望愛心,如同世紀(jì)之歌渴望永遠(yuǎn)被唱下去。web開發(fā)應(yīng)用程序(網(wǎng)站),是目前應(yīng)用最廣泛的程序。但是開發(fā)者的水平參差不齊,導(dǎo)致了各種各樣web漏洞的出現(xiàn)。本文站在分層架構(gòu)的角度,分析一下如何在java web程序中找到可能出現(xiàn)的種種漏洞。本文討論的只是web程序上的漏洞,和其它漏洞,是相對(duì)獨(dú)立的。這句話看似廢話,實(shí)際上卻說(shuō)明了時(shí)常被忽略的因素,即:“很多人認(rèn)為只要我開發(fā)web程序沒有漏洞,web服務(wù)器就安全了”,事實(shí)上,并非如此。一個(gè)合格的web程序開發(fā)人員,應(yīng)該時(shí)刻清楚自己開發(fā)的程序會(huì)在什么環(huán)境中被使用,以及一旦自己的程序產(chǎn)生某種漏洞,最終會(huì)導(dǎo)致什么后果。簡(jiǎn)單的說(shuō),web程序被安裝在一臺(tái)或多臺(tái)(分布式)web服務(wù)器上,一旦安裝成功,就等于在為廣大用戶提供服務(wù)的同時(shí),給入侵者打開了一條或N條新的思路。如果服務(wù)器管理員剛好對(duì)安全配置不了解(事實(shí)上,國(guó)內(nèi)這種管理員居多),那么只好由我們的程序來(lái)守好最后的關(guān)卡最后一道防線。看了本文題目,一定有一部分人會(huì)認(rèn)為,“不就是講P漏洞么,用得著披著這么厚的包告判裝么?”,為了回答這個(gè)疑問,我們先看看P和ASP的開發(fā)有什么不同吧。在ASP時(shí)代(ASP,PHP等語(yǔ)言),開發(fā)一套系統(tǒng)往往比修改別人已經(jīng)寫好的系統(tǒng)痛苦的多,因?yàn)樗鼈儼阉械拇a(包括鏈接數(shù)據(jù)庫(kù)的代碼、執(zhí)行SQL語(yǔ)句的代碼、控制頁(yè)面顯示的代碼)統(tǒng)統(tǒng)都放在中,我們時(shí)常會(huì)看到如腔友侍下代碼塊:—–代碼來(lái)自某ASP SHELL Function GetFileSize(size) Dim FileSizeFileSize=size /FileSize=FormatNumber(FileSize,2)If FileSize 1 then 伍吵 GetFileSize=””& FileSize & ” KB” ElseIf FileSize >1024 thenGetFileSize=””& FormatNumber(FileSize / 1024,2) & ” MB” ElseGetFileSize=””& Size & ” Bytes” End IfEnd Function 如果客戶的需求變了,要求頁(yè)面不能使用“”等標(biāo)簽,全部應(yīng)用“CSS”顯示。掛了,把程序員召喚出來(lái),一個(gè)一個(gè)的改吧。。。注意,這里強(qiáng)調(diào)下,特指“召喚程序員”才能改,如果是學(xué)美工的,只會(huì)HTML、、CSS,完了,這活還干不成。而這些只是簡(jiǎn)單的頁(yè)面修改,如果客戶今天說(shuō),MYSQL服務(wù)器承擔(dān)不了這個(gè)數(shù)據(jù)量,要掛Oracle,可憐的程序員就要在一片一片的代碼海洋里尋找執(zhí)行SQL語(yǔ)句的代碼,而每一個(gè)文件都可能存放著SQL語(yǔ)句,意味著每一個(gè)文件都可能在受SQL注入的威脅。
而P采用MVC模式分層架構(gòu)進(jìn)行開發(fā),就可以把所有的文件分開,根據(jù)其用途,分別放在不同的文件夾下(分層),每個(gè)文件夾下的文件只負(fù)責(zé)自己的事情。例如數(shù)據(jù)訪問層的代碼就放在數(shù)據(jù)訪問層的文件夾下,業(yè)務(wù)邏輯層的代碼也都放在自己的文件夾下,當(dāng)顯示層(這一層是為了把最終的運(yùn)算結(jié)果顯示給用戶看)的需求發(fā)生變化,就像前面的客戶需求,我們只要修改這一層的文件就是了,其他層的代碼根本不需要?jiǎng)?,而修改者也不需要懂得其它層的代碼。代碼分層了,意味著漏洞也在跟著分層,我們尋找P漏洞的思路也要跟著分層,才能與時(shí)俱進(jìn)。下面在講述尋找漏洞的過(guò)程中,本文就拿一個(gè)簡(jiǎn)單的分層架構(gòu)例子來(lái)做樣板。樣板程序的名稱為“XX文章系統(tǒng)”,系統(tǒng)使用了STRUTS框架,和安全有關(guān)的層分為:“DB層”,這一層存放了鏈接數(shù)據(jù)庫(kù)的字符串,以及JdbcTemplate類,直接訪問數(shù)據(jù)庫(kù)。因?yàn)樵趈ava中,執(zhí)行SQL語(yǔ)句的函數(shù)按照返回值可以分為三類,所以在這一層定義了JDBC模版類(JdbcTemplate),每一次使用操作數(shù)據(jù)庫(kù)時(shí)都要執(zhí)行這一層的三個(gè)方法其中一個(gè)?!癉AO層(Data Access Object數(shù)據(jù)訪問對(duì)象層)”,從安全角度上看,這一層存放了SQL語(yǔ)句(并不執(zhí)行SQL語(yǔ)句,語(yǔ)句傳給DB層執(zhí)行)。這一層調(diào)用“DB層”訪問數(shù)據(jù)庫(kù),它只知道“DB層”的存在,不知道數(shù)據(jù)庫(kù)的存在?!癝ERVICE層”,業(yè)務(wù)邏輯層,因?yàn)橐粋€(gè)業(yè)務(wù)的實(shí)現(xiàn),并不是一次數(shù)據(jù)庫(kù)訪問就可以完成的,所以這一層通過(guò)N次調(diào)用“DAO層的方法”實(shí)現(xiàn)業(yè)務(wù)邏輯,它只知道“DAO層”的存在,不知道“DB層”和數(shù)據(jù)庫(kù)的存在。 “ACTION層”,調(diào)用業(yè)務(wù)邏輯層,根據(jù)返回的結(jié)果,控制P頁(yè)面顯示。它只知道業(yè)務(wù)層的存在。這一層是入侵者的攻擊平臺(tái)?!癋orm層”,把用戶POST提交的信息封裝成Form對(duì)象,經(jīng)過(guò)驗(yàn)證后提交給ACTION層處理?!癙層”(顯示層),這一層是最終顯示給用戶看的頁(yè)面,同時(shí)也是入侵者的攻擊平臺(tái)。用戶通過(guò)訪問ACTION層,自動(dòng)會(huì)發(fā)生:“ACTION調(diào)用SERVICE,SERVICE調(diào)用DAO,DAO調(diào)用DB,DB執(zhí)行SQL語(yǔ)句返回結(jié)果給DAO,DAO返回給SERVICE,SERVICE返回給ACTION,ACTION把數(shù)據(jù)顯示到P里返回給用戶”。有了樣板,我們來(lái)分析這套程序中可能出現(xiàn)的各種web漏洞。、SQL注入漏洞從SQL注入漏洞說(shuō)起吧,在web漏洞里,SQL注入是最容易被利用而又更具有危害性的。怎么快速的找到呢?先分析流程,就拿用戶查看文章這個(gè)流程為例:用戶訪問一個(gè)
action,告訴它用戶想看ID為7的文章,這個(gè)action就會(huì)繼續(xù)完成前面所說(shuō)的流程。如果是ASP程序,這就是最容易產(chǎn)生問題的時(shí)候,ASP是弱類型,接到參數(shù)后不需要轉(zhuǎn)換類型,就和SQL語(yǔ)句連加起來(lái)。但是P就不一樣,P是強(qiáng)類型的語(yǔ)言,接受有害的參數(shù)后:對(duì)于GET請(qǐng)求(直接在地址欄訪問頁(yè)面),如果這里要的是int型,即使不懂安全的程序員,也會(huì)把它(文章的ID)立刻轉(zhuǎn)換成int,因?yàn)檫@里轉(zhuǎn)換后在后面的處理中會(huì)更容易操作,而這時(shí)程序就出錯(cuò)了;對(duì)于POST請(qǐng)求,如果這里要的是int型,程序會(huì)在把它封裝成Form對(duì)象時(shí),因?yàn)樽詣?dòng)要進(jìn)行類型轉(zhuǎn)化,同樣發(fā)生錯(cuò)誤,這兩種錯(cuò)誤發(fā)生后,根本不會(huì)訪問后面的流程就跳出了,或許這就是P天生的安全性。所以,通常提交的變量是int時(shí),不會(huì)發(fā)生問題,問題會(huì)出現(xiàn)在string參數(shù)這里,如果要查看某用戶的信息,程序可能會(huì)讓你提交如下參數(shù):showuser.do? username=kxlzx。問題來(lái)了,因?yàn)檫@里是string類型,所以不懂安全的程序員頂多會(huì)判斷一下是不是空,就連加成為SQL語(yǔ)句。有漏洞的程序大概會(huì)寫成這個(gè)樣子:ACTION的代碼: showuser.do String username = null;username = request.getParameter(“username”); Service service = new Service(); service.findByUsername(username);得到參數(shù)后調(diào)用service,service層直接交給了Dao層,dao的代碼: public Object findByUsername(String username){JdbcTemplate jt=new JdbcTemplate();String sql = “select * from Users where username=’”+username”’”; List list = jt.query(sql); ……………….}dao調(diào)用了DB層的JdbcTemplate,把SQL語(yǔ)句拼好后,傳給了JdbcTemplate去執(zhí)行。不用再看這里的JdbcTemplate,就可以知道里面的代碼使用了Statement的executequery()方法執(zhí)行,導(dǎo)致了SQL注入。分析了這么半天,有讀者會(huì)問:“難道我要費(fèi)這么大的力氣才能找到漏洞么?”。的確,通常在ASP程序里找注入時(shí)的思路就是這樣子,但是我們現(xiàn)在是在使用了開發(fā)模式分層架構(gòu)的P程序里,應(yīng)該按照分層架構(gòu)的思維去找漏洞。在回答這個(gè)問題之前,我們還得繞個(gè)彎子,看看怎么在這里預(yù)防SQL注入(java始終都是這么優(yōu)美,它不會(huì)直接告訴你答案,而是一層一層的讓你撥開云霧)。剛才分析流程,是從正向分析的,從用戶輸入到產(chǎn)生漏洞,我們?cè)诜烙臅r(shí)候,不妨倒過(guò)來(lái)看看,從DB層入手。JdbcTemplate調(diào)用執(zhí)行SQL語(yǔ)句,可以有兩個(gè)類供我們選擇,一個(gè)是Statement,另一個(gè)就是預(yù)處理的Statement,兩者有著效率上和安全上的顯著差別。在效率上,只要數(shù)據(jù)庫(kù)支持預(yù)處理技術(shù)(sqlserver,mysql,oracle等都支持,只有少數(shù)access等不支持),就會(huì)在大量執(zhí)行SQL語(yǔ)句時(shí)增加速度;在安全上,使用預(yù)處理,會(huì)把接受的參數(shù)也經(jīng)過(guò)預(yù)處理,從而不會(huì)作為SQL語(yǔ)句的一部分執(zhí)行,而是僅僅作為SQL語(yǔ)句中的參數(shù)部分
內(nèi)容被執(zhí)行。一旦DB層使用了預(yù)處理,DAO層的SQL語(yǔ)句也會(huì)發(fā)生變化,成為這個(gè)樣子: public Object findByUsername(String username){JdbcTemplate jt=new JdbcTemplate();String sql = “select * from Users where username=?”; List list = jt.query(sql,new Object{username}); ………………. }這樣,SQL注入就和我們的程序幾乎無(wú)關(guān)了,注意我說(shuō)的是幾乎,而不是全部。知道了怎么防御,于是一切在這里變的簡(jiǎn)單極了,我們應(yīng)該直接去DB層找到JdbcTemplate,看看代碼,一旦使用了Statement,很好,這個(gè)系統(tǒng)十有八九有漏洞,下面要做的是使用Editplus搜索“request.getParameter”。沒有使用預(yù)處理的系統(tǒng),可能會(huì)在action層進(jìn)行防御,對(duì)參數(shù)過(guò)濾,但總有防御不到的時(shí)候,因?yàn)閼?zhàn)線拉的太長(zhǎng)了,每一個(gè)action里都可能接受參數(shù)并存在漏洞。還有一種情況,系統(tǒng)一部分使用了預(yù)處理,一部分沒有,這樣的情況可能是因?yàn)轫?xiàng)目趕的比較倉(cāng)促,人員沒有經(jīng)過(guò)正規(guī)培訓(xùn),最后艱難的整合到了一起。這種情況也好辦,直接在DAO層搜索(”’)或(’”),這些符號(hào)用于和字符串變量連加,拼SQL語(yǔ)句,肯定是這些語(yǔ)句之后的代碼使用了Statement。然后再往上層找,看看哪個(gè)action調(diào)用了這個(gè)有問題的dao類,也可能發(fā)生SQL注入。即使系統(tǒng)使用了預(yù)處理,別忘了,程序給客戶使用后,客戶有權(quán)利去擴(kuò)展的。程序拿到客戶那里,客戶有了新的需求,而這個(gè)需求又不大,很可能不愿意花錢重新雇人來(lái)實(shí)現(xiàn)擴(kuò)展功能,在這個(gè)時(shí)候也可能出現(xiàn)問題,客戶使用自己的程序員擴(kuò)展AJAX功能,這個(gè)程序員因?yàn)榕鲁鰡栴},不敢動(dòng)源程序,就在web.xml里加了一個(gè)servlet,這個(gè)servlet直接去調(diào)用conn??膳碌氖虑榘l(fā)生了。所以,我們的搜索漏洞規(guī)則中又加上了一條,在非dao層的文件中,搜索“select,update,delete”等字符串。、暴露程序信息漏洞這個(gè)漏洞是怎么來(lái)的呢?我們需要從異常說(shuō)起。有經(jīng)驗(yàn)的入侵者,可以從P程序的異常中獲取很多信息,比如程序的部分架構(gòu)、程序的物理路徑、SQL注入爆出來(lái)的信息等,這個(gè)漏洞很容易防御,卻很難快速定位漏洞文件。出現(xiàn)這樣漏洞的時(shí)候,通常是我們?cè)趯懘a的時(shí)候,少了一些可能性的考慮而導(dǎo)致的。這樣的問題都是經(jīng)驗(yàn)造成的,而尋找漏洞也要通過(guò)經(jīng)驗(yàn)加運(yùn)氣(要有仙緣。。。),我個(gè)人技術(shù)有限,就不多說(shuō)了。防御的方法就是在程序中加上“Exception層”,自定義異常,把系統(tǒng)產(chǎn)生的異常統(tǒng)統(tǒng)包裝起來(lái),不要放過(guò)任何一個(gè)可能產(chǎn)生異常的地方。像騰訊的異常就包裝的很好“對(duì)不起,今天的注冊(cè)人數(shù)已經(jīng)達(dá)到十萬(wàn),請(qǐng)您明天再來(lái)。。?!?,廢話,日注冊(cè)量都十萬(wàn),還讓不讓人活啦,鐵定是程序發(fā)生了異常,不敢讓各位大大們看到真實(shí)的面孔。
1、SQL注入漏洞
從SQL注入漏洞說(shuō)起吧,在web漏洞里,SQL注入是最容易被利用而又更具有危害性的。怎么快速的找到呢?先分析流程,就拿用戶查看文章這個(gè)流程為例:用戶訪問一個(gè)action,告訴它用戶想看ID為7的文章,這個(gè)action就會(huì)繼續(xù)完成前面所說(shuō)的流程
2、暴露程序信息漏洞
這個(gè)漏洞是怎么來(lái)的呢?我們需要從異常說(shuō)起。有經(jīng)驗(yàn)的入侵者,可以從P程序的異常中獲取很多信息,比如程序的部分架構(gòu)、程序的物理路徑、SQL注入爆出來(lái)的信息等,這個(gè)漏洞很容易防御,卻很難快速定位漏洞文件。出現(xiàn)這樣漏洞的時(shí)候,通常是我們?cè)趯懘a的時(shí)候,少了一些可能性的考慮而導(dǎo)致的。這樣的問題都是經(jīng)驗(yàn)造成的,而尋找漏洞也要通過(guò)經(jīng)驗(yàn)加運(yùn)氣
3、AJAX暴露出來(lái)的漏洞
前面講SQL注入的時(shí)候說(shuō)過(guò)的例子就是一個(gè)典型的情況,因?yàn)榇蠖鄶?shù)網(wǎng)站不是在開發(fā)時(shí)就擁有Ajax技術(shù)的,都是后來(lái)看大家都用了,趕時(shí)髦加上。但是在加上的同時(shí)沒有意識(shí)到,在web上增加一個(gè)文件,就等于擴(kuò)展了一點(diǎn)攻擊面。
4、業(yè)務(wù)邏輯漏洞
這個(gè)詞看起來(lái)挺抽象的,他和“暴露程序信息漏洞”有很多共同點(diǎn),看名字就知道,應(yīng)該是存在于業(yè)務(wù)邏輯層(service層)的漏洞。這樣的漏洞都和程序的運(yùn)行段漏邏輯有關(guān)。
5、XSS漏洞
這個(gè)漏洞也影響深遠(yuǎn),想要發(fā)現(xiàn)這樣的漏洞,除了在頁(yè)面上進(jìn)行測(cè)試外,還要從流程上入手。用戶輸入有害信息后,信息保存到數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)中讀出來(lái)丟給用戶時(shí)產(chǎn)生漏洞。也就是說(shuō)我們有兩個(gè)過(guò)程可以攔截,就是保存到數(shù)據(jù)庫(kù)時(shí),和從數(shù)據(jù)庫(kù)讀出來(lái)后交給用戶時(shí)。最快的方法是直接打開數(shù)據(jù)庫(kù)查看數(shù)據(jù),如果數(shù)據(jù)沒有經(jīng)過(guò)編碼直接放備燃弊進(jìn)了數(shù)據(jù)庫(kù),那么可能性就有了一半。剩下的一半更簡(jiǎn)單,在action層搜索轉(zhuǎn)碼常用的字符,如果沒有,就很容易發(fā)現(xiàn)漏洞。即使有,也不用著急,在action層里慢慢找,很可能還有漏網(wǎng)之魚。
6、頁(yè)面層的邏輯漏洞
如何對(duì)網(wǎng)站進(jìn)行漏洞掃描及滲透測(cè)試?
注冊(cè)一個(gè)賬號(hào),看下上傳點(diǎn),等等之類的。
用google找下注入點(diǎn),格式是
Site:XXX.com inurl:asp|php|aspx|jsp
更好不要帶 www,因?yàn)椴粠У脑捒梢詸z測(cè)二級(jí)域名。
大家都知道滲透測(cè)試就是為了證明網(wǎng)絡(luò)防御按照預(yù)期計(jì)劃正常運(yùn)行而提供的一種機(jī)制,而且夠獨(dú)立地檢查你的網(wǎng)絡(luò)策略,一起來(lái)看看網(wǎng)站入侵滲透測(cè)試的正確知識(shí)吧。
簡(jiǎn)單枚舉一些滲透網(wǎng)站一些基本常見步驟:
一 、信息收集
要檢測(cè)一個(gè)站首先應(yīng)先收集信息如whois信息、網(wǎng)站真實(shí)IP、旁注、C段網(wǎng)站、服務(wù)器系統(tǒng)版本、容器版本、程序版本、數(shù)據(jù)庫(kù)類型、二級(jí)域名、防火墻、維護(hù)者信息有哪些等等
二、收集目標(biāo)站注冊(cè)人郵箱
1.用社工庫(kù)里看看有沒有泄露密碼,然后嘗試用泄露的密碼進(jìn)行登錄后臺(tái)。2.用郵箱做關(guān)鍵詞,丟進(jìn)搜索引擎。3.利用搜索到的關(guān)聯(lián)信息找出其他郵進(jìn)喚空而得到常用社交賬號(hào)。4.社工找出社交賬號(hào),里面或許會(huì)找出管理員設(shè)置密碼的習(xí)慣 。5.利用已有信息生成專用字典。6.觀察管理員常逛哪些非大眾性網(wǎng)站,看看有什么東西
三、判斷出網(wǎng)站的CMS
1:查找網(wǎng)上已曝光的程序漏洞并對(duì)其滲透2:如果開源,還能下載相對(duì)應(yīng)的源碼進(jìn)行代碼審計(jì)。
3.搜索敏感文件和跡瞎、目錄掃描
四、常見的網(wǎng)站服務(wù)器容器。
IIS、Apache、nginx、Lighttpd、Tomcat
五、注入點(diǎn)及漏洞
1.手動(dòng)測(cè)試查看有哪些漏洞
2.看其是否有注入點(diǎn)
3.使用工具及漏州晌洞測(cè)試平臺(tái)測(cè)試這個(gè)有哪些漏洞可利用
六、如何手工快速判斷目標(biāo)站是windows還是linux服務(wù)器?
Linux大小寫敏感,windows大小寫不敏感。
七、如何突破上傳檢測(cè)?
1、寬字符注入
2、hex編碼繞過(guò)
3、檢測(cè)繞過(guò)
4、截?cái)嗬@過(guò)
八、若查看到編輯器
應(yīng)查看編輯器的名稱版本,然后搜索公開的漏洞
九、上傳大馬后訪問亂碼
瀏覽器中改編碼。
十、審查上傳點(diǎn)的元素
有些站點(diǎn)的上傳文件類型的限制是在前端實(shí)現(xiàn)的,這時(shí)只要增加上傳類型就能突破限制了。
掃目錄,看編輯器和Fckeditor,看下敏感目錄,有沒有目錄遍及,
查下是iis6,iis5.iis7,這些都有不同的利用方法
Iis6解析漏洞
Iis5遠(yuǎn)程溢出,
Iis7畸形解析
Phpmyadmin
萬(wàn)能密碼:’or’=’or’等等
等等。
每個(gè)站都有每個(gè)站的不同利用方法,自己滲透多點(diǎn)站可以多總結(jié)點(diǎn)經(jīng)驗(yàn)。
還有用google掃后臺(tái)都是可以的。
服務(wù)器滲透測(cè)試的話分為幾個(gè)層面進(jìn)行測(cè)巖備叢試的,如下:
一、內(nèi)網(wǎng)掃描:掃描服務(wù)器代碼漏粗櫻洞等。
二、外網(wǎng)掃描:掃描目前市場(chǎng)已知漏洞等。
三、社會(huì)工程學(xué)滾敗掃描:排除人為的安全隱患因素。
(以上回答由網(wǎng)堤安全–滲透測(cè)試–提供)
關(guān)于數(shù)據(jù)庫(kù)漏洞檢測(cè)源代碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。
文章題目:數(shù)據(jù)庫(kù)漏洞檢測(cè)的簡(jiǎn)易源代碼(數(shù)據(jù)庫(kù)漏洞檢測(cè)源代碼)
URL分享:http://m.5511xx.com/article/cdgheph.html


咨詢
建站咨詢
